Previous 15994 Revisions Next

r6429 Friday 20th November, 2009 at 13:14:27 UTC by Nathan Woods
Updated to MAME 0.135u1 core
[docs]messnew.txt
[src/emu]mconfig.h memory.c validity.c
[src/emu/cpu]cpu.mak drcumlsh.h x86log.c
[src/emu/cpu/cp1610]1610dasm.c cp1610.c
[src/emu/cpu/dsp56k]dsp56k.c dsp56ops.c dsp56pcu.c
[src/emu/cpu/i386]i386dasm.c i386op16.c i386op32.c
[src/emu/cpu/m68000]m68000.h m68k_in.c m68kcpu.c m68kcpu.h m68kdasm.c m68kfpu.c m68kmake.c m68kmmu.h
[src/emu/cpu/mips]mips3com.c mips3com.h mips3drc.c
[src/emu/cpu/powerpc]ppccom.c ppcdrc.c
[src/emu/cpu/sm8500]sm8500.c
[src/emu/cpu/tms32010]32010dsm.c
[src/emu/drivers]xtal.h
[src/emu/machine]8237dma.c 8237dma.h 8257dma.h eepromdev.c eepromdev.h z80dma.h
[src/emu/sound]sn76496.c tms5220.c ymf271.c
[src/mame]mame.mak mamedriv.c
[src/mame/audio]8080bw.c astrof.c atarijsa.c blockade.c crbaloon.c cyberbal.c gottlieb.c irem.c laserbat.c leland.c mario.c mw8080bw.c n8080.c redalert.c seibu.c seibu.h t5182.c williams.c
[src/mame/drivers]1942.c 1943.c 20pacgal.c 2mindril.c 40love.c 4enraya.c 8080bw.c 86lions.c 88games.c ace.c adp.c aeroboto.c aerofgt.c airbustr.c ajax.c albazc.c albazg.c aleck64.c aliens.c alpha68k.c amaticmg.c ambush.c ampoker2.c amspdwy.c angelkds.c appoooh.c aquarium.c arabian.c arkanoid.c armedf.c artmagic.c ashnojoe.c asterix.c astinvad.c astrocde.c astrof.c asuka.c atarifb.c atarisy1.c atarisy2.c ataxx.c avalnche.c badlands.c bagman.c balsente.c bankp.c battlane.c battlera.c battlex.c bbusters.c bfcobra.c bfm_sc1.c bfm_sc2.c bfmsys85.c big10.c bigevglf.c bigfghtr.c bigstrkb.c bingoc.c bionicc.c bishjan.c bladestl.c blockade.c blockhl.c blockout.c blueprnt.c bmcbowl.c boogwing.c boxer.c brkthru.c bsktball.c bublbobl.c buster.c cabal.c cabaret.c calchase.c capbowl.c carjmbre.c carrera.c caswin.c cave.c cbasebal.c cchance.c cclimber.c centiped.c champbas.c champbwl.c chanbara.c chinagat.c chinsan.c chqflag.c cischeat.c citycon.c cmmb.c cninja.c coinmstr.c combatsc.c compgolf.c contra.c cop01.c cosmic.c cowrace.c cps2.c crbaloon.c crgolf.c crimfght.c crospang.c crshrace.c cyberbal.c d9final.c* darkhors.c darkmist.c dblewing.c dbz.c dcon.c ddealer.c ddenlovr.c ddragon.c ddrible.c deco32.c deniam.c dietgo.c discoboy.c djboy.c dkong.c dlair.c dominob.c dooyong.c drw80pkr.c dunhuang.c dwarfd.c dynadice.c dynax.c enigma2.c epos.c equites.c esd16.c espial.c exedexes.c exterm.c exzisus.c f-32.c f1gp.c fantland.c finalizr.c firetrap.c flkatck.c flstory.c forte2.c fortecar.c fromanc2.c fromance.c funkybee.c funkyjet.c gaelco.c gaelco2.c gaiden.c galaxian.c galaxold.c galdrvr.c galivan.c galspnbl.c gamecstl.c gameplan.c gatron.c gauntlet.c gberet.c gbusters.c gei.c* ginganin.c gladiatr.c goindol.c goldstar.c gotcha.c gottlieb.c gradius3.c gstriker.c gticlub.c guab.c gundealr.c hanaawas.c hcastle.c hexa.c himesiki.c hitpoker.c hnayayoi.c hng64.c homedata.c homerun.c hornet.c hotblock.c hvyunit.c hyhoo.c hyperspt.c hyprduel.c igs009.c igs011.c* igs017.c igspoker.c imolagp.c inufuku.c iqblock.c itech8.c jack.c jackal.c jackie.c jackpool.c jailbrek.c jangou.c jollyjgr.c jongkyo.c junofrst.c kaneko16.c kangaroo.c kchamp.c kingdrby.c kingobox.c kingpin.c kncljoe.c koikoi.c konamigq.c konamigv.c konamigx.c ksys573.c ladyfrog.c laserbat.c lastduel.c lemmings.c lockon.c looping.c lordgun.c lsasquad.c ltcasino.c lucky74.c lvcards.c m10.c m107.c m14.c m52.c m57.c m58.c m62.c m63.c m72.c m90.c m92.c macs.c madalien.c magicard.c mainevt.c marineb.c mario.c matmania.c maygay1b.c maygayv1.c mayumi.c mcatadv.c mediagx.c megadriv.c megasys1.c megatech.c megazone.c meijinsn.c merit.c meritm.c metro.c mexico86.c mhavoc.c mirderby.c missb2.c mitchell.c mjsister.c mlanding.c model1.c model2.c model3.c mole.c moo.c mosaic.c ms32.c mugsmash.c multfish.c mustache.c mystwarr.c n8080.c namcos1.c namcos2.c namcos21.c namcos86.c naomi.c nbmj8891.c nbmj8900.c* nbmj8991.c nbmj9195.c nemesis.c neodrvr.c neogeo.c nightgal.c ninjaw.c niyanpai.c nmg5.c nmk16.c norautp.c nwk-tr.c ojankohs.c olibochu.c oneshot.c onetwo.c opwolf.c othunder.c overdriv.c pacman.c pandoras.c panicr.c parodius.c pass.c pastelg.c pcat_dyn.c pcat_nit.c pcxt.c peplus.c phoenix.c photoply.c pingpong.c pipedrm.c pipeline.c pkscram.c plygonet.c polepos.c popeye.c popper.c ppmast93.c prehisle.c psikyo.c puckpkmn.c quizdna.c quizo.c quizpun2.c rainbow.c rampart.c rastan.c realbrk.c relief.c renegade.c rmhaihai.c rockrage.c rohga.c rollerg.c roul.c route16.c royalmah.c rpunch.c sandscrp.c sangho.c sauro.c sbasketb.c sbowling.c sbrkout.c scobra.c scotrsht.c segac2.c segag80v.c segahang.c segamsys.c segaorun.c segas16a.c segas16b.c segas18.c segas24.c segas32.c segaxbd.c segaybd.c seicross.c seta.c seta2.c sf.c sg1000a.c shadfrce.c shangha3.c shanghai.c shangkid.c shisen.c shootout.c shougi.c sidearms.c silkroad.c simpsons.c skeetsht.c skimaxx.c skyarmy.c skylncr.c slapshot.c slotcarn.c sms.c snk.c snk68.c snowbros.c sothello.c spaceg.c spbactn.c spdodgeb.c speedatk.c speedbal.c speglsht.c splash.c spoker.c spy.c srmp2.c srmp5.c sshangha.c ssrj.c st0016.c statriv2.c stv.c subsino.c suna16.c suna8.c supbtime.c supdrapo.c superdq.c superqix.c supertnk.c suprgolf.c suprnova.c suprslam.c surpratk.c system16.c tail2nos.c taito_b.c taito_f2.c taito_f3.c taito_h.c taito_l.c taito_o.c taito_x.c taito_z.c taitoair.c taitowlf.c taotaido.c tatsumi.c tceptor.c tcl.c tecmo.c tecmo16.c terracre.c tetrisp2.c thedeep.c thunderx.c tmaster.c tmnt.c tnzs.c toaplan1.c toaplan2.c toki.c tomcat.c topspeed.c trackfld.c travrusa.c trvmadns.c tryout.c tsamurai.c tugboat.c tumbleb.c tumblep.c twin16.c twincobr.c twinkle.c twins.c tx1.c ultraman.c unico.c usgames.c vamphalf.c vastar.c vball.c vendetta.c videopkr.c vigilant.c vmetal.c volfied.c vpoker.c vroulet.c wallc.c wardner.c warriorb.c wc90.c wc90b.c wecleman.c welltris.c wgp.c wink.c witch.c wwfsstar.c wwfwfest.c xexex.c xmen.c yiear.c yunsun16.c yunsung8.c zn.c zodiack.c
[src/mame/includes]1942.h* 1943.h* 20pacgal.h 4enraya.h* aeroboto.h* ambush.h* angelkds.h* appoooh.h arabian.h arkanoid.h astrof.h atarifb.h avalnche.h bankp.h* battlane.h* battlex.h* bionicc.h* blockade.h blueprnt.h* brkthru.h* bsktball.h carjmbre.h* espial.h exerion.h hexa.h* iremz80.h* konamigx.h* m10.h ms32.h n8080.h nb1413m3.h pandoras.h* popper.h* tetrisp2.h
[src/mame/machine]arkanoid.c atarifb.c bsktball.c cps2crpt.c irobot.c konamigx.c n64.c nb1413m3.c neoboot.c neocrypt.c nmk004.c toaplan1.c
[src/mame/video]1942.c 1943.c 4enraya.c aeroboto.c ambush.c angelkds.c appoooh.c arabian.c arkanoid.c atarifb.c bankp.c battlane.c battlex.c bionicc.c bishi.c blockade.c blueprnt.c brkthru.c bsktball.c carjmbre.c dec0.c espial.c genesis.c hexa.c konamigx.c konamiic.c konamiic.h ladyfrog.c m10.c m52.c m57.c m58.c m62.c marineb.c moo.c ms32.c mystwarr.c n64.c n8080.c nbmj8900.c* pandoras.c plygonet.c popper.c psx.c seta.c suprnova.c tceptor.c tetrisp2.c toaplan2.c travrusa.c xexex.c zodiack.c
[src/mess]mess.mak

src/mame/audio/n8080.c
r6428r6429
1010#include "sound/dac.h"
1111#include "includes/n8080.h"
1212
13static int n8080_hardware;
14
15static emu_timer* sound_timer[3];
16
17static int helifire_dac_phase;
18
1913static const double ATTACK_RATE = 10e-6 * 500;
2014static const double DECAY_RATE = 10e-6 * 16000;
2115
22static double helifire_dac_volume;
23static double helifire_dac_timing;
24
25static UINT16 prev_sound_pins;
26static UINT16 curr_sound_pins;
27
28static int mono_flop[3];
29
30
31
3216static const sn76477_interface sheriff_sn76477_interface =
3317{
3418   RES_K(36)  ,  /* 04 */
r6428r6429
8569};
8670
8771
88static void spacefev_update_SN76477_status(const device_config *sn)
72static void spacefev_update_SN76477_status( const device_config *sn )
8973{
74   n8080_state *state = (n8080_state *)sn->machine->driver_data;
9075   double dblR0 = RES_M(1.0);
9176   double dblR1 = RES_M(1.5);
9277
93   if (!mono_flop[0])
78   if (!state->mono_flop[0])
9479   {
9580      dblR0 = 1 / (1 / RES_K(150) + 1 / dblR0); /* ? */
9681   }
97   if (!mono_flop[1])
82   if (!state->mono_flop[1])
9883   {
9984      dblR1 = 1 / (1 / RES_K(620) + 1 / dblR1); /* ? */
10085   }
r6428r6429
10489   sn76477_vco_res_w(sn, dblR1);
10590
10691   sn76477_enable_w(sn,
107      !mono_flop[0] &&
108      !mono_flop[1] &&
109      !mono_flop[2]);
92      !state->mono_flop[0] &&
93      !state->mono_flop[1] &&
94      !state->mono_flop[2]);
11095
111   sn76477_vco_w(sn, mono_flop[1]);
96   sn76477_vco_w(sn, state->mono_flop[1]);
11297
113   sn76477_mixer_b_w(sn, mono_flop[0]);
98   sn76477_mixer_b_w(sn, state->mono_flop[0]);
11499}
115100
116101
117static void sheriff_update_SN76477_status(const device_config *sn)
102static void sheriff_update_SN76477_status( const device_config *sn )
118103{
119   if (mono_flop[1])
104   n8080_state *state = (n8080_state *)sn->machine->driver_data;
105   if (state->mono_flop[1])
120106   {
121107      sn76477_vco_voltage_w(sn, 5);
122108   }
r6428r6429
126112   }
127113
128114   sn76477_enable_w(sn,
129      !mono_flop[0] &&
130      !mono_flop[1]);
115      !state->mono_flop[0] &&
116      !state->mono_flop[1]);
131117
132   sn76477_vco_w(sn, mono_flop[0]);
118   sn76477_vco_w(sn, state->mono_flop[0]);
133119
134   sn76477_mixer_b_w(sn, !mono_flop[0]);
120   sn76477_mixer_b_w(sn, !state->mono_flop[0]);
135121}
136122
137123
138static void update_SN76477_status(const device_config *device)
124static void update_SN76477_status( const device_config *device )
139125{
140   if (n8080_hardware == 1)
126   n8080_state *state = (n8080_state *)device->machine->driver_data;
127   if (state->n8080_hardware == 1)
141128   {
142129      spacefev_update_SN76477_status(device);
143130   }
144   if (n8080_hardware == 2)
131   if (state->n8080_hardware == 2)
145132   {
146133      sheriff_update_SN76477_status(device);
147134   }
148135}
149136
150137
151static void start_mono_flop(const device_config *sn, int n, attotime expire)
138static void start_mono_flop( const device_config *sn, int n, attotime expire )
152139{
153   mono_flop[n] = 1;
140   n8080_state *state = (n8080_state *)sn->machine->driver_data;
141   state->mono_flop[n] = 1;
154142
155143   update_SN76477_status(sn);
156144
157   timer_adjust_oneshot(sound_timer[n], expire, n);
145   timer_adjust_oneshot(state->sound_timer[n], expire, n);
158146}
159147
160148
161static void stop_mono_flop(const device_config *sn, int n)
149static void stop_mono_flop( const device_config *sn, int n )
162150{
163   mono_flop[n] = 0;
151   n8080_state *state = (n8080_state *)sn->machine->driver_data;
152   state->mono_flop[n] = 0;
164153
165154   update_SN76477_status(sn);
166155
167   timer_adjust_oneshot(sound_timer[n], attotime_never, n);
156   timer_adjust_oneshot(state->sound_timer[n], attotime_never, n);
168157}
169158
170159
171160static TIMER_CALLBACK( stop_mono_flop_callback )
172161{
173   stop_mono_flop(devtag_get_device(machine, "sn"), param);
162   stop_mono_flop(devtag_get_device(machine, "snsnd"), param);
174163}
175164
176165
177static void spacefev_sound_pins_changed(running_machine *machine)
166static void spacefev_sound_pins_changed( running_machine *machine )
178167{
179   const device_config *sn = devtag_get_device(machine, "sn");
180   UINT16 changes = ~curr_sound_pins & prev_sound_pins;
168   const device_config *sn = devtag_get_device(machine, "snsnd");
169   n8080_state *state = (n8080_state *)machine->driver_data;
170   UINT16 changes = ~state->curr_sound_pins & state->prev_sound_pins;
181171
182172   if (changes & (1 << 0x3))
183173   {
r6428r6429
206196}
207197
208198
209static void sheriff_sound_pins_changed(running_machine *machine)
199static void sheriff_sound_pins_changed( running_machine *machine )
210200{
211   const device_config *sn = devtag_get_device(machine, "sn");
212   UINT16 changes = ~curr_sound_pins & prev_sound_pins;
201   const device_config *sn = devtag_get_device(machine, "snsnd");
202   n8080_state *state = (n8080_state *)machine->driver_data;
203   UINT16 changes = ~state->curr_sound_pins & state->prev_sound_pins;
213204
214205   if (changes & (1 << 0x6))
215206   {
r6428r6429
230221}
231222
232223
233static void helifire_sound_pins_changed(running_machine *machine)
224static void helifire_sound_pins_changed( running_machine *machine )
234225{
235   UINT16 changes = ~curr_sound_pins & prev_sound_pins;
226   n8080_state *state = (n8080_state *)machine->driver_data;
227   UINT16 changes = ~state->curr_sound_pins & state->prev_sound_pins;
236228
237   /* ((curr_sound_pins >> 0xA) & 1) not emulated */
238   /* ((curr_sound_pins >> 0xB) & 1) not emulated */
239   /* ((curr_sound_pins >> 0xC) & 1) not emulated */
229   /* ((state->curr_sound_pins >> 0xa) & 1) not emulated */
230   /* ((state->curr_sound_pins >> 0xb) & 1) not emulated */
231   /* ((state->curr_sound_pins >> 0xc) & 1) not emulated */
240232
241233   if (changes & (1 << 6))
242234   {
r6428r6429
245237}
246238
247239
248static void sound_pins_changed(running_machine *machine)
240static void sound_pins_changed( running_machine *machine )
249241{
250   if (n8080_hardware == 1)
251   {
242   n8080_state *state = (n8080_state *)machine->driver_data;
243
244   if (state->n8080_hardware == 1)
252245      spacefev_sound_pins_changed(machine);
253   }
254   if (n8080_hardware == 2)
255   {
246   if (state->n8080_hardware == 2)
256247      sheriff_sound_pins_changed(machine);
257   }
258   if (n8080_hardware == 3)
259   {
248   if (state->n8080_hardware == 3)
260249      helifire_sound_pins_changed(machine);
261   }
262250
263   prev_sound_pins = curr_sound_pins;
251   state->prev_sound_pins = state->curr_sound_pins;
264252}
265253
266254
267static void delayed_sound_1(running_machine *machine, int data)
255static void delayed_sound_1( running_machine *machine, int data )
268256{
269   static UINT8 prev_data = 0;
257   n8080_state *state = (n8080_state *)machine->driver_data;
270258
271   curr_sound_pins &= ~(
259   state->curr_sound_pins &= ~(
272260      (1 << 0x7) |
273261      (1 << 0x5) |
274262      (1 << 0x6) |
r6428r6429
276264      (1 << 0x4) |
277265      (1 << 0x1));
278266
279   if (~data & 0x01) curr_sound_pins |= 1 << 0x7;
280   if (~data & 0x02) curr_sound_pins |= 1 << 0x5; /* pulse */
281   if (~data & 0x04) curr_sound_pins |= 1 << 0x6; /* pulse */
282   if (~data & 0x08) curr_sound_pins |= 1 << 0x3; /* pulse (except in Helifire) */
283   if (~data & 0x10) curr_sound_pins |= 1 << 0x4; /* pulse (except in Helifire) */
284   if (~data & 0x20) curr_sound_pins |= 1 << 0x1;
267   if (~data & 0x01) state->curr_sound_pins |= 1 << 0x7;
268   if (~data & 0x02) state->curr_sound_pins |= 1 << 0x5; /* pulse */
269   if (~data & 0x04) state->curr_sound_pins |= 1 << 0x6; /* pulse */
270   if (~data & 0x08) state->curr_sound_pins |= 1 << 0x3; /* pulse (except in Helifire) */
271   if (~data & 0x10) state->curr_sound_pins |= 1 << 0x4; /* pulse (except in Helifire) */
272   if (~data & 0x20) state->curr_sound_pins |= 1 << 0x1;
285273
286   if (n8080_hardware == 1)
274   if (state->n8080_hardware == 1)
287275   {
288      if (data & ~prev_data & 0x10)
276      if (data & ~state->prev_snd_data & 0x10)
289277      {
290278         spacefev_start_red_cannon(machine);
291279      }
292280
293      spacefev_red_screen = data & 0x08;
281      state->spacefev_red_screen = data & 0x08;
294282   }
295283
296284   sound_pins_changed(machine);
297285
298   prev_data = data;
286   state->prev_snd_data = data;
299287}
300288
301289
r6428r6429
305293}
306294
307295
308static void delayed_sound_2(running_machine *machine, int data)
296static void delayed_sound_2( running_machine *machine, int data )
309297{
310   curr_sound_pins &= ~(
298   n8080_state *state = (n8080_state *)machine->driver_data;
299
300   state->curr_sound_pins &= ~(
311301      (1 << 0x8) |
312302      (1 << 0x9) |
313      (1 << 0xA) |
314      (1 << 0xB) |
303      (1 << 0xa) |
304      (1 << 0xb) |
315305      (1 << 0x2) |
316      (1 << 0xC));
306      (1 << 0xc));
317307
318   if (~data & 0x01) curr_sound_pins |= 1 << 0x8;
319   if (~data & 0x02) curr_sound_pins |= 1 << 0x9;
320   if (~data & 0x04) curr_sound_pins |= 1 << 0xA;
321   if (~data & 0x08) curr_sound_pins |= 1 << 0xB;
322   if (~data & 0x10) curr_sound_pins |= 1 << 0x2; /* pulse */
323   if (~data & 0x20) curr_sound_pins |= 1 << 0xC;
308   if (~data & 0x01) state->curr_sound_pins |= 1 << 0x8;
309   if (~data & 0x02) state->curr_sound_pins |= 1 << 0x9;
310   if (~data & 0x04) state->curr_sound_pins |= 1 << 0xa;
311   if (~data & 0x08) state->curr_sound_pins |= 1 << 0xb;
312   if (~data & 0x10) state->curr_sound_pins |= 1 << 0x2; /* pulse */
313   if (~data & 0x20) state->curr_sound_pins |= 1 << 0xc;
324314
325   if (n8080_hardware == 1)
326   {
315   if (state->n8080_hardware == 1)
327316      flip_screen_set_no_update(machine, data & 0x20);
328   }
329   if (n8080_hardware == 3)
330   {
331      helifire_flash = data & 0x20;
332   }
317   if (state->n8080_hardware == 3)
318      state->helifire_flash = data & 0x20;
333319
334320   sound_pins_changed(machine);
335321}
r6428r6429
354340
355341static READ8_HANDLER( n8080_8035_p1_r )
356342{
343   n8080_state *state = (n8080_state *)space->machine->driver_data;
357344   UINT8 val = 0;
358345
359   if ((curr_sound_pins >> 0xB) & 1) val |= 0x01;
360   if ((curr_sound_pins >> 0xA) & 1) val |= 0x02;
361   if ((curr_sound_pins >> 0x9) & 1) val |= 0x04;
362   if ((curr_sound_pins >> 0x8) & 1) val |= 0x08;
363   if ((curr_sound_pins >> 0x5) & 1) val |= 0x10;
364   if ((curr_sound_pins >> 0x3) & 1) val |= 0x20;
365   if ((curr_sound_pins >> 0x2) & 1) val |= 0x40;
366   if ((curr_sound_pins >> 0x1) & 1) val |= 0x80;
346   if ((state->curr_sound_pins >> 0xb) & 1) val |= 0x01;
347   if ((state->curr_sound_pins >> 0xa) & 1) val |= 0x02;
348   if ((state->curr_sound_pins >> 0x9) & 1) val |= 0x04;
349   if ((state->curr_sound_pins >> 0x8) & 1) val |= 0x08;
350   if ((state->curr_sound_pins >> 0x5) & 1) val |= 0x10;
351   if ((state->curr_sound_pins >> 0x3) & 1) val |= 0x20;
352   if ((state->curr_sound_pins >> 0x2) & 1) val |= 0x40;
353   if ((state->curr_sound_pins >> 0x1) & 1) val |= 0x80;
367354
368355   return val;
369356}
r6428r6429
371358
372359static READ8_HANDLER( n8080_8035_t0_r )
373360{
374   return (curr_sound_pins >> 0x7) & 1;
361   n8080_state *state = (n8080_state *)space->machine->driver_data;
362   return (state->curr_sound_pins >> 0x7) & 1;
375363}
376364static READ8_HANDLER( n8080_8035_t1_r )
377365{
378   return (curr_sound_pins >> 0xC) & 1;
366   n8080_state *state = (n8080_state *)space->machine->driver_data;
367   return (state->curr_sound_pins >> 0xc) & 1;
379368}
380369
381370
382371static READ8_HANDLER( helifire_8035_t0_r )
383372{
384   return (curr_sound_pins >> 0x3) & 1;
373   n8080_state *state = (n8080_state *)space->machine->driver_data;
374   return (state->curr_sound_pins >> 0x3) & 1;
385375}
386376static READ8_HANDLER( helifire_8035_t1_r )
387377{
388   return (curr_sound_pins >> 0x4) & 1;
378   n8080_state *state = (n8080_state *)space->machine->driver_data;
379   return (state->curr_sound_pins >> 0x4) & 1;
389380}
390381
391382
392383static READ8_HANDLER( helifire_8035_external_ram_r )
393384{
385   n8080_state *state = (n8080_state *)space->machine->driver_data;
394386   UINT8 val = 0;
395387
396   if ((curr_sound_pins >> 0x7) & 1) val |= 0x01;
397   if ((curr_sound_pins >> 0x8) & 1) val |= 0x02;
398   if ((curr_sound_pins >> 0x9) & 1) val |= 0x04;
399   if ((curr_sound_pins >> 0x1) & 1) val |= 0x08;
388   if ((state->curr_sound_pins >> 0x7) & 1) val |= 0x01;
389   if ((state->curr_sound_pins >> 0x8) & 1) val |= 0x02;
390   if ((state->curr_sound_pins >> 0x9) & 1) val |= 0x04;
391   if ((state->curr_sound_pins >> 0x1) & 1) val |= 0x08;
400392
401393   return val;
402394}
r6428r6429
404396
405397static READ8_HANDLER( helifire_8035_p2_r )
406398{
407   return ((curr_sound_pins >> 0xC) & 1) ? 0x10 : 0x00; /* not used */
399   n8080_state *state = (n8080_state *)space->machine->driver_data;
400   return ((state->curr_sound_pins >> 0xc) & 1) ? 0x10 : 0x00; /* not used */
408401}
409402
410403
r6428r6429
416409
417410static WRITE8_HANDLER( helifire_dac_w )
418411{
419   dac_data_w(devtag_get_device(space->machine, "dac"), data * helifire_dac_volume);
412   n8080_state *state = (n8080_state *)space->machine->driver_data;
413   dac_data_w(devtag_get_device(space->machine, "dac"), data * state->helifire_dac_volume);
420414}
421415
422416
423417static WRITE8_HANDLER( helifire_sound_ctrl_w )
424418{
425   helifire_dac_phase = data & 0x80;
419   n8080_state *state = (n8080_state *)space->machine->driver_data;
420   state->helifire_dac_phase = data & 0x80;
426421
427422   /* data & 0x40 not emulated */
428423   /* data & 0x20 not emulated */
429424
430   if (helifire_dac_phase)
425   if (state->helifire_dac_phase)
431426   {
432      helifire_dac_timing = ATTACK_RATE * log(1 - helifire_dac_volume);
427      state->helifire_dac_timing = ATTACK_RATE * log(1 - state->helifire_dac_volume);
433428   }
434429   else
435430   {
436      helifire_dac_timing = DECAY_RATE * log(helifire_dac_volume);
431      state->helifire_dac_timing = DECAY_RATE * log(state->helifire_dac_volume);
437432   }
438433
439   helifire_dac_timing += attotime_to_double(timer_get_time(space->machine));
434   state->helifire_dac_timing += attotime_to_double(timer_get_time(space->machine));
440435}
441436
442437
443438static TIMER_CALLBACK( spacefev_vco_voltage_timer )
444439{
445   const device_config *sn = devtag_get_device(machine, "sn");
440   const device_config *sn = devtag_get_device(machine, "snsnd");
441   n8080_state *state = (n8080_state *)machine->driver_data;
446442   double voltage = 0;
447443
448   if (mono_flop[2])
444   if (state->mono_flop[2])
449445   {
450      voltage = 5 * (1 - exp(- attotime_to_double(timer_timeelapsed(sound_timer[2])) / 0.22));
446      voltage = 5 * (1 - exp(- attotime_to_double(timer_timeelapsed(state->sound_timer[2])) / 0.22));
451447   }
452448
453449   sn76477_vco_voltage_w(sn, voltage);
r6428r6429
456452
457453static TIMER_CALLBACK( helifire_dac_volume_timer )
458454{
459   double t = helifire_dac_timing - attotime_to_double(timer_get_time(machine));
455   n8080_state *state = (n8080_state *)machine->driver_data;
456   double t = state->helifire_dac_timing - attotime_to_double(timer_get_time(machine));
460457
461   if (helifire_dac_phase)
458   if (state->helifire_dac_phase)
462459   {
463      helifire_dac_volume = 1 - exp(t / ATTACK_RATE);
460      state->helifire_dac_volume = 1 - exp(t / ATTACK_RATE);
464461   }
465462   else
466463   {
467      helifire_dac_volume = exp(t / DECAY_RATE);
464      state->helifire_dac_volume = exp(t / DECAY_RATE);
468465   }
469466}
470467
471468
472static MACHINE_RESET( spacefev_sound )
469MACHINE_START( spacefev_sound )
473470{
474   n8080_hardware = 1;
471   n8080_state *state = (n8080_state *)machine->driver_data;
475472
473   state->sound_timer[0] = timer_alloc(machine, stop_mono_flop_callback, NULL);
474   state->sound_timer[1] = timer_alloc(machine, stop_mono_flop_callback, NULL);
475   state->sound_timer[2] = timer_alloc(machine, stop_mono_flop_callback, NULL);
476
477   state_save_register_global(machine, state->prev_snd_data);
478   state_save_register_global(machine, state->prev_sound_pins);
479   state_save_register_global(machine, state->curr_sound_pins);
480   state_save_register_global(machine, state->n8080_hardware);
481   state_save_register_global_array(machine, state->mono_flop);
482}
483
484MACHINE_RESET( spacefev_sound )
485{
486   n8080_state *state = (n8080_state *)machine->driver_data;
487   state->n8080_hardware = 1;
488
476489   timer_pulse(machine, ATTOTIME_IN_HZ(1000), NULL, 0, spacefev_vco_voltage_timer);
477490
478   sound_timer[0] = timer_alloc(machine, stop_mono_flop_callback, NULL);
479   sound_timer[1] = timer_alloc(machine, stop_mono_flop_callback, NULL);
480   sound_timer[2] = timer_alloc(machine, stop_mono_flop_callback, NULL);
491   state->mono_flop[0] = 0;
492   state->mono_flop[1] = 0;
493   state->mono_flop[2] = 0;
494   state->prev_snd_data = 0;
495   state->prev_sound_pins = 0;
496   state->curr_sound_pins = 0;
481497
482   mono_flop[0] = 0;
483   mono_flop[1] = 0;
484   mono_flop[2] = 0;
485
486498   delayed_sound_1(machine, 0);
487499   delayed_sound_2(machine, 0);
488500}
489501
490502
491static MACHINE_RESET( sheriff_sound )
503MACHINE_START( sheriff_sound )
492504{
493   n8080_hardware = 2;
505   n8080_state *state = (n8080_state *)machine->driver_data;
494506
495   sound_timer[0] = timer_alloc(machine, stop_mono_flop_callback, NULL);
496   sound_timer[1] = timer_alloc(machine, stop_mono_flop_callback, NULL);
507   state->sound_timer[0] = timer_alloc(machine, stop_mono_flop_callback, NULL);
508   state->sound_timer[1] = timer_alloc(machine, stop_mono_flop_callback, NULL);
497509
498   mono_flop[0] = 0;
499   mono_flop[1] = 0;
510   state_save_register_global(machine, state->prev_snd_data);
511   state_save_register_global(machine, state->prev_sound_pins);
512   state_save_register_global(machine, state->curr_sound_pins);
513   state_save_register_global(machine, state->n8080_hardware);
514   state_save_register_global_array(machine, state->mono_flop);
515}
500516
517MACHINE_RESET( sheriff_sound )
518{
519   n8080_state *state = (n8080_state *)machine->driver_data;
520   state->n8080_hardware = 2;
521
522   state->mono_flop[0] = 0;
523   state->mono_flop[1] = 0;
524   state->prev_snd_data = 0;
525   state->prev_sound_pins = 0;
526   state->curr_sound_pins = 0;
527
501528   delayed_sound_1(machine, 0);
502529   delayed_sound_2(machine, 0);
503530}
504531
505532
506static MACHINE_RESET( helifire_sound )
533MACHINE_START( helifire_sound )
507534{
508   n8080_hardware = 3;
535   n8080_state *state = (n8080_state *)machine->driver_data;
509536
537   state_save_register_global(machine, state->prev_snd_data);
538   state_save_register_global(machine, state->prev_sound_pins);
539   state_save_register_global(machine, state->curr_sound_pins);
540   state_save_register_global(machine, state->n8080_hardware);
541   state_save_register_global(machine, state->helifire_dac_volume);
542   state_save_register_global(machine, state->helifire_dac_timing);
543   state_save_register_global(machine, state->helifire_dac_phase);
544}
545
546MACHINE_RESET( helifire_sound )
547{
548   n8080_state *state = (n8080_state *)machine->driver_data;
549   state->n8080_hardware = 3;
550
510551   timer_pulse(machine, ATTOTIME_IN_HZ(1000), NULL, 0, helifire_dac_volume_timer);
511552
512   helifire_dac_volume = 1;
513   helifire_dac_timing = 0;
553   state->helifire_dac_volume = 1;
554   state->helifire_dac_timing = 0;
555   state->helifire_dac_phase = 0;
556   state->prev_snd_data = 0;
557   state->prev_sound_pins = 0;
558   state->curr_sound_pins = 0;
514559
515560   delayed_sound_1(machine, 0);
516561   delayed_sound_2(machine, 0);
517
518   helifire_dac_phase = 0;
519562}
520563
521564
r6428r6429
553596   MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map)
554597   MDRV_CPU_IO_MAP(n8080_sound_io_map)
555598
556   MDRV_MACHINE_RESET(spacefev_sound)
557
558599   /* sound hardware */
559600   MDRV_SPEAKER_STANDARD_MONO("mono")
560601
561602   MDRV_SOUND_ADD("dac", DAC, 0)
562603   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
563604
564   MDRV_SOUND_ADD("sn", SN76477, 0)
605   MDRV_SOUND_ADD("snsnd", SN76477, 0)
565606   MDRV_SOUND_CONFIG(spacefev_sn76477_interface)
566607   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
567608MACHINE_DRIVER_END
r6428r6429
574615   MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map)
575616   MDRV_CPU_IO_MAP(n8080_sound_io_map)
576617
577   MDRV_MACHINE_RESET(sheriff_sound)
578
579618   /* sound hardware */
580619   MDRV_SPEAKER_STANDARD_MONO("mono")
581620
582621   MDRV_SOUND_ADD("dac", DAC, 0)
583622   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
584623
585   MDRV_SOUND_ADD("sn", SN76477, 0)
624   MDRV_SOUND_ADD("snsnd", SN76477, 0)
586625   MDRV_SOUND_CONFIG(sheriff_sn76477_interface)
587626   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
588627MACHINE_DRIVER_END
r6428r6429
595634   MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map)
596635   MDRV_CPU_IO_MAP(helifire_sound_io_map)
597636
598   MDRV_MACHINE_RESET(helifire_sound)
599
600637   /* sound hardware */
601638   MDRV_SPEAKER_STANDARD_MONO("mono")
602639
src/mame/audio/cyberbal.c
r6428r6429
6464   coin_counter_w(1, (data >> 5) & 1);
6565   coin_counter_w(0, (data >> 4) & 1);
6666   cputag_set_input_line(space->machine, "dac", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
67   if (!(data & 0x01)) devtag_reset(space->machine, "ym");
67   if (!(data & 0x01)) devtag_reset(space->machine, "ymsnd");
6868}
6969
7070
src/mame/audio/laserbat.c
r6428r6429
1313
1414WRITE8_HANDLER( laserbat_csound2_w )
1515{
16   const device_config *sn = devtag_get_device(space->machine, "sn");
16   const device_config *sn = devtag_get_device(space->machine, "snsnd");
1717   int ksound = 0;
1818
1919   if (data & 0x01)
src/mame/audio/atarijsa.c
r6428r6429
136136
137137   /* determine which sound hardware is installed */
138138   tms5220 = devtag_get_device(machine, "tms");
139   ym2151 = devtag_get_device(machine, "ym");
139   ym2151 = devtag_get_device(machine, "ymsnd");
140140   pokey = devtag_get_device(machine, "pokey");
141141   oki6295 = devtag_get_device(machine, "adpcm");
142142   oki6295_l = devtag_get_device(machine, "adpcml");
r6428r6429
723723
724724static ADDRESS_MAP_START( atarijsa1_map, ADDRESS_SPACE_PROGRAM, 8 )
725725   AM_RANGE(0x0000, 0x1fff) AM_RAM
726   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
726   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
727727   AM_RANGE(0x2800, 0x2bff) AM_READWRITE(jsa1_io_r, jsa1_io_w)
728728   AM_RANGE(0x3000, 0xffff) AM_ROM
729729ADDRESS_MAP_END
r6428r6429
731731
732732static ADDRESS_MAP_START( atarijsa2_map, ADDRESS_SPACE_PROGRAM, 8 )
733733   AM_RANGE(0x0000, 0x1fff) AM_RAM
734   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
734   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
735735   AM_RANGE(0x2800, 0x2bff) AM_READWRITE(jsa2_io_r, jsa2_io_w)
736736   AM_RANGE(0x3000, 0xffff) AM_ROM
737737ADDRESS_MAP_END
r6428r6429
740740/* full map verified from schematics and Batman GALs */
741741static ADDRESS_MAP_START( atarijsa3_map, ADDRESS_SPACE_PROGRAM, 8 )
742742   AM_RANGE(0x0000, 0x1fff) AM_RAM
743   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
743   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
744744   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(jsa3_io_r, jsa3_io_w)
745745   AM_RANGE(0x3000, 0xffff) AM_ROM
746746ADDRESS_MAP_END
r6428r6429
748748
749749static ADDRESS_MAP_START( atarijsa3s_map, ADDRESS_SPACE_PROGRAM, 8 )
750750   AM_RANGE(0x0000, 0x1fff) AM_RAM
751   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
751   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
752752   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(jsa3s_io_r, jsa3s_io_w)
753753   AM_RANGE(0x3000, 0xffff) AM_ROM
754754ADDRESS_MAP_END
r6428r6429
785785   /* sound hardware */
786786   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
787787
788   MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK)
788   MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
789789   MDRV_SOUND_CONFIG(ym2151_config)
790790   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
791791   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
r6428r6429
799799   MDRV_IMPORT_FROM(jsa_i_stereo)
800800
801801   /* sound hardware */
802   MDRV_SOUND_REPLACE("ym", YM2151, JSA_MASTER_CLOCK)
802   MDRV_SOUND_REPLACE("ymsnd", YM2151, JSA_MASTER_CLOCK)
803803   MDRV_SOUND_CONFIG(ym2151_config)
804804   MDRV_SOUND_ROUTE(0, "rspeaker", 0.60)
805805   MDRV_SOUND_ROUTE(1, "lspeaker", 0.60)
r6428r6429
830830   /* sound hardware */
831831   MDRV_SPEAKER_STANDARD_MONO("mono")
832832
833   MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK)
833   MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
834834   MDRV_SOUND_CONFIG(ym2151_config)
835835   MDRV_SOUND_ROUTE(0, "mono", 0.60)
836836   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
851851   /* sound hardware */
852852   MDRV_SPEAKER_STANDARD_MONO("mono")
853853
854   MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK)
854   MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
855855   MDRV_SOUND_CONFIG(ym2151_config)
856856   MDRV_SOUND_ROUTE(0, "mono", 0.60)
857857   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
897897   /* sound hardware */
898898   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
899899
900   MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK)
900   MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
901901   MDRV_SOUND_CONFIG(ym2151_config)
902902   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
903903   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/audio/leland.c
r6428r6429
518518   int i;
519519
520520   /* determine which sound hardware is installed */
521   has_ym2151 = (devtag_get_device(device->machine, "ym") != NULL);
521   has_ym2151 = (devtag_get_device(device->machine, "ymsnd") != NULL);
522522
523523   /* allocate separate streams for the DMA and non-DMA DACs */
524524   dma_stream = stream_create(device, 0, 1, OUTPUT_RATE, (void *)dmaspace, leland_80186_dma_update);
r6428r6429
20432043         if (!has_ym2151)
20442044            return pit8254_r(space, offset | 0x40, mem_mask);
20452045         else
2046            return ym2151_r(devtag_get_device(space->machine, "ym"), offset);
2046            return ym2151_r(devtag_get_device(space->machine, "ymsnd"), offset);
20472047
20482048      case 4:
20492049         if (is_redline)
r6428r6429
20792079         if (!has_ym2151)
20802080            pit8254_w(space, offset | 0x40, data, mem_mask);
20812081         else
2082            ym2151_w(devtag_get_device(space->machine, "ym"), offset, data);
2082            ym2151_w(devtag_get_device(space->machine, "ymsnd"), offset, data);
20832083         break;
20842084
20852085      case 4:
src/mame/audio/blockade.c
r6428r6429
3939WRITE8_DEVICE_HANDLER( blockade_sound_freq_w )
4040{
4141   discrete_sound_w(device,BLOCKADE_NOTE_DATA, data);
42    return;
42   return;
4343}
4444
4545WRITE8_HANDLER( blockade_env_on_w )
4646{
4747   const device_config *samples = devtag_get_device(space->machine, "samples");
48    if (BLOCKADE_LOG) mame_printf_debug("Boom Start\n");
49    sample_start(samples, 0,0,0);
50    return;
48   if (BLOCKADE_LOG) mame_printf_debug("Boom Start\n");
49   sample_start(samples, 0,0,0);
50   return;
5151}
5252
5353WRITE8_HANDLER( blockade_env_off_w )
5454{
55    if (BLOCKADE_LOG) mame_printf_debug("Boom End\n");
56    return;
55   if (BLOCKADE_LOG) mame_printf_debug("Boom End\n");
56   return;
5757}
5858
5959static const char *const blockade_sample_names[] =
6060{
61    "*blockade",
62    "boom.wav",
63    0
61   "*blockade",
62   "boom.wav",
63   0
6464};
6565
6666const samples_interface blockade_samples_interface =
6767{
68    1,   /* 1 channel */
68   1,   /* 1 channel */
6969   blockade_sample_names
7070};
src/mame/audio/seibu.c
r6428r6429
475475   AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w)
476476   AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w)
477477   AM_RANGE(0x4007, 0x4007) AM_WRITE(seibu_bank_w)
478   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
478   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
479479   AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r)
480480   AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r)
481481   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r6428r6429
494494   AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w)
495495   AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w)
496496   AM_RANGE(0x4007, 0x4007) AM_WRITE(seibu_bank_w)
497   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
497   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
498498   AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r)
499499   AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r)
500500   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r6428r6429
512512   AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w)
513513   AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w)
514514   AM_RANGE(0x4007, 0x4007) AM_WRITE(seibu_bank_w)
515   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
515   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
516516   AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r)
517517   AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r)
518518   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
src/mame/audio/seibu.h
r6428r6429
9898#define SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(freq1,freq2)         \
9999   MDRV_SPEAKER_STANDARD_MONO("mono")                        \
100100                                                   \
101   MDRV_SOUND_ADD("ym", YM3812, freq1)                        \
101   MDRV_SOUND_ADD("ymsnd", YM3812, freq1)                        \
102102   MDRV_SOUND_CONFIG(seibu_ym3812_interface)                  \
103103   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)                  \
104104                                                   \
r6428r6429
109109#define SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(freq1,freq2)      \
110110   MDRV_SPEAKER_STANDARD_MONO("mono")                        \
111111                                                   \
112   MDRV_SOUND_ADD("ym", YM3812, freq1)                        \
112   MDRV_SOUND_ADD("ymsnd", YM3812, freq1)                        \
113113   MDRV_SOUND_CONFIG(seibu_ym3812_interface)                  \
114114   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)                  \
115115                                                   \
r6428r6429
120120#define SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(freq1,freq2)         \
121121   MDRV_SPEAKER_STANDARD_MONO("mono")                        \
122122                                                   \
123   MDRV_SOUND_ADD("ym", YM2151, freq1)                        \
123   MDRV_SOUND_ADD("ymsnd", YM2151, freq1)                        \
124124   MDRV_SOUND_CONFIG(seibu_ym2151_interface)                  \
125125   MDRV_SOUND_ROUTE(0, "mono", 0.50)                        \
126126   MDRV_SOUND_ROUTE(1, "mono", 0.50)                        \
r6428r6429
133133#define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1,freq2,regiona, regionb)      \
134134   MDRV_SPEAKER_STANDARD_MONO("mono")                        \
135135                                                   \
136   MDRV_SOUND_ADD("ym", YM2151, freq1)                        \
136   MDRV_SOUND_ADD("ymsnd", YM2151, freq1)                        \
137137   MDRV_SOUND_CONFIG(seibu_ym2151_interface)                  \
138138   MDRV_SOUND_ROUTE(0, "mono", 0.50)                        \
139139   MDRV_SOUND_ROUTE(1, "mono", 0.50)                        \
src/mame/audio/gottlieb.c
r6428r6429
469469
470470static CUSTOM_INPUT( speech_drq_custom_r )
471471{
472   return sp0250_drq_r(devtag_get_device(field->port->machine, "sp"));
472   return sp0250_drq_r(devtag_get_device(field->port->machine, "spsnd"));
473473}
474474
475475
r6428r6429
506506   /* bit 6 = speech chip DATA PRESENT pin; high then low to make the chip read data */
507507   if ((previous & 0x40) == 0 && (data & 0x40) != 0)
508508   {
509      const device_config *sp = devtag_get_device(space->machine, "sp");
509      const device_config *sp = devtag_get_device(space->machine, "spsnd");
510510      sp0250_w(sp, 0, *sp0250_latch);
511511   }
512512
513513   /* bit 7 goes to the speech chip RESET pin */
514514   if ((previous ^ data) & 0x80)
515515   {
516      const device_config *sp = devtag_get_device(space->machine, "sp");
516      const device_config *sp = devtag_get_device(space->machine, "spsnd");
517517      device_reset(sp);
518518   }
519519}
r6428r6429
601601   MDRV_SOUND_ADD("ay2", AY8913, SOUND2_CLOCK/2)
602602   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
603603
604   MDRV_SOUND_ADD("sp", SP0250, SOUND2_SPEECH_CLOCK)
604   MDRV_SOUND_ADD("spsnd", SP0250, SOUND2_SPEECH_CLOCK)
605605   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
606606MACHINE_DRIVER_END
607607
src/mame/audio/8080bw.c
r6428r6429
4040WRITE8_HANDLER( invadpt2_sh_port_1_w )
4141{
4242   const device_config *samples = devtag_get_device(space->machine, "samples");
43   const device_config *sn = devtag_get_device(space->machine, "sn");
43   const device_config *sn = devtag_get_device(space->machine, "snsnd");
4444   UINT8 rising_bits = data & ~port_1_last_extra;
4545
4646   sn76477_enable_w(sn, !(data & 0x01));         /* SAUCER SOUND */
r6428r6429
9292{
9393   const device_config *samples = devtag_get_device(space->machine, "samples");
9494   const device_config *speaker = devtag_get_device(space->machine, "speaker");
95   const device_config *sn = devtag_get_device(space->machine, "sn");
95   const device_config *sn = devtag_get_device(space->machine, "snsnd");
9696   UINT8 rising_bits = data & ~port_1_last_extra;
9797
9898   sn76477_enable_w(sn, !(data & 0x01));         /* Saucer Sound */
r6428r6429
800800WRITE8_HANDLER( schaser_sh_port_1_w )
801801{
802802   const device_config *discrete = devtag_get_device(space->machine, "discrete");
803   const device_config *sn = devtag_get_device(space->machine, "sn");
803   const device_config *sn = devtag_get_device(space->machine, "snsnd");
804804   static int last_effect = 0;
805805   int effect;
806806
r6428r6429
895895
896896static TIMER_CALLBACK( schaser_effect_555_cb )
897897{
898   const device_config *sn = devtag_get_device(machine, "sn");
898   const device_config *sn = devtag_get_device(machine, "snsnd");
899899   int effect = param;
900900   attotime new_time;
901901   /* Toggle 555 output */
r6428r6429
10321032WRITE8_HANDLER( lupin3_sh_port_1_w )
10331033{
10341034   const device_config *samples = devtag_get_device(space->machine, "samples");
1035   const device_config *sn = devtag_get_device(space->machine, "sn");
1035   const device_config *sn = devtag_get_device(space->machine, "snsnd");
10361036   UINT8 rising_bits = data & ~port_1_last_extra;
10371037
10381038   if (rising_bits & 0x01) sample_start(samples, 0, 6, 0);      /* Walking, get money */
r6428r6429
11201120WRITE8_HANDLER( yosakdon_sh_port_2_w )
11211121{
11221122   const device_config *samples = devtag_get_device(space->machine, "samples");
1123   const device_config *sn = devtag_get_device(space->machine, "sn");
1123   const device_config *sn = devtag_get_device(space->machine, "snsnd");
11241124   UINT8 rising_bits = data & ~port_2_last_extra;
11251125
11261126   if (rising_bits & 0x01) sample_start(samples, 1, 6, 0);         /* Ready? , Game Over */
r6428r6429
11461146   /* bit 3 is high while you are alive and playing */
11471147
11481148   const device_config *samples = devtag_get_device(space->machine, "samples");
1149   const device_config *sn = devtag_get_device(space->machine, "sn");
1149   const device_config *sn = devtag_get_device(space->machine, "snsnd");
11501150   UINT8 rising_bits = data & ~port_1_last_extra;
11511151
11521152   if (rising_bits & 0x01) sample_start(samples, 4, 4, 0);         /* Fleet move */
src/mame/audio/astrof.c
r6428r6429
1010#include "includes/astrof.h"
1111
1212
13
1413/*************************************
1514 *
16 *  Globals
17 *
18 *************************************/
19
20static UINT8 port_1_last;
21static UINT8 port_2_last;
22static UINT8 astrof_start_explosion;
23static UINT8 astrof_death_playing;
24static UINT8 astrof_bosskill_playing;
25
26
27
28/*************************************
29 *
30 *  Machine setup
31 *
32 *************************************/
33
34
35MACHINE_START( astrof_audio )
36{
37   /* setup for save states */
38   state_save_register_global(machine, port_1_last);
39   state_save_register_global(machine, port_2_last);
40   state_save_register_global(machine, astrof_start_explosion);
41   state_save_register_global(machine, astrof_death_playing);
42   state_save_register_global(machine, astrof_bosskill_playing);
43}
44
45
46
47/*************************************
48 *
4915 *  Astro Fighter
5016 *
5117 *************************************/
r6428r6429
6834
6935WRITE8_HANDLER( astrof_audio_1_w )
7036{
71   const device_config *samples = devtag_get_device(space->machine, "samples");
72   UINT8 rising_bits = data & ~port_1_last;
37   astrof_state *state = (astrof_state *)space->machine->driver_data;
38   UINT8 rising_bits = data & ~state->port_1_last;
7339
74   if (astrof_death_playing)
75      astrof_death_playing = sample_playing(samples, CHANNEL_EXPLOSION);
40   if (state->astrof_death_playing)
41      state->astrof_death_playing = sample_playing(state->samples, CHANNEL_EXPLOSION);
7642
77   if (astrof_bosskill_playing)
78      astrof_bosskill_playing = sample_playing(samples, CHANNEL_EXPLOSION);
43   if (state->astrof_bosskill_playing)
44      state->astrof_bosskill_playing = sample_playing(state->samples, CHANNEL_EXPLOSION);
7945
8046   /* D2 - explosion */
8147   if (rising_bits & 0x04)
8248   {
8349      /* I *know* that the effect select port will be written shortly
8450           after this one, so this works */
85      astrof_start_explosion = 1;
51      state->astrof_start_explosion = 1;
8652   }
8753
8854   /* D0,D1,D3 - background noise */
89   if ((data & 0x08) && (~port_1_last & 0x08))
55   if ((data & 0x08) && (~state->port_1_last & 0x08))
9056   {
9157      int sample = SAMPLE_WAVE + (data & 3);
92      sample_start(samples, CHANNEL_WAVE, sample, 1);
58      sample_start(state->samples, CHANNEL_WAVE, sample, 1);
9359   }
9460
95   if ((~data & 0x08) && (port_1_last & 0x08))
96      sample_stop(samples, CHANNEL_WAVE);
61   if ((~data & 0x08) && (state->port_1_last & 0x08))
62      sample_stop(state->samples, CHANNEL_WAVE);
9763
9864   /* D4 - boss laser */
99   if ((rising_bits & 0x10) && !astrof_bosskill_playing)
100      sample_start(samples, CHANNEL_BOSSFIRE, SAMPLE_BOSSFIRE, 0);
65   if ((rising_bits & 0x10) && !state->astrof_bosskill_playing)
66      sample_start(state->samples, CHANNEL_BOSSFIRE, SAMPLE_BOSSFIRE, 0);
10167
10268   /* D5 - fire */
103   if ((rising_bits & 0x20) && !astrof_bosskill_playing)
104      sample_start(samples, CHANNEL_FIRE, SAMPLE_FIRE, 0);
69   if ((rising_bits & 0x20) && !state->astrof_bosskill_playing)
70      sample_start(state->samples, CHANNEL_FIRE, SAMPLE_FIRE, 0);
10571
10672   /* D6 - don't know. Probably something to do with the explosion sounds */
10773
10874   /* D7 - sound enable bit */
10975   sound_global_enable(space->machine, data & 0x80);
11076
111   port_1_last = data;
77   state->port_1_last = data;
11278}
11379
11480
11581WRITE8_HANDLER( astrof_audio_2_w )
11682{
117   const device_config *samples = devtag_get_device(space->machine, "samples");
118   UINT8 rising_bits = data & ~port_2_last;
83   astrof_state *state = (astrof_state *)space->machine->driver_data;
84   UINT8 rising_bits = data & ~state->port_2_last;
11985
12086   /* D0-D2 - explosion select (triggered by D2 of the other port */
121   if (astrof_start_explosion)
87   if (state->astrof_start_explosion)
12288   {
12389      /* this is really a compound effect, made up of I believe 3 sound
12490           effects, but since our sample contains them all, disable playing
12591           the other effects while the explosion is playing */
126logerror("Explosion: %x\n", data);
92
93      logerror("Explosion: %x\n", data);
12794      if (data & 0x04)
12895      {
129         if (!astrof_bosskill_playing)
96         if (!state->astrof_bosskill_playing)
13097         {
131            sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_BOSSKILL, 0);
132
133            astrof_bosskill_playing = 1;
98            sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_BOSSKILL, 0);
99            state->astrof_bosskill_playing = 1;
134100         }
135101      }
136102      else if (data & 0x02)
137         sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_BOSSHIT, 0);
103         sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_BOSSHIT, 0);
138104      else if (data & 0x01)
139         sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_EKILLED, 0);
105         sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_EKILLED, 0);
140106      else
141107      {
142         if (!astrof_death_playing)
108         if (!state->astrof_death_playing)
143109         {
144            sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_DEATH, 0);
145
146            astrof_death_playing = 1;
110            sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_DEATH, 0);
111            state->astrof_death_playing = 1;
147112         }
148113      }
149114
150      astrof_start_explosion = 0;
115      state->astrof_start_explosion = 0;
151116   }
152117
153118   /* D3 - low fuel warning */
154119   if (rising_bits & 0x08)
155      sample_start(samples, CHANNEL_FUEL, SAMPLE_FUEL, 0);
120      sample_start(state->samples, CHANNEL_FUEL, SAMPLE_FUEL, 0);
156121
157   port_2_last = data;
122   state->port_2_last = data;
158123}
159124
160125
r6428r6429
219184
220185WRITE8_HANDLER( tomahawk_audio_w )
221186{
222   const device_config *sn = devtag_get_device(space->machine, "sn");
187   astrof_state *state = (astrof_state *)space->machine->driver_data;
223188
224189   /* D0 - sonar */
225190
r6428r6429
232197   /* D4 - UFO */
233198
234199   /* D5 - UFO under water */
235   sn76477_enable_w(sn, (~data >> 5) & 0x01);
200   sn76477_enable_w(state->sn, (~data >> 5) & 0x01);
236201
237202   /* D6 - explosion */
238203
r6428r6429
271236
272237MACHINE_DRIVER_START( tomahawk_audio )
273238   MDRV_SPEAKER_STANDARD_MONO("mono")
274   MDRV_SOUND_ADD("sn", SN76477, 0)
239   MDRV_SOUND_ADD("snsnd", SN76477, 0)
275240   MDRV_SOUND_CONFIG(tomahawk_sn76477_interface)
276241   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
277242MACHINE_DRIVER_END
src/mame/audio/crbaloon.c
r6428r6429
171171
172172   MDRV_SPEAKER_STANDARD_MONO("mono")
173173
174   MDRV_SOUND_ADD("sn", SN76477, 0)
174   MDRV_SOUND_ADD("snsnd", SN76477, 0)
175175   MDRV_SOUND_CONFIG(crbaloon_sn76477_interface)
176176   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
177177
src/mame/audio/t5182.c
r6428r6429
307307   // 50  W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received)
308308ADDRESS_MAP_START( t5182_io, ADDRESS_SPACE_IO, 8 )
309309   ADDRESS_MAP_GLOBAL_MASK(0xff)
310   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
310   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
311311   AM_RANGE(0x10, 0x10) AM_WRITE(t5182_sharedram_semaphore_snd_acquire_w)
312312   AM_RANGE(0x11, 0x11) AM_WRITE(t5182_sharedram_semaphore_snd_release_w)
313313   AM_RANGE(0x12, 0x12) AM_WRITE(t5182_ym2151_irq_ack_w)
src/mame/audio/irem.c
r6428r6429
55***************************************************************************/
66
77#include "driver.h"
8#include "irem.h"
98#include "cpu/m6800/m6800.h"
109#include "sound/ay8910.h"
1110#include "sound/msm5205.h"
1211#include "sound/discrete.h"
12#include "includes/iremz80.h"
1313
14static UINT8 port1, port2;
1514
16
1715/*************************************
1816 *
1917 *  Sound board initialization
r6428r6429
2220
2321static SOUND_START( irem_audio )
2422{
25   state_save_register_global(machine, port1);
26   state_save_register_global(machine, port2);
23   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
24
25   state->adpcm1 = devtag_get_device(machine, "msm1");
26   state->adpcm2 = devtag_get_device(machine, "msm2");
27   state->ay1 = devtag_get_device(machine, "ay1");
28   state->ay2 = devtag_get_device(machine, "ay2");
29
30   state_save_register_global(machine, state->port1);
31   state_save_register_global(machine, state->port2);
2732}
2833
2934
r6428r6429
5358
5459static WRITE8_HANDLER( m6803_port1_w )
5560{
56   port1 = data;
61   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
62
63   state->port1 = data;
5764}
5865
5966
6067static WRITE8_HANDLER( m6803_port2_w )
6168{
69   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
70
6271   /* write latch */
63   if ((port2 & 0x01) && !(data & 0x01))
72   if ((state->port2 & 0x01) && !(data & 0x01))
6473   {
65      const device_config *ay1 = devtag_get_device(space->machine, "ay1");
66      const device_config *ay2 = devtag_get_device(space->machine, "ay2");
67
6874      /* control or data port? */
69      if (port2 & 0x04)
75      if (state->port2 & 0x04)
7076      {
7177         /* PSG 0 or 1? */
72         if (port2 & 0x08)
73            ay8910_address_w(ay1, 0, port1);
74         if (port2 & 0x10)
75            ay8910_address_w(ay2, 0, port1);
78         if (state->port2 & 0x08)
79            ay8910_address_w(state->ay1, 0, state->port1);
80         if (state->port2 & 0x10)
81            ay8910_address_w(state->ay2, 0, state->port1);
7682      }
7783      else
7884      {
7985         /* PSG 0 or 1? */
80         if (port2 & 0x08)
81            ay8910_data_w(ay1, 0, port1);
82         if (port2 & 0x10)
83            ay8910_data_w(ay2, 0, port1);
86         if (state->port2 & 0x08)
87            ay8910_data_w(state->ay1, 0, state->port1);
88         if (state->port2 & 0x10)
89            ay8910_data_w(state->ay2, 0, state->port1);
8490      }
8591   }
86   port2 = data;
92   state->port2 = data;
8793}
8894
8995
r6428r6429
96102
97103static READ8_HANDLER( m6803_port1_r )
98104{
105   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
106
99107   /* PSG 0 or 1? */
100   if (port2 & 0x08)
101      return ay8910_r(devtag_get_device(space->machine, "ay1"), 0);
102   if (port2 & 0x10)
103      return ay8910_r(devtag_get_device(space->machine, "ay2"), 0);
108   if (state->port2 & 0x08)
109      return ay8910_r(state->ay1, 0);
110   if (state->port2 & 0x10)
111      return ay8910_r(state->ay2, 0);
104112   return 0xff;
105113}
106114
r6428r6429
120128
121129static WRITE8_DEVICE_HANDLER( ay8910_0_portb_w )
122130{
123   const device_config *adpcm0 = devtag_get_device(device->machine, "msm1");
124   const device_config *adpcm1 = devtag_get_device(device->machine, "msm2");
131   irem_z80_state *state = (irem_z80_state *)device->machine->driver_data;
125132
126133   /* bits 2-4 select MSM5205 clock & 3b/4b playback mode */
127   msm5205_playmode_w(adpcm0, (data >> 2) & 7);
128   if (adpcm1 != NULL)
129      msm5205_playmode_w(adpcm1, ((data >> 2) & 4) | 3);   /* always in slave mode */
134   msm5205_playmode_w(state->adpcm1, (data >> 2) & 7);
135   if (state->adpcm2 != NULL)
136      msm5205_playmode_w(state->adpcm2, ((data >> 2) & 4) | 3);   /* always in slave mode */
130137
131138   /* bits 0 and 1 reset the two chips */
132   msm5205_reset_w(adpcm0, data & 1);
133   if (adpcm1 != NULL)
134      msm5205_reset_w(adpcm1, data & 2);
139   msm5205_reset_w(state->adpcm1, data & 1);
140   if (state->adpcm2 != NULL)
141      msm5205_reset_w(state->adpcm2, data & 2);
135142}
136143
137144
r6428r6429
158165
159166static WRITE8_HANDLER( m52_adpcm_w )
160167{
168   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
169
161170   if (offset & 1)
162171   {
163      const device_config *adpcm = devtag_get_device(space->machine, "msm1");
164      msm5205_data_w(adpcm, data);
172      msm5205_data_w(state->adpcm1, data);
165173   }
166174   if (offset & 2)
167175   {
168      const device_config *adpcm = devtag_get_device(space->machine, "msm2");
169      if (adpcm != NULL)
170         msm5205_data_w(adpcm, data);
176      if (state->adpcm2 != NULL)
177         msm5205_data_w(state->adpcm2, data);
171178   }
172179}
173180
174181
175182static WRITE8_HANDLER( m62_adpcm_w )
176183{
177   const device_config *adpcm = devtag_get_device(space->machine, (offset & 1) ? "msm2" : "msm1");
184   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
185
186   const device_config *adpcm = (offset & 1) ? state->adpcm2 : state->adpcm1;
178187   if (adpcm != NULL)
179188      msm5205_data_w(adpcm, data);
180189}
r6428r6429
189198
190199static void adpcm_int(const device_config *device)
191200{
192   const device_config *msm2 = devtag_get_device(device->machine, "msm2");
201   irem_z80_state *state = (irem_z80_state *)device->machine->driver_data;
193202
194203   cputag_set_input_line(device->machine, "iremsound", INPUT_LINE_NMI, PULSE_LINE);
195204
196205   /* the first MSM5205 clocks the second */
197   if (msm2 != NULL)
206   if (state->adpcm2 != NULL)
198207   {
199      msm5205_vclk_w(msm2, 1);
200      msm5205_vclk_w(msm2, 0);
208      msm5205_vclk_w(state->adpcm2, 1);
209      msm5205_vclk_w(state->adpcm2, 0);
201210   }
202211}
203212
src/mame/audio/williams.c
r6428r6429
9797/* CVSD readmem/writemem structures */
9898static ADDRESS_MAP_START( williams_cvsd_map, ADDRESS_SPACE_PROGRAM, 8 )
9999   AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
100   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
100   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
101101   AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("cvsdpia", pia6821_r, pia6821_w)
102102   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_DEVWRITE("cvsd", cvsd_digit_clock_clear_w)
103103   AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_DEVWRITE("cvsd", cvsd_clock_set_w)
r6428r6429
109109/* NARC master readmem/writemem structures */
110110static ADDRESS_MAP_START( williams_narc_master_map, ADDRESS_SPACE_PROGRAM, 8 )
111111   AM_RANGE(0x0000, 0x1fff) AM_RAM
112   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
112   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
113113   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_WRITE(narc_master_talkback_w)
114114   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_WRITE(narc_command2_w)
115115   AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("dac1", dac_w)
r6428r6429
139139static ADDRESS_MAP_START( williams_adpcm_map, ADDRESS_SPACE_PROGRAM, 8 )
140140   AM_RANGE(0x0000, 0x1fff) AM_RAM
141141   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x03ff) AM_WRITE(adpcm_bank_select_w)
142   AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
142   AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
143143   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_DEVWRITE("dac", dac_w)
144144   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
145145   AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_READ(adpcm_command_r)
r6428r6429
201201
202202   MDRV_SPEAKER_STANDARD_MONO("mono")
203203
204   MDRV_SOUND_ADD("ym", YM2151, CVSD_FM_CLOCK)
204   MDRV_SOUND_ADD("ymsnd", YM2151, CVSD_FM_CLOCK)
205205   MDRV_SOUND_CONFIG(cvsd_ym2151_interface)
206206   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
207207
r6428r6429
222222
223223   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
224224
225   MDRV_SOUND_ADD("ym", YM2151, NARC_FM_CLOCK)
225   MDRV_SOUND_ADD("ymsnd", YM2151, NARC_FM_CLOCK)
226226   MDRV_SOUND_CONFIG(adpcm_ym2151_interface)
227227   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
228228   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
r6428r6429
247247
248248   MDRV_SPEAKER_STANDARD_MONO("mono")
249249
250   MDRV_SOUND_ADD("ym", YM2151, ADPCM_FM_CLOCK)
250   MDRV_SOUND_ADD("ymsnd", YM2151, ADPCM_FM_CLOCK)
251251   MDRV_SOUND_CONFIG(adpcm_ym2151_interface)
252252   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
253253
r6428r6429
382382static void init_audio_state(running_machine *machine)
383383{
384384   /* reset the YM2151 state */
385   devtag_reset(machine, "ym");
385   devtag_reset(machine, "ymsnd");
386386
387387   /* clear all the interrupts */
388388   williams_sound_int_state = 0;
src/mame/audio/redalert.c
r6428r6429
136136static ADDRESS_MAP_START( redalert_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
137137   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
138138   AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM
139   AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0ffe) AM_READNOP AM_DEVWRITE("ay", redalert_AY8910_w)
139   AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0ffe) AM_READNOP AM_DEVWRITE("aysnd", redalert_AY8910_w)
140140   AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x0ffe) AM_READWRITE(redalert_ay8910_latch_1_r, redalert_ay8910_latch_2_w)
141141   AM_RANGE(0x2000, 0x6fff) AM_NOP
142142   AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM
r6428r6429
223223   MDRV_CPU_PROGRAM_MAP(redalert_audio_map)
224224   MDRV_CPU_PERIODIC_INT(irq0_line_hold, REDALERT_AUDIO_CPU_IRQ_FREQ)
225225
226   MDRV_SOUND_ADD("ay", AY8910, REDALERT_AY8910_CLOCK)
226   MDRV_SOUND_ADD("aysnd", AY8910, REDALERT_AY8910_CLOCK)
227227   MDRV_SOUND_CONFIG(redalert_ay8910_interface)
228228   MDRV_SOUND_ROUTE(0, "mono", 0.50)
229229   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/audio/mario.c
r6428r6429
656656static ADDRESS_MAP_START( masao_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
657657   AM_RANGE(0x0000, 0x0fff) AM_ROM
658658   AM_RANGE(0x2000, 0x23ff) AM_RAM
659   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
660   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay", ay8910_address_w)
659   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
660   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_address_w)
661661ADDRESS_MAP_END
662662
663663/*************************************
r6428r6429
713713
714714   MDRV_SPEAKER_STANDARD_MONO("mono")
715715
716   MDRV_SOUND_ADD("ay", AY8910, 14318000/6)
716   MDRV_SOUND_ADD("aysnd", AY8910, 14318000/6)
717717   MDRV_SOUND_CONFIG(ay8910_config)
718718   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
719719
src/mame/audio/mw8080bw.c
r6428r6429
31493149MACHINE_DRIVER_START( spcenctr_audio )
31503150   MDRV_SPEAKER_STANDARD_MONO("mono")
31513151
3152   MDRV_SOUND_ADD("sn", SN76477, 0)
3152   MDRV_SOUND_ADD("snsnd", SN76477, 0)
31533153   MDRV_SOUND_CONFIG(spcenctr_sn76477_interface)
31543154   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
31553155
r6428r6429
31893189
31903190WRITE8_DEVICE_HANDLER( spcenctr_audio_3_w )
31913191{
3192   const device_config *sn = devtag_get_device(device->machine, "sn");
3192   const device_config *sn = devtag_get_device(device->machine, "snsnd");
31933193
31943194   /* if (data & 0x01)  enable SCREECH (hit the sides) sound */
31953195
r6428r6429
35163516
35173517   MDRV_SPEAKER_STANDARD_MONO("mono")
35183518
3519   MDRV_SOUND_ADD("sn", SN76477, 0)
3519   MDRV_SOUND_ADD("snsnd", SN76477, 0)
35203520   MDRV_SOUND_CONFIG(invaders_sn76477_interface)
35213521   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
35223522
r6428r6429
40834083MACHINE_DRIVER_START( invaders_audio )
40844084   MDRV_SPEAKER_STANDARD_MONO("mono")
40854085
4086   MDRV_SOUND_ADD("sn", SN76477, 0)
4086   MDRV_SOUND_ADD("snsnd", SN76477, 0)
40874087   MDRV_SOUND_CONFIG(invaders_sn76477_interface)
40884088   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
40894089
r6428r6429
40954095
40964096WRITE8_DEVICE_HANDLER( invaders_audio_1_w )
40974097{
4098   const device_config *sn = devtag_get_device(device->machine, "sn");
4098   const device_config *sn = devtag_get_device(device->machine, "snsnd");
40994099
41004100   sn76477_enable_w(sn, (~data >> 0) & 0x01);   /* saucer sound */
41014101
src/mame/machine/nmk004.c
r6428r6429
10211021   memset(&NMK004_state, 0, sizeof(NMK004_state));
10221022
10231023   NMK004_state.machine = machine;
1024   NMK004_state.ymdevice = devtag_get_device(machine, "ym");
1024   NMK004_state.ymdevice = devtag_get_device(machine, "ymsnd");
10251025   NMK004_state.oki1device = devtag_get_device(machine, "oki1");
10261026   NMK004_state.oki2device = devtag_get_device(machine, "oki2");
10271027
src/mame/machine/irobot.c
r6428r6429
10171017      }
10181018      if (op->jtype != 7) logerror("  %04X    \n",op->nxtadd);
10191019      if (op->jtype == 5) logerror("\n");
1020      }
10211020   }
10221021}
10231022#endif
src/mame/machine/neoboot.c
r6428r6429
653653void lans2004_vx_decrypt( running_machine *machine )
654654{
655655   int i;
656   UINT8 *rom = memory_region( machine, "ym" );
656   UINT8 *rom = memory_region( machine, "ymsnd" );
657657   for (i = 0; i < 0xA00000; i++)
658658      rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
659659}
r6428r6429
10671067
10681068void samsho5b_vx_decrypt( running_machine *machine )
10691069{
1070   int vx_size = memory_region_length( machine, "ym" );
1071   UINT8 *rom = memory_region( machine, "ym" );
1070   int vx_size = memory_region_length( machine, "ymsnd" );
1071   UINT8 *rom = memory_region( machine, "ymsnd" );
10721072   int i;
10731073
10741074   for( i = 0; i < vx_size; i++ )
src/mame/machine/konamigx.c
r6428r6429
66
77#include "driver.h"
88#include "video/konamiic.h"
9#include "machine/konamigx.h"
9#include "konamigx.h"
1010
11#define GX_DEBUG 0
12
1311/***************************************************************************/
1412/*                                                                         */
15/*                     2nd-Tier GX/MW Graphics Functions                   */
16/*                                                                         */
17/***************************************************************************/
18
19#if GX_DEBUG
20   #define GX_ZBUFW     512
21   #define GX_ZBUFH     384
22   #define GX_ZPAGESIZE 0x300000
23   #define GX_ZBUFSIZE  0x600000
24#else
25   #define GX_ZBUFW     384
26   #define GX_ZBUFH     224
27   #define GX_ZPAGESIZE 0x150000
28   #define GX_ZBUFSIZE  0x2a0000
29#endif
30
31static UINT8 *gx_objzbuf, *gx_shdzbuf;
32
33
34// Localized K053936/ROZ+
35#define K053936_MAX_CHIPS 2
36
37static rectangle K053936_cliprect[K053936_MAX_CHIPS] = {{0,0,0,0},{0,0,0,0}};
38static int K053936_offset[K053936_MAX_CHIPS][2] = {{0,0},{0,0}};
39static int K053936_clip_enabled[K053936_MAX_CHIPS] = {0,0};
40
41
42void K053936GP_set_offset(int chip, int xoffs, int yoffs) { K053936_offset[chip][0] = xoffs; K053936_offset[chip][1] = yoffs; }
43
44void K053936GP_clip_enable(int chip, int status) { K053936_clip_enabled[chip] = status; }
45
46void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy)
47{
48   rectangle *cliprect = &K053936_cliprect[chip];
49   cliprect->min_x = minx;
50   cliprect->max_x = maxx;
51   cliprect->min_y = miny;
52   cliprect->max_y = maxy;
53}
54
55INLINE void K053936GP_copyroz32clip( running_machine *machine,
56      bitmap_t *dst_bitmap, bitmap_t *src_bitmap,
57      const rectangle *dst_cliprect, const rectangle *src_cliprect,
58      UINT32 _startx,UINT32 _starty,int _incxx,int _incxy,int _incyx,int _incyy,
59      int tilebpp, int blend, int alpha, int clip )
60{
61   static const int colormask[8]={1,3,7,0xf,0x1f,0x3f,0x7f,0xff};
62
63   int cy, cx;
64   int ecx;
65   int src_pitch, incxy, incxx;
66   int src_minx, src_maxx, src_miny, src_maxy, cmask;
67   UINT16 *src_base;
68   const pen_t *pal_base;
69   UINT32 *dst_ptr;
70
71   int tx, dst_pitch;
72   UINT32 *dst_base;
73   int starty, incyy, startx, incyx, ty, sx, sy;
74
75   incxy = _incxy; incxx = _incxx; incyy = _incyy; incyx = _incyx;
76   starty = _starty; startx = _startx;
77
78   if (src_cliprect && clip) // set source clip range to some extreme values when disabled
79   {
80      src_minx = src_cliprect->min_x;
81      src_maxx = src_cliprect->max_x;
82      src_miny = src_cliprect->min_y;
83      src_maxy = src_cliprect->max_y;
84   }
85   else { src_minx = src_miny = -0x10000; src_maxx = src_maxy = 0x10000; }
86
87   if (dst_cliprect) // set target clip range
88   {
89      sx = dst_cliprect->min_x;
90      tx = dst_cliprect->max_x - sx + 1;
91      sy = dst_cliprect->min_y;
92      ty = dst_cliprect->max_y - sy + 1;
93
94      startx += sx * incxx + sy * incyx;
95      starty += sx * incxy + sy * incyy;
96   }
97   else { sx = sy = 0; tx = dst_bitmap->width; ty = dst_bitmap->height; }
98
99   // adjust entry points and other loop constants
100   dst_pitch = dst_bitmap->rowpixels;
101   dst_base = (UINT32*)dst_bitmap->base + sy * dst_pitch + sx + tx;
102   ecx = tx = -tx;
103
104   tilebpp = (tilebpp-1) & 7;
105   pal_base = machine->pens;
106   cmask = colormask[tilebpp];
107
108   src_pitch = src_bitmap->rowpixels;
109   src_base = (UINT16 *)src_bitmap->base;
110
111   dst_ptr = dst_base;
112   cy = starty;
113   cx = startx;
114
115   if (blend > 0)
116   {
117      dst_base += dst_pitch;      // draw blended
118      starty += incyy;
119      startx += incyx;
120
121      do {
122         do {
123            int srcx = (cx >> 16) & 0x1fff;
124            int srcy = (cy >> 16) & 0x1fff;
125            int pixel;
126
127            cx += incxx;
128            cy += incxy;
129            if (srcx < src_minx || srcx > src_maxx || srcy < src_miny || srcy > src_maxy)
130               continue;
131
132            pixel = src_base[srcy * src_pitch + srcx];
133            if (!(pixel & cmask))
134               continue;
135
136            dst_ptr[ecx] = alpha_blend_r32(pal_base[pixel], dst_ptr[ecx], alpha);
137         }
138         while (++ecx);
139
140         ecx = tx;
141         dst_ptr = dst_base; dst_base += dst_pitch;
142         cy = starty; starty += incyy;
143         cx = startx; startx += incyx;
144      } while (--ty);
145   }
146   else   //  draw solid
147   {
148      if (blend == 0)
149      {
150         dst_base += dst_pitch;
151         starty += incyy;
152         startx += incyx;
153      }
154      else
155      {
156         if ((sy & 1) ^ (blend & 1))
157         {
158            if (ty <= 1) return;
159
160            dst_ptr += dst_pitch;
161            cy += incyy;
162            cx += incyx;
163         }
164
165         if (ty > 1)
166         {
167            ty >>= 1;
168            dst_pitch <<= 1;
169            incyy <<= 1;
170            incyx <<= 1;
171
172            dst_base = dst_ptr + dst_pitch;
173            starty = cy + incyy;
174            startx = cx + incyx;
175         }
176      }
177
178      do {
179         do {
180            int srcx = (cx >> 16) & 0x1fff;
181            int srcy = (cy >> 16) & 0x1fff;
182            int pixel;
183
184            cx += incxx;
185            cy += incxy;
186            if (srcx < src_minx || srcx > src_maxx || srcy < src_miny || srcy > src_maxy)
187               continue;
188
189            pixel = src_base[srcy * src_pitch + srcx];
190            if (!(pixel & cmask))
191               continue;
192
193            dst_ptr[ecx] = pal_base[pixel];
194         }
195         while (++ecx);
196
197         ecx = tx;
198         dst_ptr = dst_base; dst_base += dst_pitch;
199         cy = starty; starty += incyy;
200         cx = startx; startx += incyx;
201      } while (--ty);
202   }
203}
204
205// adapted from generic K053936_zoom_draw()
206static void K053936GP_zoom_draw(running_machine *machine,
207      int chip, UINT16 *ctrl, UINT16 *linectrl,
208      bitmap_t *bitmap, const rectangle *cliprect, tilemap *tmap,
209      int tilebpp, int blend, int alpha)
210{
211   bitmap_t *src_bitmap;
212   rectangle *src_cliprect;
213   UINT16 *lineaddr;
214
215   rectangle my_clip;
216   UINT32 startx, starty;
217   int incxx, incxy, incyx, incyy, y, maxy, clip;
218
219   src_bitmap = tilemap_get_pixmap(tmap);
220   src_cliprect = &K053936_cliprect[chip];
221   clip = K053936_clip_enabled[chip];
222
223   if (ctrl[0x07] & 0x0040)    /* "super" mode */
224   {
225      my_clip.min_x = cliprect->min_x;
226      my_clip.max_x = cliprect->max_x;
227      y = cliprect->min_y;
228      maxy = cliprect->max_y;
229
230      while (y <= maxy)
231      {
232         lineaddr = linectrl + ( ((y - K053936_offset[chip][1]) & 0x1ff) << 2);
233         my_clip.min_y = my_clip.max_y = y;
234
235         startx = (INT16)(lineaddr[0] + ctrl[0x00]) << 8;
236         starty = (INT16)(lineaddr[1] + ctrl[0x01]) << 8;
237         incxx  = (INT16)(lineaddr[2]);
238         incxy  = (INT16)(lineaddr[3]);
239
240         if (ctrl[0x06] & 0x8000) incxx <<= 8;
241         if (ctrl[0x06] & 0x0080) incxy <<= 8;
242
243         startx -= K053936_offset[chip][0] * incxx;
244         starty -= K053936_offset[chip][0] * incxy;
245
246         K053936GP_copyroz32clip(machine,
247               bitmap, src_bitmap, &my_clip, src_cliprect,
248               startx<<5, starty<<5, incxx<<5, incxy<<5, 0, 0,
249               tilebpp, blend, alpha, clip);
250         y++;
251      }
252   }
253   else    /* "simple" mode */
254   {
255      startx = (INT16)(ctrl[0x00]) << 8;
256      starty = (INT16)(ctrl[0x01]) << 8;
257      incyx  = (INT16)(ctrl[0x02]);
258      incyy  = (INT16)(ctrl[0x03]);
259      incxx  = (INT16)(ctrl[0x04]);
260      incxy  = (INT16)(ctrl[0x05]);
261
262      if (ctrl[0x06] & 0x4000) { incyx <<= 8; incyy <<= 8; }
263      if (ctrl[0x06] & 0x0040) { incxx <<= 8; incxy <<= 8; }
264
265      startx -= K053936_offset[chip][1] * incyx;
266      starty -= K053936_offset[chip][1] * incyy;
267
268      startx -= K053936_offset[chip][0] * incxx;
269      starty -= K053936_offset[chip][0] * incxy;
270
271      K053936GP_copyroz32clip(machine,
272            bitmap, src_bitmap, cliprect, src_cliprect,
273            startx<<5, starty<<5, incxx<<5, incxy<<5, incyx<<5, incyy<<5,
274            tilebpp, blend, alpha, clip);
275   }
276}
277
278void K053936GP_0_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
279      tilemap *tmap, int tilebpp, int blend, int alpha)
280{
281   K053936GP_zoom_draw(machine, 0,K053936_0_ctrl,K053936_0_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha);
282}
283
284void K053936GP_1_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
285      tilemap *tmap, int tilebpp, int blend, int alpha)
286{
287   K053936GP_zoom_draw(machine, 1,K053936_1_ctrl,K053936_1_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha);
288}
289
290
291
292/*
293    Parameter Notes
294    ---------------
295    clip    : *caller must supply a pointer to target clip rectangle
296    alpha   : 0 = invisible, 255 = solid
297    drawmode:
298        0 = all pens solid
299        1 = solid pens only
300        2 = all pens solid with alpha blending
301        3 = solid pens only with alpha blending
302        4 = shadow pens only
303        5 = all pens shadow
304    zcode   : 0 = closest, 255 = furthest (pixel z-depth), -1 = disable depth buffers and shadows
305    pri     : 0 = topmost, 255 = backmost (pixel priority)
306*/
307
308INLINE void zdrawgfxzoom32GP(
309      bitmap_t *bitmap, const rectangle *cliprect, const gfx_element *gfx,
310      UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy,
311      int scalex, int scaley, int alpha, int drawmode, int zcode, int pri)
312{
313#define FP     19
314#define FPONE  (1<<FP)
315#define FPHALF (1<<(FP-1))
316#define FPENT  0
317
318   // inner loop
319   const UINT8  *src_ptr;
320   int src_x;
321   int eax, ecx;
322   int src_fx, src_fdx;
323   int shdpen;
324   UINT8  z8, db0, p8, db1;
325   UINT8  *ozbuf_ptr;
326   UINT8  *szbuf_ptr;
327   const pen_t *pal_base;
328   const pen_t *shd_base;
329   UINT32 *dst_ptr;
330
331   // outter loop
332   int src_fby, src_fdy, src_fbx;
333   const UINT8 *src_base;
334   int dst_w, dst_h;
335
336   // one-time
337   int nozoom, granularity;
338   int src_fw, src_fh;
339   int dst_minx, dst_maxx, dst_miny, dst_maxy;
340   int dst_skipx, dst_skipy, dst_x, dst_y, dst_lastx, dst_lasty;
341   int src_pitch, dst_pitch;
342
343
344   // cull illegal and transparent objects
345   if (!scalex || !scaley) return;
346
347   // find shadow pens and cull invisible shadows
348   granularity = shdpen = gfx->color_granularity;
349   shdpen--;
350
351   if (zcode >= 0)
352   {
353      if (drawmode == 5) { drawmode = 4; shdpen = 1; }
354   }
355   else
356      if (drawmode >= 4) return;
357
358   // alpha blend necessary?
359   if (drawmode & 2)
360   {
361      if (alpha <= 0) return;
362      if (alpha >= 255) drawmode &= ~2;
363   }
364
365   // fill internal data structure with default values
366   ozbuf_ptr  = gx_objzbuf;
367   szbuf_ptr  = gx_shdzbuf;
368
369   src_pitch = 16;
370   src_fw    = 16;
371   src_fh    = 16;
372   src_base  = gfx_element_get_data(gfx, code % gfx->total_elements);
373
374   pal_base  = gfx->machine->pens + gfx->color_base + (color % gfx->total_colors) * granularity;
375   shd_base  = gfx->machine->shadow_table;
376
377   dst_ptr   = (UINT32 *)bitmap->base;
378   dst_pitch = bitmap->rowpixels;
379   dst_minx  = cliprect->min_x;
380   dst_maxx  = cliprect->max_x;
381   dst_miny  = cliprect->min_y;
382   dst_maxy  = cliprect->max_y;
383   dst_x     = sx;
384   dst_y     = sy;
385
386   // cull off-screen objects
387   if (dst_x > dst_maxx || dst_y > dst_maxy) return;
388   nozoom = (scalex == 0x10000 && scaley == 0x10000);
389   if (nozoom)
390   {
391      dst_h = dst_w = 16;
392      src_fdy = src_fdx = 1;
393   }
394   else
395   {
396      dst_w = ((scalex<<4)+0x8000)>>16;
397      dst_h = ((scaley<<4)+0x8000)>>16;
398      if (!dst_w || !dst_h) return;
399
400      src_fw <<= FP;
401      src_fh <<= FP;
402      src_fdx = src_fw / dst_w;
403      src_fdy = src_fh / dst_h;
404   }
405   dst_lastx = dst_x + dst_w - 1;
406   if (dst_lastx < dst_minx) return;
407   dst_lasty = dst_y + dst_h - 1;
408   if (dst_lasty < dst_miny) return;
409
410   // clip destination
411   dst_skipx = 0;
412   eax = dst_minx;  if ((eax -= dst_x) > 0) { dst_skipx = eax;  dst_w -= eax;  dst_x = dst_minx; }
413   eax = dst_lastx; if ((eax -= dst_maxx) > 0) dst_w -= eax;
414   dst_skipy = 0;
415   eax = dst_miny;  if ((eax -= dst_y) > 0) { dst_skipy = eax;  dst_h -= eax;  dst_y = dst_miny; }
416   eax = dst_lasty; if ((eax -= dst_maxy) > 0) dst_h -= eax;
417
418   // calculate zoom factors and clip source
419   if (nozoom)
420   {
421      if (!flipx) src_fbx = 0; else { src_fbx = src_fw - 1; src_fdx = -src_fdx; }
422      if (!flipy) src_fby = 0; else { src_fby = src_fh - 1; src_fdy = -src_fdy; src_pitch = -src_pitch; }
423   }
424   else
425   {
426      if (!flipx) src_fbx = FPENT; else { src_fbx = src_fw - FPENT - 1; src_fdx = -src_fdx; }
427      if (!flipy) src_fby = FPENT; else { src_fby = src_fh - FPENT - 1; src_fdy = -src_fdy; }
428   }
429   src_fbx += dst_skipx * src_fdx;
430   src_fby += dst_skipy * src_fdy;
431
432   // adjust insertion points and pre-entry constants
433   eax = (dst_y - dst_miny) * GX_ZBUFW + (dst_x - dst_minx) + dst_w;
434   db0 = z8 = (UINT8)zcode;
435   db1 = p8 = (UINT8)pri;
436   ozbuf_ptr += eax;
437   szbuf_ptr += eax << 1;
438   dst_ptr += dst_y * dst_pitch + dst_x + dst_w;
439   dst_w = -dst_w;
440
441   if (!nozoom)
442   {
443      ecx = src_fby;   src_fby += src_fdy;
444      ecx >>= FP;      src_fx = src_fbx;
445      src_x = src_fbx; src_fx += src_fdx;
446      ecx <<= 4;       src_ptr = src_base;
447      src_x >>= FP;    src_ptr += ecx;
448      ecx = dst_w;
449
450      if (zcode < 0) // no shadow and z-buffering
451      {
452         do {
453            do {
454               eax = src_ptr[src_x];
455               src_x = src_fx;
456               src_fx += src_fdx;
457               src_x >>= FP;
458               if (!eax || eax >= shdpen) continue;
459               dst_ptr [ecx] = pal_base[eax];
460            }
461            while (++ecx);
462
463            ecx = src_fby;   src_fby += src_fdy;
464            dst_ptr += dst_pitch;
465            ecx >>= FP;      src_fx = src_fbx;
466            src_x = src_fbx; src_fx += src_fdx;
467            ecx <<= 4;       src_ptr = src_base;
468            src_x >>= FP;    src_ptr += ecx;
469            ecx = dst_w;
470         }
471         while (--dst_h);
472      }
473      else
474      {
475         switch (drawmode)
476         {
477            case 0:   // all pens solid
478               do {
479                  do {
480                     eax = src_ptr[src_x];
481                     src_x = src_fx;
482                     src_fx += src_fdx;
483                     src_x >>= FP;
484                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
485                     eax = pal_base[eax];
486                     ozbuf_ptr[ecx] = z8;
487                     dst_ptr [ecx] = eax;
488                  }
489                  while (++ecx);
490
491                  ecx = src_fby;   src_fby += src_fdy;
492                  ozbuf_ptr += GX_ZBUFW;
493                  dst_ptr += dst_pitch;
494                  ecx >>= FP;      src_fx = src_fbx;
495                  src_x = src_fbx; src_fx += src_fdx;
496                  ecx <<= 4;       src_ptr = src_base;
497                  src_x >>= FP;    src_ptr += ecx;
498                  ecx = dst_w;
499               }
500               while (--dst_h);
501               break;
502
503            case 1: // solid pens only
504               do {
505                  do {
506                     eax = src_ptr[src_x];
507                     src_x = src_fx;
508                     src_fx += src_fdx;
509                     src_x >>= FP;
510                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
511                     eax = pal_base[eax];
512                     ozbuf_ptr[ecx] = z8;
513                     dst_ptr [ecx] = eax;
514                  }
515                  while (++ecx);
516
517                  ecx = src_fby;   src_fby += src_fdy;
518                  ozbuf_ptr += GX_ZBUFW;
519                  dst_ptr += dst_pitch;
520                  ecx >>= FP;      src_fx = src_fbx;
521                  src_x = src_fbx; src_fx += src_fdx;
522                  ecx <<= 4;       src_ptr = src_base;
523                  src_x >>= FP;    src_ptr += ecx;
524                  ecx = dst_w;
525               }
526               while (--dst_h);
527               break;
528
529            case 2: // all pens solid with alpha blending
530               do {
531                  do {
532                     eax = src_ptr[src_x];
533                     src_x = src_fx;
534                     src_fx += src_fdx;
535                     src_x >>= FP;
536                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
537                     ozbuf_ptr[ecx] = z8;
538
539                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
540                  }
541                  while (++ecx);
542
543                  ecx = src_fby;   src_fby += src_fdy;
544                  ozbuf_ptr += GX_ZBUFW;
545                  dst_ptr += dst_pitch;
546                  ecx >>= FP;      src_fx = src_fbx;
547                  src_x = src_fbx; src_fx += src_fdx;
548                  ecx <<= 4;       src_ptr = src_base;
549                  src_x >>= FP;    src_ptr += ecx;
550                  ecx = dst_w;
551               }
552               while (--dst_h);
553               break;
554
555            case 3: // solid pens only with alpha blending
556               do {
557                  do {
558                     eax = src_ptr[src_x];
559                     src_x = src_fx;
560                     src_fx += src_fdx;
561                     src_x >>= FP;
562                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
563                     ozbuf_ptr[ecx] = z8;
564
565                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
566                  }
567                  while (++ecx);
568
569                  ecx = src_fby;   src_fby += src_fdy;
570                  ozbuf_ptr += GX_ZBUFW;
571                  dst_ptr += dst_pitch;
572                  ecx >>= FP;      src_fx = src_fbx;
573                  src_x = src_fbx; src_fx += src_fdx;
574                  ecx <<= 4;       src_ptr = src_base;
575                  src_x >>= FP;    src_ptr += ecx;
576                  ecx = dst_w;
577               }
578               while (--dst_h);
579               break;
580
581            case 4: // shadow pens only
582               do {
583                  do {
584                     eax = src_ptr[src_x];
585                     src_x = src_fx;
586                     src_fx += src_fdx;
587                     src_x >>= FP;
588                     if (eax < shdpen || szbuf_ptr[ecx*2] < z8 || szbuf_ptr[ecx*2+1] <= p8) continue;
589                     eax = dst_ptr[ecx];
590                     szbuf_ptr[ecx*2] = z8;
591                     szbuf_ptr[ecx*2+1] = p8;
592                     eax = (eax>>9&0x7c00) | (eax>>6&0x03e0) | (eax>>3&0x001f);
593                     dst_ptr[ecx] = shd_base[eax];
594                  }
595                  while (++ecx);
596
597                  ecx = src_fby;   src_fby += src_fdy;
598                  szbuf_ptr += (GX_ZBUFW<<1);
599                  dst_ptr += dst_pitch;
600                  ecx >>= FP;      src_fx = src_fbx;
601                  src_x = src_fbx; src_fx += src_fdx;
602                  ecx <<= 4;       src_ptr = src_base;
603                  src_x >>= FP;    src_ptr += ecx;
604                  ecx = dst_w;
605               }
606               while (--dst_h);
607               break;
608         }   // switch (drawmode)
609      }   // if (zcode < 0)
610   }   // if (!nozoom)
611   else
612   {
613      src_ptr = src_base + (src_fby<<4) + src_fbx;
614      src_fdy = src_fdx * dst_w + src_pitch;
615      ecx = dst_w;
616
617      if (zcode < 0) // no shadow and z-buffering
618      {
619         do {
620            do {
621               eax = *src_ptr;
622               src_ptr += src_fdx;
623               if (!eax || eax >= shdpen) continue;
624               dst_ptr[ecx] = pal_base[eax];
625            }
626            while (++ecx);
627
628            src_ptr += src_fdy;
629            dst_ptr += dst_pitch;
630            ecx = dst_w;
631         }
632         while (--dst_h);
633      }
634      else
635      {
636         switch (drawmode)
637         {
638            case 0: // all pens solid
639               do {
640                  do {
641                     eax = *src_ptr;
642                     src_ptr += src_fdx;
643                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
644                     eax = pal_base[eax];
645                     ozbuf_ptr[ecx] = z8;
646                     dst_ptr[ecx] = eax;
647                  }
648                  while (++ecx);
649
650                  src_ptr += src_fdy;
651                  ozbuf_ptr += GX_ZBUFW;
652                  dst_ptr += dst_pitch;
653                  ecx = dst_w;
654               }
655               while (--dst_h);
656               break;
657
658            case 1:  // solid pens only
659               do {
660                  do {
661                     eax = *src_ptr;
662                     src_ptr += src_fdx;
663                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
664                     eax = pal_base[eax];
665                     ozbuf_ptr[ecx] = z8;
666                     dst_ptr[ecx] = eax;
667                  }
668                  while (++ecx);
669
670                  src_ptr += src_fdy;
671                  ozbuf_ptr += GX_ZBUFW;
672                  dst_ptr += dst_pitch;
673                  ecx = dst_w;
674               }
675               while (--dst_h);
676               break;
677
678            case 2: // all pens solid with alpha blending
679               do {
680                  do {
681                     eax = *src_ptr;
682                     src_ptr += src_fdx;
683                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
684                     ozbuf_ptr[ecx] = z8;
685
686                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
687                  }
688                  while (++ecx);
689
690                  src_ptr += src_fdy;
691                  ozbuf_ptr += GX_ZBUFW;
692                  dst_ptr += dst_pitch;
693                  ecx = dst_w;
694               }
695               while (--dst_h);
696               break;
697
698            case 3: // solid pens only with alpha blending
699               do {
700                  do {
701                     eax = *src_ptr;
702                     src_ptr += src_fdx;
703                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
704                     ozbuf_ptr[ecx] = z8;
705
706                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
707                  }
708                  while (++ecx);
709
710                  src_ptr += src_fdy;
711                  ozbuf_ptr += GX_ZBUFW;
712                  dst_ptr += dst_pitch;
713                  ecx = dst_w;
714               }
715               while (--dst_h);
716               break;
717
718            case 4: // shadow pens only
719               do {
720                  do {
721                     eax = *src_ptr;
722                     src_ptr += src_fdx;
723                     if (eax < shdpen || szbuf_ptr[ecx*2] < z8 || szbuf_ptr[ecx*2+1] <= p8) continue;
724                     eax = dst_ptr[ecx];
725                     szbuf_ptr[ecx*2] = z8;
726                     szbuf_ptr[ecx*2+1] = p8;
727                     eax = (eax>>9&0x7c00) | (eax>>6&0x03e0) | (eax>>3&0x001f);
728                     dst_ptr[ecx] = shd_base[eax];
729                  }
730                  while (++ecx);
731
732                  src_ptr += src_fdy;
733                  szbuf_ptr += (GX_ZBUFW<<1);
734                  dst_ptr += dst_pitch;
735                  ecx = dst_w;
736               }
737               while (--dst_h);
738               break;
739         }
740      }
741   }
742#undef FP
743#undef FPONE
744#undef FPHALF
745#undef FPENT
746}
747
748
749
750/***************************************************************************/
751/*                                                                         */
752/*                 1st-Tier GX/MW Variables and Functions                  */
753/*                                                                         */
754/***************************************************************************/
755
756// global system ports access
757UINT8  konamigx_wrport1_0, konamigx_wrport1_1;
758UINT16 konamigx_wrport2;
759
760// frequently used registers
761static int K053246_objset1;
762static int K053247_vrcbk[4];
763static int K053247_coreg, K053247_coregshift, K053247_opset;
764static int opri, oinprion;
765static int vcblk[6], ocblk;
766static int vinmix, vmixon, osinmix, osmixon;
767
768
769static void konamigx_precache_registers(void)
770{
771   // (see sprite color coding scheme on p.46 & 47)
772   static const int coregmasks[5] = {0xf,0xe,0xc,0x8,0x0};
773   static const int coregshifts[5]= {4,5,6,7,8};
774   int i;
775
776   K053246_objset1 = K053246_read_register(5);
777
778   i = K053247_read_register(0x8/2);
779   K053247_vrcbk[0] = (i & 0x000f) << 14;
780   K053247_vrcbk[1] = (i & 0x0f00) << 6;
781   i = K053247_read_register(0xa/2);
782   K053247_vrcbk[2] = (i & 0x000f) << 14;
783   K053247_vrcbk[3] = (i & 0x0f00) << 6;
784
785   // COREG == OBJSET2+1C == bit8-11 of OPSET ??? (see p.50 last table, needs p.49 to confirm)
786   K053247_opset = K053247_read_register(0xc/2);
787
788   i = K053247_opset & 7; if (i > 4) i = 4;
789
790   K053247_coreg = K053247_read_register(0xc/2)>>8 & 0xf;
791   K053247_coreg =(K053247_coreg & coregmasks[i]) << 12;
792
793   K053247_coregshift = coregshifts[i];
794
795   opri     = K055555_read_register(K55_PRIINP_8);
796   oinprion = K055555_read_register(K55_OINPRI_ON);
797   vcblk[0] = K055555_read_register(K55_PALBASE_A);
798   vcblk[1] = K055555_read_register(K55_PALBASE_B);
799   vcblk[2] = K055555_read_register(K55_PALBASE_C);
800   vcblk[3] = K055555_read_register(K55_PALBASE_D);
801   vcblk[4] = K055555_read_register(K55_PALBASE_SUB1);
802   vcblk[5] = K055555_read_register(K55_PALBASE_SUB2);
803   ocblk    = K055555_read_register(K55_PALBASE_OBJ);
804   vinmix   = K055555_read_register(K55_BLEND_ENABLES);
805   vmixon   = K055555_read_register(K55_VINMIX_ON);
806   osinmix  = K055555_read_register(K55_OSBLEND_ENABLES);
807   osmixon  = K055555_read_register(K55_OSBLEND_ON);
808}
809
810INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
811{
812   int c18;
813
814   c18 = (attrib & 0xff)<<K053247_coregshift | K053247_coreg;
815
816   if (konamigx_wrport2 & 4) c18 &= 0x3fff; else
817   if (!(konamigx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
818
819   return(c18);
820}
821
822INLINE int K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
823{
824   int ocb, opon;
825
826   opon  = oinprion<<8 | 0xff;
827   ocb   = (ocblk & 7) << 10;
828   c18  &= opon;
829   ocb  &=~opon;
830
831   return((ocb | c18) >> K053247_coregshift);
832}
833
834INLINE int K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
835{
836   int op = opri;
837
838   c18 >>= 8;
839   op   &= oinprion;
840   c18  &=~oinprion;
841
842   return(c18 | op);
843}
844
845void konamigx_type2_sprite_callback(int *code, int *color, int *priority)
846{
847   int num = *code;
848   int c18 = *color;
849
850   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
851   c18 = K053247GX_combine_c18(c18);
852   *color = K055555GX_decode_objcolor(c18);
853   *priority = K055555GX_decode_inpri(c18);
854}
855
856void konamigx_dragoonj_sprite_callback(int *code, int *color, int *priority)
857{
858   int num, op, pri, c18;
859
860   num = *code;
861   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
862
863   c18  = pri = *color;
864   op   = opri;
865   pri  = (pri & 0x200) ? 4 : pri>>4 & 0xf;
866   op  &= oinprion;
867   pri &=~oinprion;
868   *priority = pri | op;
869
870   c18 = K053247GX_combine_c18(c18);
871   *color = K055555GX_decode_objcolor(c18);
872}
873
874void konamigx_salmndr2_sprite_callback(int *code, int *color, int *priority)
875{
876   int num, op, pri, c18;
877
878   num = *code;
879   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
880
881   c18  = pri = *color;
882   op   = opri;
883   pri  = pri>>4 & 0x3f;
884   op  &= oinprion;
885   pri &=~oinprion;
886   *priority = pri | op;
887
888   c18 = K053247GX_combine_c18(c18);
889   *color = K055555GX_decode_objcolor(c18);
890}
891
892void konamigx_le2_sprite_callback(int *code, int *color, int *priority)
893{
894   int num, op, pri;
895
896   num = *code;
897   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
898
899   pri = *color;
900   *color &= 0x1f;
901
902   op   = opri;
903   pri &= 0xf0;
904   op  &= oinprion;
905   pri &=~oinprion;
906   *priority = pri | op;
907}
908
909int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
910{
911   int vcb, shift, pal, vmx, von, pl45, emx;
912
913   vcb    =  vcblk[layer]<<6;
914   shift  =  layer<<1;
915   pal    =  *color;
916   vmx    =  vinmix>>shift & 3;
917   von    =  vmixon>>shift & 3;
918   emx    =  pl45 = pal>>4 & 3;
919   pal   &=  0xf;
920   pl45  &=  von;
921   vmx   &=  von;
922   pl45 <<=  4;
923   emx   &= ~von;
924   pal   |=  pl45;
925   emx   |=  vmx;
926   pal   |=  vcb;
927
928   if (von == 3) emx = -1; // invalidate external mix code if all bits are from internal
929   *color =  pal;
930
931   return(emx);
932}
933
934int K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and p.27 3.3)
935{
936   int scb, shift, pal, osmx, oson, pl45, emx;
937
938   shift  =  layer<<1;
939   pal    =  *color;
940   osmx   =  osinmix>>shift & 3;
941   oson   =  osmixon>>shift & 3;
942
943   if (layer)
944   {
945      // layer 1-3 are external tile layers
946      scb    =  vcblk[layer+3]<<6;
947      emx    =  pl45 = pal>>4 & 3;
948      pal   &=  0xf;
949      pl45  &=  oson;
950      osmx  &=  oson;
951      pl45 <<=  4;
952      emx   &= ~oson;
953      pal   |=  pl45;
954      emx   |=  osmx;
955      pal   |=  scb;
956
957      if (oson == 3) emx = -1; // invalidate external mix code if all bits are from internal
958      *color =  pal;
959   }
960   else
961   {
962      // layer 0 is the sprite layer with different attributes decode; detail on p.49 (missing)
963      emx   = 0; // K053247_read_register(??)>>? & 3;
964      osmx &= oson;
965      emx  &=~oson;
966      emx  |= osmx;
967   }
968
969   return(emx);
970}
971
972static void gx_wipezbuf(running_machine *machine, int noshadow)
973{
974   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
975
976   int w = visarea->max_x - visarea->min_x + 1;
977   int h = visarea->max_y - visarea->min_y + 1;
978
979   UINT8 *zptr = gx_objzbuf;
980   int ecx = h;
981
982   do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
983
984   if (!noshadow)
985   {
986      zptr = gx_shdzbuf;
987      w <<= 1;
988      ecx = h;
989      do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
990   }
991}
992
993/*
994 * Sprite Format
995 * ------------------
996 *
997 * Word | Bit(s)           | Use
998 * -----+-fedcba9876543210-+----------------
999 *   0  | x--------------- | active (show this sprite)
1000 *   0  | -x-------------- | maintain aspect ratio (when set, zoom y acts on both axis)
1001 *   0  | --x------------- | flip y
1002 *   0  | ---x------------ | flip x
1003 *   0  | ----xxxx-------- | sprite size (see below)
1004 *   0  | --------xxxxxxxx | zcode
1005 *   1  | xxxxxxxxxxxxxxxx | sprite code
1006 *   2  | ------xxxxxxxxxx | y position
1007 *   3  | ------xxxxxxxxxx | x position
1008 *   4  | xxxxxxxxxxxxxxxx | zoom y (0x40 = normal, <0x40 = enlarge, >0x40 = reduce)
1009 *   5  | xxxxxxxxxxxxxxxx | zoom x (0x40 = normal, <0x40 = enlarge, >0x40 = reduce)
1010 *   6  | x--------------- | mirror y (top half is drawn as mirror image of the bottom)
1011 *   6  | -x-------------- | mirror x (right half is drawn as mirror image of the left)
1012 *   6  | --xx------------ | reserved (sprites with these two bits set don't seem to be graphics data at all)
1013 *   6  | ----xx---------- | shadow code: 0=off, 0x400=preset1, 0x800=preset2, 0xc00=preset3
1014 *   6  | ------xx-------- | effect code: flicker, upper palette, full shadow...etc. (game dependent)
1015 *   6  | --------xxxxxxxx | "color", but depends on external connections (implies priority)
1016 *   7  | xxxxxxxxxxxxxxxx | game dependent
1017 *
1018 * shadow enables transparent shadows. Note that it applies to the last sprite pen ONLY.
1019 * The rest of the sprite remains normal.
1020 */
1021#define GX_MAX_SPRITES 512
1022#define GX_MAX_LAYERS  6
1023#define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS)
1024
1025static struct GX_OBJ { int order, offs, code, color; } *gx_objpool;
1026static UINT16 *gx_spriteram;
1027static int gx_objdma, gx_primode;
1028
1029// mirrored K053247 and K054338 settings
1030static UINT16 *K053247_ram;
1031static gfx_element *K053247_gfx;
1032static void (*K053247_callback)(int *code,int *color,int *priority);
1033static int K053247_dx, K053247_dy;
1034
1035static int *K054338_shdRGB;
1036
1037
1038void K053247GP_set_SpriteOffset(int offsx, int offsy)
1039{
1040   K053247_dx = offsx;
1041   K053247_dy = offsy;
1042}
1043
1044void konamigx_mixer_init(running_machine *machine, int objdma)
1045{
1046   gx_objdma = 0;
1047   gx_primode = 0;
1048
1049   gx_objzbuf = (UINT8 *)machine->priority_bitmap->base;
1050   gx_shdzbuf = auto_alloc_array(machine, UINT8, GX_ZBUFSIZE);
1051   gx_objpool = auto_alloc_array(machine, struct GX_OBJ, GX_MAX_OBJECTS);
1052
1053   K053247_export_config(&K053247_ram, &K053247_gfx, &K053247_callback, &K053247_dx, &K053247_dy);
1054   K054338_export_config(&K054338_shdRGB);
1055
1056   if (objdma)
1057   {
1058      gx_spriteram = auto_alloc_array(machine, UINT16, 0x1000/2);
1059      gx_objdma = 1;
1060   }
1061   else
1062      gx_spriteram = K053247_ram;
1063
1064   palette_set_shadow_dRGB32(machine, 3,-80,-80,-80, 0);
1065   K054338_invert_alpha(1);
1066}
1067
1068void konamigx_mixer_primode(int mode)
1069{
1070   gx_primode = mode;
1071}
1072
1073void konamigx_objdma(void)
1074{
1075   if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000);
1076}
1077
1078void konamigx_mixer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
1079               tilemap *sub1, int sub1flags,
1080               tilemap *sub2, int sub2flags,
1081               int mixerflags)
1082{
1083   static const int xoffset[8] = { 0, 1, 4, 5, 16, 17, 20, 21 };
1084   static const int yoffset[8] = { 0, 2, 8, 10, 32, 34, 40, 42 };
1085   static int parity = 0;
1086
1087   int objbuf[GX_MAX_OBJECTS];
1088   int shadowon[3], shdpri[3], layerid[6], layerpri[6];
1089
1090   struct GX_OBJ *objpool, *objptr;
1091   int wrapsize, xwraplim, ywraplim, cltc_shdpri, prflp, disp;
1092   int xa,ya,ox,oy,zw,zh,flipx,flipy,mirrorx,mirrory,zoomx,zoomy,scalex,scaley,nozoom;
1093   int screenwidth, flipscreenx, flipscreeny, offx, offy;
1094   int nobj, i, j, k, l, temp, temp1, temp2, temp3, temp4, count;
1095   int order, offs, code, color, zcode, pri = 0, spri, spri_min, shdprisel, shadow, alpha, drawmode;
1096
1097
1098   // abort if object database failed to initialize
1099   objpool = gx_objpool;
1100   if (!objpool) return;
1101
1102   // clear screen with backcolor and update flicker pulse
1103   K054338_fill_backcolor(machine, bitmap, konamigx_wrport1_0 & 0x20);
1104   parity ^= 1;
1105
1106   // abort if video has been disabled
1107   disp = K055555_read_register(K55_INPUT_ENABLES);
1108   if (!disp) return;
1109   cltc_shdpri = K054338_read_register(K338_REG_CONTROL);
1110   if (!(cltc_shdpri & K338_CTL_KILL)) return;
1111
1112   // demote shadows by one layer when this bit is set??? (see p.73 8.6)
1113   cltc_shdpri &= K338_CTL_SHDPRI;
1114
1115   // wipe z-buffer
1116   if (mixerflags & GXMIX_NOZBUF)
1117      mixerflags |= GXMIX_NOSHADOW;
1118   else
1119      gx_wipezbuf(machine, mixerflags & GXMIX_NOSHADOW);
1120
1121   // cache global parameters
1122   konamigx_precache_registers();
1123
1124   // init OBJSET1 parameters (see p.47 6.2)
1125   flipscreenx = K053246_objset1 & 1;
1126   flipscreeny = K053246_objset1 & 2;
1127
1128   // get "display window" offsets
1129   offx = (K053246_read_register(0)<<8 | K053246_read_register(1)) & 0x3ff;
1130   offy = (K053246_read_register(2)<<8 | K053246_read_register(3)) & 0x3ff;
1131
1132   // init OBJSET2 and mixer parameters (see p.51 and chapter 7)
1133   layerid[0] = 0; layerid[1] = 1; layerid[2] = 2; layerid[3] = 3; layerid[4] = 4; layerid[5] = 5;
1134
1135   if (K053247_opset & 0x40)
1136   {
1137      wrapsize = 512;
1138      xwraplim = 512 - 64;
1139      ywraplim = 512 - 128;
1140   }
1141   else
1142   {
1143      wrapsize  = 1024;
1144      xwraplim  = 1024 - 384;
1145      ywraplim  = 1024 - 512;
1146   }
1147
1148   // invert layer priority when this flag is set (not used by any GX game?)
1149   prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
1150
1151   layerpri[0] = K055555_read_register(K55_PRIINP_0);
1152   layerpri[1] = K055555_read_register(K55_PRIINP_3);
1153   layerpri[3] = K055555_read_register(K55_PRIINP_7);
1154   layerpri[4] = K055555_read_register(K55_PRIINP_9);
1155   layerpri[5] = K055555_read_register(K55_PRIINP_10);
1156
1157   if (gx_primode == -1)
1158   {
1159      // Lethal Enforcer hack (requires pixel color comparison)
1160      layerpri[2] = K055555_read_register(K55_PRIINP_3) + 0x20;
1161      shdprisel = 0x3f;
1162   }
1163   else
1164   {
1165      layerpri[2] = K055555_read_register(K55_PRIINP_6);
1166      shdprisel = K055555_read_register(K55_SHD_PRI_SEL);
1167   }
1168
1169   // SHDPRISEL filters shadows by different priority comparison methods (UNIMPLEMENTED, see detail on p.66)
1170   if (!(shdprisel & 0x03)) shadowon[0] = 0;
1171   if (!(shdprisel & 0x0c)) shadowon[1] = 0;
1172   if (!(shdprisel & 0x30)) shadowon[2] = 0;
1173
1174   shdpri[0]   = K055555_read_register(K55_SHAD1_PRI);
1175   shdpri[1]   = K055555_read_register(K55_SHAD2_PRI);
1176   shdpri[2]   = K055555_read_register(K55_SHAD3_PRI);
1177
1178   spri_min = 0;
1179   shadowon[2] = shadowon[1] = shadowon[0] = 0;
1180
1181   if (!(mixerflags & GXMIX_NOSHADOW))
1182   {
1183      // only enable shadows beyond a +/-7 RGB threshold
1184      for (j=0,i=0; i<3; j+=3,i++)
1185      {
1186         k = K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
1187         k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
1188         k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
1189      }
1190
1191      // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
1192      temp = K055555_read_register(K55_SHD_ON);
1193      for (i=0; i<4; i++) if (!(temp>>i & 1) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
1194
1195      // update shadows status
1196      K054338_update_all_shadows(machine);
1197   }
1198
1199   // pre-sort layers
1200   for (j=0; j<5; j++)
1201   {
1202      temp1 = layerpri[j];
1203      for (i=j+1; i<6; i++)
1204      {
1205         temp2 = layerpri[i];
1206         if ((UINT32)temp1 <= (UINT32)temp2)
1207         {
1208            layerpri[i] = temp1; layerpri[j] = temp1 = temp2;
1209            temp2 = layerid[i]; layerid[i] = layerid[j]; layerid[j] = temp2;
1210         }
1211      }
1212   }
1213
1214   // build object database and create indices
1215   objptr = objpool;
1216   nobj = 0;
1217
1218   for (i=5; i>=0; i--)
1219   {
1220      code = layerid[i];
1221      switch (code)
1222      {
1223         /*
1224                Background layers are represented by negative offset values as follow:
1225
1226                0+ : normal sprites
1227                -1 : tile layer A - D
1228                -2 : K053936 ROZ+ layer 1
1229                -3 : K053936 ROZ+ layer 2
1230                -4 : K053250 LVC layer 1
1231                -5 : K053250 LVC layer 2
1232            */
1233         case 4 :
1234            offs = -128;
1235            if (sub1flags & 0xf) { if (sub1flags & GXSUB_K053250) offs = -4; else if (sub1) offs = -2; }
1236         break;
1237         case 5 :
1238            offs = -128;
1239            if (sub2flags & 0xf) { if (sub2flags & GXSUB_K053250) offs = -5; else if (sub2) offs = -3; }
1240         break;
1241         default: offs = -1;
1242      }
1243
1244      if (offs != -128)
1245      {
1246         objptr->order = layerpri[i]<<24;
1247         objptr->code  = code;
1248         objptr->offs = offs;
1249         objptr++;
1250
1251         objbuf[nobj] = nobj;
1252         nobj++;
1253      }
1254   }
1255
1256   i = j = 0xff;
1257
1258   for (offs=0; offs<0x800; offs+=8)
1259   {
1260      if (!(gx_spriteram[offs] & 0x8000)) continue;
1261
1262      zcode = gx_spriteram[offs] & 0xff;
1263
1264      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
1265      if (K053247_opset & 0x10) zcode = 0xff - zcode;
1266
1267      code  = gx_spriteram[offs+1];
1268      color = k = gx_spriteram[offs+6];
1269      l     = gx_spriteram[offs+7];
1270
1271      (*K053247_callback)(&code, &color, &pri);
1272
1273      /*
1274            shadow = shadow code
1275            spri   = shadow priority
1276            temp1  = add solid object
1277            temp2  = solid pens draw mode
1278            temp3  = add shadow object
1279            temp4  = shadow pens draw mode
1280        */
1281      temp4 = temp3 = temp2 = temp1 = spri = shadow = 0;
1282
1283      if (color & K055555_FULLSHADOW)
1284      {
1285         shadow = 3; // use default intensity and color
1286         spri = pri; // retain host priority
1287         temp3 = 1; // add shadow
1288         temp4 = 5; // draw full shadow
1289      }
1290      else
1291      {
1292         shadow = k>>10 & 3;
1293         if (shadow) // object has shadow?
1294         {
1295            if (shadow != 1 || K053246_objset1 & 0x20)
1296            {
1297               shadow--;
1298               temp1 = 1; // add solid
1299               temp2 = 1; // draw partial solid
1300               if (shadowon[shadow])
1301               {
1302                  temp3 = 1; // add shadow
1303                  temp4 = 4; // draw partial shadow
1304               }
1305            }
1306            else
1307            {
1308               // drop the entire sprite to shadow if its shadow code is 1 and SD0EN is off (see p.48)
1309               shadow = 0;
1310               if (!shadowon[0]) continue;
1311               temp3 = 1; // add shadow
1312               temp4 = 5; // draw full shadow
1313            }
1314         }
1315         else
1316         {
1317            temp1 = 1; // add solid
1318            temp2 = 0; // draw full solid
1319         }
1320
1321         if (temp1)
1322         {
1323            // tag sprite for alpha blending
1324            if (color>>K055555_MIXSHIFT & 3) temp2 |= 2;
1325         }
1326
1327         if (temp3)
1328         {
1329            // determine shadow priority
1330            spri = (K053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
1331         }
1332      }
1333
1334      switch (gx_primode & 0xf)
1335      {
1336         // Dadandarn zcode suppression
1337         case  1:
1338            zcode = 0;
1339         break;
1340
1341         // Daisukiss bad shadow filter
1342         case  4:
1343            if (k & 0x3000 || k == 0x0800) continue;
1344
1345         // Tokkae shadow masking (INACCURATE)
1346         case  5:
1347            if (spri < spri_min) spri = spri_min;
1348         break;
1349      }
1350
1351      /*
1352            default sort order:
1353            fedcba9876543210fedcba9876543210
1354            xxxxxxxx------------------------ (priority)
1355            --------xxxxxxxx---------------- (zcode)
1356            ----------------xxxxxxxx-------- (offset)
1357            ------------------------xxxx---- (shadow mode)
1358            ----------------------------xxxx (shadow code)
1359        */
1360      if (temp1)
1361      {
1362         // add objects with solid or alpha pens
1363         order = pri<<24 | zcode<<16 | offs<<(8-3) | temp2<<4;
1364         objptr->order = order;
1365         objptr->offs  = offs;
1366         objptr->code  = code;
1367         objptr->color = color;
1368         objptr++;
1369
1370         objbuf[nobj] = nobj;
1371         nobj++;
1372      }
1373
1374      if (temp3 && !(color & K055555_SKIPSHADOW) && !(mixerflags & GXMIX_NOSHADOW))
1375      {
1376         // add objects with shadows if enabled
1377         order = spri<<24 | zcode<<16 | offs<<(8-3) | temp4<<4 | shadow;
1378         objptr->order = order;
1379         objptr->offs  = offs;
1380         objptr->code  = code;
1381         objptr->color = color;
1382         objptr++;
1383
1384         objbuf[nobj] = nobj;
1385         nobj++;
1386      }
1387   }
1388
1389   // sort objects in decending order (SLOW)
1390   k = nobj;
1391   l = nobj - 1;
1392
1393   for (j=0; j<l; j++)
1394   {
1395      temp1 = objbuf[j];
1396      temp2 = objpool[temp1].order;
1397      for (i=j+1; i<k; i++)
1398      {
1399         temp3 = objbuf[i];
1400         temp4 = objpool[temp3].order;
1401         if ((UINT32)temp2 <= (UINT32)temp4) { temp2 = temp4; objbuf[i] = temp1; objbuf[j] = temp1 = temp3; }
1402      }
1403   }
1404
1405   // traverse draw list
1406   screenwidth = video_screen_get_width(machine->primary_screen);
1407
1408   for (count=0; count<nobj; count++)
1409   {
1410      objptr = objpool + objbuf[count];
1411      order  = objptr->order;
1412      offs   = objptr->offs;
1413      code   = objptr->code;
1414      color  = objptr->color;
1415
1416      if (offs >= 0)
1417      {
1418         if (!(disp & K55_INP_OBJ)) continue;
1419      }
1420      else
1421      {
1422         i = code<<1;
1423         j = mixerflags>>i & 3;
1424         k = 0;
1425
1426         switch (offs)
1427         {
1428            case -1:
1429            if (disp & (1<<code))
1430            {
1431               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1432               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>(i+16); temp3 = 3; }
1433               else
1434               {
1435                  temp1 = vinmix;
1436                  temp2 = vinmix>>i & 3;
1437                  temp3 = vmixon>>i & 3;
1438               }
1439
1440               /* blend layer only when:
1441                        1) vinmix != 0xff
1442                        2) its internal mix code is set
1443                        3) all mix code bits are internal(overriden until tile blending has been implemented)
1444                        4) 0 > alpha < 255;
1445                    */
1446               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1447               {
1448                  temp4 = K054338_set_alpha_level(temp2);
1449
1450                  if (temp4 <= 0) continue;
1451                  if (temp4 < 255) k = TILEMAP_DRAW_ALPHA(temp4);
1452               }
1453
1454               if (mixerflags & 1<<(code+12)) k |= K056382_DRAW_FLAG_FORCE_XYSCROLL;
1455
1456               K056832_tilemap_draw(machine, bitmap, cliprect, code, k, 0);
1457            }
1458            continue;
1459            case -2:
1460            case -4:
1461            if (disp & K55_INP_SUB1)
1462            {
1463               int alpha = 255;
1464               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1465               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>24; temp3 = 3; }
1466               else
1467               {
1468                  temp1 = osinmix;
1469                  temp2 = osinmix>>2 & 3;
1470                        temp3 = osmixon>>2 & 3;
1471               }
1472
1473               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1474               {
1475                  alpha = temp4 = K054338_set_alpha_level(temp2);
1476
1477                  if (temp4 <= 0) continue;
1478                  if (temp4 < 255) k = (j == GXMIX_BLEND_FAST) ? ~parity : 1;
1479               }
1480
1481               l = sub1flags & 0xf;
1482
1483               if (offs == -2)
1484                  K053936GP_0_zoom_draw(machine, bitmap, cliprect, sub1, l, k, alpha);
1485               else
1486                  K053250_draw(machine, bitmap, cliprect, 0, vcblk[4]<<l, 0, 0);
1487            }
1488            continue;
1489            case -3:
1490            case -5:
1491            if (disp & K55_INP_SUB2)
1492            {
1493               int alpha = 255;
1494               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1495               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>26; temp3 = 3; }
1496               else
1497               {
1498                  temp1 = osinmix;
1499                  temp2 = osinmix>>4 & 3;
1500                        temp3 = osmixon>>4 & 3;
1501               }
1502
1503               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1504               {
1505                  alpha = temp4 = K054338_set_alpha_level(temp2);
1506
1507                  if (temp4 <= 0) continue;
1508                  if (temp4 < 255) k = (j == GXMIX_BLEND_FAST) ? ~parity : 1;
1509               }
1510
1511               l = sub2flags & 0xf;
1512
1513               if (offs == -3)
1514                  K053936GP_1_zoom_draw(machine, bitmap, cliprect, sub2, l, k, alpha);
1515               else
1516                  K053250_draw(machine, bitmap, cliprect, 1, vcblk[5]<<l, 0, 0);
1517            }
1518            continue;
1519         }
1520         continue;
1521      }
1522
1523      drawmode = order>>4 & 0xf;
1524
1525      alpha = 255;
1526      if (drawmode & 2)
1527      {
1528         alpha = color>>K055555_MIXSHIFT & 3;
1529         if (alpha) alpha = K054338_set_alpha_level(alpha);
1530         if (alpha <= 0) continue;
1531      }
1532      color &= K055555_COLORMASK;
1533
1534      if (drawmode >= 4) palette_set_shadow_mode(machine, order & 0x0f);
1535
1536      if (!(mixerflags & GXMIX_NOZBUF))
1537      {
1538         zcode = order>>16 & 0xff;
1539         pri = order>>24 & 0xff;
1540      }
1541      else
1542         zcode = -1; // negative zcode values turn off z-buffering
1543
1544      xa = ya = 0;
1545      if (code & 0x01) xa += 1;
1546      if (code & 0x02) ya += 1;
1547      if (code & 0x04) xa += 2;
1548      if (code & 0x08) ya += 2;
1549      if (code & 0x10) xa += 4;
1550      if (code & 0x20) ya += 4;
1551      code &= ~0x3f;
1552
1553      temp4 = gx_spriteram[offs];
1554
1555      // mask off the upper 6 bits of coordinate and zoom registers
1556      oy = gx_spriteram[offs+2] & 0x3ff;
1557      ox = gx_spriteram[offs+3] & 0x3ff;
1558
1559      scaley = zoomy = gx_spriteram[offs+4] & 0x3ff;
1560      if (zoomy) zoomy = (0x400000+(zoomy>>1)) / zoomy;
1561      else zoomy = 0x800000;
1562      if (!(temp4 & 0x4000))
1563      {
1564         scalex = zoomx = gx_spriteram[offs+5] & 0x3ff;
1565         if (zoomx) zoomx = (0x400000+(zoomx>>1)) / zoomx;
1566         else zoomx = 0x800000;
1567      }
1568      else { zoomx = zoomy; scalex = scaley; }
1569
1570      nozoom = (scalex == 0x40 && scaley == 0x40);
1571
1572      flipx = temp4 & 0x1000;
1573      flipy = temp4 & 0x2000;
1574
1575      temp = gx_spriteram[offs+6];
1576      mirrorx = temp & 0x4000;
1577      if (mirrorx) flipx = 0; // only applies to x mirror, proven
1578      mirrory = temp & 0x8000;
1579
1580      // for Escape Kids (GX975)
1581      if ( K053246_objset1 & 8 ) // Check only "Bit #3 is '1'?"
1582      {
1583         zoomx = zoomx>>1; // Fix sprite width to HALF size
1584         ox = (ox>>1) + 1; // Fix sprite draw position
1585
1586         if (flipscreenx) ox += screenwidth;
1587      }
1588
1589      if (flipscreenx) { ox = -ox; if (!mirrorx) flipx = !flipx; }
1590      if (flipscreeny) { oy = -oy; if (!mirrory) flipy = !flipy; }
1591
1592      // apply wrapping and global offsets
1593      temp = wrapsize-1;
1594      ox = ( ox - offx) & temp;
1595      oy = (-oy - offy) & temp;
1596      if (ox >= xwraplim) ox -= wrapsize;
1597      if (oy >= ywraplim) oy -= wrapsize;
1598      ox += K053247_dx;
1599      oy += K053247_dy;
1600
1601
1602      temp = temp4>>8 & 0x0f;
1603      k = 1 << (temp & 3);
1604      l = 1 << (temp>>2 & 3);
1605
1606      ox -= (zoomx * k) >> 13;
1607      oy -= (zoomy * l) >> 13;
1608
1609      // substitutes: i=x, j=y, k=w, l=h, temp=code, temp1=fx, temp2=fy, temp3=sx, temp4=sy;
1610      for (j=0; j<l; j++)
1611      {
1612         temp4 = oy + ((zoomy * j + (1<<11)) >> 12);
1613         zh = (oy + ((zoomy * (j+1) + (1<<11)) >> 12)) - temp4;
1614
1615         for (i=0; i<k; i++)
1616         {
1617            temp3 = ox + ((zoomx * i + (1<<11)) >> 12);
1618            zw = (ox + ((zoomx * (i+1) + (1<<11)) >> 12)) - temp3;
1619            temp = code;
1620
1621            if (mirrorx)
1622            {
1623               if ((!flipx)^((i<<1)<k))
1624               {
1625                  /* mirror left/right */
1626                  temp += xoffset[(k-1-i+xa)&7];
1627                  temp1 = 1;
1628               }
1629               else
1630               {
1631                  temp += xoffset[(i+xa)&7];
1632                  temp1 = 0;
1633               }
1634            }
1635            else
1636            {
1637               if (flipx) temp += xoffset[(k-1-i+xa)&7];
1638               else temp += xoffset[(i+xa)&7];
1639               temp1 = flipx;
1640            }
1641
1642            if (mirrory)
1643            {
1644               if ((!flipy)^((j<<1)>=l))
1645               {
1646                  /* mirror top/bottom */
1647                  temp += yoffset[(l-1-j+ya)&7];
1648                  temp2 = 1;
1649               }
1650               else
1651               {
1652                  temp += yoffset[(j+ya)&7];
1653                  temp2 = 0;
1654               }
1655            }
1656            else
1657            {
1658               if (flipy) temp += yoffset[(l-1-j+ya)&7];
1659               else temp += yoffset[(j+ya)&7];
1660               temp2 = flipy;
1661            }
1662
1663            if (nozoom) { scaley = scalex = 0x10000; } else { scalex = zw << 12; scaley = zh << 12; };
1664
1665            zdrawgfxzoom32GP(
1666                  bitmap, cliprect, K053247_gfx,
1667                  temp,
1668                  color,
1669                  temp1,temp2,
1670                  temp3,temp4,
1671                  scalex, scaley, alpha, drawmode, zcode, pri);
1672         }
1673      }
1674   }
1675}
1676
1677
1678
1679/***************************************************************************/
1680/*                                                                         */
168113/*                           GX/MW Protections                             */
168214/*                                                                         */
168315/***************************************************************************/
src/mame/machine/toaplan1.c
r6428r6429
232232   if (ACCESSING_BITS_0_7 && (data == 0))
233233   {
234234      logerror("PC:%04x  Resetting Sound CPU and Sound chip (%08x)\n", cpu_get_previouspc(space->cpu), data);
235      devtag_reset(space->machine, "ym");
235      devtag_reset(space->machine, "ymsnd");
236236      if (cputag_get_cpu(space->machine, "audiocpu") != NULL && cpu_get_type(cputag_get_cpu(space->machine, "audiocpu")) == CPU_Z80)
237237         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
238238   }
src/mame/machine/n64.c
r6428r6429
138138
139139void signal_rcp_interrupt(running_machine *machine, int interrupt)
140140{
141   mi_interrupt |= interrupt;
142
143141   if (mi_intr_mask & interrupt)
144142   {
143      mi_interrupt |= interrupt;
145144
146145      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, ASSERT_LINE);
147146   }
r6428r6429
151150{
152151   mi_interrupt &= ~interrupt;
153152
154   if (!(mi_interrupt & mi_intr_mask))
153   //if (!mi_interrupt)
155154   {
156155      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
157156   }
r6428r6429
12791278                dma_length = (dma_length + 3) & ~3;
12801279            }*/
12811280
1282         //printf("PI DMA: %08X to %08X, length %08X\n", pi_dram_addr, pi_cart_addr, dma_length);
1281         //mame_printf_debug("PI DMA: %08X to %08X, length %08X\n", pi_dram_addr, pi_cart_addr, dma_length);
12831282
12841283         if (pi_dram_addr != 0xffffffff)
12851284         {
r6428r6429
13071306                dma_length = (dma_length + 3) & ~3;
13081307            }
13091308
1310         //printf("PI DMA: %08X to %08X, length %08X\n", pi_cart_addr, pi_dram_addr, dma_length);
1309         //mame_printf_debug("PI DMA: %08X to %08X, length %08X\n", pi_cart_addr, pi_dram_addr, dma_length);
13111310
13121311         if (pi_dram_addr != 0xffffffff)
13131312         {
r6428r6429
13181317                    pi_cart_addr += 4;
13191318                    pi_dram_addr += 4;*/
13201319
1321               UINT8 b = memory_read_byte(space, pi_cart_addr & 0x1fffffff);
1320               UINT8 b = memory_read_byte(space, pi_cart_addr);
13221321               memory_write_byte(space, pi_dram_addr & 0x1fffffff, b);
13231322               pi_cart_addr += 1;
13241323               pi_dram_addr += 1;
r6428r6429
13311330            // TODO: CIC-6105 has different address...
13321331            memory_write_dword(space, 0x00000318, 0x400000);
13331332            memory_write_dword(space, 0x000003f0, 0x800000);
1334            //pi_first_dma = 0;
1333            pi_first_dma = 0;
13351334         }
13361335
13371336         break;
r6428r6429
18601859
18611860   if (direction)      // RDRAM -> PIF RAM
18621861   {
1863      src = (UINT32*)&rdram[(si_dram_addr & 0x1ffffff) / 4];
1862      src = (UINT32*)&rdram[(si_dram_addr & 0x1fffffff) / 4];
18641863
18651864      for (i=0; i < 64; i+=4)
18661865      {
r6428r6429
19211920         // PIF RAM -> RDRAM
19221921         si_pif_addr = data;
19231922            si_pif_addr_rd64b = data;
1924            //printf( "si_pif_addr = %08x, si_pif_addr_rd64b = %08x\n", si_pif_addr, si_pif_addr_rd64b );
19251923            pif_dma(space->machine, 0);
19261924         break;
19271925
r6428r6429
19291927         // RDRAM -> PIF RAM
19301928         si_pif_addr = data;
19311929            si_pif_addr_wr64b = data;
1932            //printf( "si_pif_addr = %08x, si_pif_addr_wr64b = %08x\n", si_pif_addr, si_pif_addr_wr64b );
19331930            pif_dma(space->machine, 1);
19341931         break;
19351932
src/mame/machine/neocrypt.c
r6428r6429
14691469/* Neo-Pcm2 Drivers for Encrypted V Roms */
14701470void neo_pcm2_snk_1999(running_machine *machine, int value)
14711471{   /* thanks to Elsemi for the NEO-PCM2 info */
1472   UINT16 *rom = (UINT16 *)memory_region(machine, "ym");
1473   int size = memory_region_length(machine, "ym");
1472   UINT16 *rom = (UINT16 *)memory_region(machine, "ymsnd");
1473   int size = memory_region_length(machine, "ymsnd");
14741474   int i, j;
14751475
14761476   if( rom != NULL )
r6428r6429
15091509      {0xcb,0x29,0x7d,0x43,0xd2,0x3a,0xc2,0xb4},
15101510      {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62},
15111511      {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}};
1512   UINT8 *src = memory_region(machine, "ym");
1512   UINT8 *src = memory_region(machine, "ymsnd");
15131513   UINT8 *buf = alloc_array_or_die(UINT8, 0x1000000);
15141514   int i, j, d;
15151515
src/mame/machine/arkanoid.c
r6428r6429
1515#define ARKANOID_BOOTLEG_VERBOSE 1
1616
1717
18UINT8 arkanoid_paddle_select;
19
20static UINT8 z80write, fromz80, m68705write, toz80;
21
22static UINT8 portA_in, portA_out, ddrA;
23static UINT8 portC_out, ddrC;
24
25
26MACHINE_START( arkanoid )
27{
28   state_save_register_global(machine, arkanoid_paddle_select);
29   state_save_register_global(machine, z80write);
30   state_save_register_global(machine, fromz80);
31   state_save_register_global(machine, m68705write);
32   state_save_register_global(machine, toz80);
33
34   state_save_register_global(machine, portA_in);
35   state_save_register_global(machine, portA_out);
36   state_save_register_global(machine, ddrA);
37
38   state_save_register_global(machine, portC_out);
39   state_save_register_global(machine, ddrC);
40}
41
42MACHINE_RESET( arkanoid )
43{
44   portA_in = portA_out = z80write = m68705write = 0;
45}
46
4718READ8_HANDLER( arkanoid_Z80_mcu_r )
4819{
20   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
21
4922   /* return the last value the 68705 wrote, and mark that we've read it */
50   m68705write = 0;
51   return toz80;
23   state->m68705write = 0;
24   return state->toz80;
5225}
5326
5427static TIMER_CALLBACK( test )
5528{
56   z80write = 1;
57   fromz80 = param;
29   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
30
31   state->z80write = 1;
32   state->fromz80 = param;
5833}
5934
6035WRITE8_HANDLER( arkanoid_Z80_mcu_w )
r6428r6429
6439   cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(10));
6540}
6641
67READ8_HANDLER( arkanoid_68705_portA_r )
42READ8_HANDLER( arkanoid_68705_port_a_r )
6843{
69   return (portA_out & ddrA) | (portA_in & ~ddrA);
44   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
45
46   return (state->port_a_out & state->ddr_a) | (state->port_a_in & ~state->ddr_a);
7047}
7148
72WRITE8_HANDLER( arkanoid_68705_portA_w )
49WRITE8_HANDLER( arkanoid_68705_port_a_w )
7350{
74   portA_out = data;
51   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
52
53   state->port_a_out = data;
7554}
7655
77WRITE8_HANDLER( arkanoid_68705_ddrA_w )
56WRITE8_HANDLER( arkanoid_68705_ddr_a_w )
7857{
79   ddrA = data;
58   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
59
60   state->ddr_a = data;
8061}
8162
8263
83READ8_HANDLER( arkanoid_68705_portC_r )
64READ8_HANDLER( arkanoid_68705_port_c_r )
8465{
85   int res=0;
66   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
67   int res = 0;
8668
8769   /* bit 0 is high on a write strobe; clear it once we've detected it */
88   if (z80write) res |= 0x01;
70   if (state->z80write)
71      res |= 0x01;
8972
9073   /* bit 1 is high if the previous write has been read */
91   if (!m68705write) res |= 0x02;
74   if (!state->m68705write)
75      res |= 0x02;
9276
93   return (portC_out & ddrC) | (res & ~ddrC);
77   return (state->port_c_out & state->ddr_c) | (res & ~state->ddr_c);
9478}
9579
96WRITE8_HANDLER( arkanoid_68705_portC_w )
80WRITE8_HANDLER( arkanoid_68705_port_c_w )
9781{
98   if ((ddrC & 0x04) && (~data & 0x04) && (portC_out & 0x04))
82   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
83
84   if ((state->ddr_c & 0x04) && (~data & 0x04) && (state->port_c_out & 0x04))
9985   {
10086      /* return the last value the Z80 wrote */
101      z80write = 0;
102      portA_in = fromz80;
87      state->z80write = 0;
88      state->port_a_in = state->fromz80;
10389   }
104   if ((ddrC & 0x08) && (~data & 0x08) && (portC_out & 0x08))
90   if ((state->ddr_c & 0x08) && (~data & 0x08) && (state->port_c_out & 0x08))
10591   {
10692      /* a write from the 68705 to the Z80; remember its value */
107      m68705write = 1;
108      toz80 = portA_out;
93      state->m68705write = 1;
94      state->toz80 = state->port_a_out;
10995   }
11096
111   portC_out = data;
97   state->port_c_out = data;
11298}
11399
114WRITE8_HANDLER( arkanoid_68705_ddrC_w )
100WRITE8_HANDLER( arkanoid_68705_ddr_c_w )
115101{
116   ddrC = data;
102   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
103
104   state->ddr_c = data;
117105}
118106
119107CUSTOM_INPUT( arkanoid_68705_input_r )
120108{
109   arkanoid_state *state = (arkanoid_state *)field->port->machine->driver_data;
121110   int res = 0;
122111
123112   /* bit 0x40 of comes from the sticky bit */
124   if (!z80write) res |= 0x01;
113   if (!state->z80write)
114      res |= 0x01;
125115
126116   /* bit 0x80 comes from a write latch */
127   if (!m68705write) res |= 0x02;
117   if (!state->m68705write)
118      res |= 0x02;
128119
129120   return res;
130121}
131122
132123CUSTOM_INPUT( arkanoid_input_mux )
133124{
125   arkanoid_state *state = (arkanoid_state *)field->port->machine->driver_data;
134126   const char *tag1 = (const char *)param;
135127   const char *tag2 = tag1 + strlen(tag1) + 1;
136   return input_port_read(field->port->machine, (arkanoid_paddle_select == 0) ? tag1 : tag2);
128   return input_port_read(field->port->machine, (state->paddle_select == 0) ? tag1 : tag2);
137129}
138130
139131/*
r6428r6429
190182*/
191183
192184
193#define LOG_F000_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - val = %02x\n",cpu_get_pc(space->cpu),arkanoid_bootleg_cmd,arkanoid_bootleg_val);
194#define LOG_F002_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - val = %02x\n",cpu_get_pc(space->cpu),arkanoid_bootleg_cmd,arkanoid_bootleg_val);
195#define LOG_D018_W if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - cmd = %02x\n",cpu_get_pc(space->cpu),data,arkanoid_bootleg_cmd);
196#define LOG_D008_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d008_r - val = %02x\n",cpu_get_pc(space->cpu),arkanoid_bootleg_d008_val);
185#define LOG_F000_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - val = %02x\n", cpu_get_pc(space->cpu), state->bootleg_cmd, arkanoid_bootleg_val);
186#define LOG_F002_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - val = %02x\n", cpu_get_pc(space->cpu), state->bootleg_cmd, arkanoid_bootleg_val);
187#define LOG_D018_W if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - cmd = %02x\n", cpu_get_pc(space->cpu), data, state->bootleg_cmd);
188#define LOG_D008_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d008_r - val = %02x\n", cpu_get_pc(space->cpu), arkanoid_bootleg_d008_val);
197189
198190
199static UINT8 arkanoid_bootleg_cmd;
200
201191/* Kludge for some bootlegs that read this address */
202192READ8_HANDLER( arkanoid_bootleg_f000_r )
203193{
194   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
204195   UINT8 arkanoid_bootleg_val = 0x00;
205196
206   switch (arkanoid_bootleg_id)
197   switch (state->bootleg_id)
207198   {
208199      case ARKANGC:   /* There are no reads from 0xf000 in these bootlegs */
209200      case ARKBLOCK:
r6428r6429
211202      case ARKBLOC2:
212203      case ARKGCBL:
213204      case PADDLE2:
214         switch (arkanoid_bootleg_cmd)
205         switch (state->bootleg_cmd)
215206         {
216207            default:
217208               break;
r6428r6429
219210         LOG_F000_R
220211         break;
221212      case BLOCK2:
222         switch (arkanoid_bootleg_cmd)
213         switch (state->bootleg_cmd)
223214         {
224215            case 0x05:  /* Check 1 */
225216               arkanoid_bootleg_val = 0x05;
r6428r6429
233224         LOG_F000_R
234225         break;
235226      default:
236         logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - unknown bootleg !\n",cpu_get_pc(space->cpu),arkanoid_bootleg_cmd);
227         logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - unknown bootleg !\n", cpu_get_pc(space->cpu), state->bootleg_cmd);
237228         break;
238229   }
239230
r6428r6429
243234/* Kludge for some bootlegs that read this address */
244235READ8_HANDLER( arkanoid_bootleg_f002_r )
245236{
237   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
246238   UINT8 arkanoid_bootleg_val = 0x00;
247239
248   switch (arkanoid_bootleg_id)
240   switch (state->bootleg_id)
249241   {
250242      case ARKANGC:
251243      case ARKBLOCK:
252         switch (arkanoid_bootleg_cmd)
244         switch (state->bootleg_cmd)
253245         {
254246            default:
255247               break;
r6428r6429
258250         break;
259251      case ARKANGC2:  /* There are no reads from 0xf002 in these bootlegs */
260252      case BLOCK2:
261         switch (arkanoid_bootleg_cmd)
253         switch (state->bootleg_cmd)
262254         {
263255            default:
264256               break;
r6428r6429
266258         LOG_F002_R
267259         break;
268260      case ARKBLOC2:
269         switch (arkanoid_bootleg_cmd)
261         switch (state->bootleg_cmd)
270262         {
271263            default:
272264               break;
r6428r6429
274266         LOG_F002_R
275267         break;
276268      case ARKGCBL:
277         switch (arkanoid_bootleg_cmd)
269         switch (state->bootleg_cmd)
278270         {
279271            case 0x8a:  /* Current level (fixed routine) */
280272               arkanoid_bootleg_val = 0xa5;
r6428r6429
288280         LOG_F002_R
289281         break;
290282      case PADDLE2:
291         switch (arkanoid_bootleg_cmd)
283         switch (state->bootleg_cmd)
292284         {
293285            case 0x24:  /* Avoid bad jump to 0x0066 */
294286               arkanoid_bootleg_val = 0x9b;
r6428r6429
320312         LOG_F002_R
321313         break;
322314      default:
323         logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - unknown bootleg !\n",cpu_get_pc(space->cpu),arkanoid_bootleg_cmd);
315         logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - unknown bootleg !\n", cpu_get_pc(space->cpu), state->bootleg_cmd);
324316         break;
325317   }
326318
r6428r6429
330322/* Kludge for some bootlegs that write this address */
331323WRITE8_HANDLER( arkanoid_bootleg_d018_w )
332324{
333   arkanoid_bootleg_cmd = 0x00;
325   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
326   state->bootleg_cmd = 0x00;
334327
335   switch (arkanoid_bootleg_id)
328   switch (state->bootleg_id)
336329   {
337330      case ARKANGC:
338331      case ARKBLOCK:
r6428r6429
340333         {
341334            case 0x36:  /* unneeded value : no call 0x2050, unused A and overwritten HL (0x0313 -> 0x0340) */
342335               if (cpu_get_pc(space->cpu) == 0x7c47)
343                  arkanoid_bootleg_cmd = 0x00;
336                  state->bootleg_cmd = 0x00;
344337               break;
345338            case 0x38:  /* unneeded value : no call 0x2050, unused A and fixed HL (0x7bd5) */
346339               if (cpu_get_pc(space->cpu) == 0x7b87)
347                  arkanoid_bootleg_cmd = 0x00;
340                  state->bootleg_cmd = 0x00;
348341               break;
349342            case 0x8a:  /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7b77 -> 0x7c1c) */
350343               if (cpu_get_pc(space->cpu) == 0x9661)
351                  arkanoid_bootleg_cmd = 0x00;
344                  state->bootleg_cmd = 0x00;
352345               break;
353346            case 0xe3:  /* unneeded value : call 0x2050 but fixed A (0x00) and fixed HL (0xed83) */
354347               if (cpu_get_pc(space->cpu) == 0x67e3)
355                  arkanoid_bootleg_cmd = 0x00;
348                  state->bootleg_cmd = 0x00;
356349               break;
357350            case 0xf7:  /* unneeded value : 3 * 'NOP' at 0x034f + 2 * 'NOP' at 0x35b */
358351               if (cpu_get_pc(space->cpu) == 0x0349)
359                  arkanoid_bootleg_cmd = 0x00;
352                  state->bootleg_cmd = 0x00;
360353               break;
361354            case 0xff:  /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7c4f -> 0x7d31) */
362355               if (cpu_get_pc(space->cpu) == 0x9670)
363                  arkanoid_bootleg_cmd = 0x00;
356                  state->bootleg_cmd = 0x00;
364357               break;
365358            default:
366               arkanoid_bootleg_cmd = 0x00;
359               state->bootleg_cmd = 0x00;
367360               break;
368361         }
369362         LOG_D018_W
r6428r6429
373366         {
374367            case 0x36:  /* unneeded value : call 0x2050 but fixed A (0x2d) */
375368               if (cpu_get_pc(space->cpu) == 0x7c4c)
376                  arkanoid_bootleg_cmd = 0x00;
369                  state->bootleg_cmd = 0x00;
377370               break;
378371            case 0x38:  /* unneeded value : call 0x2050 but fixed A (0xf3) */
379372               if (cpu_get_pc(space->cpu) == 0x7b87)
380                  arkanoid_bootleg_cmd = 0x00;
373                  state->bootleg_cmd = 0x00;
381374               break;
382375            case 0x88:  /* unneeded value : no read back */
383376               if (cpu_get_pc(space->cpu) == 0x67e3)
384                  arkanoid_bootleg_cmd = 0x00;
377                  state->bootleg_cmd = 0x00;
385378               if (cpu_get_pc(space->cpu) == 0x7c47)
386                  arkanoid_bootleg_cmd = 0x00;
379                  state->bootleg_cmd = 0x00;
387380               break;
388381            case 0x89:  /* unneeded value : no read back */
389382               if (cpu_get_pc(space->cpu) == 0x67e5)
390                  arkanoid_bootleg_cmd = 0x00;
383                  state->bootleg_cmd = 0x00;
391384               break;
392385            case 0x8a:  /* unneeded value : call 0x2050 but fixed A (0xa5) */
393386               if (cpu_get_pc(space->cpu) == 0x9661)
394                  arkanoid_bootleg_cmd = 0x00;
387                  state->bootleg_cmd = 0x00;
395388               break;
396389            case 0xc0:  /* unneeded value : no read back */
397390               if (cpu_get_pc(space->cpu) == 0x67e7)
398                  arkanoid_bootleg_cmd = 0x00;
391                  state->bootleg_cmd = 0x00;
399392               break;
400393            case 0xe3:  /* unneeded value : call 0x2050 but fixed A (0x61) */
401394               if (cpu_get_pc(space->cpu) == 0x67e9)
402                  arkanoid_bootleg_cmd = 0x00;
395                  state->bootleg_cmd = 0x00;
403396               break;
404397            case 0xff:  /* unneeded value : call 0x2050 but fixed A (0xe2) */
405398               if (cpu_get_pc(space->cpu) == 0x9670)
406                  arkanoid_bootleg_cmd = 0x00;
399                  state->bootleg_cmd = 0x00;
407400               break;
408401            default:
409               arkanoid_bootleg_cmd = 0x00;
402               state->bootleg_cmd = 0x00;
410403               break;
411404         }
412405         LOG_D018_W
r6428r6429
416409         {
417410            case 0x05:  /* Check 1 */
418411               if (cpu_get_pc(space->cpu) == 0x0363)
419                  arkanoid_bootleg_cmd = 0x05;
412                  state->bootleg_cmd = 0x05;
420413               break;
421414            case 0x0a:  /* Check 2 */
422415               if (cpu_get_pc(space->cpu) == 0x0372)
423                  arkanoid_bootleg_cmd = 0x0a;
416                  state->bootleg_cmd = 0x0a;
424417               break;
425418            default:
426               arkanoid_bootleg_cmd = 0x00;
419               state->bootleg_cmd = 0x00;
427420               break;
428421         }
429422         LOG_D018_W
r6428r6429
433426         {
434427            case 0x36:  /* unneeded value : call 0x2050 but fixed A (0x2d) */
435428               if (cpu_get_pc(space->cpu) == 0x7c4c)
436                  arkanoid_bootleg_cmd = 0x00;
429                  state->bootleg_cmd = 0x00;
437430               break;
438431            case 0x38:  /* unneeded value : call 0x2050 but fixed A (0xf3) */
439432               if (cpu_get_pc(space->cpu) == 0x7b87)
440                  arkanoid_bootleg_cmd = 0x00;
433                  state->bootleg_cmd = 0x00;
441434               break;
442435            case 0x88:  /* unneeded value : no read back */
443436               if (cpu_get_pc(space->cpu) == 0x67e3)
444                  arkanoid_bootleg_cmd = 0x00;
437                  state->bootleg_cmd = 0x00;
445438               if (cpu_get_pc(space->cpu) == 0x7c47)
446                  arkanoid_bootleg_cmd = 0x00;
439                  state->bootleg_cmd = 0x00;
447440               break;
448441            case 0x89:  /* unneeded value : no read back */
449442               if (cpu_get_pc(space->cpu) == 0x67e5)
450                  arkanoid_bootleg_cmd = 0x00;
443                  state->bootleg_cmd = 0x00;
451444               break;
452445            case 0x8a:  /* unneeded value : call 0x2050 but unused HL and fixed DE (0x7c1c) */
453446               if (cpu_get_pc(space->cpu) == 0x9661)
454                  arkanoid_bootleg_cmd = 0x00;
447                  state->bootleg_cmd = 0x00;
455448               break;
456449            case 0xc0:  /* unneeded value : no read back */
457450               if (cpu_get_pc(space->cpu) == 0x67e7)
458                  arkanoid_bootleg_cmd = 0x00;
451                  state->bootleg_cmd = 0x00;
459452               break;
460453            case 0xe3:  /* unneeded value : call 0x2050 but fixed A (0x61) */
461454               if (cpu_get_pc(space->cpu) == 0x67e9)
462                  arkanoid_bootleg_cmd = 0x00;
455                  state->bootleg_cmd = 0x00;
463456               break;
464457            case 0xf7:  /* unneeded value : call 0x2050 but never called (check code at 0x0340) */
465458               if (cpu_get_pc(space->cpu) == 0x0349)
466                  arkanoid_bootleg_cmd = 0x00;
459                  state->bootleg_cmd = 0x00;
467460               break;
468461            case 0xff:  /* unneeded value : no call 0x2050, unused A and fixed HL (0x7d31) */
469462               if (cpu_get_pc(space->cpu) == 0x9670)
470                  arkanoid_bootleg_cmd = 0x00;
463                  state->bootleg_cmd = 0x00;
471464               break;
472465            default:
473               arkanoid_bootleg_cmd = 0x00;
466               state->bootleg_cmd = 0x00;
474467               break;
475468         }
476469         LOG_D018_W
r6428r6429
480473         {
481474            case 0x36:  /* unneeded value : call 0x2050 but fixed A (0x2d) */
482475               if (cpu_get_pc(space->cpu) == 0x7c4c)
483                  arkanoid_bootleg_cmd = 0x00;
476                  state->bootleg_cmd = 0x00;
484477               break;
485478            case 0x38:  /* unneeded value : call 0x2050 but fixed A (0xf3) */
486479               if (cpu_get_pc(space->cpu) == 0x7b87)
487                  arkanoid_bootleg_cmd = 0x00;
480                  state->bootleg_cmd = 0x00;
488481               break;
489482            case 0x88:  /* unneeded value : no read back */
490483               if (cpu_get_pc(space->cpu) == 0x67e3)
491                  arkanoid_bootleg_cmd = 0x00;
484                  state->bootleg_cmd = 0x00;
492485               if (cpu_get_pc(space->cpu) == 0x7c47)
493                  arkanoid_bootleg_cmd = 0x00;
486                  state->bootleg_cmd = 0x00;
494487            case 0x89:  /* unneeded value : no read back */
495488               if (cpu_get_pc(space->cpu) == 0x67e5)
496                  arkanoid_bootleg_cmd = 0x00;
489                  state->bootleg_cmd = 0x00;
497490               break;
498491            case 0x8a:  /* call 0x2050 with A read from 0xf002 and wrong HL */
499492               if (cpu_get_pc(space->cpu) == 0x9661)
500                  arkanoid_bootleg_cmd = data;
493                  state->bootleg_cmd = data;
501494               break;
502495            case 0xc0:  /* unneeded value : no read back */
503496               if (cpu_get_pc(space->cpu) == 0x67e7)
504                  arkanoid_bootleg_cmd = 0x00;
497                  state->bootleg_cmd = 0x00;
505498               break;
506499            case 0xe3:  /* unneeded value : call 0x2050 but fixed A (0x61) */
507500               if (cpu_get_pc(space->cpu) == 0x67e9)
508                  arkanoid_bootleg_cmd = 0x00;
501                  state->bootleg_cmd = 0x00;
509502               break;
510503            case 0xf7:  /* unneeded value : 3 * 'NOP' at 0x034f + 'JR NZ,$035D' at 0x35b */
511504               if (cpu_get_pc(space->cpu) == 0x0349)
512                  arkanoid_bootleg_cmd = 0x00;
505                  state->bootleg_cmd = 0x00;
513506               break;
514507            case 0xff:  /* call 0x2050 with A read from 0xf002 and wrong HL */
515508               if (cpu_get_pc(space->cpu) == 0x9670)
516                  arkanoid_bootleg_cmd = data;
509                  state->bootleg_cmd = data;
517510               break;
518511            default:
519               arkanoid_bootleg_cmd = 0x00;
512               state->bootleg_cmd = 0x00;
520513               break;
521514         }
522515         LOG_D018_W
r6428r6429
526519         {
527520            case 0x24:  /* A read from 0xf002 (expected to be 0x9b) */
528521               if (cpu_get_pc(space->cpu) == 0xbd7a)
529                  arkanoid_bootleg_cmd = data;
522                  state->bootleg_cmd = data;
530523               break;
531524            case 0x36:  /* call 0x2050 with A read from 0xf002 and wrong HL */
532525               if (cpu_get_pc(space->cpu) == 0x7c4c)
533                  arkanoid_bootleg_cmd = data;
526                  state->bootleg_cmd = data;
534527               break;
535528            case 0x38:  /* call 0x2050 with A read from 0xf002 and wrong HL */
536529               if (cpu_get_pc(space->cpu) == 0x7b87)
537                  arkanoid_bootleg_cmd = data;
530                  state->bootleg_cmd = data;
538531               break;
539532            case 0x88:  /* unneeded value : no read back */
540533               if (cpu_get_pc(space->cpu) == 0x67e3)
541                  arkanoid_bootleg_cmd = 0x00;
534                  state->bootleg_cmd = 0x00;
542535               if (cpu_get_pc(space->cpu) == 0x7c47)
543                  arkanoid_bootleg_cmd = 0x00;
536                  state->bootleg_cmd = 0x00;
544537            case 0x89:  /* unneeded value : no read back */
545538               if (cpu_get_pc(space->cpu) == 0x67e5)
546                  arkanoid_bootleg_cmd = 0x00;
539                  state->bootleg_cmd = 0x00;
547540               break;
548541            case 0x8a:  /* call 0x2050 with A read from 0xf002 and wrong HL */
549542               if (cpu_get_pc(space->cpu) == 0x9661)
550                  arkanoid_bootleg_cmd = data;
543                  state->bootleg_cmd = data;
551544               break;
552545            case 0xc0:  /* unneeded value : no read back */
553546               if (cpu_get_pc(space->cpu) == 0x67e7)
554                  arkanoid_bootleg_cmd = 0x00;
547                  state->bootleg_cmd = 0x00;
555548               break;
556549            case 0xc3:  /* A read from 0xf002 (expected to be 0x1d) */
557550               if (cpu_get_pc(space->cpu) == 0xbd8a)
558                  arkanoid_bootleg_cmd = data;
551                  state->bootleg_cmd = data;
559552               break;
560553            case 0xe3:  /* call 0x2050 with A read from 0xf002 and wrong HL */
561554               if (cpu_get_pc(space->cpu) == 0x67e9)
562                  arkanoid_bootleg_cmd = data;
555                  state->bootleg_cmd = data;
563556               break;
564557            case 0xf7:  /* call 0x2050 with A read from 0xf002 and wrong HL */
565558               if (cpu_get_pc(space->cpu) == 0x0349)
566                  arkanoid_bootleg_cmd = data;
559                  state->bootleg_cmd = data;
567560               break;
568561            case 0xff:  /* call 0x2050 with A read from 0xf002 and wrong HL */
569562               if (cpu_get_pc(space->cpu) == 0x9670)
570                  arkanoid_bootleg_cmd = data;
563                  state->bootleg_cmd = data;
571564               break;
572565            default:
573               arkanoid_bootleg_cmd = 0x00;
566               state->bootleg_cmd = 0x00;
574567               break;
575568         }
576569         LOG_D018_W
577570         break;
578571
579572      default:
580         logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - unknown bootleg !\n",cpu_get_pc(space->cpu),data);
573         logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - unknown bootleg !\n", cpu_get_pc(space->cpu), data);
581574         break;
582575   }
583576}
r6428r6429
585578#ifdef UNUSED_CODE
586579READ8_HANDLER( block2_bootleg_f000_r )
587580{
588   return arkanoid_bootleg_cmd;
581   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
582   return state->bootleg_cmd;
589583}
590584#endif
591585
592586/* Kludge for some bootlegs that read this address */
593587READ8_HANDLER( arkanoid_bootleg_d008_r )
594588{
589   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
595590   UINT8 arkanoid_bootleg_d008_bit[8];
596591   UINT8 arkanoid_bootleg_d008_val;
597592   UINT8 arkanoid_paddle_value = input_port_read(space->machine, "MUX");
r6428r6429
599594
600595   arkanoid_bootleg_d008_bit[4] = arkanoid_bootleg_d008_bit[6] = arkanoid_bootleg_d008_bit[7] = 0;  /* untested bits */
601596
602   switch (arkanoid_bootleg_id)
597   switch (state->bootleg_id)
603598   {
604599      case ARKANGC:
605600      case ARKBLOCK:
r6428r6429
649644   }
650645
651646   arkanoid_bootleg_d008_val = 0;
652   for (b=0; b<8; b++)
647   for (b = 0; b < 8; b++)
653648      arkanoid_bootleg_d008_val |= (arkanoid_bootleg_d008_bit[b] << b);
649
654650   LOG_D008_R
655651
656652   return arkanoid_bootleg_d008_val;
657653}
658
src/mame/machine/bsktball.c
r6428r6429
77#include "driver.h"
88#include "bsktball.h"
99
10static int LD1=0;
11static int LD2=0;
12static UINT32 NMION = 0;
13
1410/***************************************************************************
15bsktball_nmion_w
11    bsktball_nmion_w
1612***************************************************************************/
1713WRITE8_HANDLER( bsktball_nmion_w )
1814{
19   NMION = offset & 0x01;
15   bsktball_state *state = (bsktball_state *)space->machine->driver_data;
16   state->nmi_on = offset & 0x01;
2017}
2118
2219/***************************************************************************
23bsktball_interrupt
20    bsktball_interrupt
2421***************************************************************************/
2522/* NMI every 32V, IRQ every VBLANK */
2623INTERRUPT_GEN( bsktball_interrupt )
2724{
28   static int i256V=0;
25   bsktball_state *state = (bsktball_state *)device->machine->driver_data;
2926
3027   /* We mod by 8 because we're interrupting 8x per frame, 1 per 32V */
31   i256V=(i256V+1) % 8;
28   state->i256v = (state->i256v + 1) % 8;
3229
33   if (i256V==0)
30   if (state->i256v == 0)
3431      cpu_set_input_line(device, 0, HOLD_LINE);
35   else if (NMION)
32   else if (state->nmi_on)
3633      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
3734}
3835
3936/***************************************************************************
40bsktball_ld_w
37    bsktball_ld_w
4138***************************************************************************/
4239
4340WRITE8_HANDLER( bsktball_ld1_w )
4441{
45   LD1 = (offset & 0x01);
42   bsktball_state *state = (bsktball_state *)space->machine->driver_data;
43   state->ld1 = (offset & 0x01);
4644}
4745
4846WRITE8_HANDLER( bsktball_ld2_w )
4947{
50   LD2 = (offset & 0x01);
48   bsktball_state *state = (bsktball_state *)space->machine->driver_data;
49   state->ld2 = (offset & 0x01);
5150}
5251
5352
5453/***************************************************************************
55bsktball_in0_r
54    bsktball_in0_r
5655***************************************************************************/
5756
5857READ8_HANDLER( bsktball_in0_r )
5958{
60   static int DR0=0;      /* PL2 H DIR */
61   static int DR1=0;      /* PL2 V DIR */
62   static int DR2=0;      /* PL1 H DIR */
63   static int DR3=0;      /* PL1 V DIR */
64
65   static int last_p1_horiz=0;
66   static int last_p1_vert=0;
67   static int last_p2_horiz=0;
68   static int last_p2_vert=0;
69
59   bsktball_state *state = (bsktball_state *)space->machine->driver_data;
7060   int p1_horiz;
7161   int p1_vert;
7262   int p2_horiz;
r6428r6429
8171   /* Set direction bits */
8272
8373   /* P1 H DIR */
84   if (p1_horiz > last_p1_horiz)
74   if (p1_horiz > state->last_p1_horiz)
8575   {
86      if ((p1_horiz-last_p1_horiz) > 128)      DR2=0x40;
87      else                           DR2=0;
76      if ((p1_horiz - state->last_p1_horiz) > 128)
77         state->dir2 = 0x40;
78      else
79         state->dir2 = 0;
8880   }
89   else if (p1_horiz < last_p1_horiz)
81   else if (p1_horiz < state->last_p1_horiz)
9082   {
91      if ((last_p1_horiz-p1_horiz) > 128)      DR2=0;
92      else                           DR2=0x40;
83      if ((state->last_p1_horiz - p1_horiz) > 128)
84         state->dir2 = 0;
85      else
86         state->dir2 = 0x40;
9387   }
9488
9589   /* P1 V DIR */
96   if (p1_vert > last_p1_vert)
90   if (p1_vert > state->last_p1_vert)
9791   {
98      if ((p1_vert-last_p1_vert) > 128)      DR3=0;
99      else                           DR3=0x80;
92      if ((p1_vert - state->last_p1_vert) > 128)
93         state->dir3 = 0;
94      else
95         state->dir3 = 0x80;
10096   }
101   else if (p1_vert < last_p1_vert)
97   else if (p1_vert < state->last_p1_vert)
10298   {
103      if ((last_p1_vert-p1_vert) > 128)      DR3=0x80;
104      else                           DR3=0;
99      if ((state->last_p1_vert - p1_vert) > 128)
100         state->dir3 = 0x80;
101      else
102         state->dir3 = 0;
105103   }
106104
107105   /* P2 H DIR */
108   if (p2_horiz > last_p2_horiz)
106   if (p2_horiz > state->last_p2_horiz)
109107   {
110      if ((p2_horiz-last_p2_horiz) > 128)      DR0=0x10;
111      else                           DR0=0;
108      if ((p2_horiz - state->last_p2_horiz) > 128)
109         state->dir0 = 0x10;
110      else
111         state->dir0 = 0;
112112   }
113   else if (p2_horiz < last_p2_horiz)
113   else if (p2_horiz < state->last_p2_horiz)
114114   {
115      if ((last_p2_horiz-p2_horiz) > 128)      DR0=0;
116      else                           DR0=0x10;
115      if ((state->last_p2_horiz - p2_horiz) > 128)
116         state->dir0 = 0;
117      else
118         state->dir0 = 0x10;
117119   }
118120
119121   /* P2 V DIR */
120   if (p2_vert > last_p2_vert)
122   if (p2_vert > state->last_p2_vert)
121123   {
122      if ((p2_vert-last_p2_vert) > 128)      DR1=0;
123      else                           DR1=0x20;
124      if ((p2_vert - state->last_p2_vert) > 128)
125         state->dir1 = 0;
126      else
127         state->dir1 = 0x20;
124128   }
125   else if (p2_vert < last_p2_vert)
129   else if (p2_vert < state->last_p2_vert)
126130   {
127      if ((last_p2_vert-p2_vert) > 128)      DR1=0x20;
128      else                           DR1=0;
131      if ((state->last_p2_vert - p2_vert) > 128)
132         state->dir1 = 0x20;
133      else
134         state->dir1 = 0;
129135   }
130136
137   state->last_p1_horiz = p1_horiz;
138   state->last_p1_vert  = p1_vert;
139   state->last_p2_horiz = p2_horiz;
140   state->last_p2_vert  = p2_vert;
131141
132   last_p1_horiz = p1_horiz;
133   last_p1_vert  = p1_vert;
134   last_p2_horiz = p2_horiz;
135   last_p2_vert  = p2_vert;
136
137142   /* D0-D3 = Plyr 1 Horiz, D4-D7 = Plyr 1 Vert */
138   if ((LD1) & (LD2))
143   if ((state->ld1) & (state->ld2))
139144   {
140      return ((p1_horiz & 0x0F) | ((p1_vert << 4) & 0xF0));
145      return ((p1_horiz & 0x0f) | ((p1_vert << 4) & 0xf0));
141146   }
142147   /* D0-D3 = Plyr 2 Horiz, D4-D7 = Plyr 2 Vert */
143   else if (LD2)
148   else if (state->ld2)
144149   {
145      return ((p2_horiz & 0x0F) | ((p2_vert << 4) & 0xF0));
150      return ((p2_horiz & 0x0f) | ((p2_vert << 4) & 0xf0));
146151   }
147152   else
148153   {
149      temp = input_port_read(space->machine, "IN0") & 0x0F;
154      temp = input_port_read(space->machine, "IN0") & 0x0f;
150155
151      return (temp | DR0 | DR1 | DR2 | DR3);
156      return (temp | state->dir0 | state->dir1 | state->dir2 | state->dir3);
152157   }
153158}
154159
155160/***************************************************************************
156bsktball_led_w
161    bsktball_led_w
157162***************************************************************************/
158163WRITE8_HANDLER( bsktball_led1_w )
159164{
160   set_led_status(0,offset & 0x01);
165   set_led_status(0, offset & 0x01);
161166}
162167
163168WRITE8_HANDLER( bsktball_led2_w )
164169{
165   set_led_status(1,offset & 0x01);
170   set_led_status(1, offset & 0x01);
166171}
src/mame/machine/cps2crpt.c
r6428r6429
757757   { "ssf2j",    { 0x01234567,0x89abcdef }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
758758   { "ssf2jr1",  { 0x01234567,0x89abcdef }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
759759   { "ssf2jr2",  { 0x01234567,0x89abcdef }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
760   { "ssf2h",    { 0x56789abc,0xdef01234 }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
760761   { "ssf2tb",   { 0x89abcdef,0x01234567 }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
761762   { "ssf2tbr1", { 0x89abcdef,0x01234567 }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
762763   { "ssf2tbj",  { 0x6789abcd,0xef012345 }, 0x400000 },   // 0838 0007 2000  btst    #7,$2000
r6428r6429
858859   { "ddsomj",   { 0xae92fa94,0x315a9045 }, 0x100000 },   // 0C81 1966 0419  cmpi.l  #$19660419,D1
859860   { "ddsomjr1", { 0xae92fa94,0x315a9045 }, 0x100000 },   // 0C81 1966 0419  cmpi.l  #$19660419,D1
860861   { "ddsoma",   { 0x8719abcd,0xef028345 }, 0x100000 },   // 0C81 1966 0419  cmpi.l  #$19660419,D1
862   { "ddsomh",   { 0x42134245,0x120de607 }, 0x100000 },   // 0C81 1966 0419  cmpi.l  #$19660419,D1
861863   { "ddsomb",   { 0x7149a782,0xf3a5bfce }, 0x100000 },   // 0C81 1966 0419  cmpi.l  #$19660419,D1
862864   { "megaman2", { 0x50501cac,0xed346550 }, 0x100000 },   // 0C80 0164 7101  cmpi.l  #$01647101,D0
863865   { "megaman2a",{ 0x3f148a2b,0xd6790a15 }, 0x100000 },   // 0C80 0164 7101  cmpi.l  #$01647101,D0
864866   { "rckman2j", { 0x319eca73,0x10551270 }, 0x100000 },   // 0C80 0164 7101  cmpi.l  #$01647101,D0
867   { "megaman2h",{ 0x765573ca,0x250210d0 }, 0x100000 },   // 0C80 0164 7101  cmpi.l  #$01647101,D0
865868   { "qndream",  { 0x5804ea73,0xf66b0798 }, 0x080000 },   // 0C81 1973 0827  cmpi.l  #$19730827,D1
866869   { "sfa2",     { 0xfc4acf9c,0x3bfbe1f9 }, 0x100000 },   // 0C80 3039 9783  cmpi.l  #$30399783,D0
867870   { "sfa2u",    { 0x1bbf3d96,0x8af4614a }, 0x100000 },   // 0C80 3039 9783  cmpi.l  #$30399783,D0
src/mame/machine/nb1413m3.c
r6428r6429
305305      case NB1413M3_MJNANPAS:
306306      case NB1413M3_MLADYHTR:
307307      case NB1413M3_CLUB90S:
308      case NB1413M3_OHPAIPEE:
309      case NB1413M3_TOGENKYO:
308310      case NB1413M3_LOVEHOUS:
309311      case NB1413M3_CHINMOKU:
310312      case NB1413M3_GALKAIKA:
r6428r6429
431433         break;
432434      case NB1413M3_PAIRSNB:
433435      case NB1413M3_PAIRSTEN:
436      case NB1413M3_OHPAIPEE:
437      case NB1413M3_TOGENKYO:
434438         return input_port_read(space->machine, "P1");
435439      default:
436440         switch ((nb1413m3_inputport ^ 0xff) & 0x1f)
r6428r6429
480484         break;
481485      case NB1413M3_PAIRSNB:
482486      case NB1413M3_PAIRSTEN:
487      case NB1413M3_OHPAIPEE:
488      case NB1413M3_TOGENKYO:
483489         return input_port_read(space->machine, "P2");
484490      default:
485491         switch ((nb1413m3_inputport ^ 0xff) & 0x1f)
src/mame/machine/atarifb.c
r6428r6429
99#include "atarifb.h"
1010#include "sound/discrete.h"
1111
12static int CTRLD;
13static int sign_x_1, sign_y_1;
14static int sign_x_2, sign_y_2;
15static int sign_x_3, sign_y_3;
16static int sign_x_4, sign_y_4;
1712
18
1913WRITE8_HANDLER( atarifb_out1_w )
2014{
15   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
2116   const device_config *discrete = devtag_get_device(space->machine, "discrete");
2217
23   CTRLD = data;
18   state->CTRLD = data;
2419
25   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN,  data & 0x01);      // Whistle
26   discrete_sound_w(discrete, ATARIFB_HIT_EN,  data & 0x02);         // Hit
20   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN, data & 0x01);      // Whistle
21   discrete_sound_w(discrete, ATARIFB_HIT_EN, data & 0x02);         // Hit
2722   discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10);      // Attract
28   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);      // Noise Enable / Kicker
23   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);         // Noise Enable / Kicker
2924}
3025
3126
3227WRITE8_HANDLER( atarifb4_out1_w )
3328{
29   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
3430   const device_config *discrete = devtag_get_device(space->machine, "discrete");
3531
36   CTRLD = data;
32   state->CTRLD = data;
3733
38   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN,  data & 0x01);      // Whistle
39   discrete_sound_w(discrete, ATARIFB_HIT_EN,  data & 0x02);         // Hit
34   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN, data & 0x01);      // Whistle
35   discrete_sound_w(discrete, ATARIFB_HIT_EN, data & 0x02);         // Hit
4036   discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10);      // Attract
41   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);      // Noise Enable / Kicker
37   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);         // Noise Enable / Kicker
4238
43   coin_counter_w (1, data & 0x80);
39   coin_counter_w(1, data & 0x80);
4440}
4541
4642
4743WRITE8_HANDLER( abaseb_out1_w )
4844{
45   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
4946   const device_config *discrete = devtag_get_device(space->machine, "discrete");
5047
51   CTRLD = data;
48   state->CTRLD = data;
5249
53   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN,  data & 0x01);      // Whistle
54   discrete_sound_w(discrete, ATARIFB_HIT_EN,  data & 0x02);         // Hit
50   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN, data & 0x01);      // Whistle
51   discrete_sound_w(discrete, ATARIFB_HIT_EN, data & 0x02);         // Hit
5552   discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10);      // Attract
56   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);      // Noise Enable / Kicker
53   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);         // Noise Enable / Kicker
5754
5855   if (data & 0x80)
5956   {
6057      /* Invert video */
61      palette_set_color(space->machine,1,MAKE_RGB(0x00,0x00,0x00)); /* black  */
62      palette_set_color(space->machine,0,MAKE_RGB(0xff,0xff,0xff)); /* white  */
58      palette_set_color(space->machine, 1, MAKE_RGB(0x00,0x00,0x00)); /* black  */
59      palette_set_color(space->machine, 0, MAKE_RGB(0xff,0xff,0xff)); /* white  */
6360   }
6461   else
6562   {
6663      /* Regular video */
67      palette_set_color(space->machine,0,MAKE_RGB(0x00,0x00,0x00)); /* black  */
68      palette_set_color(space->machine,1,MAKE_RGB(0xff,0xff,0xff)); /* white  */
64      palette_set_color(space->machine, 0, MAKE_RGB(0x00,0x00,0x00)); /* black  */
65      palette_set_color(space->machine, 1, MAKE_RGB(0xff,0xff,0xff)); /* white  */
6966   }
7067}
7168
7269
7370WRITE8_HANDLER( soccer_out1_w )
7471{
72   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
7573   const device_config *discrete = devtag_get_device(space->machine, "discrete");
7674
77   CTRLD = data;
75   state->CTRLD = data;
7876
7977   /* bit 0 = whistle */
8078   /* bit 1 = hit */
r6428r6429
8482   /* bit 5-6 = trackball CTRL bits */
8583   /* bit 7 = Rule LED */
8684
87   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN,  data & 0x01);      // Whistle
88   discrete_sound_w(discrete, ATARIFB_HIT_EN,  data & 0x02);         // Hit
85   discrete_sound_w(discrete, ATARIFB_WHISTLE_EN, data & 0x01);      // Whistle
86   discrete_sound_w(discrete, ATARIFB_HIT_EN, data & 0x02);         // Hit
8987   discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10);      // Attract
90   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);      // Noise Enable / Kicker
88   discrete_sound_w(discrete, ATARIFB_NOISE_EN, data & 0x04);         // Noise Enable / Kicker
9189
92//  set_led_status(0,data & 0x10);  // !!!!!!!!!! Is this correct????
93   set_led_status(1,data & 0x80);
90//  set_led_status(0, data & 0x10);  // !!!!!!!!!! Is this correct????
91   set_led_status(1, data & 0x80);
9492}
9593
9694
r6428r6429
156154
157155READ8_HANDLER( atarifb_in0_r )
158156{
159   if ((CTRLD & 0x20) == 0x00)
157   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
158   if ((state->CTRLD & 0x20) == 0x00)
160159   {
161160      int val;
162161
163      val = (sign_y_2 >> 7) |
164           (sign_x_2 >> 6) |
165           (sign_y_1 >> 5) |
166           (sign_x_1 >> 4) |
162      val = (state->sign_y_2 >> 7) |
163           (state->sign_x_2 >> 6) |
164           (state->sign_y_1 >> 5) |
165           (state->sign_x_1 >> 4) |
167166           input_port_read(space->machine, "IN0");
168167      return val;
169168   }
170169   else
171170   {
172      static int counter_x,counter_y;
173      int new_x,new_y;
171      int new_x, new_y;
174172
175173      /* Read player 1 trackball */
176174      new_x = input_port_read(space->machine, "IN3");
177      if (new_x != counter_x)
175      if (new_x != state->counter_x_in0)
178176      {
179         sign_x_1 = (new_x - counter_x) & 0x80;
180         counter_x = new_x;
177         state->sign_x_1 = (new_x - state->counter_x_in0) & 0x80;
178         state->counter_x_in0 = new_x;
181179      }
182180
183181      new_y = input_port_read(space->machine, "IN2");
184      if (new_y != counter_y)
182      if (new_y != state->counter_y_in0)
185183      {
186         sign_y_1 = (new_y - counter_y) & 0x80;
187         counter_y = new_y;
184         state->sign_y_1 = (new_y - state->counter_y_in0) & 0x80;
185         state->counter_y_in0 = new_y;
188186      }
189187
190      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
188      return (((state->counter_y_in0 & 0x0f) << 4) | (state->counter_x_in0 & 0x0f));
191189   }
192190}
193191
194192
195193READ8_HANDLER( atarifb_in2_r )
196194{
197   if ((CTRLD & 0x20) == 0x00)
195   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
196
197   if ((state->CTRLD & 0x20) == 0x00)
198198   {
199199      return input_port_read(space->machine, "IN1");
200200   }
201201   else
202202   {
203      static int counter_x,counter_y;
204      int new_x,new_y;
203      int new_x, new_y;
205204
206205      /* Read player 2 trackball */
207206      new_x = input_port_read(space->machine, "IN5");
208      if (new_x != counter_x)
207      if (new_x != state->counter_x_in2)
209208      {
210         sign_x_2 = (new_x - counter_x) & 0x80;
211         counter_x = new_x;
209         state->sign_x_2 = (new_x - state->counter_x_in2) & 0x80;
210         state->counter_x_in2 = new_x;
212211      }
213212
214213      new_y = input_port_read(space->machine, "IN4");
215      if (new_y != counter_y)
214      if (new_y != state->counter_y_in2)
216215      {
217         sign_y_2 = (new_y - counter_y) & 0x80;
218         counter_y = new_y;
216         state->sign_y_2 = (new_y - state->counter_y_in2) & 0x80;
217         state->counter_y_in2 = new_y;
219218      }
220219
221      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
220      return (((state->counter_y_in2 & 0x0f) << 4) | (state->counter_x_in2 & 0x0f));
222221   }
223222}
224223
225224READ8_HANDLER( atarifb4_in0_r )
226225{
226   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
227
227228   /* LD1 and LD2 low, return sign bits */
228   if ((CTRLD & 0x60) == 0x00)
229   if ((state->CTRLD & 0x60) == 0x00)
229230   {
230231      int val;
231232
232      val = (sign_x_4 >> 7) |
233           (sign_y_4 >> 6) |
234           (sign_x_2 >> 5) |
235           (sign_y_2 >> 4) |
236           (sign_x_3 >> 3) |
237           (sign_y_3 >> 2) |
238           (sign_x_1 >> 1) |
239           (sign_y_1 >> 0);
233      val = (state->sign_x_4 >> 7) |
234           (state->sign_y_4 >> 6) |
235           (state->sign_x_2 >> 5) |
236           (state->sign_y_2 >> 4) |
237           (state->sign_x_3 >> 3) |
238           (state->sign_y_3 >> 2) |
239           (state->sign_x_1 >> 1) |
240           (state->sign_y_1 >> 0);
240241      return val;
241242   }
242   else if ((CTRLD & 0x60) == 0x60)
243   else if ((state->CTRLD & 0x60) == 0x60)
243244   /* LD1 and LD2 both high, return Team 1 right player (player 1) */
244245   {
245      static int counter_x,counter_y;
246      int new_x,new_y;
246      int new_x, new_y;
247247
248248      /* Read player 1 trackball */
249249      new_x = input_port_read(space->machine, "IN3");
250      if (new_x != counter_x)
250      if (new_x != state->counter_x_in0)
251251      {
252         sign_x_1 = (new_x - counter_x) & 0x80;
253         counter_x = new_x;
252         state->sign_x_1 = (new_x - state->counter_x_in0) & 0x80;
253         state->counter_x_in0 = new_x;
254254      }
255255
256256      new_y = input_port_read(space->machine, "IN2");
257      if (new_y != counter_y)
257      if (new_y != state->counter_y_in0)
258258      {
259         sign_y_1 = (new_y - counter_y) & 0x80;
260         counter_y = new_y;
259         state->sign_y_1 = (new_y - state->counter_y_in0) & 0x80;
260         state->counter_y_in0 = new_y;
261261      }
262262
263      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
263      return (((state->counter_y_in0 & 0x0f) << 4) | (state->counter_x_in0 & 0x0f));
264264   }
265   else if ((CTRLD & 0x60) == 0x40)
265   else if ((state->CTRLD & 0x60) == 0x40)
266266   /* LD1 high, LD2 low, return Team 1 left player (player 2) */
267267   {
268      static int counter_x,counter_y;
269      int new_x,new_y;
268      int new_x, new_y;
270269
271270      /* Read player 2 trackball */
272271      new_x = input_port_read(space->machine, "IN5");
273      if (new_x != counter_x)
272      if (new_x != state->counter_x_in0b)
274273      {
275         sign_x_2 = (new_x - counter_x) & 0x80;
276         counter_x = new_x;
274         state->sign_x_2 = (new_x - state->counter_x_in0b) & 0x80;
275         state->counter_x_in0b = new_x;
277276      }
278277
279278      new_y = input_port_read(space->machine, "IN4");
280      if (new_y != counter_y)
279      if (new_y != state->counter_y_in0b)
281280      {
282         sign_y_2 = (new_y - counter_y) & 0x80;
283         counter_y = new_y;
281         state->sign_y_2 = (new_y - state->counter_y_in0b) & 0x80;
282         state->counter_y_in0b = new_y;
284283      }
285284
286      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
285      return (((state->counter_y_in0b & 0x0f) << 4) | (state->counter_x_in0b & 0x0f));
287286   }
288287
289288   else return 0;
r6428r6429
292291
293292READ8_HANDLER( atarifb4_in2_r )
294293{
295   if ((CTRLD & 0x40) == 0x00)
294   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
295
296   if ((state->CTRLD & 0x40) == 0x00)
296297   {
297298      return input_port_read(space->machine, "IN1");
298299   }
299   else if ((CTRLD & 0x60) == 0x60)
300   else if ((state->CTRLD & 0x60) == 0x60)
300301   /* LD1 and LD2 both high, return Team 2 right player (player 3) */
301302   {
302      static int counter_x,counter_y;
303      int new_x,new_y;
303      int new_x, new_y;
304304
305305      /* Read player 3 trackball */
306306      new_x = input_port_read(space->machine, "IN7");
307      if (new_x != counter_x)
307      if (new_x != state->counter_x_in2)
308308      {
309         sign_x_3 = (new_x - counter_x) & 0x80;
310         counter_x = new_x;
309         state->sign_x_3 = (new_x - state->counter_x_in2) & 0x80;
310         state->counter_x_in2 = new_x;
311311      }
312312
313313      new_y = input_port_read(space->machine, "IN6");
314      if (new_y != counter_y)
314      if (new_y != state->counter_y_in2)
315315      {
316         sign_y_3 = (new_y - counter_y) & 0x80;
317         counter_y = new_y;
316         state->sign_y_3 = (new_y - state->counter_y_in2) & 0x80;
317         state->counter_y_in2 = new_y;
318318      }
319319
320      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
320      return (((state->counter_y_in2 & 0x0f) << 4) | (state->counter_x_in2 & 0x0f));
321321   }
322   else if ((CTRLD & 0x60) == 0x40)
322   else if ((state->CTRLD & 0x60) == 0x40)
323323   /* LD1 high, LD2 low, return Team 2 left player (player 4) */
324324   {
325      static int counter_x,counter_y;
326      int new_x,new_y;
325      int new_x, new_y;
327326
328327      /* Read player 4 trackball */
329328      new_x = input_port_read(space->machine, "IN9");
330      if (new_x != counter_x)
329      if (new_x != state->counter_x_in2b)
331330      {
332         sign_x_4 = (new_x - counter_x) & 0x80;
333         counter_x = new_x;
331         state->sign_x_4 = (new_x - state->counter_x_in2b) & 0x80;
332         state->counter_x_in2b = new_x;
334333      }
335334
336335      new_y = input_port_read(space->machine, "IN8");
337      if (new_y != counter_y)
336      if (new_y != state->counter_y_in2b)
338337      {
339         sign_y_4 = (new_y - counter_y) & 0x80;
340         counter_y = new_y;
338         state->sign_y_4 = (new_y - state->counter_y_in2b) & 0x80;
339         state->counter_y_in2b = new_y;
341340      }
342341
343      return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f));
342      return (((state->counter_y_in2b & 0x0f) << 4) | (state->counter_x_in2b & 0x0f));
344343   }
345344
346345   else return 0;
347346}
348
349
src/mame/mamedriv.c
r6428r6429
5252   DRIVER( hangly )   /* hack */
5353   DRIVER( hangly2 )   /* hack */
5454   DRIVER( hangly3 )   /* hack */
55   DRIVER( popeyeman )   /* hack */
5556   DRIVER( piranhah )   /* hack */
5657   DRIVER( abscam )   /* hack */
5758   DRIVER( crush )      /* (c) 1981 Kural Samno Electric Ltd */
r6428r6429
195196   DRIVER( mooncrsb )   /* bootleg */
196197   DRIVER( mooncrs2 )   /* bootleg */
197198   DRIVER( spcdrag )   /* bootleg */
199   DRIVER( stera )      /* bootleg */
198200   DRIVER( spcdraga )   /* bootleg */
199201   DRIVER( mooncrs3 )   /* bootleg */
200202   DRIVER( fantazia )   /* bootleg */
r6428r6429
534536   DRIVER( av2mj1bb )   /* (c) 1991 MIKI SYOUJI/AV JAPAN */
535537   DRIVER( av2mj2rg )   /* (c) 1991 MIKI SYOUJI/AV JAPAN */
536538
539   DRIVER( ohpaipee )   /* (c) 1990 Nichibutsu */
540   DRIVER( togenkyo )   /* (c) 1990 Nichibutsu */
541
537542   DRIVER( mjuraden )   /* (c) 1992 Nichibutsu/Yubis */
538543   DRIVER( koinomp )   /* (c) 1992 */
539544   DRIVER( patimono )   /* (c) 1992 */
r6428r6429
692697   DRIVER( poleposa )   /* 136014   (c) 1982 + Atari license */
693698   DRIVER( polepos1 )   /* 136014   (c) 1982 Atari */
694699   DRIVER( topracer )   /* bootleg */
695   DRIVER( topracra )   /* bootleg */
696   DRIVER( topracrb )   /* bootleg */
700   DRIVER( topracera )   /* bootleg */
701   DRIVER( topracern )   /* bootleg */
697702   DRIVER( polepos2 )   /* (c) 1983 */
698703   DRIVER( polepos2a )   /* 136014   (c) 1983 + Atari license */
699704   DRIVER( polepos2b )   /* bootleg */
r6428r6429
929934
930935   /* Universal games */
931936   DRIVER( cosmicg )   /* 7907 (c) 1979 */
932   DRIVER( cosmica )   /* 7910 (c) [1979] */
937   DRIVER( cosmica )   /* 7910-AII (c) [1979] */
938   DRIVER( cosmica1 )   /* 7910-A (c) [1979] */
933939   DRIVER( cosmica2 )   /* 7910 (c) 1979 */
934940   DRIVER( nomnlnd )   /* 8003 (c) [1980?] */
935941   DRIVER( nomnlndg )   /* 8003 (c) [1980?] + Gottlieb */
r6428r6429
14901496   DRIVER( dbreedm72 )   /* (c) 1989 */
14911497   DRIVER( rtype2 )   /* (c) 1989 */
14921498   DRIVER( rtype2j )   /* (c) 1989 (Japan) */
1499   DRIVER( rtype2jc )   /* (c) 1989 (Japan) */
14931500   DRIVER( majtitle )   /* (c) 1990 (World) */
14941501   DRIVER( majtitlej )   /* (c) 1990 (Japan) */
14951502   DRIVER( hharry )   /* (c) 1990 (World) */
r6428r6429
20592066   DRIVER( scfinals )   /* 1994.?? D68 (c) 1993 Taito Corporation Japan (World) */
20602067   DRIVER( intcup94 )   /* 1994.?? D78 (c) 1994 Taito (World) */
20612068   DRIVER( hthero94 )   /* 1994.09 D78 (c) 1994 Taito (US) */
2062   DRIVER( lightbr )   /* 1994.03 D69 (c) 1993 Taito Corporation (Japan) */
2069   DRIVER( lightbr )   /* 1994.03 D69 (c) 1993 Taito Corporation Japan (World) */
2070   DRIVER( lightbrj )   /* 1994.03 D69 (c) 1993 Taito Corporation (Japan) */
20632071   DRIVER( dungeonm )   /* 1994.?? D69 (c) 1993 Taito Corporation Japan (World) */
20642072   DRIVER( dungeonmu )   /* 1994.?? D69 (c) 1993 Taito America Corporation (US) */
20652073   DRIVER( kaiserkn )   /* 1994.?? D84 (c) 1994 Taito Corporation Japan (World) */
r6428r6429
24902498   DRIVER( 1943kai )   /*  6/1988 (c) 1987 (Japan) */
24912499   DRIVER( lastduel )   /*  7/1988 (c) 1988 (US) */
24922500   DRIVER( lastduelo )   /*  7/1988 (c) 1988 (US) */
2501   DRIVER( lastduelj )   /*  7/1988 (c) 1988 (Japan) */
24932502   DRIVER( lastduelb )   /* bootleg */
24942503   DRIVER( madgear )   /*  2/1989 (c) 1989 (US) */
24952504   DRIVER( madgearj )   /*  2/1989 (c) 1989 (Japan) */
r6428r6429
26572666   DRIVER( ssf2j )      /* 05/10/1993 (c) 1993 (Japan) */
26582667   DRIVER( ssf2jr1 )   /* 11/09/1993 (c) 1993 (Japan) */
26592668   DRIVER( ssf2jr2 )   /* 10/09/1993 (c) 1993 (Japan) */
2669   DRIVER( ssf2h )      /* 11/09/1993 (c) 1993 (Hispanic) */
26602670   DRIVER( ssf2tb )   /* 11/19/1993 (c) 1993 (World) */
26612671   DRIVER( ssf2tbr1 )   /* 11/09/1993 (c) 1993 (World) */
26622672   DRIVER( ssf2tbj )   /* 11/09/1993 (c) 1993 (Japan) */
r6428r6429
27592769   DRIVER( ddsomjr1 )   /* 06/02/1996 (c) 1996 (Japan) */
27602770   DRIVER( ddsomj )   /* 19/06/1996 (c) 1996 (Japan) */
27612771   DRIVER( ddsoma )   /* 19/06/1996 (c) 1996 (Asia) */
2772   DRIVER( ddsomh )   /* 23/02/1996 (c) 1996 (Hispanic) */
27622773   DRIVER( ddsomb )   /* 23/02/1996 (c) 1996 (Brazil) */
27632774   DRIVER( sfa2 )      /* 06/03/1996 (c) 1996 (Euro) */
27642775   DRIVER( sfa2u )      /* 06/03/1996 (c) 1996 (US) */
r6428r6429
27752786   DRIVER( megaman2 )   /* 08/07/1996 (c) 1996 (US) */
27762787   DRIVER( megaman2a )   /* 08/07/1996 (c) 1996 (Asia) */
27772788   DRIVER( rckman2j )   /* 08/07/1996 (c) 1996 (Japan) */
2789   DRIVER( megaman2h )   /* 12/07/1996 (c) 1996 (Hispanic) */
27782790   DRIVER( gigamn2 )   /* bootleg */
27792791   DRIVER( sfz2al )   /* 26/08/1996 (c) 1996 (Asia) */
27802792   DRIVER( sfz2alj )   /* 05/08/1996 (c) 1996 (Japan) */
r6428r6429
40634075   DRIVER( vmahjong )   /* 1997.02 Virtual Mahjong (Micronet) */
40644076   DRIVER( groovef )   /* 1997.05 Groove on Fight (Atlus) */
40654077   DRIVER( nclubv3 )   /* 1997.07 Name Club Ver. 3 */
4078   DRIVER( pclub2 )   /* 1997.09 Print Club 2 */
40664079   DRIVER( thunt )      /* 1997.09 Puzzle & Action Treasure Hunt (Sega (Deniam License)) */
40674080   DRIVER( thuntk )
40684081   DRIVER( winterht )   /* 1997.10 Winter Heat (Data East) */
r6428r6429
40864099   DRIVER( elandore )   /* 1998.11 Touryuu Densetsu Elandore (Sai-Mate) */
40874100   DRIVER( sss )      /* 1998.12 Steep Slope Sliders (Capcom / Cave / Victor) */
40884101   DRIVER( micrombc )   /* 1999.03 Microman Battle Charge */
4102   DRIVER( pclub2v3 )   /* 1999.03 Print Club 2 Vol. 3 */
40894103   DRIVER( sanjeon )   /* 1999.04 Sanjun Sujun (Sega / Deniam) */
40904104   DRIVER( danchih )   /* 1999.06 Danchi de Hanafuda Okusan Komeya Desuyo! (Altron (Tecmo License)) */
40914105   DRIVER( ffreveng )   /* 1999.09 Final Fight Revenge (Capcom) */
r6428r6429
44584472   DRIVER( hmgeo )      /* 2001.09 Heavy Metal Geo Matrix */
44594473                  /* 2001.10 Inu no Osanpo */
44604474   DRIVER( derbyoc2 )   /* 2001.10 Derby Owners Club 2 */
4461   DRIVER( vtennis2 )  /* 2001.10 Power Smash 2 / Virtua Tennis 2 */
4475   DRIVER( vtennis2 )   /* 2001.10 Power Smash 2 / Virtua Tennis 2 */
44624476   DRIVER( vtenis2c )   /* Power Smash 2 / Virtua Tennis 2 (cartridge) */
44634477                  /* 2001.11 Shakatto Tambourine Cho Powerup Chu */
44644478   DRIVER( keyboard )   /* 2001.11 La Keyboardxyu */
r6428r6429
44984512   DRIVER( undefeat )   /* 2005.10 Under Defeat */
44994513                  /* 2005.12 Radirgy (Rev. A) */
45004514   DRIVER( kurucham )   /* 2006.03 Kurukuru Chameleon */
4501                  /* 2006.05 Trigger Heart Exelica */
4515   DRIVER( trgheart )   /* 2006.05 Trigger Heart Exelica */
45024516                  /* 2006.07 Touch de Zunou */
45034517                  /* 2006.08 Senkou no Rondo SP */
4504                  /* 2006.09 Jingi Storm */
4505                  /* 2006.11 Karous */
4518   DRIVER( jingystm )   /* 2006.09 Jingi Storm */
4519   DRIVER( karous )   /* 2006.11 Karous */
45064520                  /* 2006.12 Guilty Gear XX Accent Core */
45074521                  /* 2006.12 Melty Blood Act Cadenza ver.B */
45084522                  /* 2006.12.16 Noukone Puzzle Takoron */
r6428r6429
45464560                  /* 2001.06 Club Kart */
45474561   DRIVER( beachspi )   /* 2001.07 Beach Spikers */
45484562                  /* 2001.08 Wave Runner GP */
4549   DRIVER( vf4cart )        /* 2001.08.02 Virtua Fighter 4 (cartridge) */
4563   DRIVER( vf4cart )   /* 2001.08.02 Virtua Fighter 4 (cartridge) */
45504564   DRIVER( vf4 )      /* 2001.08.02 Virtua Fighter 4 (GD-ROM) */
45514565   DRIVER( vf4b )      /* 2001.08.20 Virtua Fighter 4 ver.B */
45524566   DRIVER( vf4c )      /* 2002.01.31 Virtua Fighter 4 ver.C */
r6428r6429
55805594   DRIVER( gradius4 )   /* GX837 (c)1999 */
55815595   DRIVER( sscope )   /* GX830 (c)1999 */
55825596   DRIVER( sscopea )   /* GX830 (c)1999 */
5597   DRIVER( sscopeb )   /* GX830 (c)1999 */
55835598   DRIVER( sscope2 )   /* GX931 (c)2000 */
55845599   DRIVER( racingj )   /* GX676 (c)1998 */
55855600   DRIVER( racingj2 )   /* GX888 (c)1999 */
r6428r6429
61476162   DRIVER( mnchmobl )   /* A2001      (c) 1983 + Centuri license */
61486163   DRIVER( marvins )   /* A2003      (c) 1983 */
61496164   DRIVER( madcrash )   /* A2005      (c) 1984 */
6165   DRIVER( madcrush )   /* A2005      (c) 1984 */
61506166   DRIVER( vangrd2 )   /* A2005      (c) 1984 */
61516167   DRIVER( mainsnk )   /*            (c) 1984 */
61526168   DRIVER( canvas )   /* A3008      (c) 1985 */
r6428r6429
75107526   DRIVER( sarukani )   /* 1997.01 (c) 1997 Kaneko / Mediaworks (Japan) */
75117527   DRIVER( vblokbrk )   /* 1997.?? (c) 1997 Kaneko / Mediaworks (Asia) */
75127528   DRIVER( galpanis )   /* 1997.04 (c) 1997 Kaneko (Japan) */
7529   DRIVER( galpanisk )   /* 1997.04 (c) 1997 Kaneko (Korea) */
75137530   DRIVER( sengekis )   /* 1997.?? (c) 1997 Kaneko / Warashi (Asia) */
75147531   DRIVER( sengekisj )   /* 1997.07 (c) 1997 Kaneko / Warashi (Japan) */
75157532   DRIVER( jjparad2 )   /* 1997.12 (c) 1997 Electro Design Co. (Japan) */
r6428r6429
81188135   DRIVER( stellecu )   /* (c) 1998 */
81198136   DRIVER( iqblock )   /* (c) 1993 */
81208137   DRIVER( grndtour )   /* (c) 1993 */
8138
8139   /* IGS005 + IGS006 + IGS007 + IGS008 Games */
8140   DRIVER( lordgun )   /* (c) 1994 */
8141   DRIVER( hfh )      /* (c) 199? */
8142
8143   /* IGS009 Games */
81218144   DRIVER( jingbell )   /* (c) 1995? */
8122   DRIVER( gp98 )      /* (c) 19?? */
8145   DRIVER( gp98 )      /* (c) 1998 */
8146
8147   /* IGS011 Games */
81238148   DRIVER( lhb )      /* (c) 1995 */
81248149   DRIVER( lhba )      /* (c) 1995 */
8150   DRIVER( ryukobou )   /* (c) 1995 */
81258151   DRIVER( dbc )      /* (c) 199? */
8126   DRIVER( chmplst2 )   /* (c) 1996 */
8152   DRIVER( lhb2 )      /* (c) 1996 */
81278153   DRIVER( xymg )      /* (c) 1996 */
8128   DRIVER( grtwall )   /* (c) 1996 */
8154   DRIVER( wlcc )      /* (c) 1996 */
81298155   DRIVER( vbowl )      /* (c) 1996 */
81308156   DRIVER( vbowlj )   /* (c) 1996 */
81318157   DRIVER( drgnwrld )   /* (c) 1997 */
r6428r6429
81358161   DRIVER( drgnwrldv20j )   /* (c) 1995 */
81368162   DRIVER( drgnwrldv10c )   /* (c) 1995 */
81378163   DRIVER( drgnwrldv11h )   /* (c) 1995 */
8164   DRIVER( nkishusp )   /* (c) 1998 */
81388165
8139   DRIVER( lordgun )   /* (c) 1994 */
8140   DRIVER( hfh )      /* (c) 199? */
8141   DRIVER( tarzan )
8142
8143   DRIVER( dunhuang )   /* (c) 199? */
8144
8166   /* IGS017 / IGS031 Games */
81458167   DRIVER( iqblocka )   /* (c) 1996 */
81468168   DRIVER( iqblockf )   /* (c) 1996 */
81478169   DRIVER( tjsb )      /* (c) 1997 */
8148
8170   DRIVER( sdmg2 )      /* (c) 1997 */
8171   DRIVER( mgdh )      /* (c) 1997 */
8172   DRIVER( mgcs )      /* (c) 1998 */
81498173   DRIVER( lhzb2 )      /* (c) 1998 */
81508174   DRIVER( lhzb2a )   /* (c) 1998 */
8151   DRIVER( mgcs )      /* (c) 1998 */
81528175   DRIVER( slqz2 )      /* (c) 1998 */
8153   DRIVER( sdmg2 )      /* (c) 1997 */
8176   DRIVER( tarzan )   /* (c) 1999? */
8177   DRIVER( tarzana )   /* (c) 1999? */
8178   DRIVER( starzan )   /* (c) 2000? */
81548179
8180   /* IGS027A Games */
81558181   DRIVER( bigd2 )      /* (c) 2000 */
81568182   DRIVER( sdwx )      /* (c) 2002 */
81578183   DRIVER( sddz )      /* (c) 200? */
r6428r6429
81598185   DRIVER( lhzb4 )      /* (c) 200? */
81608186   DRIVER( klxyj )      /* (c) 200? */
81618187   DRIVER( mgfx )      /* (c) 200? */
8162   DRIVER( ddz )      /* (c) 200? */
81638188
81648189   /* IGS PGM System Games */
81658190   DRIVER( pgm )
r6428r6429
82058230   DRIVER( killbldp )
82068231   DRIVER( svg )
82078232
8233   /* Spirit Tech. Corp. */
8234   DRIVER( dunhuang )   /* (c) 1995 */
8235
82088236   /* RamTek games */
82098237   DRIVER( hitme )      /* (c) 1976 Ramtek */
82108238   DRIVER( m21 )      /* (c) 1976 Mirco */
r6428r6429
83078335
83088336   /* Art & Magic games */
83098337   DRIVER( ultennis )   /* (c) 1993 */
8338   DRIVER( ultennisj )   /* (c) 1993 */
83108339   DRIVER( cheesech )   /* (c) 1994 */
83118340   DRIVER( stonebal )   /* (c) 1994 */
83128341   DRIVER( stonebal2 )   /* (c) 1994 */
83138342
83148343   /* Dynamo games */
83158344   DRIVER( skeetsht )   /* (c) 1991 */
8316   DRIVER( toursol )
8345   DRIVER( toursol )    /* (c) 1995 Dynamo */
8346   DRIVER( toursol1 )   /* (c) 1995 Dynamo */
83178347
83188348   /* Taiyo games */
83198349   DRIVER( dynamski )   /* (c) 1984 Taiyo */
r6428r6429
84198449   DRIVER( topbladv )   /* 2002 Sonokong. Top Blade V */
84208450   DRIVER( officeye )
84218451
8452   DRIVER( ddz )      /* (c) 200? */
8453
84228454   DRIVER( psattack )   /* 2004 Uniana */
84238455
84248456   /* Bell Fruit Cobra Hardware */
r6428r6429
85618593   DRIVER( gfire2 )   /* (c) 1992 Topis Corp */
85628594   DRIVER( sprcros2 )   /* (c) 1986 GM Shoji */
85638595   DRIVER( sprcros2a )   /* (c) 1986 GM Shoji */
8596   DRIVER( d9final )   /* (c) 1992 Excellent System */
85648597   DRIVER( gcpinbal )   /* (c) 1994 Excellent System */
85658598   DRIVER( vmetal )   /* (c) 1995 Excellent System? */
85668599   DRIVER( vmetaln )   /* (c) 1995 Excellent System? */
r6428r6429
85958628   DRIVER( quiz211 )   /* (c) 1986 Italian bootleg */
85968629   DRIVER( jokpoker )   /* (c) 1982 Greyhound Electronics */
85978630   DRIVER( jokpokera )   /* (c) 1982 Greyhound Electronics */
8631   DRIVER( jokpokerb )
8632   DRIVER( jokpokerc )
85988633   DRIVER( superbwl )   /* (c) 1982 Greyhound Electronics */
85998634   DRIVER( amuse )      /* (c) 1982 Greyhound Electronics */
8635   DRIVER( amuse1 )   /* (c) 1982 Greyhound Electronics */
86008636   DRIVER( gs4002 )   /* (c) 1982 G.E.I. */
86018637   DRIVER( gs4002a )   /* (c) 1982 G.E.I. */
86028638   DRIVER( gepoker )   /* (c) 1984 Greyhound Electronics */
r6428r6429
86128648   DRIVER( gtsersb )   /* (c) 1985 Greyhound Electronics */
86138649   DRIVER( sextriv1 )   /* (c) 1985 Kinky Kit and Game Co. */
86148650   DRIVER( sextriv2 )   /* (c) 1985 Kinky Kit and Game Co. */
8651   DRIVER( geimulti )   /* (c) 1992 Grayhound Electronics */
8652   DRIVER( sprtauth )   /* (c) 1982 Classic Games */
8653   DRIVER( suprpokr )
86158654   DRIVER( dribling )   /* (c) 1983 Model Racing */
86168655   DRIVER( driblingo )   /* (c) 1983 Olympia */
86178656   DRIVER( ace )      /* [1976 Allied Leisure] */
r6428r6429
87358774   DRIVER( strvmstr )   /* (c) 1986 Enerdyne Technologies Inc */
87368775   DRIVER( dorachan )   /* (c) 1980 Craul Denshi */
87378776   DRIVER( ladyfrog )   /* (c) 1990 Mondial Games */
8777   DRIVER( toucheme )
87388778   DRIVER( rabbit )   /* (c) 1997 Electronic Arts */
87398779   DRIVER( tmmjprd )   /* (c) 1997 Media / Sonnet */
87408780   DRIVER( tmpdoki )   /* (c) 1998 Media Syouji */
r6428r6429
91639203   DRIVER( jongkyo )   /* (c) 1985 Kiwako */
91649204   DRIVER( gamecstl )   /* MAME based bootleg */
91659205   DRIVER( gamecst2 )   /* MAME based bootleg, version 2.613 */
9166   DRIVER( drw80pkr )   /* (c) 1983 IGT */
9206   DRIVER( drw80pkr )   /* (c) 1982 IGT */
9207   DRIVER( drw80pk2 )   /* (c) 1983 IGT */
91679208   DRIVER( blazlaz )   /* (c) 1989 Hudson Soft */
91689209   DRIVER( ggconnie )   /* (c) ???? Capcom */
91699210   DRIVER( paranoia )   /* (c) 1990 Naxat Soft */
r6428r6429
97389779
97399780   /* Scorpion 2 */
97409781   DRIVER( m_brkfst )
9782   DRIVER( m_brkfs1 )
9783   DRIVER( m_brkfs2 )
9784   DRIVER( m_brkfs3 )
9785   DRIVER( m_brkfs4 )
9786   DRIVER( m_brkfs5 )
97419787
97429788   DRIVER( m_bdrwho )
97439789   DRIVER( m_bdrwh1 )
src/mame/includes/m10.h
r6428r6429
3131struct _m10_state
3232{
3333   /* memory pointers */
34   UINT8 *         chargen;
35   UINT8 *         memory;
36   UINT8 *         rom;
34   UINT8 *             chargen;
35   UINT8 *             memory;
36   UINT8 *             rom;
37   UINT8 *             videoram;
38   UINT8 *             colorram;
3739
38   /* machine states */
40   /* video-related */
41   tilemap *           tx_tilemap;
42   gfx_element *       back_gfx;
3943
40   /* sound state */
44   /* this is currently unused, because it is needed by gfx_layout (which has no machine) */
45   UINT32              extyoffs[32 * 8];
4146
4247   /* video state */
43   UINT8         bottomline;
44   UINT8          flip;
48   UINT8                 bottomline;
49   UINT8               flip;
4550
46   /* Specific states */
51   /* misc */
52   int                 last;
53
54   /* devices */
55   const device_config *ic8j1;
56   const device_config *ic8j2;
57   const device_config *samples;
4758};
4859
4960
r6428r6429
5970
6071VIDEO_START( m10 );
6172VIDEO_START( m15 );
62
src/mame/includes/n8080.h
r6428r6429
1/*----------- defined in video/n8080.c -----------*/
21
3extern int helifire_flash;
2typedef struct _n8080_state n8080_state;
3struct _n8080_state
4{
5   /* memory pointers */
6   UINT8 * videoram;
7   UINT8 * colorram;   // for helifire
48
5extern int spacefev_red_screen;
6extern int spacefev_red_cannon;
9   /* video-related */
10   emu_timer* cannon_timer;
11   int spacefev_red_screen;
12   int spacefev_red_cannon;
13   int sheriff_color_mode;
14   int sheriff_color_data;
15   int helifire_flash;
16   UINT8 helifire_LSFR[63];
17   unsigned helifire_mv;
18   unsigned helifire_sc; /* IC56 */
719
20   /* sound-related */
21   int n8080_hardware;
22   emu_timer* sound_timer[3];
23   int helifire_dac_phase;
24   double helifire_dac_volume;
25   double helifire_dac_timing;
26   UINT16 prev_sound_pins;
27   UINT16 curr_sound_pins;
28   int mono_flop[3];
29   UINT8 prev_snd_data;
30
31   /* other */
32   unsigned shift_data;
33   unsigned shift_bits;
34   int inte;
35};
36
37
38
39/*----------- defined in video/n8080.c -----------*/
40
841WRITE8_HANDLER( n8080_video_control_w );
942
1043PALETTE_INIT( n8080 );
r6428r6429
2659MACHINE_DRIVER_EXTERN( sheriff_sound );
2760MACHINE_DRIVER_EXTERN( helifire_sound );
2861
62MACHINE_START( spacefev_sound );
63MACHINE_START( sheriff_sound );
64MACHINE_START( helifire_sound );
65MACHINE_RESET( spacefev_sound );
66MACHINE_RESET( sheriff_sound );
67MACHINE_RESET( helifire_sound );
68
2969WRITE8_HANDLER( n8080_sound_1_w );
3070WRITE8_HANDLER( n8080_sound_2_w );
31
src/mame/includes/arabian.h
r6428r6429
66
77***************************************************************************/
88
9typedef struct _arabian_state arabian_state;
10struct _arabian_state
11{
12   /* memory pointers */
13   UINT8 *  blitter;
14   UINT8 *  custom_cpu_ram;
15
16   UINT8 *  main_bitmap;
17   UINT8 *  converted_gfx;
18
19   /* video-related */
20   UINT8    video_control;
21   UINT8    flip_screen;
22
23   /* misc */
24   UINT8    custom_cpu_reset;
25   UINT8    custom_cpu_busy;
26};
27
28
929/*----------- defined in video/arabian.c -----------*/
1030
11extern UINT8 *arabian_blitter;
12extern UINT8 arabian_video_control;
13extern UINT8 arabian_flip_screen;
31WRITE8_HANDLER( arabian_blitter_w );
32WRITE8_HANDLER( arabian_videoram_w );
1433
1534PALETTE_INIT( arabian );
1635VIDEO_START( arabian );
1736VIDEO_UPDATE( arabian );
18
19WRITE8_HANDLER( arabian_blitter_w );
20WRITE8_HANDLER( arabian_videoram_w );
src/mame/includes/1942.h
r0r6429
1/***************************************************************************
2
3    1942
4
5***************************************************************************/
6
7typedef struct __1942_state _1942_state;
8struct __1942_state
9{
10   /* memory pointers */
11   UINT8 * fg_videoram;
12   UINT8 * bg_videoram;
13   UINT8 * spriteram;
14
15   /* video-related */
16   tilemap *fg_tilemap, *bg_tilemap;
17   int palette_bank;
18   UINT8 scroll[2];
19};
20
21
22
23/*----------- defined in video/1942.c -----------*/
24
25extern WRITE8_HANDLER( c1942_fgvideoram_w );
26extern WRITE8_HANDLER( c1942_bgvideoram_w );
27extern WRITE8_HANDLER( c1942_scroll_w );
28extern WRITE8_HANDLER( c1942_c804_w );
29extern WRITE8_HANDLER( c1942_palette_bank_w );
30
31extern PALETTE_INIT( 1942 );
32extern VIDEO_START( 1942 );
33extern VIDEO_UPDATE( 1942 );
src/mame/includes/ambush.h
r0r6429
1/*************************************************************************
2
3    Ambush
4
5*************************************************************************/
6
7typedef struct _ambush_state ambush_state;
8struct _ambush_state
9{
10   /* memory pointers */
11   UINT8 *    videoram;
12   UINT8 *    spriteram;
13   UINT8 *    colorram;
14   UINT8 *    scrollram;
15   UINT8 *    colorbank;
16};
17
18
19/*----------- defined in video/ambush.c -----------*/
20
21PALETTE_INIT( ambush );
22VIDEO_UPDATE( ambush );
src/mame/includes/carjmbre.h
r0r6429
1/***************************************************************************
2
3    carjmbre
4
5***************************************************************************/
6
7typedef struct _carjmbre_state carjmbre_state;
8struct _carjmbre_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * spriteram;
13
14   /* video-related */
15   tilemap *cj_tilemap;
16   UINT8   flipscreen;
17   UINT16  bgcolor;
18};
19
20
21
22/*----------- defined in video/carjmbre.c -----------*/
23
24WRITE8_HANDLER( carjmbre_flipscreen_w );
25WRITE8_HANDLER( carjmbre_bgcolor_w );
26WRITE8_HANDLER( carjmbre_videoram_w );
27
28PALETTE_INIT( carjmbre );
29VIDEO_START( carjmbre );
30VIDEO_UPDATE( carjmbre );
31
32
src/mame/includes/1943.h
r0r6429
1/***************************************************************************
2
3    1943
4
5***************************************************************************/
6
7typedef struct __1943_state _1943_state;
8struct __1943_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * colorram;
13   UINT8 * spriteram;
14   UINT8 * scrollx;
15   UINT8 * scrolly;
16   UINT8 * bgscrollx;
17
18   /* video-related */
19   tilemap *fg_tilemap, *bg_tilemap, *bg2_tilemap;
20   int     char_on, obj_on, bg1_on, bg2_on;
21};
22
23
24
25/*----------- defined in video/1943.c -----------*/
26
27extern WRITE8_HANDLER( c1943_c804_w );
28extern WRITE8_HANDLER( c1943_d806_w );
29extern WRITE8_HANDLER( c1943_videoram_w );
30extern WRITE8_HANDLER( c1943_colorram_w );
31
32extern PALETTE_INIT( 1943 );
33extern VIDEO_START( 1943 );
34extern VIDEO_UPDATE( 1943 );
src/mame/includes/popper.h
r0r6429
1/***************************************************************************
2
3    Popper
4
5***************************************************************************/
6
7typedef struct _popper_state popper_state;
8struct _popper_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * ol_videoram;
13   UINT8 * attribram;
14   UINT8 * ol_attribram;
15   UINT8 * spriteram;
16//  size_t spriteram_size;
17
18   /* video-related */
19   tilemap *p123_tilemap, *p0_tilemap;
20   tilemap *ol_p123_tilemap, *ol_p0_tilemap;
21   INT32 flipscreen, e002, gfx_bank;
22   rectangle tilemap_clip;
23};
24
25
26/*----------- defined in video/popper.c -----------*/
27
28WRITE8_HANDLER( popper_videoram_w );
29WRITE8_HANDLER( popper_attribram_w );
30WRITE8_HANDLER( popper_ol_videoram_w );
31WRITE8_HANDLER( popper_ol_attribram_w );
32WRITE8_HANDLER( popper_flipscreen_w );
33WRITE8_HANDLER( popper_e002_w );
34WRITE8_HANDLER( popper_gfx_bank_w );
35
36PALETTE_INIT( popper );
37VIDEO_START( popper );
38VIDEO_UPDATE( popper );
39
40
src/mame/includes/astrof.h
r6428r6429
44
55****************************************************************************/
66
7typedef struct _astrof_state astrof_state;
8struct _astrof_state
9{
10   /* video-related */
11   UINT8 *    videoram;
12   size_t     videoram_size;
713
14   UINT8 *    colorram;
15   UINT8 *    tomahawk_protection;
16
17   UINT8 *    astrof_color;
18   UINT8      astrof_palette_bank;
19   UINT8      red_on;
20   UINT8      flipscreen;
21   UINT8      screen_off;
22   UINT16     abattle_count;
23
24   /* sound-related */
25   UINT8      port_1_last;
26   UINT8      port_2_last;
27   UINT8      astrof_start_explosion;
28   UINT8      astrof_death_playing;
29   UINT8      astrof_bosskill_playing;
30
31   /* devices */
32   const device_config *samples;   // astrof & abattle
33   const device_config *sn;   // tomahawk
34};
35
836/*----------- defined in audio/astrof.c -----------*/
937
10MACHINE_START( astrof_audio );
1138MACHINE_DRIVER_EXTERN( astrof_audio );
1239WRITE8_HANDLER( astrof_audio_1_w );
1340WRITE8_HANDLER( astrof_audio_2_w );
src/mame/includes/hexa.h
r0r6429
1
2
3typedef struct _hexa_state hexa_state;
4struct _hexa_state
5{
6   /* memory pointers */
7   UINT8 *  videoram;
8
9   /* video-related */
10   tilemap  *bg_tilemap;
11   int      charbank;
12
13};
14
15
16/* ----------- defined in video/hexa.c -----------*/
17
18WRITE8_HANDLER( hexa_videoram_w );
19WRITE8_HANDLER( hexa_d008_w );
20
21VIDEO_START( hexa );
22VIDEO_UPDATE( hexa );
src/mame/includes/bsktball.h
r6428r6429
1313#define BSKTBALL_BOUNCE_EN      NODE_04
1414
1515
16typedef struct _bsktball_state bsktball_state;
17struct _bsktball_state
18{
19   /* memory pointers */
20   UINT8 *  videoram;
21   UINT8 *  motion;
22
23   /* video-related */
24   tilemap  *bg_tilemap;
25
26   /* misc */
27   UINT32   nmi_on;
28   int      i256v;
29
30   /* input-related */
31   int ld1, ld2;
32   int dir0, dir1, dir2, dir3;
33   int last_p1_horiz, last_p1_vert, last_p2_horiz, last_p2_vert;
34};
35
36
37
1638/*----------- defined in machine/bsktball.c -----------*/
1739
1840WRITE8_HANDLER( bsktball_nmion_w );
r6428r6429
3456
3557/*----------- defined in video/bsktball.c -----------*/
3658
37extern UINT8 *bsktball_motion;
38
3959VIDEO_START( bsktball );
4060VIDEO_UPDATE( bsktball );
4161WRITE8_HANDLER( bsktball_videoram_w );
src/mame/includes/appoooh.h
r6428r6429
1
2
3typedef struct _appoooh_state appoooh_state;
4struct _appoooh_state
5{
6   /* memory pointers */
7   UINT8 *  bg_videoram;
8   UINT8 *  bg_colorram;
9   UINT8 *  fg_videoram;
10   UINT8 *  fg_colorram;
11   UINT8 *  spriteram;
12   UINT8 *  spriteram_2;
13
14   /* video-related */
15   tilemap  *fg_tilemap, *bg_tilemap;
16   int scroll_x;
17   int priority;
18
19   /* sound-related */
20   UINT32   adpcm_data;
21   UINT32   adpcm_address;
22
23   /* devices */
24   const device_config *adpcm;
25};
26
27#define CHR1_OFST   0x00  /* palette page of char set #1 */
28#define CHR2_OFST   0x10  /* palette page of char set #2 */
29
30
131/* ----------- defined in video/appoooh.c -----------*/
232
3extern UINT8 *appoooh_fg_videoram,*appoooh_fg_colorram;
4extern UINT8 *appoooh_bg_videoram,*appoooh_bg_colorram;
533WRITE8_HANDLER( appoooh_fg_videoram_w );
634WRITE8_HANDLER( appoooh_fg_colorram_w );
735WRITE8_HANDLER( appoooh_bg_videoram_w );
r6428r6429
1341VIDEO_START( appoooh );
1442VIDEO_UPDATE( appoooh );
1543VIDEO_UPDATE( robowres );
16
src/mame/includes/aeroboto.h
r0r6429
1/***************************************************************************
2
3    Aeroboto
4
5***************************************************************************/
6
7typedef struct _aeroboto_state aeroboto_state;
8struct _aeroboto_state
9{
10   /* memory pointers */
11   UINT8 * mainram;
12   UINT8 * spriteram;
13   UINT8 * videoram;
14   UINT8 * hscroll;
15   UINT8 * vscroll;
16   UINT8 * tilecolor;
17   UINT8 * starx;
18   UINT8 * stary;
19   UINT8 * bgcolor;
20
21   /* stars layout */
22   UINT8 * stars_rom;
23   int     stars_length;
24
25   /* video-related */
26   tilemap *bg_tilemap;
27   int     charbank, starsoff;
28   int     sx, sy;
29   UINT8   ox, oy;
30
31   /* misc */
32   int count;
33   int disable_irq;
34};
35
36
37/*----------- defined in video/aeroboto.c -----------*/
38
39VIDEO_START( aeroboto );
40VIDEO_UPDATE( aeroboto );
41
42READ8_HANDLER( aeroboto_in0_r );
43WRITE8_HANDLER( aeroboto_3000_w );
44WRITE8_HANDLER( aeroboto_videoram_w );
45WRITE8_HANDLER( aeroboto_tilecolor_w );
src/mame/includes/ms32.h
r6428r6429
1111extern UINT32 *ms32_roz_ctrl;
1212extern UINT32 *ms32_tx_scroll;
1313extern UINT32 *ms32_bg_scroll;
14
15/*
1416extern UINT32 *ms32_priram;
1517extern UINT32 *ms32_palram;
1618extern UINT32 *ms32_bgram;
r6428r6429
1820extern UINT32 *ms32_lineram;
1921extern UINT32 *ms32_spram;
2022extern UINT32 *ms32_txram;
23*/
2124extern UINT32 *ms32_mainram;
2225
2326WRITE32_HANDLER( ms32_brightness_w );
27/*
2428WRITE32_HANDLER( ms32_palram_w );
2529READ32_HANDLER( ms32_txram_r );
2630WRITE32_HANDLER( ms32_txram_w );
r6428r6429
3236WRITE32_HANDLER( ms32_bgram_w );
3337READ32_HANDLER( ms32_spram_r );
3438WRITE32_HANDLER( ms32_spram_w );
35READ32_HANDLER( ms32_priram_r );
36WRITE32_HANDLER( ms32_priram_w );
39*/
40
3741WRITE32_HANDLER( ms32_gfxctrl_w );
3842VIDEO_START( ms32 );
43VIDEO_START( f1superb );
3944VIDEO_UPDATE( ms32 );
src/mame/includes/20pacgal.h
r6428r6429
2020
2121   /* machine state */
2222   UINT8 game_selected;   /* 0 = Ms. Pac-Man, 1 = Galaga */
23
24   /* devices */
25   const device_config *eeprom;
2326};
2427
2528
src/mame/includes/atarifb.h
r6428r6429
1515#define ATARIFB_HIT_EN         NODE_05
1616
1717
18typedef struct _atarifb_state atarifb_state;
19struct _atarifb_state
20{
21   /* video-related */
22   UINT8 *  alphap1_videoram;
23   UINT8 *  alphap2_videoram;
24   UINT8 *  field_videoram;
25   UINT8 *  spriteram;
26   UINT8 *  scroll_register;
27
28   tilemap  *alpha1_tilemap;
29   tilemap  *alpha2_tilemap;
30   tilemap  *field_tilemap;
31
32   /* sound-related */
33   int CTRLD;
34   int sign_x_1, sign_y_1;
35   int sign_x_2, sign_y_2;
36   int sign_x_3, sign_y_3;
37   int sign_x_4, sign_y_4;
38   int counter_x_in0, counter_y_in0;
39   int counter_x_in0b, counter_y_in0b;
40   int counter_x_in2, counter_y_in2;
41   int counter_x_in2b, counter_y_in2b;
42};
43
44
1845/*----------- defined in machine/atarifb.c -----------*/
1946
2047WRITE8_HANDLER( atarifb_out1_w );
r6428r6429
4168
4269/*----------- defined in video/atarifb.c -----------*/
4370
44extern UINT8 *atarifb_alphap1_videoram;
45extern UINT8 *atarifb_alphap2_videoram;
46extern UINT8 *atarifb_field_videoram;
47extern UINT8 *atarifb_scroll_register;
48
4971VIDEO_START( atarifb );
5072VIDEO_UPDATE( atarifb );
5173VIDEO_UPDATE( abaseb );
src/mame/includes/avalnche.h
r6428r6429
77#include "sound/discrete.h"
88
99
10typedef struct _avalnche_state avalnche_state;
11struct _avalnche_state
12{
13   /* video-related */
14   UINT8 *  videoram;
15   UINT8    avalance_video_inverted;
16};
17
1018/*----------- defined in audio/avalnche.c -----------*/
1119
1220DISCRETE_SOUND_EXTERN( avalnche );
src/mame/includes/4enraya.h
r0r6429
1/*************************************************************************
2
3    4enraya
4
5*************************************************************************/
6
7typedef struct __4enraya_state _4enraya_state;
8struct __4enraya_state
9{
10   /* memory pointers */
11   UINT8 *    videoram;
12
13   /* video-related */
14   tilemap    *bg_tilemap;
15
16   /* sound-related */
17   int        soundlatch;
18   int        last_snd_ctrl;
19};
20
21
22/*----------- defined in video/4enraya.c -----------*/
23
24WRITE8_HANDLER( fenraya_videoram_w );
25
26VIDEO_START( 4enraya );
27VIDEO_UPDATE( 4enraya );
src/mame/includes/blockade.h
r6428r6429
11#include "sound/discrete.h"
2
32#include "sound/samples.h"
43
4typedef struct _blockade_state blockade_state;
5struct _blockade_state
6{
7   UINT8 *  videoram;
58
9   /* video-related */
10   tilemap  *bg_tilemap;
11
12   /* input-related */
13   UINT8 coin_latch;  /* Active Low */
14   UINT8 just_been_reset;
15};
16
17
618/*----------- defined in video/blockade.c -----------*/
719
820WRITE8_HANDLER( blockade_videoram_w );
src/mame/includes/espial.h
r6428r6429
11/***************************************************************************
22
3 Espial hardware games
3 Espial hardware games (drivers: espial.c, marineb.c and zodiack.c)
44
55***************************************************************************/
66
7typedef struct _espial_state espial_state;
8struct _espial_state
9{
10   UINT8 *   videoram;   // espial, zodiack, marineb
11   UINT8 *   colorram;   // espial, marineb
12   UINT8 *   attributeram;   // espial, zodiack
13   UINT8 *   scrollram;   // espial
14   UINT8 *   spriteram_1;   // espial
15   UINT8 *   spriteram_2;   // espial
16   UINT8 *   spriteram_3;   // espial
17   UINT8 *   spriteram;   // zodiack, marineb (hoccer only)
18   UINT8 *   videoram_2;   // zodiack
19   UINT8 *   bulletsram;   // zodiack
20
21   /* video-related */
22   tilemap   *bg_tilemap, *fg_tilemap;
23   int       flipscreen;   // espial
24   UINT8     palette_bank;   // marineb
25   UINT8     column_scroll;   // marineb
26   UINT8     flipscreen_x, flipscreen_y;   // marineb
27   UINT8     marineb_active_low_flipscreen;   // marineb
28
29   /* sound-related */
30   UINT8     sound_nmi_enabled;   // espial
31
32   /* misc */
33   int       percuss_hardware;   // zodiack
34
35};
36
737/*----------- defined in drivers/espial.c -----------*/
838
939MACHINE_RESET( espial );
r6428r6429
1848
1949/*----------- defined in video/espial.c -----------*/
2050
21extern UINT8 *espial_videoram;
22extern UINT8 *espial_colorram;
23extern UINT8 *espial_attributeram;
24extern UINT8 *espial_scrollram;
25extern UINT8 *espial_spriteram_1;
26extern UINT8 *espial_spriteram_2;
27extern UINT8 *espial_spriteram_3;
28
2951PALETTE_INIT( espial );
3052VIDEO_START( espial );
3153VIDEO_START( netwars );
r6428r6429
3961
4062/*----------- defined in video/marineb.c -----------*/
4163
42extern UINT8 *marineb_videoram;
43extern UINT8 *marineb_colorram;
44extern UINT8 marineb_active_low_flipscreen;
45
4664WRITE8_HANDLER( marineb_videoram_w );
4765WRITE8_HANDLER( marineb_colorram_w );
4866WRITE8_HANDLER( marineb_column_scroll_w );
r6428r6429
5977VIDEO_UPDATE( hopprobo );
6078
6179
62/*----------- defined in drivers/zodiack.c -----------*/
63
64extern int percuss_hardware;
65
6680/*----------- defined in video/zodiack.c -----------*/
6781
68extern UINT8 *zodiack_videoram2;
69extern UINT8 *zodiack_attributesram;
70extern UINT8 *zodiack_bulletsram;
7182extern size_t zodiack_bulletsram_size;
7283
7384WRITE8_HANDLER( zodiack_videoram_w );
src/mame/includes/konamigx.h
r0r6429
1
2// 2nd-Tier GX/MW Hardware Functions
3void K053247GP_set_SpriteOffset(int offsx, int offsy);
4
5void K053936GP_set_offset(int chip, int xoffs, int yoffs);
6void K053936GP_clip_enable(int chip, int status);
7void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy);
8void K053936GP_0_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, tilemap *tmap, int tilebpp, int blend, int alpha);
9void K053936GP_1_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, tilemap *tmap, int tilebpp, int blend, int alpha);
10
11
12
13// 1st-Tier GX/MW Variables and Functions
14extern UINT8  konamigx_wrport1_0, konamigx_wrport1_1;
15extern UINT16 konamigx_wrport2;
16
17
18// Tile and Sprite Mixcode Decoders
19int K055555GX_decode_vmixcolor(int layer, int *color);
20int K055555GX_decode_osmixcolor(int layer, int *color);
21
22
23// Sprite Callbacks
24
25/* callbacks should return color codes in this format:
26    fedcba9876543210fedcba9876543210
27    ----------------xxxxxxxxxxxxxxxx (bit 00-15: color)
28    --------------xx---------------- (bit 16-17: blend code)
29    ------------xx------------------ (bit 18-19: brightness code)
30    -x------------------------------ (bit 30   : skip shadow)
31    x------------------------------- (bit 31   : full shadow)
32*/
33#define K055555_COLORMASK   0x0000ffff
34#define K055555_MIXSHIFT    16
35#define K055555_BRTSHIFT    18
36#define K055555_SKIPSHADOW   0x40000000
37#define K055555_FULLSHADOW   0x80000000
38
39void konamigx_type2_sprite_callback(int *code, int *color, int *priority);
40
41void konamigx_dragoonj_sprite_callback(int *code, int *color, int *priority);
42void konamigx_salmndr2_sprite_callback(int *code, int *color, int *priority);
43void konamigx_le2_sprite_callback(int *code, int *color, int *priority);
44
45
46// Centralized Sprites and Layer Blitter
47
48/* Mixer Flags
49    fedcba9876543210fedcba9876543210
50    --------------------FFEEDDCCBBAA (layer A-F blend modes)
51    ----------------DCBA------------ (layer A-D line/row scroll disables)
52    ----FFEEDDCCBBAA---------------- (layer A-F mix codes in forced blending)
53    ---x---------------------------- (disable shadows)
54    --x----------------------------- (disable z-buffering)
55*/
56#define GXMIX_BLEND_AUTO   0         // emulate all blend effects
57#define GXMIX_BLEND_NONE   1         // disable all blend effects
58#define GXMIX_BLEND_FAST   2         // simulate translucency
59#define GXMIX_BLEND_FORCE   3         // force mix code on selected layer(s)
60#define GXMIX_NOLINESCROLL   0x1000      // disable linescroll on selected layer(s)
61#define GXMIX_NOSHADOW      0x10000000   // disable all shadows (shadow pens will be skipped)
62#define GXMIX_NOZBUF      0x20000000   // disable z-buffering (shadow pens will be drawn as solid)
63
64// Sub Layer Flags
65#define GXSUB_K053250   0x10   // chip type: 0=K053936 ROZ+, 1=K053250 LVC
66#define GXSUB_4BPP       0x04   //  16 colors
67#define GXSUB_5BPP       0x05   //  32 colors
68#define GXSUB_8BPP       0x08   // 256 colors
69
70void konamigx_mixer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
71               tilemap *sub1, int sub1flags,
72               tilemap *sub2, int sub2flags,
73               int mixerflags, bitmap_t* extra_bitmap, int rushingheroes_hack);
74
75void konamigx_mixer_init(running_machine *machine, int objdma);
76void konamigx_mixer_primode(int mode);
77
78
79void konamigx_objdma(void);
80
81// K055550/K053990/ESC protection devices handlers
82READ16_HANDLER ( K055550_word_r );
83WRITE16_HANDLER( K055550_word_w );
84WRITE16_HANDLER( K053990_martchmp_word_w );
85void konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode);
86
87void fantjour_dma_install(running_machine *machine);
88WRITE32_HANDLER(fantjour_dma_w);
89
90extern UINT16 *K053247_ram;
91
src/mame/includes/blueprnt.h
r0r6429
1/***************************************************************************
2
3    Blue Print
4
5***************************************************************************/
6
7typedef struct _blueprnt_state blueprnt_state;
8struct _blueprnt_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * colorram;
13   UINT8 * spriteram;
14   UINT8 * scrollram;
15
16   /* video-related */
17   tilemap *bg_tilemap;
18   int     gfx_bank;
19
20   /* misc */
21   int     dipsw;
22};
23
24
25/*----------- defined in video/blueprnt.c -----------*/
26
27WRITE8_HANDLER( blueprnt_videoram_w );
28WRITE8_HANDLER( blueprnt_colorram_w );
29WRITE8_HANDLER( blueprnt_flipscreen_w );
30
31PALETTE_INIT( blueprnt );
32VIDEO_START( blueprnt );
33VIDEO_UPDATE( blueprnt );
src/mame/includes/bionicc.h
r0r6429
1/***************************************************************************
2
3    Bionic Commando
4
5***************************************************************************/
6
7typedef struct _bionicc_state bionicc_state;
8struct _bionicc_state
9{
10   /* memory pointers */
11   UINT16 *  bgvideoram;
12   UINT16 *  fgvideoram;
13   UINT16 *  txvideoram;
14   UINT16 *  paletteram16;
15//  UINT16 *  spriteram16;  // needed for EOF, but currently handled through buffer_spriteram16
16
17   /* video-related */
18   tilemap   *tx_tilemap, *bg_tilemap, *fg_tilemap;
19   UINT16    scroll[4];
20
21   UINT16    inp[3];
22   UINT16    soundcommand;
23};
24
25
26/*----------- defined in video/bionicc.c -----------*/
27
28WRITE16_HANDLER( bionicc_fgvideoram_w );
29WRITE16_HANDLER( bionicc_bgvideoram_w );
30WRITE16_HANDLER( bionicc_txvideoram_w );
31WRITE16_HANDLER( bionicc_paletteram_w );
32WRITE16_HANDLER( bionicc_scroll_w );
33WRITE16_HANDLER( bionicc_gfxctrl_w );
34
35VIDEO_START( bionicc );
36VIDEO_UPDATE( bionicc );
37VIDEO_EOF( bionicc );
src/mame/includes/pandoras.h
r0r6429
1/*************************************************************************
2
3    Pandora's Palace
4
5*************************************************************************/
6
7typedef struct _pandoras_state pandoras_state;
8struct _pandoras_state
9{
10   /* memory pointers */
11   UINT8 *    videoram;
12   UINT8 *    colorram;
13   UINT8 *    spriteram;
14
15   /* video-related */
16   tilemap     *layer0;
17   int         flipscreen;
18
19   int irq_enable_a, irq_enable_b;
20   int firq_old_data_a, firq_old_data_b;
21   int i8039_status;
22};
23
24
25/* defined in video/pandoras.c */
26PALETTE_INIT( pandoras );
27
28WRITE8_HANDLER( pandoras_vram_w );
29WRITE8_HANDLER( pandoras_cram_w );
30WRITE8_HANDLER( pandoras_flipscreen_w );
31WRITE8_HANDLER( pandoras_scrolly_w );
32
33VIDEO_START( pandoras );
34VIDEO_UPDATE( pandoras );
35
src/mame/includes/iremz80.h
r0r6429
1/*************************************************************************
2
3    Irem Z80 hardware - M52, M57, M58 and M62 boards
4
5*************************************************************************/
6
7/* These share sound hardware (in audio/irem.h) and hence driver data */
8
9typedef struct _irem_z80_state irem_z80_state;
10struct _irem_z80_state
11{
12   /* memory pointers */
13   UINT8 *              videoram;   // m52, m57, m58
14   UINT8 *              spriteram;   // m52, m57, m58, m62
15
16   UINT8 *              colorram;   // m52
17   UINT8 *              m62_tileram;   // m62
18   UINT8 *              m62_textram;   // m62
19
20   UINT8 *              scrollram;   // m57, m62 (horizon only)
21
22   /* sound-related */
23   UINT8                port1, port2;
24
25   /* video-related */
26   tilemap*             bg_tilemap;   // m52, m57, m58, m62
27   tilemap*             fg_tilemap;   // m62
28   int                  flipscreen;   // m57, m62
29
30   /* driver specific (video-related) */
31   /* travrusa */
32   int                  scrollx[2];
33   /* M52 */
34   UINT8                bg1xpos, bg1ypos;
35   UINT8                bg2xpos, bg2ypos;
36   UINT8                bgcontrol;
37   /* M58 */
38   UINT8                *yard_scroll_x_low;
39   UINT8                *yard_scroll_x_high;
40   UINT8                *yard_scroll_y_low;
41   UINT8                *yard_score_panel_disabled;
42   bitmap_t             *scroll_panel_bitmap;
43   /* M62 */
44   const UINT8          *sprite_height_prom;
45   INT32                m62_background_hscroll;
46   INT32                m62_background_vscroll;
47   UINT8                kidniki_background_bank;
48   INT32                kidniki_text_vscroll;
49   int                  ldrun3_topbottom_mask;
50   INT32                spelunkr_palbank;
51
52
53   /* misc */
54   int                 ldrun2_bankswap;   //ldrun2
55   int                 bankcontrol[2];    //ldrun2
56
57   /* sound devices */
58   const device_config *ay1;
59   const device_config *ay2;
60   const device_config *adpcm1;
61   const device_config *adpcm2;
62};
63
64
65/*----------- defined in audio/irem.c -----------*/
66
67MACHINE_DRIVER_EXTERN( m52_sound_c_audio );
68MACHINE_DRIVER_EXTERN( m52_large_audio );
69MACHINE_DRIVER_EXTERN( m62_audio );
70
71WRITE8_HANDLER( irem_sound_cmd_w );
72
73
74
75/* Video hardware is different otoh  */
76
77/*----------- defined in video/m52.c -----------*/
78
79READ8_HANDLER( m52_protection_r );
80WRITE8_HANDLER( m52_scroll_w );
81WRITE8_HANDLER( m52_bg1xpos_w );
82WRITE8_HANDLER( m52_bg1ypos_w );
83WRITE8_HANDLER( m52_bg2xpos_w );
84WRITE8_HANDLER( m52_bg2ypos_w );
85WRITE8_HANDLER( m52_bgcontrol_w );
86WRITE8_HANDLER( m52_flipscreen_w );
87WRITE8_HANDLER( alpha1v_flipscreen_w );
88WRITE8_HANDLER( m52_videoram_w );
89WRITE8_HANDLER( m52_colorram_w );
90
91PALETTE_INIT( m52 );
92VIDEO_START( m52 );
93VIDEO_UPDATE( m52 );
94
95/*----------- defined in video/m57.c -----------*/
96
97WRITE8_HANDLER( m57_videoram_w );
98WRITE8_HANDLER( m57_flipscreen_w );
99
100PALETTE_INIT( m57 );
101VIDEO_START( m57 );
102VIDEO_UPDATE( m57 );
103
104
105/*----------- defined in video/m58.c -----------*/
106
107WRITE8_HANDLER( yard_videoram_w );
108WRITE8_HANDLER( yard_scroll_panel_w );
109WRITE8_HANDLER( yard_flipscreen_w );
110
111PALETTE_INIT( yard );
112VIDEO_START( yard );
113VIDEO_UPDATE( yard );
114
115
116/*----------- defined in video/travrusa.c -----------*/
117
118WRITE8_HANDLER( travrusa_videoram_w );
119WRITE8_HANDLER( travrusa_scroll_x_low_w );
120WRITE8_HANDLER( travrusa_scroll_x_high_w );
121WRITE8_HANDLER( travrusa_flipscreen_w );
122
123PALETTE_INIT( travrusa );
124PALETTE_INIT( shtrider );
125VIDEO_START( travrusa );
126VIDEO_UPDATE( travrusa );
127
128
129/*----------- defined in video/m62.c -----------*/
130
131WRITE8_HANDLER( m62_tileram_w );
132WRITE8_HANDLER( m62_textram_w );
133WRITE8_HANDLER( m62_flipscreen_w );
134WRITE8_HANDLER( m62_hscroll_low_w );
135WRITE8_HANDLER( m62_hscroll_high_w );
136WRITE8_HANDLER( m62_vscroll_low_w );
137WRITE8_HANDLER( m62_vscroll_high_w );
138
139WRITE8_HANDLER( horizon_scrollram_w );
140WRITE8_HANDLER( kidniki_text_vscroll_low_w );
141WRITE8_HANDLER( kidniki_text_vscroll_high_w );
142WRITE8_HANDLER( kidniki_background_bank_w );
143WRITE8_HANDLER( kungfum_tileram_w );
144WRITE8_HANDLER( ldrun3_topbottom_mask_w );
145WRITE8_HANDLER( spelunkr_palbank_w );
146WRITE8_HANDLER( spelunk2_gfxport_w );
147
148PALETTE_INIT( m62 );
149PALETTE_INIT( lotlot );
150PALETTE_INIT( battroad );
151PALETTE_INIT( spelunk2 );
152
153VIDEO_START( battroad );
154VIDEO_START( horizon );
155VIDEO_START( kidniki );
156VIDEO_START( kungfum );
157VIDEO_START( ldrun );
158VIDEO_START( ldrun2 );
159VIDEO_START( ldrun4 );
160VIDEO_START( lotlot );
161VIDEO_START( spelunkr );
162VIDEO_START( spelunk2 );
163VIDEO_START( youjyudn );
164
165VIDEO_UPDATE( battroad );
166VIDEO_UPDATE( horizon );
167VIDEO_UPDATE( kidniki );
168VIDEO_UPDATE( kungfum );
169VIDEO_UPDATE( ldrun );
170VIDEO_UPDATE( ldrun3 );
171VIDEO_UPDATE( ldrun4 );
172VIDEO_UPDATE( lotlot );
173VIDEO_UPDATE( spelunkr );
174VIDEO_UPDATE( spelunk2 );
175VIDEO_UPDATE( youjyudn );
src/mame/includes/battlex.h
r0r6429
1/***************************************************************************
2
3    Battle Cross
4
5***************************************************************************/
6
7typedef struct _battlex_state battlex_state;
8struct _battlex_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * spriteram;
13
14   /* video-related */
15   tilemap *bg_tilemap;
16   int     scroll_lsb, scroll_msb;
17};
18
19
20/*----------- defined in video/battlex.c -----------*/
21
22extern WRITE8_HANDLER( battlex_palette_w );
23extern WRITE8_HANDLER( battlex_videoram_w );
24extern WRITE8_HANDLER( battlex_scroll_x_lsb_w );
25extern WRITE8_HANDLER( battlex_scroll_x_msb_w );
26extern WRITE8_HANDLER( battlex_flipscreen_w );
27
28extern PALETTE_INIT( battlex );
29extern VIDEO_START( battlex );
30extern VIDEO_UPDATE( battlex );
src/mame/includes/bankp.h
r0r6429
1/***************************************************************************
2
3    Bank Panic
4
5***************************************************************************/
6
7
8#define BANKP_MASTER_CLOCK 15468000
9#define BANKP_CPU_CLOCK (BANKP_MASTER_CLOCK/6)
10#define BANKP_SN76496_CLOCK (BANKP_MASTER_CLOCK/6)
11
12typedef struct _bankp_state bankp_state;
13struct _bankp_state
14{
15   /* memory pointers */
16   UINT8 * videoram;
17   UINT8 * colorram;
18   UINT8 * videoram2;
19   UINT8 * colorram2;
20
21   /* video-related */
22   tilemap *bg_tilemap, *fg_tilemap;
23   int     scroll_x, priority;
24};
25
26
27/*----------- defined in video/bankp.c -----------*/
28
29WRITE8_HANDLER( bankp_videoram_w );
30WRITE8_HANDLER( bankp_colorram_w );
31WRITE8_HANDLER( bankp_videoram2_w );
32WRITE8_HANDLER( bankp_colorram2_w );
33WRITE8_HANDLER( bankp_scroll_w );
34WRITE8_HANDLER( bankp_out_w );
35
36PALETTE_INIT( bankp );
37VIDEO_START( bankp );
38VIDEO_UPDATE( bankp );
39
40
src/mame/includes/tetrisp2.h
r6428r6429
99extern UINT16 *tetrisp2_vram_fg, *tetrisp2_scroll_fg;
1010extern UINT16 *tetrisp2_vram_rot, *tetrisp2_rotregs;
1111
12extern UINT16 *tetrisp2_priority;
12extern UINT8 *tetrisp2_priority;
1313
1414extern UINT16 *rocknms_sub_vram_bg, *rocknms_sub_scroll_bg;
1515extern UINT16 *rocknms_sub_vram_fg, *rocknms_sub_scroll_fg;
r6428r6429
1919
2020WRITE16_HANDLER( tetrisp2_palette_w );
2121WRITE16_HANDLER( rocknms_sub_palette_w );
22WRITE16_HANDLER( tetrisp2_priority_w );
23WRITE16_HANDLER( rockn_priority_w );
22WRITE8_HANDLER( tetrisp2_priority_w );
23WRITE8_HANDLER( rockn_priority_w );
24READ8_HANDLER( tetrisp2_priority_r );
2425WRITE16_HANDLER( rocknms_sub_priority_w );
2526READ16_HANDLER( nndmseal_priority_r );
2627
src/mame/includes/arkanoid.h
r6428r6429
11/* This it the best way to allow game specific kludges until the system is fully understood */
22enum {
3   ARKUNK=0,  /* unknown bootlegs for inclusion of possible new sets */
3   ARKUNK = 0,  /* unknown bootlegs for inclusion of possible new sets */
44   ARKANGC,
55   ARKANGC2,
66   BLOCK2,
r6428r6429
1010   PADDLE2
1111};
1212
13typedef struct _arkanoid_state arkanoid_state;
14struct _arkanoid_state
15{
16   /* memory pointers */
17   UINT8 *  videoram;
18   UINT8 *  spriteram;
1319
14/*----------- defined in drivers/arkanoid.c -----------*/
20   /* video-related */
21   tilemap  *bg_tilemap;
22   UINT8    gfxbank, palettebank;
1523
16extern int arkanoid_bootleg_id;
24   /* input-related */
25   UINT8    paddle_select;
1726
27   /* misc */
28   int      bootleg_id;
29   UINT8    z80write, fromz80, m68705write, toz80;
30   UINT8    port_a_in, port_a_out, ddr_a;
31   UINT8    port_c_out, ddr_c;
32   UINT8    bootleg_cmd;
33};
1834
35
36
1937/*----------- defined in video/arkanoid.c -----------*/
2038
2139extern WRITE8_HANDLER( arkanoid_videoram_w );
r6428r6429
2947
3048/*----------- defined in machine/arkanoid.c -----------*/
3149
32extern UINT8 arkanoid_paddle_select;
33
34extern MACHINE_START( arkanoid );
35extern MACHINE_RESET( arkanoid );
36
3750extern READ8_HANDLER( arkanoid_Z80_mcu_r );
3851extern WRITE8_HANDLER( arkanoid_Z80_mcu_w );
3952
40extern READ8_HANDLER( arkanoid_68705_portA_r );
41extern WRITE8_HANDLER( arkanoid_68705_portA_w );
42extern WRITE8_HANDLER( arkanoid_68705_ddrA_w );
53extern READ8_HANDLER( arkanoid_68705_port_a_r );
54extern WRITE8_HANDLER( arkanoid_68705_port_a_w );
55extern WRITE8_HANDLER( arkanoid_68705_ddr_a_w );
4356
44extern READ8_HANDLER( arkanoid_68705_portC_r );
45extern WRITE8_HANDLER( arkanoid_68705_portC_w );
46extern WRITE8_HANDLER( arkanoid_68705_ddrC_w );
57extern READ8_HANDLER( arkanoid_68705_port_c_r );
58extern WRITE8_HANDLER( arkanoid_68705_port_c_w );
59extern WRITE8_HANDLER( arkanoid_68705_ddr_c_w );
4760
4861extern CUSTOM_INPUT( arkanoid_68705_input_r );
4962extern CUSTOM_INPUT( arkanoid_input_mux );
r6428r6429
5265extern READ8_HANDLER( arkanoid_bootleg_f002_r );
5366extern WRITE8_HANDLER( arkanoid_bootleg_d018_w );
5467extern READ8_HANDLER( arkanoid_bootleg_d008_r );
55
src/mame/includes/brkthru.h
r0r6429
1/***************************************************************************
2
3    Break Thru
4
5***************************************************************************/
6
7typedef struct _brkthru_state brkthru_state;
8struct _brkthru_state
9{
10   /* memory pointers */
11   UINT8 * videoram;
12   UINT8 * spriteram;
13   UINT8 * fg_videoram;
14   size_t  fg_videoram_size;
15
16   /* video-related */
17   tilemap *fg_tilemap, *bg_tilemap;
18   int     bgscroll;
19   int     bgbasecolor;
20   int     flipscreen;
21   //UINT8 *brkthru_nmi_enable; /* needs to be tracked down */
22};
23
24
25
26
27/*----------- defined in video/brkthru.c -----------*/
28
29WRITE8_HANDLER( brkthru_1800_w );
30WRITE8_HANDLER( brkthru_bgram_w );
31WRITE8_HANDLER( brkthru_fgram_w );
32VIDEO_START( brkthru );
33PALETTE_INIT( brkthru );
34VIDEO_UPDATE( brkthru );
src/mame/includes/angelkds.h
r0r6429
1/*************************************************************************
2
3    Angel Kids
4
5*************************************************************************/
6
7typedef struct _angelkds_state angelkds_state;
8struct _angelkds_state
9{
10   /* memory pointers */
11   UINT8 *    paletteram;
12   UINT8 *    spriteram;
13   UINT8 *    txvideoram;
14   UINT8 *    bgtopvideoram;
15   UINT8 *    bgbotvideoram;
16
17   tilemap    *tx_tilemap, *bgbot_tilemap, *bgtop_tilemap;
18   int        txbank;
19   int        bgbotbank;
20   int        bgtopbank;
21
22   UINT8      sound[4];
23   UINT8      sound2[4];
24   UINT8      layer_ctrl;
25};
26
27
28/*----------- defined in video/angelkds.c -----------*/
29
30WRITE8_HANDLER( angelkds_bgtopvideoram_w );
31WRITE8_HANDLER( angelkds_bgbotvideoram_w );
32WRITE8_HANDLER( angelkds_txvideoram_w );
33
34WRITE8_HANDLER( angelkds_bgtopbank_write );
35WRITE8_HANDLER( angelkds_bgtopscroll_write );
36WRITE8_HANDLER( angelkds_bgbotbank_write );
37WRITE8_HANDLER( angelkds_bgbotscroll_write );
38WRITE8_HANDLER( angelkds_txbank_write );
39
40WRITE8_HANDLER( angelkds_paletteram_w );
41WRITE8_HANDLER( angelkds_layer_ctrl_write );
42
43VIDEO_START( angelkds );
44VIDEO_UPDATE( angelkds );
src/mame/includes/battlane.h
r0r6429
1/***************************************************************************
2
3    Battle Lane Vol. 5
4
5***************************************************************************/
6
7typedef struct _battlane_state battlane_state;
8struct _battlane_state
9{
10   /* memory pointers */
11   UINT8 *     tileram;
12   UINT8 *     spriteram;
13
14   /* video-related */
15   tilemap     *bg_tilemap;
16   bitmap_t    *screen_bitmap;
17   int         video_ctrl;
18   int         cpu_control;   /* CPU interrupt control register */
19};
20
21
22/*----------- defined in video/battlane.c -----------*/
23
24WRITE8_HANDLER( battlane_palette_w );
25WRITE8_HANDLER( battlane_scrollx_w );
26WRITE8_HANDLER( battlane_scrolly_w );
27WRITE8_HANDLER( battlane_tileram_w );
28WRITE8_HANDLER( battlane_spriteram_w );
29WRITE8_HANDLER( battlane_bitmap_w );
30WRITE8_HANDLER( battlane_video_ctrl_w );
31
32VIDEO_START( battlane );
33VIDEO_UPDATE( battlane );
src/mame/includes/nb1413m3.h
r6428r6429
6666   NB1413M3_SCANDAL,
6767   NB1413M3_SCANDALM,
6868   NB1413M3_MGMEN89,
69   NB1413M3_OHPYEPEE,
70   NB1413M3_TOUGENK,
69   NB1413M3_OHPAIPEE,
70   NB1413M3_TOGENKYO,
7171   NB1413M3_MJFOCUS,
7272   NB1413M3_MJFOCUSM,
7373   NB1413M3_GALKOKU,
src/mame/includes/exerion.h
r6428r6429
55*************************************************************************/
66
77
8#define EXERION_MASTER_CLOCK   (20000000)
8#define EXERION_MASTER_CLOCK    (XTAL_19_968MHz)   /* verified on pcb */
99#define EXERION_CPU_CLOCK      (EXERION_MASTER_CLOCK / 6)
1010#define EXERION_AY8910_CLOCK   (EXERION_CPU_CLOCK / 2)
1111#define EXERION_PIXEL_CLOCK      (EXERION_MASTER_CLOCK / 3)
src/mame/mame.mak
r6428r6429
252252   $(MAMEOBJ)/gameplan.a \
253253   $(MAMEOBJ)/gametron.a \
254254   $(MAMEOBJ)/gottlieb.a \
255   $(MAMEOBJ)/greyhnd.a \
256255   $(MAMEOBJ)/igs.a \
257256   $(MAMEOBJ)/irem.a \
258257   $(MAMEOBJ)/itech.a \
r6428r6429
387386   $(DRIVERS)/batman.o $(VIDEO)/batman.o \
388387   $(DRIVERS)/beathead.o $(VIDEO)/beathead.o \
389388   $(DRIVERS)/blstroid.o $(VIDEO)/blstroid.o \
390   $(DRIVERS)/boxer.o $(VIDEO)/boxer.o \
389   $(DRIVERS)/boxer.o \
391390   $(DRIVERS)/bsktball.o $(MACHINE)/bsktball.o $(AUDIO)/bsktball.o $(VIDEO)/bsktball.o \
392391   $(DRIVERS)/bwidow.o \
393392   $(DRIVERS)/bzone.o $(AUDIO)/bzone.o \
r6428r6429
620619
621620$(MAMEOBJ)/excelent.a: \
622621   $(DRIVERS)/aquarium.o $(VIDEO)/aquarium.o \
622   $(DRIVERS)/d9final.o \
623623   $(DRIVERS)/gcpinbal.o $(VIDEO)/gcpinbal.o \
624624   $(DRIVERS)/vmetal.o \
625625
r6428r6429
669669   $(DRIVERS)/exterm.o $(VIDEO)/exterm.o \
670670   $(DRIVERS)/gottlieb.o $(AUDIO)/gottlieb.o $(VIDEO)/gottlieb.o \
671671
672$(MAMEOBJ)/greyhnd.a: \
673   $(DRIVERS)/findout.o \
674   $(DRIVERS)/getrivia.o \
675
676672$(MAMEOBJ)/igs.a: \
677673   $(DRIVERS)/cabaret.o \
678674   $(DRIVERS)/ddz.o \
r6428r6429
681677   $(DRIVERS)/jackie.o \
682678   $(DRIVERS)/igspoker.o \
683679   $(DRIVERS)/igs009.o \
684   $(DRIVERS)/igs_blit.o \
680   $(DRIVERS)/igs011.o \
685681   $(DRIVERS)/igs017.o \
686682   $(DRIVERS)/igs_m027.o \
687   $(DRIVERS)/igs_m68.o \
688683   $(DRIVERS)/spoker.o \
689684   $(DRIVERS)/iqblock.o $(VIDEO)/iqblock.o \
690685   $(DRIVERS)/lordgun.o $(VIDEO)/lordgun.o \
691686   $(DRIVERS)/pgm.o $(VIDEO)/pgm.o \
692   $(DRIVERS)/tarzan.o \
693687   $(MACHINE)/pgmcrypt.o \
694688   $(MACHINE)/pgmprot.o \
695689
r6428r6429
711705   $(DRIVERS)/travrusa.o $(VIDEO)/travrusa.o \
712706   $(DRIVERS)/vigilant.o $(VIDEO)/vigilant.o \
713707   $(MACHINE)/irem_cpu.o \
714   $(AUDIO)/fghtbskt.o \
715708   $(AUDIO)/irem.o \
716709
717710$(MAMEOBJ)/itech.a: \
r6428r6429
982975   $(DRIVERS)/magmax.o $(VIDEO)/magmax.o \
983976   $(DRIVERS)/nbmj8688.o $(VIDEO)/nbmj8688.o \
984977   $(DRIVERS)/nbmj8891.o $(VIDEO)/nbmj8891.o \
978   $(DRIVERS)/nbmj8900.o $(VIDEO)/nbmj8900.o \
985979   $(DRIVERS)/nbmj8991.o $(VIDEO)/nbmj8991.o \
986980   $(DRIVERS)/nbmj9195.o $(VIDEO)/nbmj9195.o \
987981   $(DRIVERS)/nightgal.o \
r6428r6429
15211515   $(DRIVERS)/funworld.o $(VIDEO)/funworld.o \
15221516   $(DRIVERS)/galaxi.o \
15231517   $(DRIVERS)/gamecstl.o \
1518   $(DRIVERS)/gei.o \
15241519   $(DRIVERS)/good.o \
15251520   $(DRIVERS)/goldnpkr.o \
15261521   $(DRIVERS)/gotcha.o $(VIDEO)/gotcha.o \
src/mame/video/arabian.c
r6428r6429
99#include "driver.h"
1010#include "arabian.h"
1111
12
1312/* Constants */
1413#define BITMAP_WIDTH      256
1514#define BITMAP_HEIGHT      256
1615
1716
18/* Local variables */
19static UINT8 *main_bitmap;
20static UINT8 *converted_gfx;
21
22
23/* Globals */
24UINT8 *arabian_blitter;
25UINT8 arabian_video_control;
26UINT8 arabian_flip_screen;
27
28
29
3017/*************************************
3118 *
3219 *  Color PROM conversion
r6428r6429
166153
167154VIDEO_START( arabian )
168155{
156   arabian_state *state = (arabian_state *)machine->driver_data;
169157   UINT8 *gfxbase = memory_region(machine, "gfx1");
170158   int offs;
171159
172160   /* allocate a common bitmap to use for both planes */
173161   /* plane A (top plane with motion objects) is in the upper 4 bits */
174162   /* plane B (bottom plane with playfield) is in the lower 4 bits */
175   main_bitmap = auto_alloc_array(machine, UINT8, BITMAP_WIDTH * BITMAP_HEIGHT);
163   state->main_bitmap = auto_alloc_array(machine, UINT8, BITMAP_WIDTH * BITMAP_HEIGHT);
176164
177165   /* allocate memory for the converted graphics data */
178   converted_gfx = auto_alloc_array(machine, UINT8, 0x8000 * 2);
166   state->converted_gfx = auto_alloc_array(machine, UINT8, 0x8000 * 2);
179167
180168   /*--------------------------------------------------
181169        transform graphics data into more usable format
r6428r6429
212200      v2 >>= 1;
213201      p4 = (v1 & 0x01) | ((v1 & 0x10) >> 3) | ((v2 & 0x01) << 2) | ((v2 & 0x10) >> 1);
214202
215      converted_gfx[offs * 4 + 3] = p1;
216      converted_gfx[offs * 4 + 2] = p2;
217      converted_gfx[offs * 4 + 1] = p3;
218      converted_gfx[offs * 4 + 0] = p4;
203      state->converted_gfx[offs * 4 + 3] = p1;
204      state->converted_gfx[offs * 4 + 2] = p2;
205      state->converted_gfx[offs * 4 + 1] = p3;
206      state->converted_gfx[offs * 4 + 0] = p4;
219207   }
220208
221    state_save_register_global_pointer(machine, main_bitmap, BITMAP_WIDTH * BITMAP_HEIGHT);
222    state_save_register_global_pointer(machine, converted_gfx, 0x8000 * 2);
223    state_save_register_global(machine, arabian_video_control);
224    state_save_register_global(machine, arabian_flip_screen);
209    state_save_register_global_pointer(machine, state->main_bitmap, BITMAP_WIDTH * BITMAP_HEIGHT);
210    state_save_register_global_pointer(machine, state->converted_gfx, 0x8000 * 2);
211    state_save_register_global(machine, state->video_control);
212    state_save_register_global(machine, state->flip_screen);
225213}
226214
227215
r6428r6429
232220 *
233221 *************************************/
234222
235static void blit_area(UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8 sy)
223static void blit_area( running_machine *machine, UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8 sy )
236224{
237   UINT8 *srcdata = &converted_gfx[src * 4];
225   arabian_state *state = (arabian_state *)machine->driver_data;
226   UINT8 *srcdata = &state->converted_gfx[src * 4];
238227   int i,j;
239228
240229   /* loop over X, then Y */
r6428r6429
248237         UINT8 *base;
249238
250239         /* get a pointer to the bitmap */
251         base = &main_bitmap[((y + j) & 0xff) * BITMAP_WIDTH + (x & 0xff)];
240         base = &state->main_bitmap[((y + j) & 0xff) * BITMAP_WIDTH + (x & 0xff)];
252241
253242         /* bit 0 means write to upper plane (upper 4 bits of our bitmap) */
254243         if (plane & 0x01)
r6428r6429
280269
281270WRITE8_HANDLER( arabian_blitter_w )
282271{
272   arabian_state *state = (arabian_state *)space->machine->driver_data;
273
283274   /* write the data */
284   arabian_blitter[offset] = data;
275   state->blitter[offset] = data;
285276
286277   /* watch for a write to offset 6 -- that triggers the blit */
287278   if (offset == 6)
288279   {
289280      /* extract the data */
290      int plane = arabian_blitter[0];
291      int src   = arabian_blitter[1] | (arabian_blitter[2] << 8);
292      int x     = arabian_blitter[4] << 2;
293      int y     = arabian_blitter[3];
294      int sx    = arabian_blitter[6];
295      int sy    = arabian_blitter[5];
281      int plane = state->blitter[0];
282      int src   = state->blitter[1] | (state->blitter[2] << 8);
283      int x     = state->blitter[4] << 2;
284      int y     = state->blitter[3];
285      int sx    = state->blitter[6];
286      int sy    = state->blitter[5];
296287
297288      /* blit it */
298      blit_area(plane, src, x, y, sx, sy);
289      blit_area(space->machine, plane, src, x, y, sx, sy);
299290   }
300291}
301292
r6428r6429
309300
310301WRITE8_HANDLER( arabian_videoram_w )
311302{
303   arabian_state *state = (arabian_state *)space->machine->driver_data;
312304   UINT8 *base;
313305   UINT8 x, y;
314306
r6428r6429
317309   y = offset & 0xff;
318310
319311   /* get a pointer to the pixels */
320   base = &main_bitmap[y * BITMAP_WIDTH + x];
312   base = &state->main_bitmap[y * BITMAP_WIDTH + x];
321313
322314   /* the data is written as 4 2-bit values, as follows:
323315
r6428r6429
332324    */
333325
334326   /* enable writes to AZ/AR */
335   if (arabian_blitter[0] & 0x08)
327   if (state->blitter[0] & 0x08)
336328   {
337329      base[0] = (base[0] & ~0x03) | ((data & 0x10) >> 3) | ((data & 0x01) >> 0);
338330      base[1] = (base[1] & ~0x03) | ((data & 0x20) >> 4) | ((data & 0x02) >> 1);
r6428r6429
341333   }
342334
343335   /* enable writes to AG/AB */
344   if (arabian_blitter[0] & 0x04)
336   if (state->blitter[0] & 0x04)
345337   {
346338      base[0] = (base[0] & ~0x0c) | ((data & 0x10) >> 1) | ((data & 0x01) << 2);
347339      base[1] = (base[1] & ~0x0c) | ((data & 0x20) >> 2) | ((data & 0x02) << 1);
r6428r6429
350342   }
351343
352344   /* enable writes to BZ/BR */
353   if (arabian_blitter[0] & 0x02)
345   if (state->blitter[0] & 0x02)
354346   {
355347      base[0] = (base[0] & ~0x30) | ((data & 0x10) << 1) | ((data & 0x01) << 4);
356348      base[1] = (base[1] & ~0x30) | ((data & 0x20) << 0) | ((data & 0x02) << 3);
r6428r6429
359351   }
360352
361353   /* enable writes to BG/BB */
362   if (arabian_blitter[0] & 0x01)
354   if (state->blitter[0] & 0x01)
363355   {
364356      base[0] = (base[0] & ~0xc0) | ((data & 0x10) << 3) | ((data & 0x01) << 6);
365357      base[1] = (base[1] & ~0xc0) | ((data & 0x20) << 2) | ((data & 0x02) << 5);
r6428r6429
378370
379371VIDEO_UPDATE( arabian )
380372{
381   const pen_t *pens = &screen->machine->pens[(arabian_video_control >> 3) << 8];
373   arabian_state *state = (arabian_state *)screen->machine->driver_data;
374   const pen_t *pens = &screen->machine->pens[(state->video_control >> 3) << 8];
382375   int y;
383376
384377   /* render the screen from the bitmap */
385378   for (y = 0; y < BITMAP_HEIGHT; y++)
386379   {
387380      /* non-flipped case */
388      if (!arabian_flip_screen)
389         draw_scanline8(bitmap, 0, y, BITMAP_WIDTH, &main_bitmap[y * BITMAP_WIDTH], pens);
381      if (!state->flip_screen)
382         draw_scanline8(bitmap, 0, y, BITMAP_WIDTH, &state->main_bitmap[y * BITMAP_WIDTH], pens);
390383
391384      /* flipped case */
392385      else
r6428r6429
394387         UINT8 scanline[BITMAP_WIDTH];
395388         int x;
396389         for (x = 0; x < BITMAP_WIDTH; x++)
397            scanline[BITMAP_WIDTH - 1 - x] = main_bitmap[y * BITMAP_WIDTH + x];
390            scanline[BITMAP_WIDTH - 1 - x] = state->main_bitmap[y * BITMAP_WIDTH + x];
398391         draw_scanline8(bitmap, 0, BITMAP_HEIGHT - 1 - y, BITMAP_WIDTH, scanline, pens);
399392      }
400393   }
src/mame/video/ambush.c
r6428r6429
77***************************************************************************/
88
99#include "driver.h"
10#include "ambush.h"
1011
1112
12UINT8 *ambush_scrollram;
13UINT8 *ambush_colorbank;
14
15
1613/***************************************************************************
1714
1815  Convert the color PROMs into a more useable format.
r6428r6429
2017  I'm not sure about the resistor value, I'm using the Galaxian ones.
2118
2219***************************************************************************/
20
2321PALETTE_INIT( ambush )
2422{
2523   int i;
2624
27   for (i = 0;i < machine->config->total_colors; i++)
25   for (i = 0; i < machine->config->total_colors; i++)
2826   {
29      int bit0,bit1,bit2,r,g,b;
27      int bit0, bit1, bit2, r, g, b;
3028
3129      /* red component */
3230      bit0 = (color_prom[i] >> 0) & 0x01;
r6428r6429
4442      bit2 = (color_prom[i] >> 7) & 0x01;
4543      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
4644
47      palette_set_color(machine,i,MAKE_RGB(r,g,b));
45      palette_set_color(machine, i, MAKE_RGB(r,g,b));
4846   }
4947}
5048
5149
52static void draw_chars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
50static void draw_chars( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority )
5351{
52   ambush_state *state = (ambush_state *)machine->driver_data;
5453   int offs, transpen;
5554
56
5755   transpen = (priority == 0) ? -1 : 0;
5856
5957   for (offs = 0; offs < videoram_size; offs++)
6058   {
61      int code,sx,sy,col;
59      int code, sx, sy, col;
6260      UINT8 scroll;
6361
64
6562      sy = (offs / 32);
6663      sx = (offs % 32);
6764
68      col = colorram[((sy & 0x1c) << 3) + sx];
65      col = state->colorram[((sy & 0x1c) << 3) + sx];
6966
70      if ((col & 0x10) != priority)  continue;
67      if ((col & 0x10) != priority)
68         continue;
7169
72      scroll = ~ambush_scrollram[sx];
70      scroll = ~state->scrollram[sx];
7371
74      code = videoram[offs] | ((col & 0x60) << 3);
72      code = state->videoram[offs] | ((col & 0x60) << 3);
7573
7674      if (flip_screen_get(machine))
7775      {
r6428r6429
8280
8381      drawgfx_transpen(bitmap,cliprect,machine->gfx[0],
8482            code,
85            (col & 0x0f) | ((*ambush_colorbank & 0x03) << 4),
86            flip_screen_get(machine),flip_screen_get(machine),
87            8*sx, (8*sy + scroll) & 0xff,
83            (col & 0x0f) | ((*state->colorbank & 0x03) << 4),
84            flip_screen_get(machine), flip_screen_get(machine),
85            8 * sx, (8 * sy + scroll) & 0xff,
8886            transpen);
8987   }
9088}
r6428r6429
9290
9391VIDEO_UPDATE( ambush )
9492{
93   ambush_state *state = (ambush_state *)screen->machine->driver_data;
9594   int offs;
9695
96   bitmap_fill(bitmap, cliprect, 0);
9797
98   bitmap_fill(bitmap,cliprect,0);
99
100
10198   /* Draw the background priority characters */
10299   draw_chars(screen->machine, bitmap, cliprect, 0x00);
103100
104
105101   /* Draw the sprites. */
106   for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
102   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
107103   {
108      int code,col,sx,sy,flipx,flipy,gfx;
104      int code, col, sx, sy, flipx, flipy, gfx;
109105
106      sy = state->spriteram[offs + 0];
107      sx = state->spriteram[offs + 3];
110108
111      sy = spriteram[offs + 0];
112      sx = spriteram[offs + 3];
113
114109      if ( (sy == 0) ||
115110          (sy == 0xff) ||
116         ((sx <  0x40) && (  spriteram[offs + 2] & 0x10)) ||
117         ((sx >= 0xc0) && (!(spriteram[offs + 2] & 0x10))))  continue;  /* prevent wraparound */
111         ((sx <  0x40) && (  state->spriteram[offs + 2] & 0x10)) ||
112         ((sx >= 0xc0) && (!(state->spriteram[offs + 2] & 0x10))))
113         continue;  /* prevent wraparound */
118114
119115
120      code = (spriteram[offs + 1] & 0x3f) | ((spriteram[offs + 2] & 0x60) << 1);
116      code = (state->spriteram[offs + 1] & 0x3f) | ((state->spriteram[offs + 2] & 0x60) << 1);
121117
122      if (spriteram[offs + 2] & 0x80)
118      if (state->spriteram[offs + 2] & 0x80)
123119      {
124120         /* 16x16 sprites */
125121         gfx = 1;
126122
127123         if (!flip_screen_get(screen->machine))
128         {
129124            sy = 240 - sy;
130         }
131125         else
132         {
133126            sx = 240 - sx;
134         }
135127      }
136128      else
137129      {
r6428r6429
140132         code <<= 2;
141133
142134         if (!flip_screen_get(screen->machine))
143         {
144135            sy = 248 - sy;
145         }
146136         else
147         {
148137            sx = 248 - sx;
149         }
150138      }
151139
152      col   = spriteram[offs + 2] & 0x0f;
153      flipx = spriteram[offs + 1] & 0x40;
154      flipy = spriteram[offs + 1] & 0x80;
140      col   = state->spriteram[offs + 2] & 0x0f;
141      flipx = state->spriteram[offs + 1] & 0x40;
142      flipy = state->spriteram[offs + 1] & 0x80;
155143
156144      if (flip_screen_get(screen->machine))
157145      {
r6428r6429
160148      }
161149
162150      drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[gfx],
163            code, col | ((*ambush_colorbank & 0x03) << 4),
151            code, col | ((*state->colorbank & 0x03) << 4),
164152            flipx, flipy,
165153            sx,sy,0);
166154   }
src/mame/video/suprnova.c
r6428r6429
348348/* We are working in .6 fixed point if you hadn't guessed */
349349
350350#define z_decls(step)            \
351   UINT16 zxs = 0x40-(zx>>10);         \
352   UINT16 zxd = 0x40-((zx>>2) & 0x3f);      \
353   UINT16 zys = 0x40-(zy>>10);         \
354   UINT16 zyd = 0x40-((zy>>2) & 0x3f);      \
351   UINT16 zxs = 0x40-(zx_m>>2);         \
352   UINT16 zxd = 0x40-(zx_s>>2);      \
353   UINT16 zys = 0x40-(zy_m>>2);         \
354   UINT16 zyd = 0x40-(zy_s>>2);      \
355355   int xs, ys, xd, yd, old, old2;      \
356356   int step_spr = step;            \
357357   int bxs = 0, bys = 0;            \
r6428r6429
443443      old2 += 0x40;            \
444444   }
445445
446static void blit_nf_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx, UINT16 zy, int colour)
446static void blit_nf_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
447447{
448448   z_decls(sx);
449449   z_clamp_x_min();
r6428r6429
457457   }
458458}
459459
460static void blit_fy_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx, UINT16 zy, int colour)
460static void blit_fy_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
461461{
462462   z_decls(sx);
463463   z_clamp_x_min();
r6428r6429
471471   }
472472}
473473
474static void blit_fx_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx, UINT16 zy, int colour)
474static void blit_fx_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
475475{
476476   z_decls(sx);
477477   z_clamp_x_max();
r6428r6429
485485   }
486486}
487487
488static void blit_fxy_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx, UINT16 zy, int colour)
488static void blit_fxy_z(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour)
489489{
490490   z_decls(sx);
491491   z_clamp_x_max();
r6428r6429
499499   }
500500}
501501
502static void (*const blit_z[4])(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx, UINT16 zy, int colour) = {
502static void (*const blit_z[4])(bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *src, int x, int y, int sx, int sy, UINT16 zx_m, UINT16 zx_s, UINT16 zy_m, UINT16 zy_s, int colour) = {
503503   blit_nf_z,
504504   blit_fy_z,
505505   blit_fx_z,
r6428r6429
560560   int sx,sy;
561561   int endromoffs=0, gfxlen;
562562   int grow;
563   UINT16 zoomx, zoomy;
563   UINT16 zoomx_m, zoomx_s, zoomy_m, zoomy_s;
564564
565565
566566   if ((!disabled) && suprnova_alt_enable_sprites){
r6428r6429
700700
701701         if (!grow)
702702         {
703            zoomx = (source[2] >> 16)&0xfcfc;
704            zoomy = (source[3] >> 16)&0xfcfc;
703            zoomx_m = (source[2] >> 24)&0x00fc;
704            zoomx_s = (source[2] >> 16)&0x00fc;
705            zoomy_m = (source[3] >> 24)&0x00fc;
706            zoomy_s = (source[3] >> 16)&0x00fc;
705707         }
706708         else
707709         {
708            // the bad sprites in sengekis all have this not set..
709            // we need to handle sprite shrink properly
710            zoomx = 0;
711            zoomy = 0;
710            // sengekis uses this on sprites which are shrinking as they head towards the ground
711            // it's also used on the input test of Gals Panic S2
712            //
713            // it appears to offer a higher precision 'shrink' mode (although I'm not entirely
714            //  convinced this implementation is correct because we simply end up ignoring
715            //  part of the data)
716            zoomx_m = 0;
717            zoomx_s = (source[2] >> 24)&0x00fc;
718            zoomy_m = 0;
719            zoomy_s = (source[3] >> 24)&0x00fc;
720
721
712722         }
713723
714724
r6428r6429
732742         {
733743            int NewColour = (colour<<8) | (pri << 14);
734744
735            if(zoomx || zoomy)
745            if(zoomx_m || zoomx_s || zoomy_m || zoomy_s)
736746            {
737               blit_z[ (xflip<<1) | yflip ](bitmap, cliprect, decodebuffer, sx, sy, xsize, ysize, zoomx, zoomy, NewColour);
747               blit_z[ (xflip<<1) | yflip ](bitmap, cliprect, decodebuffer, sx, sy, xsize, ysize, zoomx_m, zoomx_s, zoomy_m, zoomy_s, NewColour);
738748            }
739749            else
740750            {
r6428r6429
952962   if (enable_a && suprnova_alt_enable_background)
953963   {
954964      startx = skns_v3_regs[0x1c/4];
955      incyy  = skns_v3_regs[0x30/4]; // was xx, changed for sarukani
965      incyy  = skns_v3_regs[0x30/4]&0x7ffff;
966      if (incyy&0x40000) incyy = incyy-0x80000; // level 3 boss in sengekis
956967      incyx  = skns_v3_regs[0x2c/4];
957968      starty = skns_v3_regs[0x20/4];
958969      incxy  = skns_v3_regs[0x28/4];
959      incxx  = skns_v3_regs[0x24/4]; // was yy, changed for sarukani
970      incxx  = skns_v3_regs[0x24/4]&0x7ffff;
971      if (incxx&0x40000) incxx = incxx-0x80000;
960972
961973      columnscroll = (skns_v3_regs[0x0c/4] >> 1) & 0x0001;
962974
r6428r6429
980992   if (enable_b && suprnova_alt_enable_background)
981993   {
982994      startx = skns_v3_regs[0x40/4];
983      incyy  = skns_v3_regs[0x54/4];
995      incyy  = skns_v3_regs[0x54/4]&0x7ffff;
996      if (incyy&0x40000) incyy = incyy-0x80000;
984997      incyx  = skns_v3_regs[0x50/4];
985998      starty = skns_v3_regs[0x44/4];
986999      incxy  = skns_v3_regs[0x4c/4];
987      incxx  = skns_v3_regs[0x48/4];
1000      incxx  = skns_v3_regs[0x48/4]&0x7ffff;
1001      if (incxx&0x40000) incxx = incxx-0x80000;
9881002      columnscroll = (skns_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll
9891003      suprnova_draw_roz(bitmap,bitmap_flags, cliprect, skns_tilemap_B, startx << 8,starty << 8,   incxx << 8,incxy << 8,incyx << 8,incyy << 8, !nowrap_b, columnscroll, &skns_v3slc_ram[0x1000/4]);
1004
1005      //popmessage("%08x %08x %08x %08x %08x %08x", startx, starty, incxx, incyy, incxy, incyx);
1006
9901007   }
9911008}
9921009
src/mame/video/hexa.c
r6428r6429
77***************************************************************************/
88
99#include "driver.h"
10#include "hexa.h"
1011
11static int charbank;
12static tilemap *bg_tilemap;
13
1412WRITE8_HANDLER( hexa_videoram_w )
1513{
16   videoram[offset] = data;
17   tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
14   hexa_state *state = (hexa_state *)space->machine->driver_data;
15
16   state->videoram[offset] = data;
17   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
1818}
1919
2020WRITE8_HANDLER( hexa_d008_w )
2121{
22   UINT8 *RAM = memory_region(space->machine, "maincpu");
23   int bankaddress;
22   hexa_state *state = (hexa_state *)space->machine->driver_data;
2423
2524   /* bit 0 = flipx (or y?) */
2625   if (flip_screen_x_get(space->machine) != (data & 0x01))
2726   {
2827      flip_screen_x_set(space->machine, data & 0x01);
29      tilemap_mark_all_tiles_dirty(bg_tilemap);
28      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
3029   }
3130
3231   /* bit 1 = flipy (or x?) */
3332   if (flip_screen_y_get(space->machine) != (data & 0x02))
3433   {
3534      flip_screen_y_set(space->machine, data & 0x02);
36      tilemap_mark_all_tiles_dirty(bg_tilemap);
35      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
3736   }
3837
3938   /* bit 2 - 3 unknown */
4039
4140   /* bit 4 could be the ROM bank selector for 8000-bfff (not sure) */
42   bankaddress = 0x10000 + ((data & 0x10) >> 4) * 0x4000;
43   memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
41   memory_set_bank(space->machine, 1, ((data & 0x10) >> 4));
4442
4543   /* bit 5 = char bank */
46   if (charbank != ((data & 0x20) >> 5))
44   if (state->charbank != ((data & 0x20) >> 5))
4745   {
48      charbank = (data & 0x20) >> 5;
49      tilemap_mark_all_tiles_dirty(bg_tilemap);
46      state->charbank = (data & 0x20) >> 5;
47      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
5048   }
5149
5250   /* bit 6 - 7 unknown */
r6428r6429
5452
5553static TILE_GET_INFO( get_bg_tile_info )
5654{
55   hexa_state *state = (hexa_state *)machine->driver_data;
5756   int offs = tile_index * 2;
58   int tile = videoram[offs + 1] + ((videoram[offs] & 0x07) << 8) + (charbank << 11);
59   int color = (videoram[offs] & 0xf8) >> 3;
57   int tile = state->videoram[offs + 1] + ((state->videoram[offs] & 0x07) << 8) + (state->charbank << 11);
58   int color = (state->videoram[offs] & 0xf8) >> 3;
6059
6160   SET_TILE_INFO(0, tile, color, 0);
6261}
6362
6463VIDEO_START( hexa )
6564{
66   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
67       8, 8, 32, 32);
65   hexa_state *state = (hexa_state *)machine->driver_data;
66   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
6867}
6968
7069
7170VIDEO_UPDATE( hexa )
7271{
73   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
72   hexa_state *state = (hexa_state *)screen->machine->driver_data;
73
74   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
7475   return 0;
7576}
src/mame/video/bsktball.c
r6428r6429
77#include "driver.h"
88#include "bsktball.h"
99
10UINT8 *bsktball_motion;
1110
12static tilemap *bg_tilemap;
13
1411WRITE8_HANDLER( bsktball_videoram_w )
1512{
16   videoram[offset] = data;
17   tilemap_mark_tile_dirty(bg_tilemap, offset);
13   bsktball_state *state = (bsktball_state *)space->machine->driver_data;
14
15   state->videoram[offset] = data;
16   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
1817}
1918
2019static TILE_GET_INFO( get_bg_tile_info )
2120{
22   int attr = videoram[tile_index];
21   bsktball_state *state = (bsktball_state *)machine->driver_data;
22   int attr = state->videoram[tile_index];
2323   int code = ((attr & 0x0f) << 2) | ((attr & 0x30) >> 4);
2424   int color = (attr & 0x40) >> 6;
2525   int flags = (attr & 0x80) ? TILE_FLIPX : 0;
r6428r6429
2929
3030VIDEO_START( bsktball )
3131{
32   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
33       8, 8, 32, 32);
32   bsktball_state *state = (bsktball_state *)machine->driver_data;
33   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
3434}
3535
36static void draw_sprites(running_machine *machine,  bitmap_t *bitmap, const rectangle *cliprect)
36static void draw_sprites( running_machine *machine,  bitmap_t *bitmap, const rectangle *cliprect )
3737{
38   int motion;
38   bsktball_state *state = (bsktball_state *)machine->driver_data;
39   int mot;
3940
40   for (motion=0;motion<16;motion++)
41   for (mot = 0; mot < 16; mot++)
4142   {
42      int pic = bsktball_motion[motion*4];
43      int sy = 28*8 - bsktball_motion[motion*4 + 1];
44      int sx = bsktball_motion[motion*4 + 2];
45      int color = bsktball_motion[motion*4 + 3];
43      int pic = state->motion[mot * 4];
44      int sy = 28 * 8 - state->motion[mot * 4 + 1];
45      int sx = state->motion[mot * 4 + 2];
46      int color = state->motion[mot * 4 + 3];
4647      int flipx = (pic & 0x80) >> 7;
4748
48      pic = (pic & 0x3F);
49        color = (color & 0x3F);
49      pic = (pic & 0x3f);
50      color = (color & 0x3f);
5051
51        drawgfx_transpen(bitmap,cliprect,machine->gfx[1],
52            pic, color,
53         flipx,0,sx,sy,0);
52      drawgfx_transpen(bitmap, cliprect, machine->gfx[1], pic, color, flipx, 0, sx, sy, 0);
5453   }
5554}
5655
5756VIDEO_UPDATE( bsktball )
5857{
59   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
58   bsktball_state *state = (bsktball_state *)screen->machine->driver_data;
59
60   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
6061   draw_sprites(screen->machine, bitmap, cliprect);
6162   return 0;
6263}
src/mame/video/appoooh.c
r6428r6429
99#include "driver.h"
1010#include "appoooh.h"
1111
12UINT8 *appoooh_fg_videoram,*appoooh_fg_colorram;
13UINT8 *appoooh_bg_videoram,*appoooh_bg_colorram;
14
15#define CHR1_OFST 0x00  /* palette page of char set #1 */
16#define CHR2_OFST 0x10  /* palette page of char set #2 */
17
18static tilemap *fg_tilemap,*bg_tilemap;
19
20static int scroll_x;
21static int priority;
22
2312/***************************************************************************
2413
2514  Convert the color PROMs into a more useable format.
r6428r6429
3019  Because these hardware is similar.
3120
3221***************************************************************************/
22
3323PALETTE_INIT( appoooh )
3424{
3525   int i;
r6428r6429
110100
111101static TILE_GET_INFO( get_fg_tile_info )
112102{
113   int code = appoooh_fg_videoram[tile_index] + 256 * ((appoooh_fg_colorram[tile_index]>>5) & 7);
103   appoooh_state *state = (appoooh_state *)machine->driver_data;
104   int code = state->fg_videoram[tile_index] + 256 * ((state->fg_colorram[tile_index] >> 5) & 7);
114105
115106   SET_TILE_INFO(
116107         0,
117108         code,
118         appoooh_fg_colorram[tile_index]&0x0f,
119         (appoooh_fg_colorram[tile_index] & 0x10 ) ? TILEMAP_FLIPX : 0
109         state->fg_colorram[tile_index] & 0x0f,
110         (state->fg_colorram[tile_index] & 0x10 ) ? TILEMAP_FLIPX : 0
120111   );
121112}
122113
123114static TILE_GET_INFO( get_bg_tile_info )
124115{
125   int code = appoooh_bg_videoram[tile_index] + 256 * ((appoooh_bg_colorram[tile_index]>>5) & 7);
116   appoooh_state *state = (appoooh_state *)machine->driver_data;
117   int code = state->bg_videoram[tile_index] + 256 * ((state->bg_colorram[tile_index] >> 5) & 7);
126118
127119   SET_TILE_INFO(
128120         1,
129121         code,
130         appoooh_bg_colorram[tile_index]&0x0f,
131         (appoooh_bg_colorram[tile_index] & 0x10 ) ? TILEMAP_FLIPX : 0
122         state->bg_colorram[tile_index] & 0x0f,
123         (state->bg_colorram[tile_index] & 0x10 ) ? TILEMAP_FLIPX : 0
132124   );
133125}
134126
r6428r6429
137129  Start the video hardware emulation.
138130
139131***************************************************************************/
132
140133VIDEO_START( appoooh )
141134{
142   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32,32);
143   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,     8,8,32,32);
135   appoooh_state *state = (appoooh_state *)machine->driver_data;
144136
145   tilemap_set_transparent_pen(fg_tilemap,0);
146   tilemap_set_scrolldy(fg_tilemap,8,8);
147   tilemap_set_scrolldy(bg_tilemap,8,8);
137   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
138   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
148139
149    state_save_register_global(machine, scroll_x);
150    state_save_register_global(machine, priority);
140   tilemap_set_transparent_pen(state->fg_tilemap, 0);
141   tilemap_set_scrolldy(state->fg_tilemap, 8, 8);
142   tilemap_set_scrolldy(state->bg_tilemap, 8, 8);
143
144   state_save_register_global(machine, state->scroll_x);
145   state_save_register_global(machine, state->priority);
151146}
152147
153148WRITE8_HANDLER( appoooh_scroll_w )
154149{
155   scroll_x = data;
150   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
151   state->scroll_x = data;
156152}
157153
158154
159155WRITE8_HANDLER( appoooh_fg_videoram_w )
160156{
161   appoooh_fg_videoram[offset] = data;
162   tilemap_mark_tile_dirty(fg_tilemap,offset);
157   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
158   state->fg_videoram[offset] = data;
159   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
163160}
164161
165162WRITE8_HANDLER( appoooh_fg_colorram_w )
166163{
167   appoooh_fg_colorram[offset] = data;
168   tilemap_mark_tile_dirty(fg_tilemap,offset);
164   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
165   state->fg_colorram[offset] = data;
166   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
169167}
170168
171169WRITE8_HANDLER( appoooh_bg_videoram_w )
172170{
173   appoooh_bg_videoram[offset] = data;
174   tilemap_mark_tile_dirty(bg_tilemap,offset);
171   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
172   state->bg_videoram[offset] = data;
173   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
175174}
176175
177176WRITE8_HANDLER( appoooh_bg_colorram_w )
178177{
179   appoooh_bg_colorram[offset] = data;
180   tilemap_mark_tile_dirty(bg_tilemap,offset);
178   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
179   state->bg_colorram[offset] = data;
180   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
181181}
182182
183183WRITE8_HANDLER( appoooh_out_w )
184184{
185   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
185186   /* bit 0 controls NMI */
186187   interrupt_enable_w(space,0,data & 0x01);
187188
r6428r6429
194195   /* TODO: understand how this works, currently the only thing I do is draw */
195196   /* the front layer behind sprites when priority == 0, and invert the sprite */
196197   /* order when priority == 1 */
197   priority = (data & 0x30) >> 4;
198   state->priority = (data & 0x30) >> 4;
198199
199200   /* bit 6 ROM bank select */
200201   {
r6428r6429
206207   /* bit 7 unknown (used) */
207208}
208209
209static void appoooh_draw_sprites(
210      bitmap_t *dest_bmp,
211      const rectangle *cliprect,
212        const gfx_element *gfx,
213        UINT8 *sprite)
210static void appoooh_draw_sprites( bitmap_t *dest_bmp, const rectangle *cliprect, const gfx_element *gfx, UINT8 *sprite )
214211{
215212   int offs;
216213   int flipy = flip_screen_get(gfx->machine);
217214
218   for (offs = 0x20 - 4;offs >= 0;offs -= 4)
215   for (offs = 0x20 - 4; offs >= 0; offs -= 4)
219216   {
220      int sy    = 240 - sprite[offs+0];
221      int code  = (sprite[offs+1]>>2) + ((sprite[offs+2]>>5) & 0x07)*0x40;
222      int color = sprite[offs+2]&0x0f;   /* TODO: bit 4 toggles continuously, what is it? */
223      int sx    = sprite[offs+3];
224      int flipx = sprite[offs+1]&0x01;
217      int sy    = 240 - sprite[offs + 0];
218      int code  = (sprite[offs + 1] >> 2) + ((sprite[offs + 2] >> 5) & 0x07) * 0x40;
219      int color = sprite[offs + 2] & 0x0f;   /* TODO: bit 4 toggles continuously, what is it? */
220      int sx    = sprite[offs + 3];
221      int flipx = sprite[offs + 1] & 0x01;
225222
226      if(sx>=248) sx -= 256;
223      if(sx >= 248)
224         sx -= 256;
227225
228226      if (flipy)
229227      {
r6428r6429
240238    }
241239}
242240
243static void robowres_draw_sprites(
244      bitmap_t *dest_bmp,
245      const rectangle *cliprect,
246        const gfx_element *gfx,
247        UINT8 *sprite)
241static void robowres_draw_sprites( bitmap_t *dest_bmp, const rectangle *cliprect, const gfx_element *gfx, UINT8 *sprite )
248242{
249243   int offs;
250244   int flipy = flip_screen_get(gfx->machine);
251245
252   for (offs = 0x20 - 4;offs >= 0;offs -= 4)
246   for (offs = 0x20 - 4; offs >= 0; offs -= 4)
253247   {
254      int sy    = 240 - sprite[offs+0];
255      int code  = 0x200 + (sprite[offs+1]>>2) + ((sprite[offs+2]>>5) & 0x07)*0x40;
256      int color = sprite[offs+2]&0x0f;   /* TODO: bit 4 toggles continuously, what is it? */
257      int sx    = sprite[offs+3];
258      int flipx = sprite[offs+1]&0x01;
248      int sy    = 240 - sprite[offs + 0];
249      int code  = 0x200 + (sprite[offs + 1] >> 2) + ((sprite[offs + 2] >> 5) & 0x07) * 0x40;
250      int color = sprite[offs + 2] & 0x0f;   /* TODO: bit 4 toggles continuously, what is it? */
251      int sx    = sprite[offs + 3];
252      int flipx = sprite[offs + 1] & 0x01;
259253
260      if(sx>=248) sx -= 256;
254      if(sx >= 248)
255         sx -= 256;
261256
262257      if (flipy)
263258      {
r6428r6429
277272
278273VIDEO_UPDATE( appoooh )
279274{
280   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
275   appoooh_state *state = (appoooh_state *)screen->machine->driver_data;
276   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
281277
282   if (priority == 0)   /* fg behind sprites */
283      tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
278   if (state->priority == 0)   /* fg behind sprites */
279      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
284280
285281   /* draw sprites */
286   if (priority == 1)
282   if (state->priority == 1)
287283   {
288284      /* sprite set #1 */
289      appoooh_draw_sprites( bitmap, cliprect, screen->machine->gfx[2],spriteram);
285      appoooh_draw_sprites(bitmap, cliprect, screen->machine->gfx[2], state->spriteram);
290286      /* sprite set #2 */
291      appoooh_draw_sprites( bitmap, cliprect, screen->machine->gfx[3],spriteram_2);
287      appoooh_draw_sprites(bitmap, cliprect, screen->machine->gfx[3], state->spriteram_2);
292288   }
293289   else
294290   {
295291      /* sprite set #2 */
296      appoooh_draw_sprites( bitmap, cliprect, screen->machine->gfx[3],spriteram_2);
292      appoooh_draw_sprites(bitmap, cliprect, screen->machine->gfx[3], state->spriteram_2);
297293      /* sprite set #1 */
298      appoooh_draw_sprites( bitmap, cliprect, screen->machine->gfx[2],spriteram);
294      appoooh_draw_sprites(bitmap, cliprect, screen->machine->gfx[2], state->spriteram);
299295   }
300296
301   if (priority != 0)   /* fg in front of sprites */
302      tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
297   if (state->priority != 0)   /* fg in front of sprites */
298      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
299
303300   return 0;
304301}
305302
306303VIDEO_UPDATE( robowres )
307304{
308   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
305   appoooh_state *state = (appoooh_state *)screen->machine->driver_data;
306   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
309307
310   if (priority == 0)   /* fg behind sprites */
311      tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
308   if (state->priority == 0)   /* fg behind sprites */
309      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
312310
313311   /* draw sprites */
314   if (priority == 1)
312   if (state->priority == 1)
315313   {
316314      /* sprite set #1 */
317      robowres_draw_sprites( bitmap, cliprect, screen->machine->gfx[2],spriteram);
315      robowres_draw_sprites(bitmap, cliprect, screen->machine->gfx[2], state->spriteram);
318316      /* sprite set #2 */
319      robowres_draw_sprites( bitmap, cliprect, screen->machine->gfx[3],spriteram_2);
317      robowres_draw_sprites(bitmap, cliprect, screen->machine->gfx[3], state->spriteram_2);
320318   }
321319   else
322320   {
323321      /* sprite set #2 */
324      robowres_draw_sprites( bitmap, cliprect, screen->machine->gfx[3],spriteram_2);
322      robowres_draw_sprites(bitmap, cliprect, screen->machine->gfx[3], state->spriteram_2);
325323      /* sprite set #1 */
326      robowres_draw_sprites( bitmap, cliprect, screen->machine->gfx[2],spriteram);
324      robowres_draw_sprites(bitmap, cliprect, screen->machine->gfx[2], state->spriteram);
327325   }
328326
329   if (priority != 0)   /* fg in front of sprites */
330      tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
327   if (state->priority != 0)   /* fg in front of sprites */
328      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
329
331330   return 0;
332331}
src/mame/video/travrusa.c
r6428r6429
1212***************************************************************************/
1313
1414#include "driver.h"
15#include "includes/iremz80.h"
1516
16UINT8 *travrusa_videoram;
17
18static tilemap *bg_tilemap;
19
20
21
2217/***************************************************************************
2318
2419  Convert the color PROMs into a more useable format.
r6428r6429
202197
203198static TILE_GET_INFO( get_tile_info )
204199{
205   UINT8 attr = travrusa_videoram[2*tile_index+1];
200   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
201   UINT8 attr = state->videoram[2 * tile_index + 1];
206202   int flags = TILE_FLIPXY((attr & 0x30) >> 4);
207203
208204   tileinfo->group = ((attr & 0x0f) == 0x0f) ? 1 : 0;   /* tunnels */
209205
210206   SET_TILE_INFO(
211207         0,
212         travrusa_videoram[2*tile_index] + ((attr & 0xc0) << 2),
208         state->videoram[2 * tile_index] + ((attr & 0xc0) << 2),
213209         attr & 0x0f,
214210         flags);
215211}
r6428r6429
224220
225221VIDEO_START( travrusa )
226222{
227   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,64,32);
223   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
228224
229   tilemap_set_transmask(bg_tilemap,0,0xff,0x00); /* split type 0 is totally transparent in front half */
230   tilemap_set_transmask(bg_tilemap,1,0x3f,0xc0); /* split type 1 has pens 6 and 7 opaque - tunnels */
225   state_save_register_global_array(machine, state->scrollx);
231226
232   tilemap_set_scroll_rows(bg_tilemap,4);
227   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
228
229   tilemap_set_transmask(state->bg_tilemap, 0, 0xff, 0x00); /* split type 0 is totally transparent in front half */
230   tilemap_set_transmask(state->bg_tilemap, 1, 0x3f, 0xc0); /* split type 1 has pens 6 and 7 opaque - tunnels */
231
232   tilemap_set_scroll_rows(state->bg_tilemap, 4);
233233}
234234
235235
r6428r6429
242242
243243WRITE8_HANDLER( travrusa_videoram_w )
244244{
245   travrusa_videoram[offset] = data;
246   tilemap_mark_tile_dirty(bg_tilemap,offset/2);
245   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
246   state->videoram[offset] = data;
247   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
247248}
248249
249250
250static int scrollx[2];
251
252static void set_scroll(void)
251static void set_scroll( running_machine *machine )
253252{
253   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
254254   int i;
255255
256   for (i = 0;i <= 2;i++)
257      tilemap_set_scrollx(bg_tilemap,i,scrollx[0] + 256 * scrollx[1]);
258   tilemap_set_scrollx(bg_tilemap,3,0);
256   for (i = 0; i <= 2; i++)
257      tilemap_set_scrollx(state->bg_tilemap, i, state->scrollx[0] + 256 * state->scrollx[1]);
258
259   tilemap_set_scrollx(state->bg_tilemap, 3, 0);
259260}
260261
261262WRITE8_HANDLER( travrusa_scroll_x_low_w )
262263{
263   scrollx[0] = data;
264   set_scroll();
264   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
265   state->scrollx[0] = data;
266   set_scroll(space->machine);
265267}
266268
267269WRITE8_HANDLER( travrusa_scroll_x_high_w )
268270{
269   scrollx[1] = data;
270   set_scroll();
271   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
272   state->scrollx[1] = data;
273   set_scroll(space->machine);
271274}
272275
273276
r6428r6429
278281
279282   flip_screen_set(space->machine, data & 1);
280283
281   coin_counter_w(0,data & 0x02);
282   coin_counter_w(1,data & 0x20);
284   coin_counter_w(0, data & 0x02);
285   coin_counter_w(1, data & 0x20);
283286}
284287
285288
r6428r6429
292295
293296static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
294297{
298   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
295299   int offs;
296300   static const rectangle spritevisiblearea =
297301   {
r6428r6429
312316
313317   for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
314318   {
315      int sx = ((spriteram[offs + 3] + 8) & 0xff) - 8;
316      int sy = 240 - spriteram[offs];
317      int code = spriteram[offs + 2];
318      int attr = spriteram[offs + 1];
319      int sx = ((state->spriteram[offs + 3] + 8) & 0xff) - 8;
320      int sy = 240 - state->spriteram[offs];
321      int code = state->spriteram[offs + 2];
322      int attr = state->spriteram[offs + 1];
319323      int flipx = attr & 0x40;
320324      int flipy = attr & 0x80;
321325
r6428r6429
327331         flipy = !flipy;
328332      }
329333
330      drawgfx_transpen(bitmap,&clip,machine->gfx[1],
334      drawgfx_transpen(bitmap, &clip, machine->gfx[1],
331335            code,
332336            attr & 0x0f,
333            flipx,flipy,
334            sx,sy,0);
337            flipx, flipy,
338            sx, sy, 0);
335339   }
336340}
337341
338342
339343VIDEO_UPDATE( travrusa )
340344{
341   tilemap_draw(bitmap,cliprect,bg_tilemap,TILEMAP_DRAW_LAYER1,0);
345   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
346   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
342347   draw_sprites(screen->machine, bitmap,cliprect);
343   tilemap_draw(bitmap,cliprect,bg_tilemap,TILEMAP_DRAW_LAYER0,0);
348   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
344349   return 0;
345350}
src/mame/video/psx.c
r6428r6429
39163916         return;
39173917   }
39183918
3919   psx_irq_set( device->machine, PSX_IRQ_ROOTCOUNTER3 ); // Is this right?
3919   psx_irq_set( device->machine, 0x0001 );
39203920}
39213921
39223922void psx_gpu_reset( running_machine *machine )
src/mame/video/ms32.c
r6428r6429
1515#include "driver.h"
1616#include "includes/ms32.h"
1717
18bitmap_t* temp_bitmap_tilemaps;
19bitmap_t* temp_bitmap_sprites;
20bitmap_t* temp_bitmap_sprites_pri;
1821
22
1923//UINT32 *ms32_fce00000;
2024UINT32 *ms32_roz_ctrl;
2125UINT32 *ms32_tx_scroll;
2226UINT32 *ms32_bg_scroll;
23UINT32 *ms32_priram;
24UINT32 *ms32_palram;
25UINT32 *ms32_bgram;
26UINT32 *ms32_rozram;
27UINT32 *ms32_lineram;
28UINT32 *ms32_spram;
29UINT32 *ms32_txram;
27//UINT32 *ms32_priram;
28//UINT32 *ms32_palram;
29//UINT32 *ms32_rozram;
30//UINT32 *ms32_lineram;
31//UINT32 *ms32_spram;
32//UINT32 *ms32_bgram;
33//UINT32 *ms32_txram;
3034UINT32 *ms32_mainram;
3135
36
37UINT8* ms32_priram_8;
38UINT16* ms32_palram_16;
39UINT16* ms32_rozram_16;
40UINT16 *ms32_lineram_16;
41UINT16 *ms32_sprram_16;
42UINT16 *ms32_bgram_16;
43UINT16 *ms32_txram_16;
44UINT32 ms32_tilemaplayoutcontrol;
45
46UINT16* f1superb_extraram_16;
47
3248// kirarast, tp2m32, and 47pie2 require the sprites in a different order
3349static int ms32_reverse_sprite_order;
3450
3551/********** Tilemaps **********/
3652
37static tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap;
53tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap, *ms32_bg_tilemap_alt;
54tilemap *ms32_extra_tilemap;
3855static int flipscreen;
3956
4057
r6428r6429
4259{
4360   int tileno, colour;
4461
45   tileno = ms32_txram[tile_index *2] & 0x0000ffff;
46   colour = ms32_txram[tile_index *2+1] & 0x000000f;
62   tileno = ms32_txram_16[tile_index *2]   & 0xffff;
63   colour = ms32_txram_16[tile_index *2+1] & 0x000f;
4764
4865   SET_TILE_INFO(3,tileno,colour,0);
4966}
r6428r6429
5269{
5370   int tileno,colour;
5471
55   tileno = ms32_rozram[tile_index *2] & 0x0000ffff;
56   colour = ms32_rozram[tile_index *2+1] & 0x000000f;
72   tileno = ms32_rozram_16[tile_index *2]   & 0xffff;
73   colour = ms32_rozram_16[tile_index *2+1] & 0x000f;
5774
5875   SET_TILE_INFO(1,tileno,colour,0);
5976}
r6428r6429
6279{
6380   int tileno,colour;
6481
65   tileno = ms32_bgram[tile_index *2] & 0x0000ffff;
66   colour = ms32_bgram[tile_index *2+1] & 0x000000f;
82   tileno = ms32_bgram_16[tile_index *2]   & 0xffff;
83   colour = ms32_bgram_16[tile_index *2+1] & 0x000f;
6784
6885   SET_TILE_INFO(2,tileno,colour,0);
6986}
7087
88static TILE_GET_INFO( get_ms32_extra_tile_info )
89{
90   int tileno,colour;
91
92   tileno = f1superb_extraram_16[tile_index *2]   & 0xffff;
93   colour = f1superb_extraram_16[tile_index *2+1] & 0x000f;
94
95   SET_TILE_INFO(4,tileno,colour+0x50,0);
96}
97
98
7199static UINT32 brt[4];
72100static int brt_r,brt_g,brt_b;
73101
74102VIDEO_START( ms32 )
75103{
104   int width = video_screen_get_width(machine->primary_screen);
105   int height = video_screen_get_height(machine->primary_screen);
106
107   ms32_priram_8   = auto_alloc_array(machine, UINT8, 0x2000);
108   ms32_palram_16  = auto_alloc_array(machine, UINT16, 0x20000);
109   ms32_rozram_16  = auto_alloc_array(machine, UINT16, 0x10000);
110   ms32_lineram_16 = auto_alloc_array(machine, UINT16, 0x1000);
111   ms32_sprram_16  = auto_alloc_array(machine, UINT16, 0x20000);
112   ms32_bgram_16   = auto_alloc_array(machine, UINT16, 0x4000);
113   ms32_txram_16   = auto_alloc_array(machine, UINT16, 0x4000);
114
76115   ms32_tx_tilemap = tilemap_create(machine, get_ms32_tx_tile_info,tilemap_scan_rows,8, 8,64,64);
77116   ms32_bg_tilemap = tilemap_create(machine, get_ms32_bg_tile_info,tilemap_scan_rows,16,16,64,64);
117   ms32_bg_tilemap_alt = tilemap_create(machine, get_ms32_bg_tile_info,tilemap_scan_rows,16,16,256,16); // alt layout, controller by register?
78118   ms32_roz_tilemap = tilemap_create(machine, get_ms32_roz_tile_info,tilemap_scan_rows,16,16,128,128);
79119
120
121   /* set up tile layers */
122   temp_bitmap_tilemaps = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
123   temp_bitmap_sprites  = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
124   temp_bitmap_sprites_pri = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16); // not actually being used for rendering, we embed pri info in the raw colour bitmap
125
126
80127   tilemap_set_transparent_pen(ms32_tx_tilemap,0);
81128   tilemap_set_transparent_pen(ms32_bg_tilemap,0);
129   tilemap_set_transparent_pen(ms32_bg_tilemap_alt,0);
82130   tilemap_set_transparent_pen(ms32_roz_tilemap,0);
83131
84132   ms32_reverse_sprite_order = 1;
r6428r6429
96144   brt[0] = brt[1] = 0xffff;
97145}
98146
147VIDEO_START( f1superb )
148{
149   VIDEO_START_CALL( ms32 );
150
151   f1superb_extraram_16  = auto_alloc_array(machine, UINT16, 0x10000);
152   ms32_extra_tilemap = tilemap_create(machine, get_ms32_extra_tile_info,tilemap_scan_rows,2048,1,1,0x400);
153
154}
155
99156/********** PALETTE WRITES **********/
100157
101158
r6428r6429
109166     */
110167   if (~color & 0x4000)
111168   {
112      r = ((ms32_palram[color*2] & 0xff00) >>8 ) * brt_r / 0x100;
113      g = ((ms32_palram[color*2] & 0x00ff) >>0 ) * brt_g / 0x100;
114      b = ((ms32_palram[color*2+1] & 0x00ff) >>0 ) * brt_b / 0x100;
169      r = ((ms32_palram_16[color*2] & 0xff00) >>8 ) * brt_r / 0x100;
170      g = ((ms32_palram_16[color*2] & 0x00ff) >>0 ) * brt_g / 0x100;
171      b = ((ms32_palram_16[color*2+1] & 0x00ff) >>0 ) * brt_b / 0x100;
115172   }
116173   else
117174   {
118      r = ((ms32_palram[color*2] & 0xff00) >>8 );
119      g = ((ms32_palram[color*2] & 0x00ff) >>0 );
120      b = ((ms32_palram[color*2+1] & 0x00ff) >>0 );
175      r = ((ms32_palram_16[color*2] & 0xff00) >>8 );
176      g = ((ms32_palram_16[color*2] & 0x00ff) >>0 );
177      b = ((ms32_palram_16[color*2+1] & 0x00ff) >>0 );
121178   }
122179
123180   palette_set_color(machine,color,MAKE_RGB(r,g,b));
r6428r6429
131188   if (brt[offset] != oldword)
132189   {
133190      int bank = ((offset & 2) >> 1) * 0x4000;
134      int i;
191      //int i;
135192
136193      if (bank == 0)
137194      {
r6428r6429
139196         brt_g = 0x100 - ((brt[0] & 0x00ff) >> 0);
140197         brt_b = 0x100 - ((brt[1] & 0x00ff) >> 0);
141198
142         for (i = 0;i < 0x3000;i++)   // colors 0x3000-0x3fff are not used
143            update_color(space->machine, i);
199      //  for (i = 0;i < 0x3000;i++)  // colors 0x3000-0x3fff are not used
200      //      update_color(space->machine, i);
144201      }
145202   }
146203
147204//popmessage("%04x %04x %04x %04x",brt[0],brt[1],brt[2],brt[3]);
148205}
149206
150WRITE32_HANDLER( ms32_palram_w )
151{
152   COMBINE_DATA(&ms32_palram[offset]);
153207
154   update_color(space->machine, offset/2);
155}
156208
157209
158210
159READ32_HANDLER( ms32_txram_r )
160{
161   return ms32_txram[offset];
162}
163211
164WRITE32_HANDLER( ms32_txram_w )
165{
166   COMBINE_DATA(&ms32_txram[offset]);
167   tilemap_mark_tile_dirty(ms32_tx_tilemap,offset/2);
168}
169
170READ32_HANDLER( ms32_rozram_r )
171{
172   return ms32_rozram[offset];
173}
174
175WRITE32_HANDLER( ms32_rozram_w )
176{
177   COMBINE_DATA(&ms32_rozram[offset]);
178   tilemap_mark_tile_dirty(ms32_roz_tilemap,offset/2);
179}
180
181READ32_HANDLER( ms32_lineram_r )
182{
183   return ms32_lineram[offset];
184}
185
186WRITE32_HANDLER( ms32_lineram_w )
187{
188   COMBINE_DATA(&ms32_lineram[offset]);
189}
190
191READ32_HANDLER( ms32_bgram_r )
192{
193   return ms32_bgram[offset];
194}
195
196WRITE32_HANDLER( ms32_bgram_w )
197{
198   COMBINE_DATA(&ms32_bgram[offset]);
199   tilemap_mark_tile_dirty(ms32_bg_tilemap,offset/2);
200}
201
202READ32_HANDLER( ms32_spram_r )
203{
204   return ms32_spram[offset];
205}
206
207WRITE32_HANDLER( ms32_spram_w )
208{
209   COMBINE_DATA(&ms32_spram[offset]);
210}
211
212READ32_HANDLER( ms32_priram_r )
213{
214   return ms32_priram[offset];
215}
216
217WRITE32_HANDLER( ms32_priram_w )
218{
219   COMBINE_DATA(&ms32_priram[offset]);
220}
221
222212WRITE32_HANDLER( ms32_gfxctrl_w )
223213{
224214   if (ACCESSING_BITS_0_7)
r6428r6429
227217      flipscreen = data & 0x02;
228218      tilemap_set_flip(ms32_tx_tilemap,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
229219      tilemap_set_flip(ms32_bg_tilemap,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
220      tilemap_set_flip(ms32_bg_tilemap_alt,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
230221
231222      /* bit 2 used by f1superb, unknown */
232223
r6428r6429
239230
240231
241232/* SPRITES based on tetrisp2 for now, readd priority bits later */
233/* now using function in tetrisp2.c */
234void tetrisp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, bitmap_t *bitmap_pri, const rectangle *cliprect, UINT8* priram, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int reverseorder, int flip, int allowzoom);
242235
243static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT32 *sprram_top, size_t sprram_size)
244{
245/***************************************************************************
246236
247237
248                                Sprites Drawing
249238
250    Offset:     Bits:                   Meaning:
251239
252    0.w         fedc ba98 ---- ----
253                ---- ---- 7654 ----     Priority
254                ---- ---- ---- 3---
255                ---- ---- ---- -2--     Draw this sprite
256                ---- ---- ---- --1-     Flip Y
257                ---- ---- ---- ---0     Flip X
258
259    1.w         fedc ba98 ---- ----     Tile's Y position in the tile page (*)
260                ---- ---- 7654 3210     Tile's X position in the tile page (*)
261
262    2.w         fedc ---- ---- ----     Color
263                ---- ba98 7654 3210     Tile Page (32x32 tiles = 256x256 pixels each)
264
265    3.w         fedc ba98 ---- ----     Y Size - 1 (*)
266                ---- ---- 7654 3210     X Size - 1 (*)
267
268    4.w         fedc ba-- ---- ----
269                ---- --98 7654 3210     Y (Signed)
270
271    5.w         fedc b--- ---- ----
272                ---- -a98 7654 3210     X (Signed)
273
274    6.w         fedc ba98 7654 3210     Zoom Y
275
276    7.w         fedc ba98 7654 3210     Zoom X
277
278(*) 1 pixel granularity
279
280***************************************************************************/
281
282   int tx, ty, sx, sy, flipx, flipy;
283   int xsize, ysize, xzoom, yzoom;
284   int code, attr, color, size, pri, pri_mask;
285   gfx_element *gfx = machine->gfx[0];
286
287   UINT32      *source   = sprram_top;
288   const UINT32   *finish   = sprram_top + (sprram_size - 0x20) / 4;
289
290
291   if (ms32_reverse_sprite_order == 1)
292   {
293      source   = sprram_top + (sprram_size - 0x20) / 4;
294      finish   = sprram_top;
295   }
296
297
298   for (;ms32_reverse_sprite_order ? (source>=finish) : (source<finish); ms32_reverse_sprite_order ? (source-=8) : (source+=8))
299   {
300      attr   =   source[ 0 ];
301
302      if ((attr & 0x0004) == 0)         continue;
303
304      flipx   =   attr & 1;
305      flipy   =   attr & 2;
306
307      pri = (attr >> 4)&0xf;
308
309      code   =   source[ 1 ];
310      color   =   source[ 2 ];
311
312      tx      =   (code >> 0) & 0xff;
313      ty      =   (code >> 8) & 0xff;
314
315      code   =   (color & 0x0fff);
316
317      color   =   (color >> 12) & 0xf;
318
319      size   =   source[ 3 ];
320
321      xsize   =   ((size >> 0) & 0xff) + 1;
322      ysize   =   ((size >> 8) & 0xff) + 1;
323
324      sy      =   source[ 4 ];
325      sx      =   source[ 5 ];
326
327      sx      =   (sx & 0x3ff) - (sx & 0x400);
328      sy      =   (sy & 0x1ff) - (sy & 0x200);
329
330      xzoom   =   (source[ 6 ]&0xffff);
331      yzoom   =   (source[ 7 ]&0xffff);
332
333      if (!yzoom || !xzoom)            continue;
334
335      yzoom = 0x1000000/yzoom;
336      xzoom = 0x1000000/xzoom;
337
338      // there are surely also shadows (see gametngk) but how they're enabled we don't know
339
340      if (flipscreen)
341      {
342         sx = 320 - ((xsize*xzoom)>>16) - sx;
343         sy = 224 - ((ysize*yzoom)>>16) - sy;
344         flipx = !flipx;
345         flipy = !flipy;
346      }
347
348#if 0
349if (input_code_pressed(machine, KEYCODE_A) && (pri & 8)) color = rand();
350if (input_code_pressed(machine, KEYCODE_S) && (pri & 4)) color = rand();
351if (input_code_pressed(machine, KEYCODE_D) && (pri & 2)) color = rand();
352if (input_code_pressed(machine, KEYCODE_F) && (pri & 1)) color = rand();
353#endif
354
355      /* TODO: priority handling is completely wrong, but better than nothing */
356      if (pri == 0x0)
357         pri_mask = 0x00;
358      else if (pri <= 0xd)
359         pri_mask = 0xf0;
360      else if (pri <= 0xe)
361         pri_mask = 0xfc;
362      else
363         pri_mask = 0xfe;
364
365      gfx_element_set_source_clip(gfx, tx, xsize, ty, ysize);
366      pdrawgfxzoom_transpen(bitmap, cliprect, gfx,
367            code,
368            color,
369            flipx, flipy,
370            sx,sy,
371            xzoom, yzoom, machine->priority_bitmap,pri_mask, 0);
372   }   /* end sprite loop */
373}
374
375
376
377240static void draw_roz(bitmap_t *bitmap, const rectangle *cliprect,int priority)
378241{
379242   /* TODO: registers 0x40/4 / 0x44/4 and 0x50/4 / 0x54/4 are used, meaning unknown */
r6428r6429
391254
392255      while (y <= maxy)
393256      {
394         UINT32 *lineaddr = ms32_lineram + 8 * (y & 0xff);
257         UINT16 *lineaddr = ms32_lineram_16 + 8 * (y & 0xff);
395258
396259         int start2x = (lineaddr[0x00/4] & 0xffff) | ((lineaddr[0x04/4] & 3) << 16);
397260         int start2y = (lineaddr[0x08/4] & 0xffff) | ((lineaddr[0x0c/4] & 3) << 16);
r6428r6429
459322VIDEO_UPDATE( ms32 )
460323{
461324   int scrollx,scrolly;
325   int asc_pri;
326   int scr_pri;
327   int rot_pri;
462328
463329   /* TODO: registers 0x04/4 and 0x10/4 are used too; the most interesting case
464330       is gametngk, where they are *usually*, but not always, copies of 0x00/4
r6428r6429
468334       The two registers might be somewhat related to the width and height of the
469335       tilemaps, but there's something that just doesn't fit.
470336     */
337   int i;
338
339   for (i = 0;i < 0x10000;i++)   // colors 0x3000-0x3fff are not used
340      update_color(screen->machine, i);
341
471342   scrollx = ms32_tx_scroll[0x00/4] + ms32_tx_scroll[0x08/4] + 0x18;
472343   scrolly = ms32_tx_scroll[0x0c/4] + ms32_tx_scroll[0x14/4];
473344   tilemap_set_scrollx(ms32_tx_tilemap, 0, scrollx);
r6428r6429
477348   scrolly = ms32_bg_scroll[0x0c/4] + ms32_bg_scroll[0x14/4];
478349   tilemap_set_scrollx(ms32_bg_tilemap, 0, scrollx);
479350   tilemap_set_scrolly(ms32_bg_tilemap, 0, scrolly);
351   tilemap_set_scrollx(ms32_bg_tilemap_alt, 0, scrollx);
352   tilemap_set_scrolly(ms32_bg_tilemap_alt, 0, scrolly);
480353
481354
482355   bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
483356
357
358
484359   /* TODO: 0 is correct for gametngk, but break f1superb scrolling grid (text at
485360       top and bottom of the screen becomes black on black) */
486   bitmap_fill(bitmap,cliprect,0);   /* bg color */
361   bitmap_fill(temp_bitmap_tilemaps,cliprect,0);   /* bg color */
487362
363   /* clear our sprite bitmaps */
364   bitmap_fill(temp_bitmap_sprites,cliprect,0);
365   bitmap_fill(temp_bitmap_sprites_pri,cliprect,0);
488366
489   /* priority hack, we really need to figure out what priority ram is I think */
490   if (!strcmp(screen->machine->gamedrv->name,"hayaosi3"))
491   {
492      tilemap_draw(bitmap,cliprect,ms32_bg_tilemap,0,1);
493      tilemap_draw(bitmap,cliprect,ms32_tx_tilemap,0,4);
494      draw_roz(bitmap,cliprect,4); // this question text needs to appear over the sprites
495      draw_sprites(screen->machine,bitmap,cliprect, ms32_spram, 0x40000);
367   tetrisp2_draw_sprites(screen->machine, temp_bitmap_sprites, temp_bitmap_sprites_pri, cliprect, NULL, ms32_sprram_16, 0x20000, 0, ms32_reverse_sprite_order, 0, 1 );
496368
497   }
369
370
371
372   asc_pri = scr_pri = rot_pri = 0;
373
374   if((ms32_priram_8[0x2b00 / 2] & 0x00ff) == 0x0034)
375      asc_pri++;
498376   else
377      rot_pri++;
378
379   if((ms32_priram_8[0x2e00 / 2] & 0x00ff) == 0x0034)
380      asc_pri++;
381   else
382      scr_pri++;
383
384   if((ms32_priram_8[0x3a00 / 2] & 0x00ff) == 0x000c)
385      scr_pri++;
386   else
387      rot_pri++;
388
389   if (rot_pri == 0)
390      draw_roz(temp_bitmap_tilemaps,cliprect, 1 << 1);
391   else if (scr_pri == 0)
392      if (ms32_tilemaplayoutcontrol&1)
393      {
394         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap_alt,  0, 1 << 0);
395      }
396      else
397      {
398         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap,  0, 1 << 0);
399      }
400   else if (asc_pri == 0)
401      tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_tx_tilemap,  0, 1 << 2);
402
403   if (rot_pri == 1)
404      draw_roz(temp_bitmap_tilemaps,cliprect, 1 << 1);
405   else if (scr_pri == 1)
406      if (ms32_tilemaplayoutcontrol&1)
407      {
408         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap_alt,  0, 1 << 0);
409      }
410      else
411      {
412         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap,  0, 1 << 0);
413      }
414   else if (asc_pri == 1)
415      tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_tx_tilemap,  0, 1 << 2);
416
417   if (rot_pri == 2)
418      draw_roz(temp_bitmap_tilemaps,cliprect, 1 << 1);
419   else if (scr_pri == 2)
420      if (ms32_tilemaplayoutcontrol&1)
421      {
422         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap_alt,  0, 1 << 0);
423      }
424      else
425      {
426         tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_bg_tilemap,  0, 1 << 0);
427      }
428   else if (asc_pri == 2)
429      tilemap_draw(temp_bitmap_tilemaps,cliprect, ms32_tx_tilemap,  0, 1 << 2);
430
431   /* MIX it! */
432   /* this mixing isn't 100% accurate, it should be using ALL the data in
433       the priority ram, probably for per-pixel / pen mixing, or more levels
434       than are supported here..  I don't know, it will need hw tests I think */
499435   {
500      tilemap_draw(bitmap,cliprect,ms32_bg_tilemap,0,1);
501      draw_roz(bitmap,cliprect,2);
502      tilemap_draw(bitmap,cliprect,ms32_tx_tilemap,0,4);
503      draw_sprites(screen->machine,bitmap,cliprect, ms32_spram, 0x40000);
436      int xx, yy;
437      int width = video_screen_get_width(screen);
438      int height = video_screen_get_height(screen);
439      const pen_t *paldata = screen->machine->pens;
440
441      UINT16* srcptr_tile;
442      UINT8* srcptr_tilepri;
443      UINT16* srcptr_spri;
444      //UINT8* srcptr_spripri;
445
446      UINT32* dstptr_bitmap;
447
448      bitmap_fill(bitmap,cliprect,0);
449
450      for (yy=0;yy<height;yy++)
451      {
452         srcptr_tile =     BITMAP_ADDR16(temp_bitmap_tilemaps, yy, 0);
453         srcptr_tilepri =  BITMAP_ADDR8(screen->machine->priority_bitmap, yy, 0);
454         srcptr_spri =     BITMAP_ADDR16(temp_bitmap_sprites, yy, 0);
455         //srcptr_spripri =  BITMAP_ADDR8(temp_bitmap_sprites_pri, yy, 0);
456         dstptr_bitmap  =  BITMAP_ADDR32(bitmap, yy, 0);
457         for (xx=0;xx<width;xx++)
458         {
459            UINT16 src_tile  = srcptr_tile[xx];
460            UINT8 src_tilepri = srcptr_tilepri[xx];
461            UINT16 src_spri = srcptr_spri[xx];
462            //UINT8 src_spripri;// = srcptr_spripri[xx];
463            UINT16 spridat = ((src_spri&0x0fff));
464            UINT8  spritepri =     ((src_spri&0xf000) >> 8);
465            int primask = 0;
466
467            // get sprite priority value back out of bitmap/colour data (this is done in draw_sprite for standalone hw)
468            if (ms32_priram_8[(spritepri | 0x0a00 | 0x1500) / 2] & 0x38) primask |= 1 << 0;
469            if (ms32_priram_8[(spritepri | 0x0a00 | 0x1400) / 2] & 0x38) primask |= 1 << 1;
470            if (ms32_priram_8[(spritepri | 0x0a00 | 0x1100) / 2] & 0x38) primask |= 1 << 2;
471            if (ms32_priram_8[(spritepri | 0x0a00 | 0x1000) / 2] & 0x38) primask |= 1 << 3;
472            if (ms32_priram_8[(spritepri | 0x0a00 | 0x0500) / 2] & 0x38) primask |= 1 << 4;
473            if (ms32_priram_8[(spritepri | 0x0a00 | 0x0400) / 2] & 0x38) primask |= 1 << 5;
474            if (ms32_priram_8[(spritepri | 0x0a00 | 0x0100) / 2] & 0x38) primask |= 1 << 6;
475            if (ms32_priram_8[(spritepri | 0x0a00 | 0x0000) / 2] & 0x38) primask |= 1 << 7;
476
477
478            if (primask == 0x00)
479            {
480
481               if (src_tilepri==0x00)
482               {
483                  if (spridat & 0xff)
484                     dstptr_bitmap[xx] = paldata[spridat]; // best bout boxing title
485                  else
486                     dstptr_bitmap[xx] = paldata[src_tile];
487               }
488               else if (src_tilepri==0x01)
489               {
490                  if (spridat & 0xff)
491                     dstptr_bitmap[xx] = paldata[spridat]; // best bout boxing title
492                  else
493                     dstptr_bitmap[xx] = paldata[src_tile];
494               }
495               else if (src_tilepri==0x02)
496               {
497                  if (spridat & 0xff)
498                     dstptr_bitmap[xx] = paldata[spridat]; // best bout boxing
499                  else
500                     dstptr_bitmap[xx] = paldata[src_tile];
501               }
502               else if (src_tilepri==0x03)
503               {
504                  if (spridat & 0xff)
505                     dstptr_bitmap[xx] = paldata[spridat]; // best bout boxing
506                  else
507                     dstptr_bitmap[xx] = paldata[src_tile];
508               }
509               else if (src_tilepri==0x04)
510               {
511                  if (spridat & 0xff)
512                     dstptr_bitmap[xx] = paldata[spridat];
513                  else
514                     dstptr_bitmap[xx] = paldata[src_tile];
515               }
516               else if (src_tilepri==0x05)
517               {
518                  if (spridat & 0xff)
519                     dstptr_bitmap[xx] = paldata[spridat];
520                  else
521                     dstptr_bitmap[xx] = paldata[src_tile];
522               }
523               else if (src_tilepri==0x06)
524               {
525                  if (spridat & 0xff)
526                     dstptr_bitmap[xx] = paldata[spridat];
527                  else
528                     dstptr_bitmap[xx] = paldata[src_tile];
529               }
530               else if (src_tilepri==0x07)
531               {
532                  if (spridat & 0xff)
533                     dstptr_bitmap[xx] = paldata[spridat]; // desert war radar?
534                  else
535                     dstptr_bitmap[xx] = paldata[src_tile];
536               }
537
538
539            }
540            else if (primask == 0xc0)
541            {
542               dstptr_bitmap[xx] = paldata[mame_rand(screen->machine)&0xfff];
543            }
544            else if (primask == 0xf0)
545            {
546//                  dstptr_bitmap[xx] = paldata[spridat];
547               if (src_tilepri==0x00)
548               {
549                  if (spridat & 0xff)
550                     dstptr_bitmap[xx] = paldata[spridat]; // clouds at top gametngk intro
551                  else
552                     dstptr_bitmap[xx] = paldata[src_tile];
553               }
554               else if (src_tilepri==0x01)
555               {
556                  if (spridat & 0xff)
557                     dstptr_bitmap[xx] = paldata[spridat]; // clouds gametngk intro
558                  else
559                     dstptr_bitmap[xx] = paldata[src_tile];
560               }
561               else if (src_tilepri==0x02)
562               {
563                  if (spridat & 0xff)
564                     dstptr_bitmap[xx] = paldata[spridat]; // mode select gametngk
565                  else
566                     dstptr_bitmap[xx] = paldata[src_tile];
567               }
568               else if (src_tilepri==0x03)
569               {
570                  if (spridat & 0xff)
571                     dstptr_bitmap[xx] = paldata[spridat]; // title gametngk
572                  else
573                     dstptr_bitmap[xx] = paldata[src_tile];
574               }
575               else if (src_tilepri==0x04)
576               {
577                  dstptr_bitmap[xx] = paldata[src_tile]; // insert coin text on girl gametngk intro
578               }
579               else if (src_tilepri==0x05)
580               {
581                  dstptr_bitmap[xx] = paldata[src_tile]; // insert coin gametngk intro
582               }
583               else if (src_tilepri==0x06)
584               {
585                  dstptr_bitmap[xx] = paldata[src_tile]; // insert coin gametngk intro
586               }
587               else if (src_tilepri==0x07)
588               {
589                  dstptr_bitmap[xx] = paldata[src_tile]; // insert coin gametngk intro
590               }
591            }
592            else if (primask == 0xfc)
593            {
594               if (src_tilepri==0x00)
595               {
596                  if (spridat & 0xff)
597                     dstptr_bitmap[xx] = paldata[spridat]; // tetrisp intro text
598                  else
599                     dstptr_bitmap[xx] = paldata[src_tile];
600               }
601               else if (src_tilepri==0x01)
602               {
603                  if (spridat & 0xff)
604                     dstptr_bitmap[xx] = paldata[spridat]; // tetrisp intro text
605                  else
606                     dstptr_bitmap[xx] = paldata[src_tile];
607               }
608               else if (src_tilepri==0x02)
609               {
610                  dstptr_bitmap[xx] = paldata[src_tile]; // tetrisp story
611               }
612               else if (src_tilepri==0x03)
613               {
614                  dstptr_bitmap[xx] = paldata[src_tile]; // tetrisp fader to game after story
615               }
616               else if (src_tilepri==0x04)
617               {
618                  dstptr_bitmap[xx] = paldata[src_tile]; // credit text tetrisp mode select
619               }
620               else if (src_tilepri==0x05)
621               {
622                  dstptr_bitmap[xx] = paldata[src_tile]; // credit text tetrisp intro
623               }
624               else if (src_tilepri==0x06)
625               {
626                  //dstptr_bitmap[xx] = paldata[mame_rand(screen->machine)&0xfff];
627                  dstptr_bitmap[xx] = paldata[src_tile]; // assumed
628               }
629               else if (src_tilepri==0x07)
630               {
631                  //dstptr_bitmap[xx] = paldata[mame_rand(screen->machine)&0xfff];
632                  dstptr_bitmap[xx] = paldata[src_tile]; // assumed
633               }
634            }
635            else if (primask == 0xfe)
636            {
637               if (src_tilepri==0x00)
638               {
639                  if (spridat & 0xff)
640                     dstptr_bitmap[xx] = paldata[spridat]; // screens in gametngk intro
641                  else
642                     dstptr_bitmap[xx] = paldata[src_tile];
643               }
644               else if (src_tilepri==0x01)
645               {
646                  dstptr_bitmap[xx] = alpha_blend_r32( paldata[src_tile], 0x00000000, 128); // shadow, gametngk title
647               }
648               else if (src_tilepri==0x02)
649               {
650                  dstptr_bitmap[xx] = alpha_blend_r32( paldata[src_tile], 0x00000000, 128); // shadow, gametngk mode select
651               }
652               else if (src_tilepri==0x03)
653               {
654                  dstptr_bitmap[xx] = alpha_blend_r32( paldata[src_tile], 0x00000000, 128); // shadow, gametngk title
655               }
656               else if (src_tilepri==0x04)
657               {
658                  dstptr_bitmap[xx] = paldata[src_tile]; // credit text gametngk intro
659               }
660               else if (src_tilepri==0x05)
661               {
662                  dstptr_bitmap[xx] = paldata[src_tile]; // credit text near shadow, gametngk title
663               }
664               else if (src_tilepri==0x06)
665               {
666                  dstptr_bitmap[xx] = paldata[src_tile]; // credit gametngk highscores
667               }
668               else if (src_tilepri==0x07)
669               {
670                  dstptr_bitmap[xx] = paldata[src_tile]; // assumed
671               }
672            }
673
674            else
675            {
676               fatalerror("unhandled priority type %02x\n",primask);
677            }
678
679
680
681         }
682
683      }
684
504685   }
505686
506687
src/mame/video/4enraya.c
r6428r6429
77***************************************************************************/
88
99#include "driver.h"
10#include "includes/4enraya.h"
1011
11static tilemap *bg_tilemap;
12
1312WRITE8_HANDLER( fenraya_videoram_w )
1413{
15   videoram[(offset&0x3ff)*2]=data;
16   videoram[(offset&0x3ff)*2+1]=(offset&0xc00)>>10;
17   tilemap_mark_tile_dirty(bg_tilemap,offset&0x3ff);
14   _4enraya_state *state = (_4enraya_state *)space->machine->driver_data;
15
16   state->videoram[(offset & 0x3ff) * 2] = data;
17   state->videoram[(offset & 0x3ff) * 2 + 1] = (offset & 0xc00) >> 10;
18   tilemap_mark_tile_dirty(state->bg_tilemap, offset & 0x3ff);
1819}
1920
2021static TILE_GET_INFO( get_tile_info )
2122{
22   int code = videoram[tile_index*2]+(videoram[tile_index*2+1]<<8);
23   _4enraya_state *state = (_4enraya_state *)machine->driver_data;
24
25   int code = state->videoram[tile_index * 2] + (state->videoram[tile_index * 2 + 1] << 8);
2326   SET_TILE_INFO(
2427      0,
2528      code,
r6428r6429
2932
3033VIDEO_START( 4enraya )
3134{
32   bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 );
35   _4enraya_state *state = (_4enraya_state *)machine->driver_data;
36
37   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
3338}
3439
35VIDEO_UPDATE( 4enraya)
40VIDEO_UPDATE( 4enraya )
3641{
37   tilemap_draw(bitmap,cliprect,bg_tilemap, 0,0);
42   _4enraya_state *state = (_4enraya_state *)screen->machine->driver_data;
43
44   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
3845   return 0;
3946}
src/mame/video/blockade.c
r6428r6429
11#include "driver.h"
22#include "includes/blockade.h"
33
4static tilemap *bg_tilemap;
5
64WRITE8_HANDLER( blockade_videoram_w )
75{
8   videoram[offset] = data;
9   tilemap_mark_tile_dirty(bg_tilemap, offset);
6   blockade_state *state = (blockade_state *)space->machine->driver_data;
7   state->videoram[offset] = data;
8   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
109
1110   if (input_port_read(space->machine, "IN3") & 0x80)
1211   {
r6428r6429
1716
1817static TILE_GET_INFO( get_bg_tile_info )
1918{
20   int code = videoram[tile_index];
19   blockade_state *state = (blockade_state *)machine->driver_data;
20   int code = state->videoram[tile_index];
2121
2222   SET_TILE_INFO(0, code, 0, 0);
2323}
2424
2525VIDEO_START( blockade )
2626{
27   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
28       8, 8, 32, 32);
27   blockade_state *state = (blockade_state *)machine->driver_data;
28   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
2929}
3030
3131VIDEO_UPDATE( blockade )
3232{
33   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
33   blockade_state *state = (blockade_state *)screen->machine->driver_data;
34
35   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
3436   return 0;
3537}
src/mame/video/espial.c
r6428r6429
99#include "driver.h"
1010#include "includes/espial.h"
1111
12
13UINT8 *espial_videoram;
14UINT8 *espial_colorram;
15UINT8 *espial_attributeram;
16UINT8 *espial_scrollram;
17UINT8 *espial_spriteram_1;
18UINT8 *espial_spriteram_2;
19UINT8 *espial_spriteram_3;
20
21static int flipscreen;
22static tilemap *bg_tilemap;
23
24
2512/***************************************************************************
2613
2714  Convert the color PROMs into a more useable format.
r6428r6429
4128  bit 0 -- 1  kohm resistor  -- RED
4229
4330***************************************************************************/
31
4432PALETTE_INIT( espial )
4533{
4634   int i;
4735
48
49   for (i = 0;i < machine->config->total_colors;i++)
36   for (i = 0; i < machine->config->total_colors; i++)
5037   {
51      int bit0,bit1,bit2,r,g,b;
38      int bit0, bit1, bit2, r, g, b;
5239
53
5440      /* red component */
5541      bit0 = (color_prom[i] >> 0) & 0x01;
5642      bit1 = (color_prom[i] >> 1) & 0x01;
r6428r6429
6753      bit2 = (color_prom[i + machine->config->total_colors] >> 3) & 0x01;
6854      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
6955
70      palette_set_color(machine,i,MAKE_RGB(r,g,b));
56      palette_set_color(machine, i, MAKE_RGB(r,g,b));
7157   }
7258}
7359
r6428r6429
8167
8268static TILE_GET_INFO( get_tile_info )
8369{
84   UINT8 code = espial_videoram[tile_index];
85   UINT8 col = espial_colorram[tile_index];
86   UINT8 attr = espial_attributeram[tile_index];
70   espial_state *state = (espial_state *)machine->driver_data;
71   UINT8 code = state->videoram[tile_index];
72   UINT8 col = state->colorram[tile_index];
73   UINT8 attr = state->attributeram[tile_index];
8774   SET_TILE_INFO(0,
8875              code | ((attr & 0x03) << 8),
8976              col & 0x3f,
r6428r6429
10087
10188VIDEO_START( espial )
10289{
103   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,32);
90   espial_state *state = (espial_state *)machine->driver_data;
10491
105   tilemap_set_scroll_cols(bg_tilemap, 32);
92   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
93   tilemap_set_scroll_cols(state->bg_tilemap, 32);
10694
107   state_save_register_global(machine, flipscreen);
95   state_save_register_global(machine, state->flipscreen);
10896}
10997
11098VIDEO_START( netwars )
11199{
100   espial_state *state = (espial_state *)machine->driver_data;
101
112102   /* Net Wars has a tile map that's twice as big as Espial's */
113   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,64);
103   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 64);
114104
115   tilemap_set_scroll_cols(bg_tilemap, 32);
116   tilemap_set_scrolldy(bg_tilemap, 0, 0x100);
105   tilemap_set_scroll_cols(state->bg_tilemap, 32);
106   tilemap_set_scrolldy(state->bg_tilemap, 0, 0x100);
117107
118   state_save_register_global(machine, flipscreen);
108   state_save_register_global(machine, state->flipscreen);
119109}
120110
121111
r6428r6429
127117
128118WRITE8_HANDLER( espial_videoram_w )
129119{
130   espial_videoram[offset] = data;
131   tilemap_mark_tile_dirty(bg_tilemap, offset);
120   espial_state *state = (espial_state *)space->machine->driver_data;
121
122   state->videoram[offset] = data;
123   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
132124}
133125
134126
135127WRITE8_HANDLER( espial_colorram_w )
136128{
137   espial_colorram[offset] = data;
138   tilemap_mark_tile_dirty(bg_tilemap, offset);
129   espial_state *state = (espial_state *)space->machine->driver_data;
130
131   state->colorram[offset] = data;
132   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
139133}
140134
141135
142136WRITE8_HANDLER( espial_attributeram_w )
143137{
144   espial_attributeram[offset] = data;
145   tilemap_mark_tile_dirty(bg_tilemap, offset);
138   espial_state *state = (espial_state *)space->machine->driver_data;
139
140   state->attributeram[offset] = data;
141   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
146142}
147143
148144
149145WRITE8_HANDLER( espial_scrollram_w )
150146{
151   espial_scrollram[offset] = data;
152   tilemap_set_scrolly(bg_tilemap, offset, data);
147   espial_state *state = (espial_state *)space->machine->driver_data;
148
149   state->scrollram[offset] = data;
150   tilemap_set_scrolly(state->bg_tilemap, offset, data);
153151}
154152
155153
156154WRITE8_HANDLER( espial_flipscreen_w )
157155{
158   flipscreen = data;
156   espial_state *state = (espial_state *)space->machine->driver_data;
159157
160   tilemap_set_flip(bg_tilemap, flipscreen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
158   state->flipscreen = data;
159   tilemap_set_flip(state->bg_tilemap, state->flipscreen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
161160}
162161
163162
r6428r6429
167166 *
168167 *************************************/
169168
170static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
169static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
171170{
171   espial_state *state = (espial_state *)machine->driver_data;
172172   int offs;
173173
174
175174   /* Note that it is important to draw them exactly in this */
176175   /* order, to have the correct priorities. */
177   for (offs = 0;offs < 16;offs++)
176   for (offs = 0; offs < 16; offs++)
178177   {
179      int sx,sy,code,color,flipx,flipy;
178      int sx, sy, code, color, flipx, flipy;
180179
181180
182      sx = espial_spriteram_1[offs + 16];
183      sy = espial_spriteram_2[offs];
184      code = espial_spriteram_1[offs] >> 1;
185      color = espial_spriteram_2[offs + 16];
186      flipx = espial_spriteram_3[offs] & 0x04;
187      flipy = espial_spriteram_3[offs] & 0x08;
181      sx = state->spriteram_1[offs + 16];
182      sy = state->spriteram_2[offs];
183      code = state->spriteram_1[offs] >> 1;
184      color = state->spriteram_2[offs + 16];
185      flipx = state->spriteram_3[offs] & 0x04;
186      flipy = state->spriteram_3[offs] & 0x08;
188187
189      if (flipscreen)
188      if (state->flipscreen)
190189      {
191190         flipx = !flipx;
192191         flipy = !flipy;
r6428r6429
196195         sy = 240 - sy;
197196      }
198197
199      if (espial_spriteram_1[offs] & 1)   /* double height */
198      if (state->spriteram_1[offs] & 1)   /* double height */
200199      {
201         if (flipscreen)
200         if (state->flipscreen)
202201         {
203202            drawgfx_transpen(bitmap,cliprect,machine->gfx[1],
204203                  code,color,
r6428r6429
235234
236235VIDEO_UPDATE( espial )
237236{
238   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
237   espial_state *state = (espial_state *)screen->machine->driver_data;
238
239   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
239240   draw_sprites(screen->machine, bitmap, cliprect);
240241   return 0;
241242}
src/mame/video/zodiack.c
r6428r6429
99#include "driver.h"
1010#include "includes/espial.h"
1111
12UINT8 *zodiack_videoram2;
13UINT8 *zodiack_attributesram;
14UINT8 *zodiack_bulletsram;
1512size_t zodiack_bulletsram_size;
1613
17static tilemap *bg_tilemap, *fg_tilemap;
1814
1915WRITE8_HANDLER( zodiack_videoram_w )
2016{
21   videoram[offset] = data;
22   tilemap_mark_tile_dirty(fg_tilemap, offset);
17   espial_state *state = (espial_state *)space->machine->driver_data;
18
19   state->videoram[offset] = data;
20   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
2321}
2422
2523WRITE8_HANDLER( zodiack_videoram2_w )
2624{
27   zodiack_videoram2[offset] = data;
28   tilemap_mark_tile_dirty(bg_tilemap, offset);
25   espial_state *state = (espial_state *)space->machine->driver_data;
26
27   state->videoram_2[offset] = data;
28   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
2929}
3030
3131WRITE8_HANDLER( zodiack_attributes_w )
3232{
33   if ((offset & 1) && zodiack_attributesram[offset] != data)
33   espial_state *state = (espial_state *)space->machine->driver_data;
34
35   if ((offset & 1) && state->attributeram[offset] != data)
3436   {
3537      int i;
3638
37      for (i = offset / 2;i < videoram_size; i += 32)
39      for (i = offset / 2; i < videoram_size; i += 32)
3840      {
39         tilemap_mark_tile_dirty(bg_tilemap, i);
40         tilemap_mark_tile_dirty(fg_tilemap, i);
41         tilemap_mark_tile_dirty(state->bg_tilemap, i);
42         tilemap_mark_tile_dirty(state->fg_tilemap, i);
4143      }
4244   }
4345
44   zodiack_attributesram[offset] = data;
46   state->attributeram[offset] = data;
4547}
4648
4749WRITE8_HANDLER( zodiack_flipscreen_w )
r6428r6429
107109
108110static TILE_GET_INFO( get_bg_tile_info )
109111{
110   int code = zodiack_videoram2[tile_index];
111   int color = (zodiack_attributesram[2 * (tile_index % 32) + 1] >> 4) & 0x07;
112   espial_state *state = (espial_state *)machine->driver_data;
112113
114   int code = state->videoram_2[tile_index];
115   int color = (state->attributeram[2 * (tile_index % 32) + 1] >> 4) & 0x07;
116
113117   SET_TILE_INFO(0, code, color, 0);
114118}
115119
116120static TILE_GET_INFO( get_fg_tile_info )
117121{
118   int code = videoram[tile_index];
119   int color = zodiack_attributesram[2 * (tile_index % 32) + 1] & 0x07;
122   espial_state *state = (espial_state *)machine->driver_data;
120123
124   int code = state->videoram[tile_index];
125   int color = state->attributeram[2 * (tile_index % 32) + 1] & 0x07;
126
121127   SET_TILE_INFO(3, code, color, 0);
122128}
123129
124130VIDEO_START( zodiack )
125131{
126   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
132   espial_state *state = (espial_state *)machine->driver_data;
127133
128   fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
134   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
135   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
129136
130   tilemap_set_transparent_pen(fg_tilemap, 0);
131   tilemap_set_scroll_cols(fg_tilemap, 32);
137   tilemap_set_transparent_pen(state->fg_tilemap, 0);
138   tilemap_set_scroll_cols(state->fg_tilemap, 32);
132139
133140   /* FIXME: flip_screen_x should not be written. */
134141   flip_screen_set_no_update(machine, 0);
r6428r6429
136143
137144static void draw_bullets(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
138145{
146   espial_state *state = (espial_state *)machine->driver_data;
139147   int offs;
140148
141149   for (offs = 0; offs < zodiack_bulletsram_size; offs += 4)
142150   {
143151      int x, y;
144152
145      x = zodiack_bulletsram[offs + 3] + 7;
146      y = 255 - zodiack_bulletsram[offs + 1];
153      x = state->bulletsram[offs + 3] + 7;
154      y = 255 - state->bulletsram[offs + 1];
147155
148      if (flip_screen_get(machine) && percuss_hardware)
156      if (flip_screen_get(machine) && state->percuss_hardware)
149157      {
150158         y = 255 - y;
151159      }
r6428r6429
162170
163171static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
164172{
173   espial_state *state = (espial_state *)machine->driver_data;
165174   int offs;
166175
167176   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
168177   {
169178      int flipx, flipy, sx, sy, spritecode;
170179
171      sx = 240 - spriteram[offs + 3];
172      sy = 240 - spriteram[offs];
173      flipx = !(spriteram[offs + 1] & 0x40);
174      flipy = spriteram[offs + 1] & 0x80;
175      spritecode = spriteram[offs + 1] & 0x3f;
180      sx = 240 - state->spriteram[offs + 3];
181      sy = 240 - state->spriteram[offs];
182      flipx = !(state->spriteram[offs + 1] & 0x40);
183      flipy = state->spriteram[offs + 1] & 0x80;
184      spritecode = state->spriteram[offs + 1] & 0x3f;
176185
177      if (flip_screen_get(machine) && percuss_hardware)
186      if (flip_screen_get(machine) && state->percuss_hardware)
178187      {
179188         sy = 240 - sy;
180189         flipy = !flipy;
r6428r6429
182191
183192      drawgfx_transpen(bitmap,cliprect,machine->gfx[1],
184193         spritecode,
185         spriteram[offs + 2] & 0x07,
194         state->spriteram[offs + 2] & 0x07,
186195         flipx, flipy,
187196         sx, sy,
188197         0);
r6428r6429
191200
192201VIDEO_UPDATE( zodiack )
193202{
203   espial_state *state = (espial_state *)screen->machine->driver_data;
194204   int i;
195205
196206   for (i = 0; i < 32; i++)
197      tilemap_set_scrolly(fg_tilemap, i, zodiack_attributesram[i * 2]);
207      tilemap_set_scrolly(state->fg_tilemap, i, state->attributeram[i * 2]);
198208
199   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
200   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
209   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
210   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
201211   draw_bullets(screen->machine, bitmap, cliprect);
202212   draw_sprites(screen->machine, bitmap, cliprect);
203213   return 0;
src/mame/video/bionicc.c
r6428r6429
11/***************************************************************************
22
3Bionic Commando Video Hardware
3    Bionic Commando Video Hardware
44
5This board handles tile/tile and tile/sprite priority with a PROM. Its
6working is complicated and hardcoded in the driver.
5    This board handles tile/tile and tile/sprite priority with a PROM. Its
6    working is complicated and hardcoded in the driver.
77
8The PROM is a 256x4 chip, with address inputs wired as follows:
8    The PROM is a 256x4 chip, with address inputs wired as follows:
99
10A0 bg opaque
11A1 \
12A2 |  fg pen
13A3 |
14A4 /
15A5 fg has priority over sprites (bit 5 of tile attribute)
16A6 fg has not priority over bg (bits 6 & 7 of tile attribute both set)
17A7 sprite opaque
10    A0 bg opaque
11    A1 \
12    A2 |  fg pen
13    A3 |
14    A4 /
15    A5 fg has priority over sprites (bit 5 of tile attribute)
16    A6 fg has not priority over bg (bits 6 & 7 of tile attribute both set)
17    A7 sprite opaque
1818
19The output selects the active layer, it can be:
200  bg
211  fg
222  sprite
19    The output selects the active layer, it can be:
20    0  bg
21    1  fg
22    2  sprite
2323
2424***************************************************************************/
2525
2626#include "driver.h"
27#include "bionicc.h"
2728
28UINT16 *bionicc_fgvideoram;
29UINT16 *bionicc_bgvideoram;
30UINT16 *bionicc_txvideoram;
3129
32static tilemap *tx_tilemap, *bg_tilemap, *fg_tilemap;
33
34
3530/***************************************************************************
3631
3732  Callbacks for the TileMap code
r6428r6429
4035
4136static TILE_GET_INFO( get_bg_tile_info )
4237{
43   int attr = bionicc_bgvideoram[2*tile_index+1];
38   bionicc_state *state = (bionicc_state *)machine->driver_data;
39
40   int attr = state->bgvideoram[2 * tile_index + 1];
4441   SET_TILE_INFO(
4542         1,
46         (bionicc_bgvideoram[2*tile_index] & 0xff) + ((attr & 0x07) << 8),
43         (state->bgvideoram[2 * tile_index] & 0xff) + ((attr & 0x07) << 8),
4744         (attr & 0x18) >> 3,
4845         TILE_FLIPXY((attr & 0xc0) >> 6));
4946}
5047
5148static TILE_GET_INFO( get_fg_tile_info )
5249{
53   int attr = bionicc_fgvideoram[2*tile_index+1];
50   bionicc_state *state = (bionicc_state *)machine->driver_data;
51
52   int attr = state->fgvideoram[2 * tile_index + 1];
5453   int flags;
5554
5655   if ((attr & 0xc0) == 0xc0)
r6428r6429
6867
6968   SET_TILE_INFO(
7069         2,
71         (bionicc_fgvideoram[2*tile_index] & 0xff) + ((attr & 0x07) << 8),
70         (state->fgvideoram[2 * tile_index] & 0xff) + ((attr & 0x07) << 8),
7271         (attr & 0x18) >> 3,
7372         flags);
7473}
7574
7675static TILE_GET_INFO( get_tx_tile_info )
7776{
78   int attr = bionicc_txvideoram[tile_index + 0x400];
77   bionicc_state *state = (bionicc_state *)machine->driver_data;
78
79   int attr = state->txvideoram[tile_index + 0x400];
7980   SET_TILE_INFO(
8081         0,
81         (bionicc_txvideoram[tile_index] & 0xff) + ((attr & 0x00c0) << 2),
82         (state->txvideoram[tile_index] & 0xff) + ((attr & 0x00c0) << 2),
8283         attr & 0x3f,
8384         0);
8485}
r6428r6429
9394
9495VIDEO_START( bionicc )
9596{
96   tx_tilemap = tilemap_create(machine, get_tx_tile_info,tilemap_scan_rows, 8, 8,32,32);
97   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,16,16,64,64);
98   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows, 8, 8,64,64);
97   bionicc_state *state = (bionicc_state *)machine->driver_data;
9998
100   tilemap_set_transparent_pen(tx_tilemap,3);
101   tilemap_set_transmask(fg_tilemap,0,0xffff,0x8000); /* split type 0 is completely transparent in front half */
102   tilemap_set_transmask(fg_tilemap,1,0xffc1,0x803e); /* split type 1 has pens 1-5 opaque in front half */
103   tilemap_set_transparent_pen(bg_tilemap,15);
99   state->tx_tilemap = tilemap_create(machine, get_tx_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
100   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
101   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,  8, 8, 64, 64);
102
103   tilemap_set_transparent_pen(state->tx_tilemap, 3);
104   tilemap_set_transmask(state->fg_tilemap, 0, 0xffff, 0x8000); /* split type 0 is completely transparent in front half */
105   tilemap_set_transmask(state->fg_tilemap, 1, 0xffc1, 0x803e); /* split type 1 has pens 1-5 opaque in front half */
106   tilemap_set_transparent_pen(state->bg_tilemap, 15);
104107}
105108
106109
r6428r6429
113116
114117WRITE16_HANDLER( bionicc_bgvideoram_w )
115118{
116   COMBINE_DATA(&bionicc_bgvideoram[offset]);
117   tilemap_mark_tile_dirty(bg_tilemap,offset/2);
119   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
120
121   COMBINE_DATA(&state->bgvideoram[offset]);
122   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
118123}
119124
120125WRITE16_HANDLER( bionicc_fgvideoram_w )
121126{
122   COMBINE_DATA(&bionicc_fgvideoram[offset]);
123   tilemap_mark_tile_dirty(fg_tilemap,offset/2);
127   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
128
129   COMBINE_DATA(&state->fgvideoram[offset]);
130   tilemap_mark_tile_dirty(state->fg_tilemap, offset / 2);
124131}
125132
126133WRITE16_HANDLER( bionicc_txvideoram_w )
127134{
128   COMBINE_DATA(&bionicc_txvideoram[offset]);
129   tilemap_mark_tile_dirty(tx_tilemap,offset&0x3ff);
135   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
136
137   COMBINE_DATA(&state->txvideoram[offset]);
138   tilemap_mark_tile_dirty(state->tx_tilemap, offset & 0x3ff);
130139}
131140
132141WRITE16_HANDLER( bionicc_paletteram_w )
133142{
143   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
134144   int r, g, b, bright;
135   data = COMBINE_DATA(&paletteram16[offset]);
145   data = COMBINE_DATA(&state->paletteram16[offset]);
136146
137   bright = (data&0x0f);
147   bright = (data & 0x0f);
138148
139   r = ((data>>12)&0x0f) * 0x11;
140   g = ((data>>8 )&0x0f) * 0x11;
141   b = ((data>>4 )&0x0f) * 0x11;
149   r = ((data >> 12) & 0x0f) * 0x11;
150   g = ((data >> 8 ) & 0x0f) * 0x11;
151   b = ((data >> 4 ) & 0x0f) * 0x11;
142152
143153   if ((bright & 0x08) == 0)
144154   {
r6428r6429
152162
153163WRITE16_HANDLER( bionicc_scroll_w )
154164{
155   static UINT16 scroll[4];
165   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
156166
157   data = COMBINE_DATA(&scroll[offset]);
167   data = COMBINE_DATA(&state->scroll[offset]);
158168
159169   switch (offset)
160170   {
161171      case 0:
162         tilemap_set_scrollx(fg_tilemap,0,data);
172         tilemap_set_scrollx(state->fg_tilemap, 0, data);
163173         break;
164174      case 1:
165         tilemap_set_scrolly(fg_tilemap,0,data);
175         tilemap_set_scrolly(state->fg_tilemap, 0, data);
166176         break;
167177      case 2:
168         tilemap_set_scrollx(bg_tilemap,0,data);
178         tilemap_set_scrollx(state->bg_tilemap, 0, data);
169179         break;
170180      case 3:
171         tilemap_set_scrolly(bg_tilemap,0,data);
181         tilemap_set_scrolly(state->bg_tilemap, 0, data);
172182         break;
173183   }
174184}
175185
176186WRITE16_HANDLER( bionicc_gfxctrl_w )
177187{
188   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
189
178190   if (ACCESSING_BITS_8_15)
179191   {
180192      flip_screen_set(space->machine, data & 0x0100);
181193
182      tilemap_set_enable(bg_tilemap,data & 0x2000);   /* guess */
183      tilemap_set_enable(fg_tilemap,data & 0x1000);   /* guess */
194      tilemap_set_enable(state->bg_tilemap, data & 0x2000);   /* guess */
195      tilemap_set_enable(state->fg_tilemap, data & 0x1000);   /* guess */
184196
185      coin_counter_w(0,data & 0x8000);
186      coin_counter_w(1,data & 0x4000);
197      coin_counter_w(0, data & 0x8000);
198      coin_counter_w(1, data & 0x4000);
187199   }
188200}
189201
r6428r6429
195207
196208***************************************************************************/
197209
198static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
210static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
199211{
212//  bionicc_state *state = (bionicc_state *)machine->driver_data;
200213   int offs;
201214   const gfx_element *gfx = machine->gfx[3];
202215
203   for (offs = (spriteram_size-8)/2;offs >= 0;offs -= 4)
216   for (offs = (spriteram_size - 8) / 2; offs >= 0; offs -= 4)
204217   {
205218      int tile_number = buffered_spriteram16[offs] & 0x7ff;
206      if( tile_number!=0x7FF ){
207         int attr = buffered_spriteram16[offs+1];
208         int color = (attr&0x3C)>>2;
209         int flipx = attr&0x02;
219      if( tile_number != 0x7ff )
220      {
221         int attr = buffered_spriteram16[offs + 1];
222         int color = (attr & 0x3c) >> 2;
223         int flipx = attr & 0x02;
210224         int flipy = 0;
211         int sx = (INT16)buffered_spriteram16[offs+3];   /* signed */
212         int sy = (INT16)buffered_spriteram16[offs+2];   /* signed */
213         if(sy>512-16) sy-=512;
225         int sx = (INT16)buffered_spriteram16[offs + 3];   /* signed */
226         int sy = (INT16)buffered_spriteram16[offs + 2];   /* signed */
227
228         if (sy > 512 - 16)
229            sy -= 512;
230
214231         if (flip_screen_get(machine))
215232         {
216233            sx = 240 - sx;
r6428r6429
230247
231248VIDEO_UPDATE( bionicc )
232249{
233   bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
234   tilemap_draw(bitmap,cliprect,fg_tilemap,1|TILEMAP_DRAW_LAYER1,0);   /* nothing in FRONT */
235   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
236   tilemap_draw(bitmap,cliprect,fg_tilemap,0|TILEMAP_DRAW_LAYER1,0);
237   draw_sprites(screen->machine,bitmap,cliprect);
238   tilemap_draw(bitmap,cliprect,fg_tilemap,0|TILEMAP_DRAW_LAYER0,0);
239   tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
250   bionicc_state *state = (bionicc_state *)screen->machine->driver_data;
251
252   bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
253   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 1 | TILEMAP_DRAW_LAYER1, 0);   /* nothing in FRONT */
254   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
255   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0 | TILEMAP_DRAW_LAYER1, 0);
256   draw_sprites(screen->machine, bitmap, cliprect);
257   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0 | TILEMAP_DRAW_LAYER0, 0);
258   tilemap_draw(bitmap, cliprect, state->tx_tilemap, 0, 0);
240259   return 0;
241260}
242261
src/mame/video/xexex.c
r6428r6429
109109
110110   sortlayers(layer, layerpri);
111111
112   K054338_update_all_shadows(screen->machine);
112   K054338_update_all_shadows(screen->machine, 0);
113113   K054338_fill_backcolor(screen->machine, bitmap, 0);
114114
115115   bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
src/mame/video/battlex.c
r6428r6429
1#include "driver.h"
1/***************************************************************************
22
3static int battlex_scroll_lsb;
4static int battlex_scroll_msb;
3    Video emulation for Omori Battle Cross
54
6static tilemap *bg_tilemap;
5***************************************************************************/
76
7#include "driver.h"
8#include "battlex.h"
9
810PALETTE_INIT( battlex )
911{
10   int i,col;
12   int i, col;
1113
12   for (col = 0;col < 8;col++)
14   for (col = 0; col < 8; col++)
1315   {
14      for (i = 0;i < 16;i++)
16      for (i = 0; i < 16; i++)
1517      {
1618         int data = i | col;
1719         int g = pal1bit(data >> 0);
r6428r6429
2830         }
2931#endif
3032
31         palette_set_color(machine, i + 16 * col,MAKE_RGB(r,g,b));
33         palette_set_color(machine, i + 16 * col, MAKE_RGB(r,g,b));
3234      }
3335   }
3436}
3537
3638WRITE8_HANDLER( battlex_palette_w )
3739{
38   palette_set_color_rgb(space->machine,16*8 + offset,pal1bit(data >> 2),pal1bit(data >> 0),pal1bit(data >> 1));
40   palette_set_color_rgb(space->machine, 16 * 8 + offset, pal1bit(data >> 2), pal1bit(data >> 0), pal1bit(data >> 1));
3941}
4042
4143WRITE8_HANDLER( battlex_scroll_x_lsb_w )
4244{
43   battlex_scroll_lsb = data;
45   battlex_state *state = (battlex_state *)space->machine->driver_data;
46   state->scroll_lsb = data;
4447}
4548
4649WRITE8_HANDLER( battlex_scroll_x_msb_w )
4750{
48   battlex_scroll_msb = data;
51   battlex_state *state = (battlex_state *)space->machine->driver_data;
52   state->scroll_msb = data;
4953}
5054
5155WRITE8_HANDLER( battlex_videoram_w )
5256{
53   videoram[offset] = data;
54   tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
57   battlex_state *state = (battlex_state *)space->machine->driver_data;
58   state->videoram[offset] = data;
59   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
5560}
5661
5762WRITE8_HANDLER( battlex_flipscreen_w )
r6428r6429
6974
7075static TILE_GET_INFO( get_bg_tile_info )
7176{
72   int tile = videoram[tile_index*2] | (((videoram[tile_index*2+1] & 0x01)) << 8);
73   int color = (videoram[tile_index*2+1] & 0x0e) >> 1;
77   battlex_state *state = (battlex_state *)machine->driver_data;
78   int tile = state->videoram[tile_index * 2] | (((state->videoram[tile_index * 2 + 1] & 0x01)) << 8);
79   int color = (state->videoram[tile_index * 2 + 1] & 0x0e) >> 1;
7480
75   SET_TILE_INFO(0,tile,color,0);
81   SET_TILE_INFO(0, tile, color, 0);
7682}
7783
7884VIDEO_START( battlex )
7985{
80   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
81       8, 8, 64, 32);
86   battlex_state *state = (battlex_state *)machine->driver_data;
87
88   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
89   state_save_register_global(machine, state->scroll_lsb);
90   state_save_register_global(machine, state->scroll_msb);
8291}
8392
84static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
93static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
8594{
95   battlex_state *state = (battlex_state *)machine->driver_data;
8696   const gfx_element *gfx = machine->gfx[1];
87   UINT8 *source = spriteram;
88   UINT8 *finish = spriteram + 0x200;
97   UINT8 *source = state->spriteram;
98   UINT8 *finish = state->spriteram + 0x200;
8999
90   while( source<finish )
100   while (source < finish)
91101   {
92102      int sx = (source[0] & 0x7f) * 2 - (source[0] & 0x80) * 2;
93103      int sy = source[3];
r6428r6429
104114         flipy = !flipy;
105115      }
106116
107      drawgfx_transpen(bitmap,cliprect,gfx,tile,color,flipx,flipy,sx,sy,0);
108
117      drawgfx_transpen(bitmap, cliprect, gfx, tile, color, flipx, flipy, sx, sy, 0);
109118      source += 4;
110119   }
111120
r6428r6429
113122
114123VIDEO_UPDATE(battlex)
115124{
116   tilemap_set_scrollx(bg_tilemap, 0, battlex_scroll_lsb | (battlex_scroll_msb << 8));
117   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
125   battlex_state *state = (battlex_state *)screen->machine->driver_data;
126
127   tilemap_set_scrollx(state->bg_tilemap, 0, state->scroll_lsb | (state->scroll_msb << 8));
128   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
118129   draw_sprites(screen->machine, bitmap, cliprect);
119130   return 0;
120131}
src/mame/video/toaplan2.c
r6428r6429
10231023               if ((toaplan2_sub_cpu == CPU_2_Z80) && (data == 3))
10241024               {
10251025                  /* HACK! When tilted, sound CPU needs to be reset. */
1026                  const device_config *ym = devtag_get_device(machine, "ym");
1026                  const device_config *ym = devtag_get_device(machine, "ymsnd");
10271027
10281028                  if (ym && (sound_get_type(ym) == SOUND_YM3812))
10291029                  {
10301030                     cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
1031                     devtag_reset(machine, "ym");
1031                     devtag_reset(machine, "ymsnd");
10321032                  }
10331033               }
10341034
src/mame/video/bankp.c
r6428r6429
77***************************************************************************/
88
99#include "driver.h"
10#include "bankp.h"
1011
11UINT8 *bankp_videoram2;
12UINT8 *bankp_colorram2;
1312
14static int scroll_x;
15static int priority;
16
17static tilemap *bg_tilemap, *fg_tilemap;
18
19
2013/***************************************************************************
2114
2215  Convert the color PROMs into a more useable format.
r6428r6429
3932  bit 0 -- 1  kohm resistor  -- RED
4033
4134***************************************************************************/
35
4236PALETTE_INIT( bankp )
4337{
4438   int i;
r6428r6429
4640   /* allocate the colortable */
4741   machine->colortable = colortable_alloc(machine, 32);
4842
49   for (i = 0;i < 32;i++)
43   for (i = 0; i < 32; i++)
5044   {
51      int bit0,bit1,bit2,r,g,b;
45      int bit0, bit1, bit2, r, g, b;
5246
5347      /* red component */
5448      bit0 = (*color_prom >> 0) & 0x01;
r6428r6429
6660      bit2 = (*color_prom >> 7) & 0x01;
6761      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
6862
69      colortable_palette_set_color(machine->colortable,i,MAKE_RGB(r,g,b));
63      colortable_palette_set_color(machine->colortable, i, MAKE_RGB(r,g,b));
7064
7165      color_prom++;
7266   }
r6428r6429
7468   /* color_prom now points to the beginning of the lookup table */
7569
7670   /* charset #1 lookup table */
77   for (i = 0;i < machine->gfx[0]->total_colors * machine->gfx[0]->color_granularity;i++)
71   for (i = 0; i < machine->gfx[0]->total_colors * machine->gfx[0]->color_granularity; i++)
7872      colortable_entry_set_value(machine->colortable, machine->gfx[0]->color_base + i, *color_prom++ & 0x0f);
7973
8074   color_prom += 128;   /* skip the bottom half of the PROM - seems to be not used */
8175
8276   /* charset #2 lookup table */
83   for (i = 0;i < machine->gfx[1]->total_colors * machine->gfx[1]->color_granularity;i++)
77   for (i = 0; i < machine->gfx[1]->total_colors * machine->gfx[1]->color_granularity; i++)
8478      colortable_entry_set_value(machine->colortable, machine->gfx[1]->color_base + i, *color_prom++ & 0x0f);
8579
8680   /* the bottom half of the PROM seems to be not used */
r6428r6429
8882
8983WRITE8_HANDLER( bankp_scroll_w )
9084{
91   scroll_x = data;
85   bankp_state *state = (bankp_state *)space->machine->driver_data;
86
87   state->scroll_x = data;
9288}
9389
9490WRITE8_HANDLER( bankp_videoram_w )
9591{
96   videoram[offset] = data;
97   tilemap_mark_tile_dirty(fg_tilemap, offset);
92   bankp_state *state = (bankp_state *)space->machine->driver_data;
93
94   state->videoram[offset] = data;
95   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
9896}
9997
10098WRITE8_HANDLER( bankp_colorram_w )
10199{
102   colorram[offset] = data;
103   tilemap_mark_tile_dirty(fg_tilemap, offset);
100   bankp_state *state = (bankp_state *)space->machine->driver_data;
101
102   state->colorram[offset] = data;
103   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
104104}
105105
106106WRITE8_HANDLER( bankp_videoram2_w )
107107{
108   bankp_videoram2[offset] = data;
109   tilemap_mark_tile_dirty(bg_tilemap, offset);
108   bankp_state *state = (bankp_state *)space->machine->driver_data;
109
110   state->videoram2[offset] = data;
111   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
110112}
111113
112114WRITE8_HANDLER( bankp_colorram2_w )
113115{
114   bankp_colorram2[offset] = data;
115   tilemap_mark_tile_dirty(bg_tilemap, offset);
116   bankp_state *state = (bankp_state *)space->machine->driver_data;
117
118   state->colorram2[offset] = data;
119   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
116120}
117121
118122WRITE8_HANDLER( bankp_out_w )
119123{
124   bankp_state *state = (bankp_state *)space->machine->driver_data;
120125   /* bits 0-1 are playfield priority */
121126   /* TODO: understand how this works */
122   priority = data & 0x03;
127   state->priority = data & 0x03;
123128
124129   /* bits 2-3 unknown (2 is used) */
125130
126131   /* bit 4 controls NMI */
127   interrupt_enable_w(space,0,(data & 0x10)>>4);
132   interrupt_enable_w(space, 0, (data & 0x10) >> 4);
128133
129134   /* bit 5 controls screen flip */
130135   flip_screen_set(space->machine, data & 0x20);
r6428r6429
134139
135140static TILE_GET_INFO( get_bg_tile_info )
136141{
137   int code = bankp_videoram2[tile_index] + 256 * (bankp_colorram2[tile_index] & 0x07);
138   int color = bankp_colorram2[tile_index] >> 4;
139   int flags = (bankp_colorram2[tile_index] & 0x08) ? TILE_FLIPX : 0;
142   bankp_state *state = (bankp_state *)machine->driver_data;
143   int code = state->videoram2[tile_index] + 256 * (state->colorram2[tile_index] & 0x07);
144   int color = state->colorram2[tile_index] >> 4;
145   int flags = (state->colorram2[tile_index] & 0x08) ? TILE_FLIPX : 0;
140146
141147   SET_TILE_INFO(1, code, color, flags);
142148   tileinfo->group = color;
r6428r6429
144150
145151static TILE_GET_INFO( get_fg_tile_info )
146152{
147   int code = videoram[tile_index] + 256 * ((colorram[tile_index] & 3) >> 0);
148   int color = colorram[tile_index] >> 3;
149   int flags = (colorram[tile_index] & 0x04) ? TILE_FLIPX : 0;
153   bankp_state *state = (bankp_state *)machine->driver_data;
154   int code = state->videoram[tile_index] + 256 * ((state->colorram[tile_index] & 3) >> 0);
155   int color = state->colorram[tile_index] >> 3;
156   int flags = (state->colorram[tile_index] & 0x04) ? TILE_FLIPX : 0;
150157
151158   SET_TILE_INFO(0, code, color, flags);
152159   tileinfo->group = color;
r6428r6429
154161
155162VIDEO_START( bankp )
156163{
157   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
158       8, 8, 32, 32);
164   bankp_state *state = (bankp_state *)machine->driver_data;
159165
160   fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,
161       8, 8, 32, 32);
166   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
167   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
162168
163   colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[1], 0);
164   colortable_configure_tilemap_groups(machine->colortable, fg_tilemap, machine->gfx[0], 0);
169   colortable_configure_tilemap_groups(machine->colortable, state->bg_tilemap, machine->gfx[1], 0);
170   colortable_configure_tilemap_groups(machine->colortable, state->fg_tilemap, machine->gfx[0], 0);
171
172   state_save_register_global(machine, state->scroll_x);
173   state_save_register_global(machine, state->priority);
165174}
166175
167176VIDEO_UPDATE( bankp )
168177{
178   bankp_state *state = (bankp_state *)screen->machine->driver_data;
179
169180   if (flip_screen_get(screen->machine))
170181   {
171      tilemap_set_scrollx(fg_tilemap, 0, -scroll_x);
172      tilemap_set_scrollx(bg_tilemap, 0, 0);
182      tilemap_set_scrollx(state->fg_tilemap, 0, -state->scroll_x);
183      tilemap_set_scrollx(state->bg_tilemap, 0, 0);
173184   }
174185   else
175186   {
176      tilemap_set_scrollx(fg_tilemap, 0, scroll_x);
177      tilemap_set_scrollx(bg_tilemap, 0, 0);
187      tilemap_set_scrollx(state->fg_tilemap, 0, state->scroll_x);
188      tilemap_set_scrollx(state->bg_tilemap, 0, 0);
178189   }
179190
180191
181192   // only one bit matters?
182   switch (priority)
193   switch (state->priority)
183194   {
184195   case 0: // combat hawk uses this
185      tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
186      tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
196      tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
197      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
187198      break;
188199   case 1:
189      tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
190      tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
200      tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
201      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
191202      break;
192203   case 2:
193      tilemap_draw(bitmap, cliprect, fg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
194      tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
204      tilemap_draw(bitmap, cliprect, state->fg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
205      tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
195206      break;
196207   case 3:
197      tilemap_draw(bitmap, cliprect, fg_tilemap, TILEMAP_DRAW_OPAQUE, 0); // just a guess
198      tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
208      tilemap_draw(bitmap, cliprect, state->fg_tilemap, TILEMAP_DRAW_OPAQUE, 0); // just a guess
209      tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
199210      break;
200211   }
201212   return 0;
src/mame/video/tetrisp2.c
r6428r6429
55                    driver by   Luca Elia (l.elia@tin.it)
66
77
8Note:   if MAME_DEBUG is defined, pressing Z with:
9
10        Q       shows the background
11        W       shows the foreground
12        A       shows the sprites
13
14        Keys can be used together!
15
16
178    [ 2 Scrolling Layers ]
189
1910    The Background is a 64 x 64 Tilemap with 16 x 16 x 8 tiles (1024 x 1024).
r6428r6429
3425
3526-   There is a 3rd unimplemented layer capable of rotation (not used by
3627    the game, can be tested in service mode).
37-   Priority RAM is not taken into account.
28-   Priority RAM is not properly taken into account.
29-   Can the Tetris Plus 2 sprites zoom, or is this an MS32 only feature?
3830
3931***************************************************************************/
4032
r6428r6429
4840UINT16 *tetrisp2_vram_fg, *tetrisp2_scroll_fg;
4941UINT16 *tetrisp2_vram_rot, *tetrisp2_rotregs;
5042
51UINT16 *tetrisp2_priority;
43UINT8 *tetrisp2_priority;
5244
5345UINT16 *rocknms_sub_vram_bg, *rocknms_sub_scroll_bg;
5446UINT16 *rocknms_sub_vram_fg, *rocknms_sub_scroll_fg;
r6428r6429
9183
9284***************************************************************************/
9385
94WRITE16_HANDLER( tetrisp2_priority_w )
86WRITE8_HANDLER( tetrisp2_priority_w )
9587{
96   if (ACCESSING_BITS_8_15)
88   //if (ACCESSING_BITS_8_15)
9789   {
9890      data |= ((data & 0xff00) >> 8);
9991      tetrisp2_priority[offset] = data;
r6428r6429
10193}
10294
10395
104WRITE16_HANDLER( rockn_priority_w )
96WRITE8_HANDLER( rockn_priority_w )
10597{
106   if (ACCESSING_BITS_8_15)
98   //if (ACCESSING_BITS_8_15)
10799   {
108100      tetrisp2_priority[offset] = data;
109101   }
r6428r6429
122114   return tetrisp2_priority[offset] | 0xff00;
123115}
124116
117READ8_HANDLER( tetrisp2_priority_r )
118{
119   return tetrisp2_priority[offset];
120}
125121
126122/***************************************************************************
127123
r6428r6429
256252
257253
258254
255extern void ms32_rearrange_sprites(running_machine *machine, const char *region);
259256
260257VIDEO_START( tetrisp2 )
261258{
r6428r6429
276273   tilemap_set_transparent_pen(tilemap_bg,0);
277274   tilemap_set_transparent_pen(tilemap_fg,0);
278275   tilemap_set_transparent_pen(tilemap_rot,0);
276
277   // should be smaller and mirrored like m32 I guess
278   tetrisp2_priority = auto_alloc_array(machine, UINT8, 0x40000);
279   ms32_rearrange_sprites(machine, "gfx1");
279280}
280281
281282VIDEO_START( nndmseal )
r6428r6429
303304   tilemap_set_transparent_pen(tilemap_bg, 0);
304305   tilemap_set_transparent_pen(tilemap_fg, 0);
305306   tilemap_set_transparent_pen(tilemap_rot, 0);
307
308   // should be smaller and mirrored like m32 I guess
309   tetrisp2_priority = auto_alloc_array(machine, UINT8, 0x40000);
310   ms32_rearrange_sprites(machine, "gfx1");
306311}
307312
308313
r6428r6429
325330   tilemap_set_transparent_pen(tilemap_sub_bg, 0);
326331   tilemap_set_transparent_pen(tilemap_sub_fg, 0);
327332   tilemap_set_transparent_pen(tilemap_sub_rot, 0);
333
334   ms32_rearrange_sprites(machine, "gfx5");
328335}
329336
330337
r6428r6429
367374
368375***************************************************************************/
369376
370static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT16 *sprram_top, size_t sprram_size, int gfxnum)
377/* this is also used by ms32.c */
378/* sprites should be able to create shadows too, how?
379  -- it appears that sprites which should be shadows are often rendered *UNDER* the tilemaps, maybe related?
380*/
381void tetrisp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, bitmap_t *bitmap_pri, const rectangle *cliprect, UINT8* priram, UINT16 *sprram_top, size_t sprram_size, int gfxnum, int reverseorder, int flip, int allowzoom)
371382{
372   int x, y, tx, ty, sx, sy, flipx, flipy;
373   int xsize, ysize, xnum, ynum;
374   int xstart, ystart, xend, yend, xinc, yinc;
383   int tx, ty, sx, sy, flipx, flipy;
384   int xsize, ysize;
375385   int code, attr, color, size;
376386   int flipscreen;
387   int pri;
388   int xzoom, yzoom;
377389   UINT32 primask;
378   UINT16 *priority_ram;
390   UINT8 *priority_ram;
391   gfx_element *gfx = machine->gfx[gfxnum];
379392
380   int min_x = cliprect->min_x;
381   int max_x = cliprect->max_x;
382   int min_y = cliprect->min_y;
383   int max_y = cliprect->max_y;
384
385393   UINT16      *source   =   sprram_top;
386   const UINT16   *finish   =   sprram_top + (sprram_size - 0x10) / 2;
394   UINT16   *finish   =   sprram_top + (sprram_size - 0x10) / 2;
387395
388   priority_ram = tetrisp2_priority;
396   flipscreen = flip;
389397
390   flipscreen = (tetrisp2_systemregs[0x00] & 0x02);
398   if (reverseorder == 1)
399   {
400      source   = sprram_top + (sprram_size - 0x10) / 2;
401      finish   = sprram_top;
402   }
391403
392   for (; source <= finish; source += 0x10/2 )
404   priority_ram = priram;
405
406
407   for (;reverseorder ? (source>=finish) : (source<finish); reverseorder ? (source-=8) : (source+=8))
393408   {
394      rectangle clip;
395
396409      attr   =   source[ 0 ];
397410
411      pri = (attr & 0x00f0);
412
398413      if ((attr & 0x0004) == 0)         continue;
399414
400415      flipx   =   attr & 1;
r6428r6429
406421      tx      =   (code >> 0) & 0xff;
407422      ty      =   (code >> 8) & 0xff;
408423
409      code   =   (tx / 8) +
410               (ty / 8) * (0x100/8) +
411               (color & 0x7f) * (0x100/8) * (0x100/8);
424      code   =   (color & 0x0fff);
412425
413426      color   =   (color >> 12) & 0xf;
414427
r6428r6429
417430      xsize   =   ((size >> 0) & 0xff) + 1;
418431      ysize   =   ((size >> 8) & 0xff) + 1;
419432
420      xnum   =   ( ((tx + xsize) & ~7) + (((tx + xsize) & 7) ? 8 : 0) - (tx & ~7) ) / 8;
421      ynum   =   ( ((ty + ysize) & ~7) + (((ty + ysize) & 7) ? 8 : 0) - (ty & ~7) ) / 8;
422
423433      sy      =   source[ 4 ];
424434      sx      =   source[ 5 ];
425435
426436      sx      =   (sx & 0x3ff) - (sx & 0x400);
427437      sy      =   (sy & 0x1ff) - (sy & 0x200);
428438
429      /* Flip Screen */
430      if (flipscreen)
439      xzoom   =   (source[ 6 ]&0xffff);
440      yzoom   =   (source[ 7 ]&0xffff);
441
442      // tetrisp2 hardware doesn't work with zoom?
443      if (allowzoom)
431444      {
432         sx = max_x + 1 - sx - xsize;   flipx = !flipx;
433         sy = max_y + 1 - sy - ysize;   flipy = !flipy;
445         if (!yzoom || !xzoom)
446            continue;
447
448         yzoom = 0x1000000/yzoom;
449         xzoom = 0x1000000/xzoom;
434450      }
451      else
452      {
453         xzoom = 0x10000;
454         yzoom = 0x10000;
455      }
435456
436      /* Clip the sprite if its width or height is not an integer
437           multiple of 8 pixels (1 tile) */
438457
439      clip.min_x   =   sx;
440      clip.max_x   =   sx + xsize - 1;
441      clip.min_y   =   sy;
442      clip.max_y   =   sy + ysize - 1;
458      gfx_element_set_source_clip(gfx, tx, xsize, ty, ysize);
443459
444      if (clip.min_x > max_x)   continue;
445      if (clip.max_x < min_x)   continue;
460      if (priority_ram == NULL)
461      {
462         // passes the priority as the upper bits of the colour
463         // for post-processing in mixer instead
464         pdrawgfxzoom_transpen_raw(bitmap, cliprect, gfx,
465               code,
466               color<<8 | pri<<8,
467               flipx, flipy,
468               sx,sy,
469               xzoom, yzoom, bitmap_pri,0, 0);
470      }
471      else
472      {
473         primask = 0;
474         if (priority_ram[(pri | 0x0a00 | 0x1500) / 2] & 0x38) primask |= 1 << 0;
475         if (priority_ram[(pri | 0x0a00 | 0x1400) / 2] & 0x38) primask |= 1 << 1;
476         if (priority_ram[(pri | 0x0a00 | 0x1100) / 2] & 0x38) primask |= 1 << 2;
477         if (priority_ram[(pri | 0x0a00 | 0x1000) / 2] & 0x38) primask |= 1 << 3;
478         if (priority_ram[(pri | 0x0a00 | 0x0500) / 2] & 0x38) primask |= 1 << 4;
479         if (priority_ram[(pri | 0x0a00 | 0x0400) / 2] & 0x38) primask |= 1 << 5;
480         if (priority_ram[(pri | 0x0a00 | 0x0100) / 2] & 0x38) primask |= 1 << 6;
481         if (priority_ram[(pri | 0x0a00 | 0x0000) / 2] & 0x38) primask |= 1 << 7;
446482
447      if (clip.min_y > max_y)   continue;
448      if (clip.max_y < min_y)   continue;
449483
450      if (clip.min_x < min_x)   clip.min_x = min_x;
451      if (clip.max_x > max_x)   clip.max_x = max_x;
484         pdrawgfxzoom_transpen(bitmap, cliprect, gfx,
485               code,
486               color,
487               flipx, flipy,
488               sx,sy,
489               xzoom, yzoom, bitmap_pri,primask, 0);
452490
453      if (clip.min_y < min_y)   clip.min_y = min_y;
454      if (clip.max_y > max_y)   clip.max_y = max_y;
491      }
455492
456      if (flipx)   { xstart = xnum-1;  xend = -1;    xinc = -1;  sx -= xnum*8 - xsize - (tx & 7); }
457      else      { xstart = 0;       xend = xnum;  xinc = +1;  sx -= tx & 7; }
458493
459      if (flipy)   { ystart = ynum-1;  yend = -1;    yinc = -1;  sy -= ynum*8 - ysize - (ty & 7); }
460      else      { ystart = 0;       yend = ynum;  yinc = +1;  sy -= ty & 7; }
461
462      primask = 0;
463      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x1500) / 2] & 0x38) primask |= 1 << 0;
464      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x1400) / 2] & 0x38) primask |= 1 << 1;
465      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x1100) / 2] & 0x38) primask |= 1 << 2;
466      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x1000) / 2] & 0x38) primask |= 1 << 3;
467      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x0500) / 2] & 0x38) primask |= 1 << 4;
468      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x0400) / 2] & 0x38) primask |= 1 << 5;
469      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x0100) / 2] & 0x38) primask |= 1 << 6;
470      if (priority_ram[((attr & 0x00f0) | 0x0a00 | 0x0000) / 2] & 0x38) primask |= 1 << 7;
471
472      for (y = ystart; y != yend; y += yinc)
473      {
474         for (x = xstart; x != xend; x += xinc)
475         {
476            pdrawgfx_transpen(bitmap, &clip,
477                  machine->gfx[gfxnum],
478                  code++,
479                  color,
480                  flipx, flipy,
481                  sx + x * 8, sy + y * 8,
482                  machine->priority_bitmap, primask, 0);
483         }
484         code   +=   (0x100/8) - xnum;
485      }
486494   }   /* end sprite loop */
487495}
488496
r6428r6429
575583   else if (asc_pri == 2)
576584      tilemap_draw(bitmap,cliprect, tilemap_fg,  0, 1 << 2);
577585
578   draw_sprites(screen->machine, bitmap,cliprect, spriteram16, spriteram_size, 0);
586   tetrisp2_draw_sprites(screen->machine, bitmap,screen->machine->priority_bitmap, cliprect, tetrisp2_priority, spriteram16, spriteram_size, 0, 0, (tetrisp2_systemregs[0x00] & 0x02), 0);
579587   return 0;
580588}
581589
r6428r6429
659667   else if (asc_pri == 2)
660668      tilemap_draw(bitmap,cliprect, tilemap_fg,  0, 1 << 2);
661669
662   draw_sprites(screen->machine, bitmap,cliprect, spriteram16, spriteram_size, 0);
670   tetrisp2_draw_sprites(screen->machine, bitmap,screen->machine->priority_bitmap,cliprect, tetrisp2_priority, spriteram16, spriteram_size, 0, 0, (tetrisp2_systemregs[0x00] & 0x02), 0);
663671   return 0;
664672}
665673
r6428r6429
726734      else if (asc_pri == 2)
727735         tilemap_draw(bitmap,cliprect, tilemap_sub_fg,  0, 1 << 2);
728736
729      draw_sprites(screen->machine, bitmap,cliprect, spriteram16_2, spriteram_2_size, 4);
737      tetrisp2_draw_sprites(screen->machine, bitmap,screen->machine->priority_bitmap,cliprect, tetrisp2_priority, spriteram16_2, spriteram_2_size, 4, 0, (tetrisp2_systemregs[0x00] & 0x02), 0);
730738   }
731739   else if (screen == right_screen) /* game screen */
732740   {
r6428r6429
779787      else if (asc_pri == 2)
780788         tilemap_draw(bitmap,cliprect, tilemap_fg,  0, 1 << 2);
781789
782      draw_sprites(screen->machine, bitmap,cliprect, spriteram16, spriteram_size, 0);
790      tetrisp2_draw_sprites(screen->machine, bitmap,screen->machine->priority_bitmap,cliprect, tetrisp2_priority, spriteram16, spriteram_size, 0, 0, (tetrisp2_systemregs[0x00] & 0x02), 0);
783791   }
784792
785793   return 0;
src/mame/video/dec0.c
r6428r6429
229229   int column_offset=0, src_x=0, src_y=0;
230230   UINT32 scrollx=control1[0];
231231   UINT32 scrolly=control1[1];
232   int width_mask = src_bitmap->width - 1;
233   int height_mask = src_bitmap->height - 1;
232   int width_mask;
233   int height_mask;
234234   int row_scroll_enabled = (rowscroll_ptr && (control0[0]&0x4));
235235   int col_scroll_enabled = (colscroll_ptr && (control0[0]&0x8));
236236
237237   if (!src_bitmap)
238238      return;
239239
240   width_mask = src_bitmap->width - 1;
241   height_mask = src_bitmap->height - 1;
242
240243   /* Column scroll & row scroll may per applied per pixel, there are
241244    shift registers for each which control the granularity of the row/col
242245    offset (down to per line level for row, and per 8 lines for column).
src/mame/video/tceptor.c
r6428r6429
534534   int pri;
535535   int bg_center = 144 - ((((bg1_scroll_x + bg2_scroll_x ) & 0x1ff) - 288) / 2);
536536
537   const device_config *_2d_screen       = devtag_get_device(screen->machine, "2d");
537   const device_config *_2d_screen       = devtag_get_device(screen->machine, "2dscreen");
538538   const device_config *_3d_left_screen  = devtag_get_device(screen->machine, "3dleft");
539539   const device_config *_3d_right_screen = devtag_get_device(screen->machine, "3dright");
540540
src/mame/video/angelkds.c
r6428r6429
77*/
88
99#include "driver.h"
10#include "angelkds.h"
1011
1112
12static tilemap *tx_tilemap,*bgbot_tilemap ,*bgtop_tilemap;
13
14UINT8 *angelkds_txvideoram, *angelkds_bgbotvideoram, *angelkds_bgtopvideoram;
15
16static int angelkds_txbank;
17static int angelkds_bgbotbank;
18static int angelkds_bgtopbank;
19
2013/*** Text Layer Tilemap
2114
2215*/
2316
2417static TILE_GET_INFO( get_tx_tile_info )
2518{
19   angelkds_state *state = (angelkds_state *)machine->driver_data;
2620   int tileno;
2721
28   tileno = angelkds_txvideoram[tile_index] + (angelkds_txbank * 0x100);
29
30   SET_TILE_INFO(0,tileno,0,0);
22   tileno = state->txvideoram[tile_index] + (state->txbank * 0x100);
23   SET_TILE_INFO(0, tileno, 0, 0);
3124}
3225
3326WRITE8_HANDLER( angelkds_txvideoram_w )
3427{
35   angelkds_txvideoram[offset] = data;
36   tilemap_mark_tile_dirty(tx_tilemap,offset);
28   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
29
30   state->txvideoram[offset] = data;
31   tilemap_mark_tile_dirty(state->tx_tilemap, offset);
3732}
3833
3934WRITE8_HANDLER( angelkds_txbank_write )
4035{
36   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
4137
42if (angelkds_txbank != data)
38   if (state->txbank != data)
4339   {
44   angelkds_txbank = data;
45   tilemap_mark_all_tiles_dirty (tx_tilemap);
46   };
47
40      state->txbank = data;
41      tilemap_mark_all_tiles_dirty(state->tx_tilemap);
42   }
4843}
4944
5045/*** Top Half Background Tilemap
r6428r6429
5348
5449static TILE_GET_INFO( get_bgtop_tile_info )
5550{
51   angelkds_state *state = (angelkds_state *)machine->driver_data;
5652   int tileno;
5753
58   tileno = angelkds_bgtopvideoram[tile_index];
54   tileno = state->bgtopvideoram[tile_index];
5955
60   tileno += angelkds_bgtopbank*0x100 ;
61   SET_TILE_INFO(1,tileno,0,0);
56   tileno += state->bgtopbank * 0x100 ;
57   SET_TILE_INFO(1, tileno, 0, 0);
6258}
6359
6460WRITE8_HANDLER( angelkds_bgtopvideoram_w )
6561{
66   angelkds_bgtopvideoram[offset] = data;
67   tilemap_mark_tile_dirty(bgtop_tilemap,offset);
62   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
63
64   state->bgtopvideoram[offset] = data;
65   tilemap_mark_tile_dirty(state->bgtop_tilemap, offset);
6866}
6967
7068WRITE8_HANDLER( angelkds_bgtopbank_write )
7169{
70   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
7271
73if (angelkds_bgtopbank != data)
72   if (state->bgtopbank != data)
7473   {
75   angelkds_bgtopbank = data;
76   tilemap_mark_all_tiles_dirty (bgtop_tilemap);
77   };
78
74      state->bgtopbank = data;
75      tilemap_mark_all_tiles_dirty(state->bgtop_tilemap);
76   }
7977}
8078
8179WRITE8_HANDLER( angelkds_bgtopscroll_write )
8280{
83   tilemap_set_scrollx(bgtop_tilemap, 0, data );
81   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
82
83   tilemap_set_scrollx(state->bgtop_tilemap, 0, data);
8484}
8585
8686/*** Bottom Half Background Tilemap
r6428r6429
8989
9090static TILE_GET_INFO( get_bgbot_tile_info )
9191{
92   angelkds_state *state = (angelkds_state *)machine->driver_data;
9293   int tileno;
9394
94   tileno = angelkds_bgbotvideoram[tile_index];
95   tileno = state->bgbotvideoram[tile_index];
9596
96   tileno += angelkds_bgbotbank * 0x100 ;
97   SET_TILE_INFO(2,tileno,1,0);
97   tileno += state->bgbotbank * 0x100 ;
98   SET_TILE_INFO(2, tileno, 1, 0);
9899}
99100
100101WRITE8_HANDLER( angelkds_bgbotvideoram_w )
101102{
102   angelkds_bgbotvideoram[offset] = data;
103   tilemap_mark_tile_dirty(bgbot_tilemap,offset);
103   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
104
105   state->bgbotvideoram[offset] = data;
106   tilemap_mark_tile_dirty(state->bgbot_tilemap, offset);
104107}
105108
106109
107110WRITE8_HANDLER( angelkds_bgbotbank_write )
108111{
112   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
109113
110if (angelkds_bgbotbank != data)
114   if (state->bgbotbank != data)
111115   {
112   angelkds_bgbotbank = data;
113   tilemap_mark_all_tiles_dirty (bgbot_tilemap);
114   };
115
116      state->bgbotbank = data;
117      tilemap_mark_all_tiles_dirty(state->bgbot_tilemap);
118   }
116119}
117120
118121WRITE8_HANDLER( angelkds_bgbotscroll_write )
119122{
120   tilemap_set_scrollx(bgbot_tilemap, 0, data );
123   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
124
125   tilemap_set_scrollx(state->bgbot_tilemap, 0, data);
121126}
122127
123static UINT8 angelkds_layer_ctrl;
124128
125129WRITE8_HANDLER( angelkds_layer_ctrl_write )
126130{
127   angelkds_layer_ctrl = data;
131   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
132
133   state->layer_ctrl = data;
128134}
129135
130136/*** Sprites
r6428r6429
136142
137143static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int enable_n)
138144{
139   const UINT8 *source = spriteram+0x100-4;
140   const UINT8 *finish = spriteram;
145   angelkds_state *state = (angelkds_state *)machine->driver_data;
146   const UINT8 *source = state->spriteram + 0x100 - 4;
147   const UINT8 *finish = state->spriteram;
141148   const gfx_element *gfx = machine->gfx[3];
142149
143   while( source>=finish )
150   while (source >= finish)
144151   {
145152   /*
146153
r6428r6429
158165    x = X position
159166
160167    */
168      UINT16 tile_no = source[0];
169      UINT8 attr = source[1];
170      UINT8 ypos = source[2];
171      UINT8 xpos = source[3];
161172
173      UINT8 enable = attr & 0xc0;
174      UINT8 flipx = (attr & 0x10) >> 4;
175      UINT8 flipy = (attr & 0x20) >> 5;
176      UINT8 bank = attr & 0x08;
177      UINT8 color = attr & 0x03;
162178
163   UINT16 tile_no = source[0];
164   UINT8 attr = source[1];
165   UINT8 ypos = source[2];
166   UINT8 xpos = source[3];
179      if (bank)
180         tile_no += 0x100;
167181
168   UINT8 enable = attr & 0xc0;
169   UINT8 flipx = (attr & 0x10) >> 4;
170   UINT8 flipy = (attr & 0x20) >> 5;
171   UINT8 bank = attr & 0x08;
172   UINT8 color = attr & 0x03;
182      ypos = 0xff - ypos;
173183
174   if (bank) tile_no +=0x100;
175
176   ypos= 0xff-ypos;
177
178   if (enable & enable_n)
179   {
184      if (enable & enable_n)
185      {
180186         drawgfx_transpen(
181187               bitmap,
182188               cliprect,
r6428r6429
211217                  );
212218            /* wraparound */
213219            if (xpos > 240)
214                     drawgfx_transpen(
215                           bitmap,
216                           cliprect,
217                           gfx,
218                           tile_no,
219                           color*4,
220                           flipx,flipy,
221                           xpos-256,ypos-256,15
222                           );
220               drawgfx_transpen(
221                     bitmap,
222                     cliprect,
223                     gfx,
224                     tile_no,
225                     color*4,
226                     flipx,flipy,
227                     xpos-256,ypos-256,15
228                     );
223229         }
230      }
224231
232      source -= 0x04;
225233   }
226234
227   source-=0x04;
228
229   }
230
231235}
232236
233237
r6428r6429
239243
240244WRITE8_HANDLER( angelkds_paletteram_w )
241245{
246   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
242247   int no;
243248
249   state->paletteram[offset] = data;
244250
245   paletteram[offset] = data;
246
247   no=offset & 0xff;
248   palette_set_color_rgb(space->machine,no,pal4bit(paletteram[no]),pal4bit(paletteram[no]>>4),pal4bit(paletteram[no+0x100]));
251   no = offset & 0xff;
252   palette_set_color_rgb(space->machine, no, pal4bit(state->paletteram[no]), pal4bit(state->paletteram[no]>>4), pal4bit(state->paletteram[no + 0x100]));
249253}
250254
251255/*** Video Start & Update
r6428r6429
254258
255259VIDEO_START( angelkds )
256260{
261   angelkds_state *state = (angelkds_state *)machine->driver_data;
257262
258   tx_tilemap = tilemap_create(machine, get_tx_tile_info,tilemap_scan_rows, 8, 8,32,32);
259   tilemap_set_transparent_pen(tx_tilemap,0);
263   state->tx_tilemap = tilemap_create(machine, get_tx_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
264   tilemap_set_transparent_pen(state->tx_tilemap, 0);
260265
261   bgbot_tilemap = tilemap_create(machine, get_bgbot_tile_info,tilemap_scan_rows, 8, 8,32,32);
262   tilemap_set_transparent_pen(bgbot_tilemap,15);
266   state->bgbot_tilemap = tilemap_create(machine, get_bgbot_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
267   tilemap_set_transparent_pen(state->bgbot_tilemap, 15);
263268
264   bgtop_tilemap = tilemap_create(machine, get_bgtop_tile_info,tilemap_scan_rows, 8, 8,32,32);
265   tilemap_set_transparent_pen(bgtop_tilemap,15);
266
267    state_save_register_global(machine, angelkds_txbank);
268    state_save_register_global(machine, angelkds_bgbotbank);
269    state_save_register_global(machine, angelkds_bgtopbank);
269   state->bgtop_tilemap = tilemap_create(machine, get_bgtop_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
270   tilemap_set_transparent_pen(state->bgtop_tilemap, 15);
270271}
271272
272273/* enable bits are uncertain */
273274
274275VIDEO_UPDATE( angelkds )
275276{
277   angelkds_state *state = (angelkds_state *)screen->machine->driver_data;
276278   const rectangle *visarea = video_screen_get_visible_area(screen);
277279   rectangle clip;
278280
279   bitmap_fill(bitmap,cliprect,0x3f); /* is there a register controling the colour?, we currently use the last colour of the tx palette */
281   bitmap_fill(bitmap, cliprect, 0x3f); /* is there a register controling the colour?, we currently use the last colour of the tx palette */
280282
281283   /* draw top of screen */
282284   clip.min_x = 8*0;
283285   clip.max_x = 8*16-1;
284286   clip.min_y = visarea->min_y;
285287   clip.max_y = visarea->max_y;
286   if ((angelkds_layer_ctrl & 0x80) == 0x00) tilemap_draw(bitmap,&clip,bgtop_tilemap,0,0);
287   draw_sprites(screen->machine, bitmap,&clip, 0x80);
288   if ((angelkds_layer_ctrl & 0x20) == 0x00) tilemap_draw(bitmap,&clip,tx_tilemap,0,0);
289288
289   if ((state->layer_ctrl & 0x80) == 0x00)
290      tilemap_draw(bitmap, &clip, state->bgtop_tilemap, 0, 0);
291
292   draw_sprites(screen->machine, bitmap, &clip, 0x80);
293
294   if ((state->layer_ctrl & 0x20) == 0x00)
295      tilemap_draw(bitmap, &clip, state->tx_tilemap, 0, 0);
296
290297   /* draw bottom of screen */
291298   clip.min_x = 8*16;
292299   clip.max_x = 8*32-1;
293300   clip.min_y = visarea->min_y;
294301   clip.max_y = visarea->max_y;
295   if ((angelkds_layer_ctrl & 0x40) == 0x00) tilemap_draw(bitmap,&clip,bgbot_tilemap,0,0);
296   draw_sprites(screen->machine, bitmap,&clip, 0x40);
297   if ((angelkds_layer_ctrl & 0x20) == 0x00) tilemap_draw(bitmap,&clip,tx_tilemap,0,0);
302
303   if ((state->layer_ctrl & 0x40) == 0x00)
304      tilemap_draw(bitmap, &clip, state->bgbot_tilemap, 0, 0);
305
306   draw_sprites(screen->machine, bitmap, &clip, 0x40);
307
308   if ((state->layer_ctrl & 0x20) == 0x00)
309      tilemap_draw(bitmap, &clip, state->tx_tilemap, 0, 0);
310
298311   return 0;
299312}
src/mame/video/m52.c
r6428r6429
55***************************************************************************/
66
77#include "driver.h"
8#include "m52.h"
8#include "includes/iremz80.h"
99#include "video/resnet.h"
1010
1111#define BGHEIGHT 64
1212
13static UINT8 bg1xpos;
14static UINT8 bg1ypos;
15static UINT8 bg2xpos;
16static UINT8 bg2ypos;
17static UINT8 bgcontrol;
1813
19static tilemap* bg_tilemap;
20
21
2214/*************************************
2315 *
2416 *  Palette configuration
r6428r6429
3628   double weights_r[3], weights_g[3], weights_b[3], scale;
3729   int i;
3830
39   machine->colortable = colortable_alloc(machine, 512+32+32);
31   machine->colortable = colortable_alloc(machine, 512 + 32 + 32);
4032
4133   /* compute palette information for characters/backgrounds */
4234   scale = compute_resistor_weights(0,   255, -1.0,
r6428r6429
8072      int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
8173      int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2));
8274
83      colortable_palette_set_color(machine->colortable, 512+32+i, MAKE_RGB(r,g,b));
75      colortable_palette_set_color(machine->colortable, 512 + 32 + i, MAKE_RGB(r,g,b));
8476   }
8577
8678   /* character lookup table */
r6428r6429
8880      colortable_entry_set_value(machine->colortable, i, i);
8981
9082   /* sprite lookup table */
91   for (i = 0; i < 16*4; i++)
83   for (i = 0; i < 16 * 4; i++)
9284   {
9385      UINT8 promval = sprite_table[(i & 3) | ((i & ~3) << 1)];
94      colortable_entry_set_value(machine->colortable, 512+i, 512+32+promval);
86      colortable_entry_set_value(machine->colortable, 512 + i, 512 + 32 + promval);
9587   }
9688
9789   /* background */
r6428r6429
124116
125117static TILE_GET_INFO( get_tile_info )
126118{
127   UINT8 video = videoram[tile_index];
128   UINT8 color = colorram[tile_index];
119   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
120   UINT8 video = state->videoram[tile_index];
121   UINT8 color = state->colorram[tile_index];
129122
130123   int flag = 0;
131124   int code = 0;
r6428r6429
155148
156149VIDEO_START( m52 )
157150{
158   bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
151   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
159152
160   tilemap_set_transparent_pen(bg_tilemap, 0);
161   tilemap_set_scrolldx(bg_tilemap, 128 - 1, -1);
162   tilemap_set_scrolldy(bg_tilemap, 16, 16);
163   tilemap_set_scroll_rows(bg_tilemap, 4); /* only lines 192-256 scroll */
153   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
164154
165   state_save_register_global(machine, bg1xpos);
166   state_save_register_global(machine, bg1ypos);
167   state_save_register_global(machine, bg2xpos);
168   state_save_register_global(machine, bg2ypos);
169   state_save_register_global(machine, bgcontrol);
155   tilemap_set_transparent_pen(state->bg_tilemap, 0);
156   tilemap_set_scrolldx(state->bg_tilemap, 128 - 1, -1);
157   tilemap_set_scrolldy(state->bg_tilemap, 16, 16);
158   tilemap_set_scroll_rows(state->bg_tilemap, 4); /* only lines 192-256 scroll */
159
160   state_save_register_global(machine, state->bg1xpos);
161   state_save_register_global(machine, state->bg1ypos);
162   state_save_register_global(machine, state->bg2xpos);
163   state_save_register_global(machine, state->bg2ypos);
164   state_save_register_global(machine, state->bgcontrol);
170165}
171166
172167
r6428r6429
179174
180175WRITE8_HANDLER( m52_scroll_w )
181176{
182
177   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
183178/*
184179    According to the schematics there is only one video register that holds the X scroll value
185180    with a NAND gate on the V64 and V128 lines to control when it's read, and when
r6428r6429
187182
188183    So we set the first 3 quarters to 255 and the last to the scroll value
189184*/
190   tilemap_set_scrollx(bg_tilemap, 0, 255);
191   tilemap_set_scrollx(bg_tilemap, 1, 255);
192   tilemap_set_scrollx(bg_tilemap, 2, 255);
193   tilemap_set_scrollx(bg_tilemap, 3, -data);
185   tilemap_set_scrollx(state->bg_tilemap, 0, 255);
186   tilemap_set_scrollx(state->bg_tilemap, 1, 255);
187   tilemap_set_scrollx(state->bg_tilemap, 2, 255);
188   tilemap_set_scrollx(state->bg_tilemap, 3, -data);
194189}
195190
196191
r6428r6429
203198
204199WRITE8_HANDLER( m52_videoram_w )
205200{
206   videoram[offset] = data;
207   tilemap_mark_tile_dirty(bg_tilemap, offset);
201   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
202
203   state->videoram[offset] = data;
204   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
208205}
209206
210207
211208WRITE8_HANDLER( m52_colorram_w )
212209{
213   colorram[offset] = data;
214   tilemap_mark_tile_dirty(bg_tilemap, offset);
210   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
211
212   state->colorram[offset] = data;
213   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
215214}
216215
217216
r6428r6429
227226   follows: result = popcount(value & 0x7f) ^ (value >> 7) */
228227READ8_HANDLER( m52_protection_r )
229228{
229   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
230230   int popcount = 0;
231231   int temp;
232232
233   for (temp = bg1xpos & 0x7f; temp != 0; temp >>= 1)
233   for (temp = state->bg1xpos & 0x7f; temp != 0; temp >>= 1)
234234      popcount += temp & 1;
235   return popcount ^ (bg1xpos >> 7);
235   return popcount ^ (state->bg1xpos >> 7);
236236}
237237
238238
r6428r6429
245245
246246WRITE8_HANDLER( m52_bg1ypos_w )
247247{
248   bg1ypos = data;
248   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
249   state->bg1ypos = data;
249250}
250251
251252WRITE8_HANDLER( m52_bg1xpos_w )
252253{
253   bg1xpos = data;
254   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
255   state->bg1xpos = data;
254256}
255257
256258WRITE8_HANDLER( m52_bg2xpos_w )
257259{
258   bg2xpos = data;
260   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
261   state->bg2xpos = data;
259262}
260263
261264WRITE8_HANDLER( m52_bg2ypos_w )
262265{
263   bg2ypos = data;
266   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
267   state->bg2ypos = data;
264268}
265269
266270WRITE8_HANDLER( m52_bgcontrol_w )
267271{
268   bgcontrol = data;
272   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
273   state->bgcontrol = data;
269274}
270275
271276
r6428r6429
357362
358363VIDEO_UPDATE( m52 )
359364{
365   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
360366   int offs;
361367
362368   bitmap_fill(bitmap, cliprect, 0);
363369
364   if (!(bgcontrol & 0x20))
370   if (!(state->bgcontrol & 0x20))
365371   {
366      if (!(bgcontrol & 0x10))
367         draw_background(screen->machine, bitmap, cliprect, bg2xpos, bg2ypos, 2); /* distant mountains */
372      if (!(state->bgcontrol & 0x10))
373         draw_background(screen->machine, bitmap, cliprect, state->bg2xpos, state->bg2ypos, 2); /* distant mountains */
368374
369      if (!(bgcontrol & 0x02))
370         draw_background(screen->machine, bitmap, cliprect, bg1xpos, bg1ypos, 3); /* hills */
375      if (!(state->bgcontrol & 0x02))
376         draw_background(screen->machine, bitmap, cliprect, state->bg1xpos, state->bg1ypos, 3); /* hills */
371377
372      if (!(bgcontrol & 0x04))
373         draw_background(screen->machine, bitmap, cliprect, bg1xpos, bg1ypos, 4); /* cityscape */
378      if (!(state->bgcontrol & 0x04))
379         draw_background(screen->machine, bitmap, cliprect, state->bg1xpos, state->bg1ypos, 4); /* cityscape */
374380   }
375381
376   tilemap_set_flip(bg_tilemap, flip_screen_get(screen->machine) ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
382   tilemap_set_flip(state->bg_tilemap, flip_screen_get(screen->machine) ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
377383
378   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
384   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
379385
380386   /* draw the sprites */
381387   for (offs = 0xfc; offs >= 0; offs -= 4)
382388   {
383      int sy = 257 - spriteram[offs];
384      int color = spriteram[offs + 1] & 0x3f;
385      int flipx = spriteram[offs + 1] & 0x40;
386      int flipy = spriteram[offs + 1] & 0x80;
387      int code = spriteram[offs + 2];
388      int sx = spriteram[offs + 3];
389      int sy = 257 - state->spriteram[offs];
390      int color = state->spriteram[offs + 1] & 0x3f;
391      int flipx = state->spriteram[offs + 1] & 0x40;
392      int flipy = state->spriteram[offs + 1] & 0x80;
393      int code = state->spriteram[offs + 2];
394      int sx = state->spriteram[offs + 3];
389395      rectangle clip;
390396
391397      /* sprites from offsets $00-$7F are processed in the upper half of the frame */
r6428r6429
419425
420426      drawgfx_transmask(bitmap, &clip, screen->machine->gfx[1],
421427         code, color, flipx, flipy, sx, sy,
422         colortable_get_transpen_mask(screen->machine->colortable, screen->machine->gfx[1], color, 512+32));
428         colortable_get_transpen_mask(screen->machine->colortable, screen->machine->gfx[1], color, 512 + 32));
423429   }
424430   return 0;
425431}
src/mame/video/n8080.c
r6428r6429
77#include "driver.h"
88#include "includes/n8080.h"
99
10int spacefev_red_screen;
11int spacefev_red_cannon;
1210
13int helifire_flash;
14
15static emu_timer* cannon_timer;
16
17static int sheriff_color_mode;
18static int sheriff_color_data;
19
20static UINT8 helifire_LSFR[63];
21
22static unsigned helifire_mv;
23static unsigned helifire_sc; /* IC56 */
24
25
2611WRITE8_HANDLER( n8080_video_control_w )
2712{
28   sheriff_color_mode = (data >> 3) & 3;
29   sheriff_color_data = (data >> 0) & 7;
13   n8080_state *state = (n8080_state *)space->machine->driver_data;
3014
15   state->sheriff_color_mode = (data >> 3) & 3;
16   state->sheriff_color_data = (data >> 0) & 7;
3117   flip_screen_set_no_update(space->machine, data & 0x20);
3218}
3319
r6428r6429
3723   int i;
3824
3925   for (i = 0; i < 8; i++)
40      palette_set_color_rgb(machine,i,pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2));
26      palette_set_color_rgb(machine, i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
4127}
4228
4329
r6428r6429
5137   {
5238      int level = 0xff * exp(-3 * i / 255.); /* capacitor discharge */
5339
54      palette_set_color(machine,0x000 + 8 + i, MAKE_RGB(0x00, 0x00, level));   /* shades of blue */
55      palette_set_color(machine,0x100 + 8 + i, MAKE_RGB(0x00, 0xC0, level));   /* shades of blue w/ green star */
40      palette_set_color(machine, 0x000 + 8 + i, MAKE_RGB(0x00, 0x00, level));   /* shades of blue */
41      palette_set_color(machine, 0x100 + 8 + i, MAKE_RGB(0x00, 0xC0, level));   /* shades of blue w/ green star */
5642
57      palette_set_color(machine,0x200 + 8 + i, MAKE_RGB(level, 0x00, 0x00));   /* shades of red */
58      palette_set_color(machine,0x300 + 8 + i, MAKE_RGB(level, 0xC0, 0x00));   /* shades of red w/ green star */
43      palette_set_color(machine, 0x200 + 8 + i, MAKE_RGB(level, 0x00, 0x00));   /* shades of red */
44      palette_set_color(machine, 0x300 + 8 + i, MAKE_RGB(level, 0xC0, 0x00));   /* shades of red w/ green star */
5945   }
6046}
6147
6248
63void spacefev_start_red_cannon(running_machine *machine)
49void spacefev_start_red_cannon( running_machine *machine )
6450{
65   spacefev_red_cannon = 1;
51   n8080_state *state = (n8080_state *)machine->driver_data;
6652
67   timer_adjust_oneshot(cannon_timer, ATTOTIME_IN_USEC(550 * 68 * 10), 0);
53   state->spacefev_red_cannon = 1;
54   timer_adjust_oneshot(state->cannon_timer, ATTOTIME_IN_USEC(550 * 68 * 10), 0);
6855}
6956
7057
7158static TIMER_CALLBACK( spacefev_stop_red_cannon )
7259{
73   spacefev_red_cannon = 0;
60   n8080_state *state = (n8080_state *)machine->driver_data;
7461
75   timer_adjust_oneshot(cannon_timer, attotime_never, 0);
62   state->spacefev_red_cannon = 0;
63   timer_adjust_oneshot(state->cannon_timer, attotime_never, 0);
7664}
7765
7866
79static void helifire_next_line(running_machine *machine)
67static void helifire_next_line( running_machine *machine )
8068{
81   helifire_mv++;
69   n8080_state *state = (n8080_state *)machine->driver_data;
8270
83   if (helifire_sc % 4 == 2)
71   state->helifire_mv++;
72
73   if (state->helifire_sc % 4 == 2)
8474   {
85      helifire_mv %= 256;
75      state->helifire_mv %= 256;
8676   }
8777   else
8878   {
8979      if (flip_screen_get(machine))
90      {
91         helifire_mv %= 255;
92      }
80         state->helifire_mv %= 255;
9381      else
94      {
95         helifire_mv %= 257;
96      }
82         state->helifire_mv %= 257;
9783   }
9884
99   if (helifire_mv == 128)
85   if (state->helifire_mv == 128)
10086   {
101      helifire_sc++;
87      state->helifire_sc++;
10288   }
10389}
10490
10591
10692VIDEO_START( spacefev )
10793{
108   cannon_timer = timer_alloc(machine, spacefev_stop_red_cannon, NULL);
94   n8080_state *state = (n8080_state *)machine->driver_data;
10995
96   state->cannon_timer = timer_alloc(machine, spacefev_stop_red_cannon, NULL);
97
11098   flip_screen_set_no_update(machine, 0);
11199
112   spacefev_red_screen = 0;
113   spacefev_red_cannon = 0;
100   state_save_register_global(machine, state->spacefev_red_screen);
101   state_save_register_global(machine, state->spacefev_red_cannon);
114102}
115103
116104
117105VIDEO_START( sheriff )
118106{
107   n8080_state *state = (n8080_state *)machine->driver_data;
108
119109   flip_screen_set_no_update(machine, 0);
120110
121   sheriff_color_mode = 0;
122   sheriff_color_data = 0;
111   state_save_register_global(machine, state->sheriff_color_mode);
112   state_save_register_global(machine, state->sheriff_color_data);
123113}
124114
125115
126116VIDEO_START( helifire )
127117{
118   n8080_state *state = (n8080_state *)machine->driver_data;
128119   UINT8 data = 0;
129
130120   int i;
131121
132   helifire_mv = 0;
133   helifire_sc = 0;
122   state_save_register_global(machine, state->helifire_mv);
123   state_save_register_global(machine, state->helifire_sc);
124   state_save_register_global(machine, state->helifire_flash);
125   state_save_register_global_array(machine, state->helifire_LSFR);
134126
135127   for (i = 0; i < 63; i++)
136128   {
r6428r6429
140132
141133      data = (data << 1) | (bit & 1);
142134
143      helifire_LSFR[i] = data;
135      state->helifire_LSFR[i] = data;
144136   }
145137
146138   flip_screen_set_no_update(machine, 0);
147
148   helifire_flash = 0;
149139}
150140
151141
152142VIDEO_UPDATE( spacefev )
153143{
144   n8080_state *state = (n8080_state *)screen->machine->driver_data;
154145   UINT8 mask = flip_screen_get(screen->machine) ? 0xff : 0x00;
155146
156147   int x;
157148   int y;
158149
159   const UINT8* pRAM = videoram;
150   const UINT8* pRAM = state->videoram;
160151   const UINT8* pPROM = memory_region(screen->machine, "proms");
161152
162153   for (y = 0; y < 256; y++)
r6428r6429
169160
170161         UINT8 color = 0;
171162
172         if (spacefev_red_screen)
173         {
163         if (state->spacefev_red_screen)
174164            color = 1;
175         }
176165         else
177166         {
178167            UINT8 val = pPROM[x >> 3];
179168
180169            if ((x >> 3) == 0x06)
181170            {
182               color = spacefev_red_cannon ? 1 : 7;
171               color = state->spacefev_red_cannon ? 1 : 7;
183172            }
184173
185174            if ((x >> 3) == 0x1b)
r6428r6429
222211
223212VIDEO_UPDATE( sheriff )
224213{
214   n8080_state *state = (n8080_state *)screen->machine->driver_data;
225215   UINT8 mask = flip_screen_get(screen->machine) ? 0xff : 0x00;
226216
227217   const UINT8* pPROM = memory_region(screen->machine, "proms");
r6428r6429
229219   int x;
230220   int y;
231221
232   const UINT8* pRAM = videoram;
222   const UINT8* pRAM = state->videoram;
233223
234224   for (y = 0; y < 256; y++)
235225   {
r6428r6429
241231
242232         UINT8 color = pPROM[32 * (y >> 3) + (x >> 3)];
243233
244         if (sheriff_color_mode == 1 && !(color & 8))
245         {
246            color = sheriff_color_data ^ 7;
247         }
234         if (state->sheriff_color_mode == 1 && !(color & 8))
235            color = state->sheriff_color_data ^ 7;
248236
249         if (sheriff_color_mode == 2)
250         {
251            color = sheriff_color_data ^ 7;
252         }
237         if (state->sheriff_color_mode == 2)
238            color = state->sheriff_color_data ^ 7;
253239
254         if (sheriff_color_mode == 3)
255         {
240         if (state->sheriff_color_mode == 3)
256241            color = 7;
257         }
258242
259243         for (n = 0; n < 8; n++)
260244         {
r6428r6429
270254
271255VIDEO_UPDATE( helifire )
272256{
257   n8080_state *state = (n8080_state *)screen->machine->driver_data;
273258   int SUN_BRIGHTNESS = input_port_read(screen->machine, "POT0");
274259   int SEA_BRIGHTNESS = input_port_read(screen->machine, "POT1");
275260
276261   static const int wave[8] = { 0, 1, 2, 2, 2, 1, 0, 0 };
277262
278   unsigned saved_mv = helifire_mv;
279   unsigned saved_sc = helifire_sc;
263   unsigned saved_mv = state->helifire_mv;
264   unsigned saved_sc = state->helifire_sc;
280265
281266   int x;
282267   int y;
r6428r6429
285270   {
286271      UINT16* pLine = BITMAP_ADDR16(bitmap, y, 0);
287272
288      int level = 120 + wave[helifire_mv & 7];
273      int level = 120 + wave[state->helifire_mv & 7];
289274
290275      /* draw sky */
291276
r6428r6429
296281
297282      /* draw stars */
298283
299      if (helifire_mv % 8 == 4) /* upper half */
284      if (state->helifire_mv % 8 == 4) /* upper half */
300285      {
301         int step = (320 * (helifire_mv - 0)) % sizeof helifire_LSFR;
286         int step = (320 * (state->helifire_mv - 0)) % sizeof state->helifire_LSFR;
302287
303288         int data =
304            ((helifire_LSFR[step] & 1) << 6) |
305            ((helifire_LSFR[step] & 2) << 4) |
306            ((helifire_LSFR[step] & 4) << 2) |
307            ((helifire_LSFR[step] & 8) << 0);
289            ((state->helifire_LSFR[step] & 1) << 6) |
290            ((state->helifire_LSFR[step] & 2) << 4) |
291            ((state->helifire_LSFR[step] & 4) << 2) |
292            ((state->helifire_LSFR[step] & 8) << 0);
308293
309294         pLine[0x80 + data] |= 0x100;
310295      }
311296
312      if (helifire_mv % 8 == 5) /* lower half */
297      if (state->helifire_mv % 8 == 5) /* lower half */
313298      {
314         int step = (320 * (helifire_mv - 1)) % sizeof helifire_LSFR;
299         int step = (320 * (state->helifire_mv - 1)) % sizeof state->helifire_LSFR;
315300
316301         int data =
317            ((helifire_LSFR[step] & 1) << 6) |
318            ((helifire_LSFR[step] & 2) << 4) |
319            ((helifire_LSFR[step] & 4) << 2) |
320            ((helifire_LSFR[step] & 8) << 0);
302            ((state->helifire_LSFR[step] & 1) << 6) |
303            ((state->helifire_LSFR[step] & 2) << 4) |
304            ((state->helifire_LSFR[step] & 4) << 2) |
305            ((state->helifire_LSFR[step] & 8) << 0);
321306
322307         pLine[0x00 + data] |= 0x100;
323308      }
r6428r6429
341326         {
342327            if (flip_screen_get(screen->machine))
343328            {
344               if ((videoram[offset ^ 0x1fff] << n) & 0x80)
329               if ((state->videoram[offset ^ 0x1fff] << n) & 0x80)
345330               {
346                  pLine[x + n] = colorram[offset ^ 0x1fff] & 7;
331                  pLine[x + n] = state->colorram[offset ^ 0x1fff] & 7;
347332               }
348333            }
349334            else
350335            {
351               if ((videoram[offset] >> n) & 1)
336               if ((state->videoram[offset] >> n) & 1)
352337               {
353                  pLine[x + n] = colorram[offset] & 7;
338                  pLine[x + n] = state->colorram[offset] & 7;
354339               }
355340            }
356341         }
r6428r6429
361346      helifire_next_line(screen->machine);
362347   }
363348
364   helifire_mv = saved_mv;
365   helifire_sc = saved_sc;
349   state->helifire_mv = saved_mv;
350   state->helifire_sc = saved_sc;
366351   return 0;
367352}
368353
369354
370355VIDEO_EOF( helifire )
371356{
372   int n = (video_screen_get_frame_number(machine->primary_screen) >> 1) % sizeof helifire_LSFR;
357   n8080_state *state = (n8080_state *)machine->driver_data;
358   int n = (video_screen_get_frame_number(machine->primary_screen) >> 1) % sizeof state->helifire_LSFR;
373359
374360   int i;
375361
r6428r6429
379365      int G = (i & 2);
380366      int B = (i & 4);
381367
382      if (helifire_flash)
368      if (state->helifire_flash)
383369      {
384         if (helifire_LSFR[n] & 0x20)
370         if (state->helifire_LSFR[n] & 0x20)
385371         {
386372            G |= B;
387373         }
src/mame/video/seta.c
r6428r6429
279279        ---- ---- ---- ---0     Coin #0 Counter     */
280280         if (ACCESSING_BITS_0_7)
281281         {
282            const device_config *x1_010 = devtag_get_device(space->machine, "x1");
282            const device_config *x1_010 = devtag_get_device(space->machine, "x1snd");
283283            seta_coin_lockout_w (space->machine, data & 0x0f);
284284            if (x1_010 != NULL)
285285               seta_sound_enable_w (x1_010, data & 0x20);
r6428r6429
306306
307307            if (new_bank != seta_samples_bank)
308308            {
309               UINT8 *rom = memory_region(space->machine, "x1");
310               int samples_len = memory_region_length(space->machine, "x1");
309               UINT8 *rom = memory_region(space->machine, "x1snd");
310               int samples_len = memory_region_length(space->machine, "x1snd");
311311               int addr;
312312
313313               seta_samples_bank = new_bank;
src/mame/video/plygonet.c
r6428r6429
2424
2525   code = ttl_vram[tile_index]&0xfff;
2626
27   attr = ttl_vram[tile_index]>>12;   // palette in all 4 bits?
27   attr = ttl_vram[tile_index]>>12;   /* palette in all 4 bits? */
2828
2929   SET_TILE_INFO(ttl_gfx_index, code, attr, 0);
3030}
r6428r6429
3333{
3434   int attr, code;
3535
36   attr = (roz_vram[tile_index] >> 12) + 16;   // roz base palette is palette 16
36   attr = (roz_vram[tile_index] >> 12) + 16;   /* roz base palette is palette 16 */
3737   code = roz_vram[tile_index] & 0x3ff;
3838
3939   SET_TILE_INFO(0, code, attr, 0);
r6428r6429
8787{
8888   static const gfx_layout charlayout =
8989   {
90      8, 8,      // 8x8
91      4096,      // # of tiles
92      4,         // 4bpp
93      { 0, 1, 2, 3 },   // plane offsets
94      { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },      // X offsets
95      { 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 },   // Y offsets
90      8, 8,   /* 8x8 */
91      4096,   /* # of tiles */
92      4,      /* 4bpp */
93      { 0, 1, 2, 3 },   /* plane offsets */
94      { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },   /* X offsets */
95      { 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 },   /* Y offsets */
9696      8*8*4
9797   };
9898
r6428r6429
103103
104104   assert(ttl_gfx_index != MAX_GFX_ELEMENTS);
105105
106   // decode the ttl layer's gfx
106   /* decode the ttl layer's gfx */
107107   machine->gfx[ttl_gfx_index] = gfx_element_alloc(machine, &charlayout, memory_region(machine, "gfx1"), machine->config->total_colors / 16, 0);
108108
109   // create the tilemap
109   /* create the tilemap */
110110   ttl_tilemap = tilemap_create(machine, ttl_get_tile_info, plygonet_scan,  8, 8, 64, 32);
111111
112112   tilemap_set_transparent_pen(ttl_tilemap, 0);
113113
114   state_save_register_global_array(machine, ttl_vram);
115
116   // set up the roz t-map too
114   /* set up the roz t-map too */
117115   roz_tilemap = tilemap_create(machine, roz_get_tile_info, plygonet_scan_cols, 16, 16, 32, 64);
118116   tilemap_set_transparent_pen(roz_tilemap, 0);
117
118   /* save states */
119   state_save_register_global(machine, ttl_gfx_index);
120   state_save_register_global_array(machine, ttl_vram);
121   state_save_register_global_array(machine, roz_vram);
119122}
120123
121124VIDEO_UPDATE( polygonet )
src/mame/video/bishi.c
r6428r6429
99
1010#include "driver.h"
1111#include "video/konamiic.h"
12#include "machine/konamigx.h"
12#include "konamigx.h"
1313
1414static int layer_colorbase[4], layerpri[4];
1515
r6428r6429
7272   static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 };
7373   static const int enables[4] = { K55_INP_VRAM_A, K55_INP_VRAM_B, K55_INP_VRAM_C, K55_INP_VRAM_D };
7474
75   K054338_update_all_shadows(screen->machine);
75   K054338_update_all_shadows(screen->machine,0 );
7676   K054338_fill_backcolor(screen->machine, bitmap, 0);
7777
7878   for (i = 0; i < 4; i++)
src/mame/video/1942.c
r6428r6429
77***************************************************************************/
88
99#include "driver.h"
10#include "1942.h"
1011
11
12UINT8 *c1942_fgvideoram;
13UINT8 *c1942_bgvideoram;
14
15static int c1942_palette_bank;
16static tilemap *fg_tilemap, *bg_tilemap;
17
18
19
2012/***************************************************************************
2113
2214  Convert the color PROMs into a more useable format.
r6428r6429
3123  bit 0 -- 2.2kohm resistor  -- RED/GREEN/BLUE
3224
3325***************************************************************************/
26
3427PALETTE_INIT( 1942 )
3528{
3629   rgb_t palette[256];
r6428r6429
3831
3932   for (i = 0; i < 256; i++)
4033   {
41      int bit0,bit1,bit2,bit3,r,g,b;
34      int bit0, bit1, bit2, bit3, r, g, b;
4235
4336      /* red component */
44      bit0 = (color_prom[i + 0*256] >> 0) & 0x01;
45      bit1 = (color_prom[i + 0*256] >> 1) & 0x01;
46      bit2 = (color_prom[i + 0*256] >> 2) & 0x01;
47      bit3 = (color_prom[i + 0*256] >> 3) & 0x01;
37      bit0 = (color_prom[i + 0 * 256] >> 0) & 0x01;
38      bit1 = (color_prom[i + 0 * 256] >> 1) & 0x01;
39      bit2 = (color_prom[i + 0 * 256] >> 2) & 0x01;
40      bit3 = (color_prom[i + 0 * 256] >> 3) & 0x01;
4841      r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
4942      /* green component */
50      bit0 = (color_prom[i + 1*256] >> 0) & 0x01;
51      bit1 = (color_prom[i + 1*256] >> 1) & 0x01;
52      bit2 = (color_prom[i + 1*256] >> 2) & 0x01;
53      bit3 = (color_prom[i + 1*256] >> 3) & 0x01;
43      bit0 = (color_prom[i + 1 * 256] >> 0) & 0x01;
44      bit1 = (color_prom[i + 1 * 256] >> 1) & 0x01;
45      bit2 = (color_prom[i + 1 * 256] >> 2) & 0x01;
46      bit3 = (color_prom[i + 1 * 256] >> 3) & 0x01;
5447      g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
5548      /* blue component */
56      bit0 = (color_prom[i + 2*256] >> 0) & 0x01;
57      bit1 = (color_prom[i + 2*256] >> 1) & 0x01;
58      bit2 = (color_prom[i + 2*256] >> 2) & 0x01;
59      bit3 = (color_prom[i + 2*256] >> 3) & 0x01;
49      bit0 = (color_prom[i + 2 * 256] >> 0) & 0x01;
50      bit1 = (color_prom[i + 2 * 256] >> 1) & 0x01;
51      bit2 = (color_prom[i + 2 * 256] >> 2) & 0x01;
52      bit3 = (color_prom[i + 2 * 256] >> 3) & 0x01;
6053      b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
6154
6255      palette[i] = MAKE_RGB(r,g,b);
6356   }
6457
65   color_prom += 3*256;
58   color_prom += 3 * 256;
6659   /* color_prom now points to the beginning of the lookup table */
6760
6861
6962   /* characters use palette entries 128-143 */
7063   colorbase = 0;
71   for (i = 0; i < 64*4; i++)
64   for (i = 0; i < 64 * 4; i++)
7265      palette_set_color(machine, colorbase + i, palette[0x80 | *color_prom++]);
73   colorbase += 64*4;
66   colorbase += 64 * 4;
7467
7568   /* background tiles use palette entries 0-63 in four banks */
76   for (i = 0; i < 32*8; i++)
69   for (i = 0; i < 32 * 8; i++)
7770   {
78      palette_set_color(machine, colorbase + 0*32*8 + i, palette[0x00 | *color_prom]);
79      palette_set_color(machine, colorbase + 1*32*8 + i, palette[0x10 | *color_prom]);
80      palette_set_color(machine, colorbase + 2*32*8 + i, palette[0x20 | *color_prom]);
81      palette_set_color(machine, colorbase + 3*32*8 + i, palette[0x30 | *color_prom]);
71      palette_set_color(machine, colorbase + 0 * 32 * 8 + i, palette[0x00 | *color_prom]);
72      palette_set_color(machine, colorbase + 1 * 32 * 8 + i, palette[0x10 | *color_prom]);
73      palette_set_color(machine, colorbase + 2 * 32 * 8 + i, palette[0x20 | *color_prom]);
74      palette_set_color(machine, colorbase + 3 * 32 * 8 + i, palette[0x30 | *color_prom]);
8275      color_prom++;
8376   }
84   colorbase += 4*32*8;
77   colorbase += 4 * 32 * 8;
8578
8679   /* sprites use palette entries 64-79 */
87   for (i = 0; i < 16*16; i++)
80   for (i = 0; i < 16 * 16; i++)
8881      palette_set_color(machine, colorbase + i, palette[0x40 | *color_prom++]);
8982}
9083
r6428r6429
9790
9891static TILE_GET_INFO( get_fg_tile_info )
9992{
93   _1942_state *state = (_1942_state *)machine->driver_data;
10094   int code, color;
10195
102   code = c1942_fgvideoram[tile_index];
103   color = c1942_fgvideoram[tile_index + 0x400];
96   code = state->fg_videoram[tile_index];
97   color = state->fg_videoram[tile_index + 0x400];
10498   SET_TILE_INFO(
10599         0,
106100         code + ((color & 0x80) << 1),
r6428r6429
110104
111105static TILE_GET_INFO( get_bg_tile_info )
112106{
107   _1942_state *state = (_1942_state *)machine->driver_data;
113108   int code, color;
114109
115110   tile_index = (tile_index & 0x0f) | ((tile_index & 0x01f0) << 1);
116111
117   code = c1942_bgvideoram[tile_index];
118   color = c1942_bgvideoram[tile_index + 0x10];
112   code = state->bg_videoram[tile_index];
113   color = state->bg_videoram[tile_index + 0x10];
119114   SET_TILE_INFO(
120115         1,
121116         code + ((color & 0x80) << 1),
122         (color & 0x1f) + (0x20 * c1942_palette_bank),
117         (color & 0x1f) + (0x20 * state->palette_bank),
123118         TILE_FLIPYX((color & 0x60) >> 5));
124119}
125120
r6428r6429
131126***************************************************************************/
132127VIDEO_START( 1942 )
133128{
134   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows, 8, 8,32,32);
135   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_cols,     16,16,32,16);
129   _1942_state *state = (_1942_state *)machine->driver_data;
130   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
131   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols, 16, 16, 32, 16);
136132
137   tilemap_set_transparent_pen(fg_tilemap,0);
133   tilemap_set_transparent_pen(state->fg_tilemap,0);
138134
139   state_save_register_global(machine, c1942_palette_bank);
135   state_save_register_global(machine, state->palette_bank);
136   state_save_register_global_array(machine, state->scroll);
140137}
141138
142139
r6428r6429
148145
149146WRITE8_HANDLER( c1942_fgvideoram_w )
150147{
151   c1942_fgvideoram[offset] = data;
152   tilemap_mark_tile_dirty(fg_tilemap,offset & 0x3ff);
148   _1942_state *state = (_1942_state *)space->machine->driver_data;
149
150   state->fg_videoram[offset] = data;
151   tilemap_mark_tile_dirty(state->fg_tilemap, offset & 0x3ff);
153152}
154153
155154WRITE8_HANDLER( c1942_bgvideoram_w )
156155{
157   c1942_bgvideoram[offset] = data;
158   tilemap_mark_tile_dirty(bg_tilemap,(offset & 0x0f) | ((offset >> 1) & 0x01f0));
156   _1942_state *state = (_1942_state *)space->machine->driver_data;
157
158   state->bg_videoram[offset] = data;
159   tilemap_mark_tile_dirty(state->bg_tilemap, (offset & 0x0f) | ((offset >> 1) & 0x01f0));
159160}
160161
161162
162163WRITE8_HANDLER( c1942_palette_bank_w )
163164{
164   if (c1942_palette_bank != data)
165   _1942_state *state = (_1942_state *)space->machine->driver_data;
166
167   if (state->palette_bank != data)
165168   {
166      c1942_palette_bank = data;
167      tilemap_mark_all_tiles_dirty(bg_tilemap);
169      state->palette_bank = data;
170      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
168171   }
169172}
170173
171174WRITE8_HANDLER( c1942_scroll_w )
172175{
173   static UINT8 scroll[2];
176   _1942_state *state = (_1942_state *)space->machine->driver_data;
174177
175   scroll[offset] = data;
176   tilemap_set_scrollx(bg_tilemap,0,scroll[0] | (scroll[1] << 8));
178   state->scroll[offset] = data;
179   tilemap_set_scrollx(state->bg_tilemap, 0, state->scroll[0] | (state->scroll[1] << 8));
177180}
178181
179182
r6428r6429
197200
198201***************************************************************************/
199202
200static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
203static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
201204{
205   _1942_state *state = (_1942_state *)machine->driver_data;
202206   int offs;
203207
204
205   for (offs = spriteram_size - 4;offs >= 0;offs -= 4)
208   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
206209   {
207      int i,code,col,sx,sy,dir;
210      int i, code, col, sx, sy, dir;
208211
212      code = (state->spriteram[offs] & 0x7f) + 4 * (state->spriteram[offs + 1] & 0x20)
213            + 2 * (state->spriteram[offs] & 0x80);
214      col = state->spriteram[offs + 1] & 0x0f;
215      sx = state->spriteram[offs + 3] - 0x10 * (state->spriteram[offs + 1] & 0x10);
216      sy = state->spriteram[offs + 2];
217      dir = 1;
209218
210      code = (spriteram[offs] & 0x7f) + 4*(spriteram[offs + 1] & 0x20)
211            + 2*(spriteram[offs] & 0x80);
212      col = spriteram[offs + 1] & 0x0f;
213      sx = spriteram[offs + 3] - 0x10 * (spriteram[offs + 1] & 0x10);
214      sy = spriteram[offs + 2];
215      dir = 1;
216219      if (flip_screen_get(machine))
217220      {
218221         sx = 240 - sx;
r6428r6429
221224      }
222225
223226      /* handle double / quadruple height */
224      i = (spriteram[offs + 1] & 0xc0) >> 6;
225      if (i == 2) i = 3;
227      i = (state->spriteram[offs + 1] & 0xc0) >> 6;
228      if (i == 2)
229         i = 3;
226230
227231      do
228232      {
r6428r6429
240244
241245VIDEO_UPDATE( 1942 )
242246{
243   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
244   draw_sprites(screen->machine,bitmap,cliprect);
245   tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
247   _1942_state *state = (_1942_state *)screen->machine->driver_data;
248
249   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
250   draw_sprites(screen->machine, bitmap, cliprect);
251   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
246252   return 0;
247253}
src/mame/video/carjmbre.c
r6428r6429
1/*
2Car Jamboree
3Omori Electric CAD (OEC) 1981
4*/
1/***************************************************************************
52
6#include "driver.h"
3    Car Jamboree
4    Omori Electric CAD (OEC) 1981
75
8static tilemap *carjmbre_tilemap;
6***************************************************************************/
97
10static UINT8 carjmbre_flipscreen;
11static UINT16 carjmbre_bgcolor;
8#include "driver.h"
9#include "carjmbre.h"
1210
1311PALETTE_INIT( carjmbre )
1412{
15   int i,bit0,bit1,bit2,r,g,b;
13   int i, bit0, bit1, bit2, r, g, b;
1614
17   for (i = 0;i < machine->config->total_colors; i++)
15   for (i = 0; i < machine->config->total_colors; i++)
1816   {
1917      /* red component */
2018      bit0 = (*color_prom >> 0) & 0x01;
r6428r6429
3230      bit2 = (*color_prom >> 7) & 0x01;
3331      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
3432
35      palette_set_color(machine,i,MAKE_RGB(r,g,b));
33      palette_set_color(machine, i, MAKE_RGB(r,g,b));
3634      color_prom++;
3735   }
3836}
3937
4038WRITE8_HANDLER( carjmbre_flipscreen_w )
4139{
42   carjmbre_flipscreen = data?(TILEMAP_FLIPX|TILEMAP_FLIPY):0;
43   tilemap_set_flip_all( space->machine,carjmbre_flipscreen );
40   carjmbre_state *state = (carjmbre_state *)space->machine->driver_data;
41
42   state->flipscreen = data ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0;
43   tilemap_set_flip_all(space->machine, state->flipscreen);
4444}
4545
4646WRITE8_HANDLER( carjmbre_bgcolor_w )
4747{
48   int oldbg,i;
48   carjmbre_state *state = (carjmbre_state *)space->machine->driver_data;
49   int oldbg, i;
4950
50   oldbg=carjmbre_bgcolor;
51   oldbg = state->bgcolor;
5152
52   carjmbre_bgcolor&=0xff00>>(offset*8);
53   carjmbre_bgcolor|=((~data)&0xff)<<(offset*8);
53   state->bgcolor &= 0xff00 >> (offset * 8);
54   state->bgcolor |= ((~data) & 0xff) << (offset * 8);
5455
55   if(oldbg!=carjmbre_bgcolor)
56   if ( oldbg != state->bgcolor)
5657   {
57      for (i=0;i<64;i+=4)
58         palette_set_color_rgb(space->machine, i, (carjmbre_bgcolor&0xff)*0x50, (carjmbre_bgcolor&0xff)*0x50, (carjmbre_bgcolor&0xff)!=0?0x50:0);
58      for (i = 0; i < 64; i += 4)
59         palette_set_color_rgb(space->machine, i, (state->bgcolor & 0xff) * 0x50,
60                  (state->bgcolor & 0xff) * 0x50, (state->bgcolor & 0xff)!=0 ? 0x50 : 0);
5961   }
6062}
6163
62static TILE_GET_INFO( get_carjmbre_tile_info ){
63   UINT32 tile_number = videoram[tile_index] & 0xFF;
64   UINT8 attr  = videoram[tile_index+0x400];
64static TILE_GET_INFO( get_carjmbre_tile_info )
65{
66   carjmbre_state *state = (carjmbre_state *)machine->driver_data;
67   UINT32 tile_number = state->videoram[tile_index] & 0xff;
68   UINT8 attr  = state->videoram[tile_index + 0x400];
6569   tile_number += (attr & 0x80) << 1; /* bank */
6670   SET_TILE_INFO(
6771         0,
6872         tile_number,
69         (attr&0x7),
73         (attr & 0x7),
7074         0);
7175}
7276
73WRITE8_HANDLER( carjmbre_videoram_w ){
74   videoram[offset] = data;
75   tilemap_mark_tile_dirty(carjmbre_tilemap,offset&0x3ff);
77WRITE8_HANDLER( carjmbre_videoram_w )
78{
79   carjmbre_state *state = (carjmbre_state *)space->machine->driver_data;
80
81   state->videoram[offset] = data;
82   tilemap_mark_tile_dirty(state->cj_tilemap, offset & 0x3ff);
7683}
7784
7885
7986
8087VIDEO_START( carjmbre )
8188{
89   carjmbre_state *state = (carjmbre_state *)machine->driver_data;
8290
83   carjmbre_tilemap = tilemap_create( machine, get_carjmbre_tile_info,tilemap_scan_rows,8,8,32,32 );
84
85   state_save_register_global(machine, carjmbre_flipscreen);
86   state_save_register_global(machine, carjmbre_bgcolor);
91   state->cj_tilemap = tilemap_create(machine, get_carjmbre_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
92   state_save_register_global(machine, state->flipscreen);
93   state_save_register_global(machine, state->bgcolor);
8794}
8895
8996VIDEO_UPDATE( carjmbre )
9097{
91   int offs,troffs,sx,sy,flipx,flipy;
98   carjmbre_state *state = (carjmbre_state *)screen->machine->driver_data;
99   int offs, troffs, sx, sy, flipx, flipy;
92100
93101   //colorram
94102   //76543210
r6428r6429
97105   //----x--- ?? probably colour, only used for ramp and pond
98106   //-----xxx colour
99107
100   tilemap_draw( bitmap,cliprect,carjmbre_tilemap,0,0 );
108   tilemap_draw(bitmap, cliprect, state->cj_tilemap, 0, 0);
101109
102110   //spriteram[offs]
103111   //+0       y pos
r6428r6429
110118   //----x--- ?? probably colour
111119   //-----xxx colour
112120   //+3       x pos
113   for (offs = spriteram_size-4; offs >= 0; offs-=4)
121   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
114122   {
115123      //before copying the sprites to spriteram the game reorders the first
116124      //sprite to last, sprite ordering is incorrect if this isn't undone
117      troffs=(offs-4+spriteram_size)%spriteram_size;
125      troffs = (offs - 4 + spriteram_size) % spriteram_size;
118126
119127      //unused sprites are marked with ypos <= 0x02 (or >= 0xfd if screen flipped)
120      if (spriteram[troffs] > 0x02 && spriteram[troffs] < 0xfd)
128      if (state->spriteram[troffs] > 0x02 && state->spriteram[troffs] < 0xfd)
121129      {
122130         {
123            sx = spriteram[troffs+3]-7;
124            sy = 241-spriteram[troffs];
125            flipx = (spriteram[troffs+2]&0x40)>>6;
126            flipy = (spriteram[troffs+2]&0x80)>>7;
131            sx = state->spriteram[troffs + 3] - 7;
132            sy = 241 - state->spriteram[troffs];
133            flipx = (state->spriteram[troffs + 2] & 0x40) >> 6;
134            flipy = (state->spriteram[troffs + 2] & 0x80) >> 7;
127135
128            if (carjmbre_flipscreen)
136            if (state->flipscreen)
129137            {
130               sx = (256+(226-sx))%256;
131               sy = 242-sy;
138               sx = (256 + (226 - sx)) % 256;
139               sy = 242 - sy;
132140               flipx = !flipx;
133141               flipy = !flipy;
134142            }
135143
136            drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[1],
137                  spriteram[troffs+1],
138                  spriteram[troffs+2]&0x07,
144            drawgfx_transpen(bitmap, cliprect, screen->machine->gfx[1],
145                  state->spriteram[troffs + 1],
146                  state->spriteram[troffs + 2] & 0x07,
139147                  flipx,flipy,
140148                  sx,sy,0);
141149         }
src/mame/video/m62.c
r6428r6429
1414***************************************************************************/
1515
1616#include "driver.h"
17#include "m62.h"
17#include "includes/iremz80.h"
1818#include "video/resnet.h"
1919
20UINT8 *m62_tileram;
21UINT8 *m62_textram;
22UINT8 *horizon_scrollram;
23
24static tilemap *m62_background;
25static tilemap *m62_foreground;
26static UINT8 flipscreen;
27static const UINT8 *sprite_height_prom;
28static INT32 m62_background_hscroll;
29static INT32 m62_background_vscroll;
30
31static int ldrun3_topbottom_mask;
32
33static UINT8 *irem_textram;
34static size_t irem_textram_size;
35
36static UINT8 kidniki_background_bank;
37static INT32 kidniki_text_vscroll;
38
39static INT32 spelunkr_palbank;
40
41
42
4320/***************************************************************************
4421
4522  Convert the color PROMs into a more useable format.
r6428r6429
205182
206183PALETTE_INIT( m62 )
207184{
185   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
208186   rgb_t *rgb;
209187
210188   rgb = compute_res_net_all(color_prom, &m62_tile_decode_info, &m62_tile_net_info);
r6428r6429
218196   palette_normalize_range(machine->palette, 0x000, 0x1ff, 0x00, 0xff);
219197
220198   /* we'll need this at run time */
221   sprite_height_prom = color_prom + 0x600;
199   state->sprite_height_prom = color_prom + 0x600;
222200}
223201
224202
225203PALETTE_INIT( lotlot )
226204{
205   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
227206   rgb_t *rgb;
228207
229208   rgb = compute_res_net_all(color_prom, &lotlot_tile_decode_info, &m62_tile_net_info);
r6428r6429
237216   palette_normalize_range(machine->palette, 0x000, 0x2ff, 0x00, 0xff);
238217
239218   /* we'll need this at run time */
240   sprite_height_prom = color_prom + 0x900;
219   state->sprite_height_prom = color_prom + 0x900;
241220}
242221
243222
244223PALETTE_INIT( battroad )
245224{
225   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
246226   rgb_t *rgb;
247227
248228   rgb = compute_res_net_all(color_prom, &m62_tile_decode_info, &m62_tile_net_info);
r6428r6429
259239
260240   palette_normalize_range(machine->palette, 0x000, 0x21f, 0x00, 0xff);
261241
262   sprite_height_prom = color_prom + 0x620;   /* we'll need this at run time */
242   state->sprite_height_prom = color_prom + 0x620;   /* we'll need this at run time */
263243}
264244
265245
266246PALETTE_INIT( spelunk2 )
267247{
248   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
268249   rgb_t *rgb;
269250
270251   rgb = compute_res_net_all(color_prom, &spelunk2_tile_decode_info, &m62_tile_net_info);
r6428r6429
278259   palette_normalize_range(machine->palette, 0x000, 0x2ff, 0x00, 0xff);
279260
280261   /* we'll need this at run time */
281   sprite_height_prom = color_prom + 0x700;
262   state->sprite_height_prom = color_prom + 0x700;
282263}
283264
284265
266static void register_savestate( running_machine *machine )
267{
268   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
285269
286static void register_savestate(running_machine *machine)
287{
288   state_save_register_global(machine, flipscreen);
289   state_save_register_global(machine, kidniki_background_bank);
290   state_save_register_global(machine, m62_background_hscroll);
291   state_save_register_global(machine, m62_background_vscroll);
292   state_save_register_global(machine, kidniki_text_vscroll);
293   state_save_register_global(machine, spelunkr_palbank);
294   state_save_register_global_pointer(machine, irem_textram, irem_textram_size);
270   state_save_register_global(machine, state->flipscreen);
271   state_save_register_global(machine, state->m62_background_hscroll);
272   state_save_register_global(machine, state->m62_background_vscroll);
273
274   state_save_register_global(machine, state->kidniki_background_bank);
275   state_save_register_global(machine, state->kidniki_text_vscroll);
276   state_save_register_global(machine, state->ldrun3_topbottom_mask);
277   state_save_register_global(machine, state->spelunkr_palbank);
295278}
296279
280
297281WRITE8_HANDLER( m62_flipscreen_w )
298282{
283   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
299284   /* screen flip is handled both by software and hardware */
300285   data ^= ~input_port_read(space->machine, "DSW2") & 1;
301286
302   flipscreen = data & 0x01;
303   if (flipscreen)
287   state->flipscreen = data & 0x01;
288   if (state->flipscreen)
304289      tilemap_set_flip_all(space->machine, TILEMAP_FLIPX | TILEMAP_FLIPY);
305290   else
306291      tilemap_set_flip_all(space->machine, 0);
307292
308   coin_counter_w(0,data & 2);
309   coin_counter_w(1,data & 4);
293   coin_counter_w(0, data & 2);
294   coin_counter_w(1, data & 4);
310295}
311296
312297WRITE8_HANDLER( m62_hscroll_low_w )
313298{
314   m62_background_hscroll = ( m62_background_hscroll & 0xff00 ) | data;
299   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
300   state->m62_background_hscroll = (state->m62_background_hscroll & 0xff00) | data;
315301}
316302
317303WRITE8_HANDLER( m62_hscroll_high_w )
318304{
319   m62_background_hscroll = ( m62_background_hscroll & 0xff ) | ( data << 8 );
305   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
306   state->m62_background_hscroll = (state->m62_background_hscroll & 0xff) | (data << 8);
320307}
321308
322309WRITE8_HANDLER( m62_vscroll_low_w )
323310{
324   m62_background_vscroll = ( m62_background_vscroll & 0xff00 ) | data;
311   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
312   state->m62_background_vscroll = (state->m62_background_vscroll & 0xff00) | data;
325313}
326314
327315WRITE8_HANDLER( m62_vscroll_high_w )
328316{
329   m62_background_vscroll = ( m62_background_vscroll & 0xff ) | ( data << 8 );
317   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
318   state->m62_background_vscroll = (state->m62_background_vscroll & 0xff) | (data << 8);
330319}
331320
332321WRITE8_HANDLER( m62_tileram_w )
333322{
334   m62_tileram[ offset ] = data;
335   tilemap_mark_tile_dirty( m62_background, offset >> 1 );
323   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
324   state->m62_tileram[offset] = data;
325   tilemap_mark_tile_dirty(state->bg_tilemap, offset >> 1);
336326}
337327
338328WRITE8_HANDLER( m62_textram_w )
339329{
340   m62_textram[ offset ] = data;
341   tilemap_mark_tile_dirty( m62_foreground, offset >> 1 );
330   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
331   state->m62_textram[offset] = data;
332   tilemap_mark_tile_dirty(state->fg_tilemap, offset >> 1);
342333}
343334
344335
345static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int colormask, int prioritymask, int priority)
336static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int colormask, int prioritymask, int priority )
346337{
338   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
347339   int offs;
348340
349   for (offs = 0;offs < spriteram_size;offs += 8)
341   for (offs = 0; offs < spriteram_size; offs += 8)
350342   {
351      int i,incr,code,col,flipx,flipy,sx,sy;
343      int i, incr, code, col, flipx, flipy, sx, sy;
352344
353      if( ( spriteram[offs] & prioritymask ) == priority )
345      if ((state->spriteram[offs] & prioritymask) == priority)
354346      {
355         code = spriteram[offs+4] + ((spriteram[offs+5] & 0x07) << 8);
356         col = spriteram[offs+0] & colormask;
357         sx = 256 * (spriteram[offs+7] & 1) + spriteram[offs+6],
358         sy = 256+128-15 - (256 * (spriteram[offs+3] & 1) + spriteram[offs+2]),
359         flipx = spriteram[offs+5] & 0x40;
360         flipy = spriteram[offs+5] & 0x80;
347         code = state->spriteram[offs + 4] + ((state->spriteram[offs + 5] & 0x07) << 8);
348         col = state->spriteram[offs + 0] & colormask;
349         sx = 256 * (state->spriteram[offs + 7] & 1) + state->spriteram[offs + 6],
350         sy = 256 + 128 - 15 - (256 * (state->spriteram[offs + 3] & 1) + state->spriteram[offs + 2]),
351         flipx = state->spriteram[offs + 5] & 0x40;
352         flipy = state->spriteram[offs + 5] & 0x80;
361353
362         i = sprite_height_prom[(code >> 5) & 0x1f];
354         i = state->sprite_height_prom[(code >> 5) & 0x1f];
363355         if (i == 1)   /* double height */
364356         {
365357            code &= ~1;
r6428r6429
372364            sy -= 3*16;
373365         }
374366
375         if (flipscreen)
367         if (state->flipscreen)
376368         {
377369            sx = 496 - sx;
378370            sy = 242 - i*16 - sy;   /* sprites are slightly misplaced by the hardware */
r6428r6429
402394
403395static void m62_start( running_machine *machine, tile_get_info_func tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 )
404396{
405   m62_background = tilemap_create( machine, tile_get_info, tilemap_scan_rows,  x1, y1, x2, y2 );
397   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
398   state->bg_tilemap = tilemap_create(machine, tile_get_info, tilemap_scan_rows,  x1, y1, x2, y2);
406399
407   m62_background_hscroll = 0;
408   m62_background_vscroll = 0;
409
410400   register_savestate(machine);
411401
412   if( rows != 0 )
413   {
414      tilemap_set_scroll_rows( m62_background, rows );
415   }
416   if( cols != 0 )
417   {
418      tilemap_set_scroll_cols( m62_background, cols );
419   }
402   if (rows != 0)
403      tilemap_set_scroll_rows(state->bg_tilemap, rows);
404
405   if (cols != 0)
406      tilemap_set_scroll_cols(state->bg_tilemap, cols);
420407}
421408
422409static void m62_textlayer( running_machine *machine, tile_get_info_func tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 )
423410{
424   m62_foreground = tilemap_create( machine, tile_get_info, tilemap_scan_rows,  x1, y1, x2, y2 );
411   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
412   state->fg_tilemap = tilemap_create(machine, tile_get_info, tilemap_scan_rows,  x1, y1, x2, y2);
425413
426   if( rows != 0 )
427   {
428      tilemap_set_scroll_rows( m62_foreground, rows );
429   }
430   if( cols != 0 )
431   {
432      tilemap_set_scroll_cols( m62_foreground, cols );
433   }
414   if (rows != 0)
415      tilemap_set_scroll_rows(state->fg_tilemap, rows);
416
417   if (cols != 0)
418      tilemap_set_scroll_cols(state->fg_tilemap, cols);
434419}
435420
436421WRITE8_HANDLER( kungfum_tileram_w )
437422{
438   m62_tileram[ offset ] = data;
439   tilemap_mark_tile_dirty( m62_background, offset & 0x7ff );
423   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
424   state->m62_tileram[offset] = data;
425   tilemap_mark_tile_dirty(state->bg_tilemap, offset & 0x7ff);
440426}
441427
442428static TILE_GET_INFO( get_kungfum_bg_tile_info )
443429{
430   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
444431   int code;
445432   int color;
446433   int flags;
447   code = m62_tileram[ tile_index ];
448   color = m62_tileram[ tile_index + 0x800 ];
434   code = state->m62_tileram[tile_index];
435   color = state->m62_tileram[tile_index + 0x800];
449436   flags = 0;
450   if( ( color & 0x20 ) )
437   if ((color & 0x20))
451438   {
452439      flags |= TILE_FLIPX;
453440   }
454   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, flags );
441   SET_TILE_INFO(0, code | ((color & 0xc0)<< 2), color & 0x1f, flags);
455442
456443   /* is the following right? */
457   if( ( tile_index / 64 ) < 6 || ( ( color & 0x1f ) >> 1 ) > 0x0c )
458   {
444   if ((tile_index / 64) < 6 || ((color & 0x1f) >> 1) > 0x0c)
459445      tileinfo->category = 1;
460   }
461446   else
462   {
463447      tileinfo->category = 0;
464   }
465448}
466449
467450VIDEO_START( kungfum )
468451{
469   m62_start( machine, get_kungfum_bg_tile_info, 32, 0, 8, 8, 64, 32 );
452   m62_start(machine, get_kungfum_bg_tile_info, 32, 0, 8, 8, 64, 32);
470453}
471454
472455VIDEO_UPDATE( kungfum )
473456{
457   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
474458   int i;
475   for( i = 0; i < 6; i++ )
459   for (i = 0; i < 6; i++)
476460   {
477      tilemap_set_scrollx( m62_background, i, 0 );
461      tilemap_set_scrollx(state->bg_tilemap, i, 0);
478462   }
479   for( i = 6; i < 32; i++ )
463   for (i = 6; i < 32; i++)
480464   {
481      tilemap_set_scrollx( m62_background, i, m62_background_hscroll );
465      tilemap_set_scrollx(state->bg_tilemap, i, state->m62_background_hscroll);
482466   }
483   tilemap_draw( bitmap, cliprect, m62_background, 0, 0 );
484   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
485   tilemap_draw( bitmap, cliprect, m62_background, 1, 0 );
467   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
468   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
469   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 1, 0);
486470   return 0;
487471}
488472
489473
490
491474static TILE_GET_INFO( get_ldrun_bg_tile_info )
492475{
476   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
477
493478   int code;
494479   int color;
495480   int flags;
496   code = m62_tileram[ tile_index << 1 ];
497   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
481   code = state->m62_tileram[tile_index << 1];
482   color = state->m62_tileram[(tile_index << 1) | 1];
498483   flags = 0;
499   if( ( color & 0x20 ) )
484   if ((color & 0x20))
500485   {
501486      flags |= TILE_FLIPX;
502487   }
503   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, flags );
504   if( ( ( color & 0x1f ) >> 1 ) >= 0x0c )
505   {
488   SET_TILE_INFO(0, code | ((color & 0xc0) << 2), color & 0x1f, flags);
489   if (((color & 0x1f) >> 1) >= 0x0c)
506490      tileinfo->group = 1;
507   }
508491   else
509   {
510492      tileinfo->group = 0;
511   }
512493}
513494
514495VIDEO_START( ldrun )
515496{
516   m62_start( machine, get_ldrun_bg_tile_info, 1, 1, 8, 8, 64, 32 );
517   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
518   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
497   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
498
499   m62_start(machine, get_ldrun_bg_tile_info, 1, 1, 8, 8, 64, 32);
500   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
501   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
519502}
520503
521504VIDEO_UPDATE( ldrun )
522505{
523   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll );
524   tilemap_set_scrolly( m62_background, 0, m62_background_vscroll );
506   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
507   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll);
508   tilemap_set_scrolly(state->bg_tilemap, 0, state->m62_background_vscroll);
525509
526   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER1, 0 );
527   draw_sprites( screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x00 );
528   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER0, 0 );
529   draw_sprites( screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x10 );
510   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
511   draw_sprites(screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x00);
512   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
513   draw_sprites(screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x10);
530514   return 0;
531515}
532516
533517static TILE_GET_INFO( get_ldrun2_bg_tile_info )
534518{
519   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
535520   int code;
536521   int color;
537522   int flags;
538   code = m62_tileram[ tile_index << 1 ];
539   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
523   code = state->m62_tileram[tile_index << 1];
524   color = state->m62_tileram[(tile_index << 1) | 1];
540525   flags = 0;
541   if( ( color & 0x20 ) )
526   if ((color & 0x20))
542527   {
543528      flags |= TILE_FLIPX;
544529   }
545   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, flags );
546   if( ( ( color & 0x1f ) >> 1 ) >= 0x04 )
547   {
530   SET_TILE_INFO(0, code | ((color & 0xc0) << 2), color & 0x1f, flags);
531   if (((color & 0x1f) >> 1) >= 0x04)
548532      tileinfo->group = 1;
549   }
550533   else
551   {
552534      tileinfo->group = 0;
553   }
554535}
555536
556537VIDEO_START( ldrun2 )
557538{
558   m62_start( machine, get_ldrun2_bg_tile_info, 1, 1, 8, 8, 64, 32 );
559   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
560   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
539   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
540   m62_start(machine, get_ldrun2_bg_tile_info, 1, 1, 8, 8, 64, 32);
541   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
542   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
561543}
562544
563545
564
565546WRITE8_HANDLER( ldrun3_topbottom_mask_w )
566547{
567   ldrun3_topbottom_mask = data & 1;
548   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
549   state->ldrun3_topbottom_mask = data & 1;
568550}
569551
570552VIDEO_UPDATE( ldrun3 )
571553{
554   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
572555   VIDEO_UPDATE_CALL(ldrun);
573556
574   if (ldrun3_topbottom_mask)
557   if (state->ldrun3_topbottom_mask)
575558   {
576559      rectangle my_cliprect = *cliprect;
577560
578      my_cliprect.min_y = 0*8;
579      my_cliprect.max_y = 1*8-1;
580      bitmap_fill(bitmap,&my_cliprect,get_black_pen(screen->machine));
561      my_cliprect.min_y = 0 * 8;
562      my_cliprect.max_y = 1 * 8 - 1;
563      bitmap_fill(bitmap, &my_cliprect, get_black_pen(screen->machine));
581564
582      my_cliprect.min_y = 31*8;
583      my_cliprect.max_y = 32*8-1;
584      bitmap_fill(bitmap,&my_cliprect,get_black_pen(screen->machine));
565      my_cliprect.min_y = 31 * 8;
566      my_cliprect.max_y = 32 * 8 - 1;
567      bitmap_fill(bitmap, &my_cliprect, get_black_pen(screen->machine));
585568   }
586569
587570   return 0;
r6428r6429
590573
591574static TILE_GET_INFO( get_battroad_bg_tile_info )
592575{
576   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
593577   int code;
594578   int color;
595579   int flags;
596   code = m62_tileram[ tile_index << 1 ];
597   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
580   code = state->m62_tileram[tile_index << 1];
581   color = state->m62_tileram[(tile_index << 1) | 1];
598582   flags = 0;
599   if( ( color & 0x20 ) )
583   if ((color & 0x20))
600584   {
601585      flags |= TILE_FLIPX;
602586   }
603   SET_TILE_INFO( 0, code | ( ( color & 0x40 ) << 3 ) | ( ( color & 0x10 ) << 4 ), color & 0x0f, flags );
604   if( ( ( color & 0x1f ) >> 1 ) >= 0x04 )
605   {
587   SET_TILE_INFO(0, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, flags);
588   if (((color & 0x1f) >> 1) >= 0x04)
606589      tileinfo->group = 1;
607   }
608590   else
609   {
610591      tileinfo->group = 0;
611   }
612592}
613593
614594static TILE_GET_INFO( get_battroad_fg_tile_info )
615595{
596   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
616597   int code;
617598   int color;
618   code = m62_textram[ tile_index << 1 ];
619   color = m62_textram[ ( tile_index << 1 ) | 1 ];
620   SET_TILE_INFO( 2, code | ( ( color & 0x40 ) << 3 ) | ( ( color & 0x10 ) << 4 ), color & 0x0f, 0 );
599   code = state->m62_textram[tile_index << 1];
600   color = state->m62_textram[(tile_index << 1) | 1];
601   SET_TILE_INFO(2, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, 0);
621602}
622603
623604VIDEO_START( battroad )
624605{
625   m62_start( machine, get_battroad_bg_tile_info, 1, 1, 8, 8, 64, 32 );
626   m62_textlayer( machine, get_battroad_fg_tile_info, 1, 1, 8, 8, 32, 32 );
627   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
628   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
606   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
607   m62_start(machine, get_battroad_bg_tile_info, 1, 1, 8, 8, 64, 32);
608   m62_textlayer(machine, get_battroad_fg_tile_info, 1, 1, 8, 8, 32, 32);
609   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
610   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
629611}
630612
631613VIDEO_UPDATE( battroad )
632614{
633   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll );
634   tilemap_set_scrolly( m62_background, 0, m62_background_vscroll );
635   tilemap_set_scrollx( m62_foreground, 0, 128 );
636   tilemap_set_scrolly( m62_foreground, 0, 0 );
637   tilemap_set_transparent_pen( m62_foreground, 0 );
615   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
616   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll);
617   tilemap_set_scrolly(state->bg_tilemap, 0, state->m62_background_vscroll);
618   tilemap_set_scrollx(state->fg_tilemap, 0, 128);
619   tilemap_set_scrolly(state->fg_tilemap, 0, 0);
620   tilemap_set_transparent_pen(state->fg_tilemap, 0);
638621
639   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER1, 0 );
640   draw_sprites( screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x00 );
641   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER0, 0 );
642   draw_sprites( screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x10 );
643   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
622   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
623   draw_sprites(screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x00);
624   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
625   draw_sprites(screen->machine, bitmap, cliprect, 0x0f, 0x10, 0x10);
626   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
644627   return 0;
645628}
646629
r6428r6429
649632/* no char x flip, and more sprites */
650633static TILE_GET_INFO( get_ldrun4_bg_tile_info )
651634{
635   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
652636   int code;
653637   int color;
654   code = m62_tileram[ tile_index << 1 ];
655   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
656   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ) | ( ( color & 0x20 ) << 5 ), color & 0x1f, 0 );
638   code = state->m62_tileram[tile_index << 1];
639   color = state->m62_tileram[(tile_index << 1) | 1];
640   SET_TILE_INFO(0, code | ((color & 0xc0) << 2) | ((color & 0x20) << 5), color & 0x1f, 0);
657641}
658642
659643VIDEO_START( ldrun4 )
660644{
661   m62_start( machine, get_ldrun4_bg_tile_info, 1, 0, 8, 8, 64, 32 );
645   m62_start(machine, get_ldrun4_bg_tile_info, 1, 0, 8, 8, 64, 32);
662646}
663647
664648VIDEO_UPDATE( ldrun4 )
665649{
666   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll-2 );
650   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
651   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll - 2);
667652
668   tilemap_draw( bitmap, cliprect, m62_background, 0, 0 );
669   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
653   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
654   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
670655   return 0;
671656}
672657
673658
674659static TILE_GET_INFO( get_lotlot_bg_tile_info )
675660{
661   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
676662   int code;
677663   int color;
678664   int flags;
679   code = m62_tileram[ tile_index << 1 ];
680   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
665   code = state->m62_tileram[tile_index << 1];
666   color = state->m62_tileram[(tile_index << 1) | 1];
681667   flags = 0;
682   if( ( color & 0x20 ) )
668   if ((color & 0x20))
683669   {
684670      flags |= TILE_FLIPX;
685671   }
686   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, flags );
672   SET_TILE_INFO(0, code | ((color & 0xc0) << 2), color & 0x1f, flags);
687673}
688674
689675static TILE_GET_INFO( get_lotlot_fg_tile_info )
690676{
677   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
691678   int code;
692679   int color;
693   code = m62_textram[ tile_index << 1 ];
694   color = m62_textram[ ( tile_index << 1 ) | 1 ];
695   SET_TILE_INFO( 2, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0 );
680   code = state->m62_textram[tile_index << 1];
681   color = state->m62_textram[(tile_index << 1) | 1];
682   SET_TILE_INFO(2, code | ((color & 0xc0) << 2), color & 0x1f, 0);
696683}
697684
698685VIDEO_START( lotlot )
699686{
700   m62_start( machine, get_lotlot_bg_tile_info, 1, 1, 12, 10, 32, 64 );
701   m62_textlayer( machine, get_lotlot_fg_tile_info, 1, 1, 12, 10, 32, 64 );
687   m62_start(machine, get_lotlot_bg_tile_info, 1, 1, 12, 10, 32, 64);
688   m62_textlayer(machine, get_lotlot_fg_tile_info, 1, 1, 12, 10, 32, 64);
702689}
703690
704691VIDEO_UPDATE( lotlot )
705692{
706   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll - 64 );
707   tilemap_set_scrolly( m62_background, 0, m62_background_vscroll + 32 );
708   tilemap_set_scrollx( m62_foreground, 0, -64 );
709   tilemap_set_scrolly( m62_foreground, 0, 32 );
710   tilemap_set_transparent_pen( m62_foreground, 0 );
693   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
694   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll - 64);
695   tilemap_set_scrolly(state->bg_tilemap, 0, state->m62_background_vscroll + 32);
696   tilemap_set_scrollx(state->fg_tilemap, 0, -64);
697   tilemap_set_scrolly(state->fg_tilemap, 0, 32);
698   tilemap_set_transparent_pen(state->fg_tilemap, 0);
711699
712   tilemap_draw( bitmap, cliprect, m62_background, 0, 0 );
713   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
714   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
700   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
701   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
702   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
715703   return 0;
716704}
717705
718706
719707WRITE8_HANDLER( kidniki_text_vscroll_low_w )
720708{
721   kidniki_text_vscroll = (kidniki_text_vscroll & 0xff00) | data;
709   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
710   state->kidniki_text_vscroll = (state->kidniki_text_vscroll & 0xff00) | data;
722711}
723712
724713WRITE8_HANDLER( kidniki_text_vscroll_high_w )
725714{
726   kidniki_text_vscroll = (kidniki_text_vscroll & 0xff) | (data << 8);
715   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
716   state->kidniki_text_vscroll = (state->kidniki_text_vscroll & 0xff) | (data << 8);
727717}
728718
729719WRITE8_HANDLER( kidniki_background_bank_w )
730720{
731   if (kidniki_background_bank != (data & 1))
721   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
722   if (state->kidniki_background_bank != (data & 1))
732723   {
733      kidniki_background_bank = data & 1;
734      tilemap_mark_all_tiles_dirty(m62_background);
724      state->kidniki_background_bank = data & 1;
725      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
735726   }
736727}
737728
738729static TILE_GET_INFO( get_kidniki_bg_tile_info )
739730{
731   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
740732   int code;
741733   int color;
742   code = m62_tileram[ tile_index << 1 ];
743   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
744   SET_TILE_INFO( 0, code | ( ( color & 0xe0 ) << 3 ) | ( kidniki_background_bank << 11 ), color & 0x1f, 0);
745   tileinfo->group = ( ( color & 0xe0 ) == 0xe0 ) ? 1 : 0;
734   code = state->m62_tileram[tile_index << 1];
735   color = state->m62_tileram[(tile_index << 1) | 1];
736   SET_TILE_INFO(0, code | ((color & 0xe0) << 3) | (state->kidniki_background_bank << 11), color & 0x1f, 0);
737   tileinfo->group = ((color & 0xe0) == 0xe0) ? 1 : 0;
746738}
747739
748740static TILE_GET_INFO( get_kidniki_fg_tile_info )
749741{
742   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
750743   int code;
751744   int color;
752   code = m62_textram[ tile_index << 1 ];
753   color = m62_textram[ ( tile_index << 1 ) | 1 ];
754   SET_TILE_INFO( 2, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0 );
745   code = state->m62_textram[tile_index << 1];
746   color = state->m62_textram[(tile_index << 1) | 1];
747   SET_TILE_INFO(2, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0);
755748}
756749
757750VIDEO_START( kidniki )
758751{
759   m62_background = tilemap_create( machine, get_kidniki_bg_tile_info, tilemap_scan_rows,  8, 8, 64, 32 );
752   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
760753
761   m62_background_hscroll = 0;
762   m62_background_vscroll = 0;
754   state->bg_tilemap = tilemap_create(machine, get_kidniki_bg_tile_info, tilemap_scan_rows,  8, 8, 64, 32);
755   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
756   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
763757
764   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
765   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
766
767758   register_savestate(machine);
768759
769   m62_textlayer( machine, get_kidniki_fg_tile_info, 1, 1, 12, 8, 32, 64 );
760   m62_textlayer(machine, get_kidniki_fg_tile_info, 1, 1, 12, 8, 32, 64);
770761}
771762
772763VIDEO_UPDATE( kidniki )
773764{
774   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll );
775   tilemap_set_scrollx( m62_foreground, 0, -64 );
776   tilemap_set_scrolly( m62_foreground, 0, kidniki_text_vscroll + 128 );
777   tilemap_set_transparent_pen( m62_foreground, 0 );
765   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
766   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll);
767   tilemap_set_scrollx(state->fg_tilemap, 0, -64);
768   tilemap_set_scrolly(state->fg_tilemap, 0, state->kidniki_text_vscroll + 128);
769   tilemap_set_transparent_pen(state->fg_tilemap, 0);
778770
779   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER1, 0 );
780   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
781   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER0, 0 );
782   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
771   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
772   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
773   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
774   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
783775   return 0;
784776}
785777
786778
787779WRITE8_HANDLER( spelunkr_palbank_w )
788780{
789   if (spelunkr_palbank != (data & 0x01))
781   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
782   if (state->spelunkr_palbank != (data & 0x01))
790783   {
791      spelunkr_palbank = data & 0x01;
792      tilemap_mark_all_tiles_dirty(m62_background);
793      tilemap_mark_all_tiles_dirty(m62_foreground);
784      state->spelunkr_palbank = data & 0x01;
785      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
786      tilemap_mark_all_tiles_dirty(state->fg_tilemap);
794787   }
795788}
796789
797790static TILE_GET_INFO( get_spelunkr_bg_tile_info )
798791{
792   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
799793   int code;
800794   int color;
801   code = m62_tileram[ tile_index << 1 ];
802   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
803   SET_TILE_INFO( 0, code | ( ( color & 0x10 ) << 4 ) | ( ( color & 0x20 ) << 6 ) | ( ( color & 0xc0 ) << 3 ), ( color & 0x0f ) | ( spelunkr_palbank << 4 ), 0 );
795   code = state->m62_tileram[tile_index << 1];
796   color = state->m62_tileram[(tile_index << 1) | 1];
797   SET_TILE_INFO(0, code | ((color & 0x10) << 4) | ((color & 0x20) << 6) | ((color & 0xc0) << 3), (color & 0x0f) | (state->spelunkr_palbank << 4), 0);
804798}
805799
806800static TILE_GET_INFO( get_spelunkr_fg_tile_info )
807801{
802   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
808803   int code;
809804   int color;
810   code = m62_textram[ tile_index << 1 ];
811   color = m62_textram[ ( tile_index << 1 ) | 1 ];
812if (color&0xe0) popmessage("fg tilemap %x %x",tile_index,color&0xe0);
813   SET_TILE_INFO( 2, code | ( ( color & 0x10 ) << 4 ), ( color & 0x0f ) | ( spelunkr_palbank << 4 ), 0 );
805   code = state->m62_textram[tile_index << 1];
806   color = state->m62_textram[(tile_index << 1) | 1];
807   if (color & 0xe0) popmessage("fg tilemap %x %x", tile_index, color & 0xe0);
808   SET_TILE_INFO(2, code | ((color & 0x10) << 4), (color & 0x0f) | (state->spelunkr_palbank << 4), 0);
814809}
815810
816811VIDEO_START( spelunkr )
817812{
818   m62_start( machine, get_spelunkr_bg_tile_info, 1, 1, 8, 8, 64, 64 );
819   m62_textlayer( machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32 );
813   m62_start(machine, get_spelunkr_bg_tile_info, 1, 1, 8, 8, 64, 64);
814   m62_textlayer(machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32);
820815}
821816
822817VIDEO_UPDATE( spelunkr )
823818{
824   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll );
825   tilemap_set_scrolly( m62_background, 0, m62_background_vscroll + 128 );
826   tilemap_set_scrollx( m62_foreground, 0, -64 );
827   tilemap_set_scrolly( m62_foreground, 0, 0 );
828   tilemap_set_transparent_pen( m62_foreground, 0 );
819   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
820   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll);
821   tilemap_set_scrolly(state->bg_tilemap, 0, state->m62_background_vscroll + 128);
822   tilemap_set_scrollx(state->fg_tilemap, 0, -64);
823   tilemap_set_scrolly(state->fg_tilemap, 0, 0);
824   tilemap_set_transparent_pen(state->fg_tilemap, 0);
829825
830   tilemap_draw( bitmap, cliprect, m62_background, 0, 0 );
831   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
832   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
826   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
827   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
828   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
833829   return 0;
834830}
835831
836832
837833WRITE8_HANDLER( spelunk2_gfxport_w )
838834{
839   m62_hscroll_high_w(space,0,(data&2)>>1);
840   m62_vscroll_high_w(space,0,(data&1));
841   if (spelunkr_palbank != ((data & 0x0c) >> 2))
835   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
836   m62_hscroll_high_w(space, 0, (data & 2) >> 1);
837   m62_vscroll_high_w(space, 0, (data & 1));
838   if (state->spelunkr_palbank != ((data & 0x0c) >> 2))
842839   {
843      spelunkr_palbank = (data & 0x0c) >> 2;
844      tilemap_mark_all_tiles_dirty(m62_background);
845      tilemap_mark_all_tiles_dirty(m62_foreground);
840      state->spelunkr_palbank = (data & 0x0c) >> 2;
841      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
842      tilemap_mark_all_tiles_dirty(state->fg_tilemap);
846843   }
847844}
848845
849846static TILE_GET_INFO( get_spelunk2_bg_tile_info )
850847{
848   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
851849   int code;
852850   int color;
853   code = m62_tileram[ tile_index << 1 ];
854   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
855   SET_TILE_INFO( 0, code | ( ( color & 0xf0 ) << 4 ), ( color & 0x0f ) | ( spelunkr_palbank << 4 ), 0 );
851   code = state->m62_tileram[tile_index << 1];
852   color = state->m62_tileram[(tile_index << 1) | 1];
853   SET_TILE_INFO( 0, code | ((color & 0xf0) << 4), (color & 0x0f) | (state->spelunkr_palbank << 4), 0 );
856854}
857855
858856VIDEO_START( spelunk2 )
859857{
860   m62_start( machine, get_spelunk2_bg_tile_info, 1, 1, 8, 8, 64, 64 );
861   m62_textlayer( machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32 );
858   m62_start(machine, get_spelunk2_bg_tile_info, 1, 1, 8, 8, 64, 64);
859   m62_textlayer(machine, get_spelunkr_fg_tile_info, 1, 1, 12, 8, 32, 32);
862860}
863861
864862VIDEO_UPDATE( spelunk2 )
865863{
866   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll - 1);
867   tilemap_set_scrolly( m62_background, 0, m62_background_vscroll + 128 );
868   tilemap_set_scrollx( m62_foreground, 0, -65 );
869   tilemap_set_scrolly( m62_foreground, 0, 0 );
870   tilemap_set_transparent_pen( m62_foreground, 0 );
864   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
865   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll - 1);
866   tilemap_set_scrolly(state->bg_tilemap, 0, state->m62_background_vscroll + 128);
867   tilemap_set_scrollx(state->fg_tilemap, 0, -65);
868   tilemap_set_scrolly(state->fg_tilemap, 0, 0);
869   tilemap_set_transparent_pen(state->fg_tilemap, 0);
871870
872   tilemap_draw( bitmap, cliprect, m62_background, 0, 0 );
873   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
874   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
871   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
872   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
873   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
875874   return 0;
876875}
877876
878877
879878static TILE_GET_INFO( get_youjyudn_bg_tile_info )
880879{
880   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
881881   int code;
882882   int color;
883   code = m62_tileram[ tile_index << 1 ];
884   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
885   SET_TILE_INFO( 0, code | ( ( color & 0x60 ) << 3 ), color & 0x1f, 0 );
886   if( ( ( color & 0x1f ) >> 1 ) >= 0x08 )
887   {
883   code = state->m62_tileram[tile_index << 1];
884   color = state->m62_tileram[(tile_index << 1) | 1];
885   SET_TILE_INFO( 0, code | ((color & 0x60) << 3), color & 0x1f, 0);
886   if (((color & 0x1f) >> 1) >= 0x08)
888887      tileinfo->group = 1;
889   }
890888   else
891   {
892889      tileinfo->group = 0;
893   }
894890}
895891
896892static TILE_GET_INFO( get_youjyudn_fg_tile_info )
897893{
894   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
898895   int code;
899896   int color;
900   code = m62_textram[ tile_index << 1 ];
901   color = m62_textram[ ( tile_index << 1 ) | 1 ];
902   SET_TILE_INFO( 2, code | ( ( color & 0xc0 ) << 2 ), ( color & 0x0f ), 0 );
897   code = state->m62_textram[tile_index << 1];
898   color = state->m62_textram[(tile_index << 1) | 1];
899   SET_TILE_INFO(2, code | ((color & 0xc0) << 2), (color & 0x0f), 0);
903900}
904901
905902VIDEO_START( youjyudn )
906903{
907   m62_start( machine, get_youjyudn_bg_tile_info, 1, 0, 8, 16, 64, 16 );
908   m62_textlayer( machine, get_youjyudn_fg_tile_info, 1, 1, 12, 8, 32, 32 );
909   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
910   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
904   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
905   m62_start(machine, get_youjyudn_bg_tile_info, 1, 0, 8, 16, 64, 16);
906   m62_textlayer(machine, get_youjyudn_fg_tile_info, 1, 1, 12, 8, 32, 32);
907   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
908   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
911909}
912910
913911VIDEO_UPDATE( youjyudn )
914912{
915   tilemap_set_scrollx( m62_background, 0, m62_background_hscroll );
916   tilemap_set_scrollx( m62_foreground, 0, -64 );
917   tilemap_set_scrolly( m62_foreground, 0, 0 );
918   tilemap_set_transparent_pen( m62_foreground, 0 );
913   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
914   tilemap_set_scrollx(state->bg_tilemap, 0, state->m62_background_hscroll);
915   tilemap_set_scrollx(state->fg_tilemap, 0, -64);
916   tilemap_set_scrolly(state->fg_tilemap, 0, 0);
917   tilemap_set_transparent_pen(state->fg_tilemap, 0);
919918
920   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER1, 0 );
921   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
922   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER0, 0 );
923   tilemap_draw( bitmap, cliprect, m62_foreground, 0, 0 );
919   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
920   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
921   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
922   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
924923   return 0;
925924}
926925
927926
928927WRITE8_HANDLER( horizon_scrollram_w )
929928{
930   horizon_scrollram[ offset ] = data;
929   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
930   state->scrollram[offset] = data;
931931}
932932
933933static TILE_GET_INFO( get_horizon_bg_tile_info )
934934{
935   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
935936   int code;
936937   int color;
937   code = m62_tileram[ tile_index << 1 ];
938   color = m62_tileram[ ( tile_index << 1 ) | 1 ];
939   SET_TILE_INFO( 0, code | ( ( color & 0xc0 ) << 2 ) | ( ( color & 0x20 ) << 5 ), color & 0x1f, 0 );
940   if( ( ( color & 0x1f ) >> 1 ) >= 0x08 )
941   {
938   code = state->m62_tileram[tile_index << 1];
939   color = state->m62_tileram[(tile_index << 1) | 1];
940   SET_TILE_INFO(0, code | ((color & 0xc0) << 2) | ((color & 0x20) << 5), color & 0x1f, 0);
941
942   if (((color & 0x1f) >> 1) >= 0x08)
942943      tileinfo->group = 1;
943   }
944944   else
945   {
946945      tileinfo->group = 0;
947   }
948946}
949947
950948VIDEO_START( horizon )
951949{
952   m62_start( machine, get_horizon_bg_tile_info, 32, 0, 8, 8, 64, 32 );
953   tilemap_set_transmask(m62_background,0,0xffff,0x0000);   /* split type 0 is totally transparent in front half */
954   tilemap_set_transmask(m62_background,1,0x0001,0xfffe);   /* split type 1 has pen 0 transparent in front half */
950   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
951   m62_start(machine, get_horizon_bg_tile_info, 32, 0, 8, 8, 64, 32);
952   tilemap_set_transmask(state->bg_tilemap, 0, 0xffff, 0x0000);   /* split type 0 is totally transparent in front half */
953   tilemap_set_transmask(state->bg_tilemap, 1, 0x0001, 0xfffe);   /* split type 1 has pen 0 transparent in front half */
955954}
956955
957956VIDEO_UPDATE( horizon )
958957{
958   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
959959   int i;
960   for( i = 0; i < 32; i++ )
960   for (i = 0; i < 32; i++)
961961   {
962      tilemap_set_scrollx( m62_background, i, horizon_scrollram[ i << 1 ] | ( horizon_scrollram[ ( i << 1 ) | 1 ] << 8 ) );
962      tilemap_set_scrollx(state->bg_tilemap, i, state->scrollram[i << 1] | (state->scrollram[(i << 1) | 1] << 8));
963963   }
964   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER1, 0 );
965   draw_sprites( screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00 );
966   tilemap_draw( bitmap, cliprect, m62_background, TILEMAP_DRAW_LAYER0, 0 );
964   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
965   draw_sprites(screen->machine, bitmap, cliprect, 0x1f, 0x00, 0x00);
966   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
967967   return 0;
968968}
src/mame/video/1943.c
r6428r6429
2828***************************************************************************/
2929
3030#include "driver.h"
31#include "1943.h"
3132
32UINT8 *c1943_scrollx;
33UINT8 *c1943_scrolly;
34UINT8 *c1943_bgscrollx;
35
36static int chon, objon, sc1on, sc2on;
37
38static tilemap *bg2_tilemap, *bg_tilemap, *fg_tilemap;
39
4033/***************************************************************************
4134
4235  Convert the color PROMs into a more useable format.
r6428r6429
127120
128121WRITE8_HANDLER( c1943_videoram_w )
129122{
130   videoram[offset] = data;
131   tilemap_mark_tile_dirty(fg_tilemap, offset);
123   _1943_state *state = (_1943_state *)space->machine->driver_data;
124
125   state->videoram[offset] = data;
126   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
132127}
133128
134129WRITE8_HANDLER( c1943_colorram_w )
135130{
136   colorram[offset] = data;
137   tilemap_mark_tile_dirty(fg_tilemap, offset);
131   _1943_state *state = (_1943_state *)space->machine->driver_data;
132
133   state->colorram[offset] = data;
134   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
138135}
139136
140137WRITE8_HANDLER( c1943_c804_w )
141138{
142   int bankaddress;
143   UINT8 *RAM = memory_region(space->machine, "maincpu");
139   _1943_state *state = (_1943_state *)space->machine->driver_data;
140   int bank, i;
144141
145142   /* bits 0 and 1 are coin counters */
146143   coin_counter_w(0, data & 0x01);
147144   coin_counter_w(1, data & 0x02);
148145
149146   /* bits 2, 3 and 4 select the ROM bank */
150   bankaddress = 0x10000 + (data & 0x1c) * 0x1000;
151   memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
147   bank = data & 0x1c;
148   for (i = 1; i < 5; i++)
149      memory_set_bank(space->machine, i, bank);
152150
153151   /* bit 5 resets the sound CPU - we ignore it */
154152
r6428r6429
156154   flip_screen_set(space->machine, data & 0x40);
157155
158156   /* bit 7 enables characters */
159   chon = data & 0x80;
157   state->char_on = data & 0x80;
160158}
161159
162160WRITE8_HANDLER( c1943_d806_w )
163161{
162   _1943_state *state = (_1943_state *)space->machine->driver_data;
163
164164   /* bit 4 enables bg 1 */
165   sc1on = data & 0x10;
165   state->bg1_on = data & 0x10;
166166
167167   /* bit 5 enables bg 2 */
168   sc2on = data & 0x20;
168   state->bg2_on = data & 0x20;
169169
170170   /* bit 6 enables sprites */
171   objon = data & 0x40;
171   state->obj_on = data & 0x40;
172172}
173173
174174static TILE_GET_INFO( c1943_get_bg2_tile_info )
r6428r6429
200200
201201static TILE_GET_INFO( c1943_get_fg_tile_info )
202202{
203   int attr = colorram[tile_index];
204   int code = videoram[tile_index] + ((attr & 0xe0) << 3);
203   _1943_state *state = (_1943_state *)machine->driver_data;
204   int attr = state->colorram[tile_index];
205   int code = state->videoram[tile_index] + ((attr & 0xe0) << 3);
205206   int color = attr & 0x1f;
206207
207208   SET_TILE_INFO(0, code, color, 0);
r6428r6429
209210
210211VIDEO_START( 1943 )
211212{
212   bg2_tilemap = tilemap_create(machine, c1943_get_bg2_tile_info, tilemap_scan_cols,
213       32, 32, 2048, 8);
213   _1943_state *state = (_1943_state *)machine->driver_data;
214   state->bg2_tilemap = tilemap_create(machine, c1943_get_bg2_tile_info, tilemap_scan_cols, 32, 32, 2048, 8);
215   state->bg_tilemap = tilemap_create(machine, c1943_get_bg_tile_info, tilemap_scan_cols, 32, 32, 2048, 8);
216   state->fg_tilemap = tilemap_create(machine, c1943_get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
214217
215   bg_tilemap = tilemap_create(machine, c1943_get_bg_tile_info, tilemap_scan_cols,
216       32, 32, 2048, 8);
218   colortable_configure_tilemap_groups(machine->colortable, state->bg_tilemap, machine->gfx[1], 0x0f);
219   tilemap_set_transparent_pen(state->fg_tilemap, 0);
217220
218   fg_tilemap = tilemap_create(machine, c1943_get_fg_tile_info, tilemap_scan_rows,
219       8, 8, 32, 32);
220
221   colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[1], 0x0f);
222   tilemap_set_transparent_pen(fg_tilemap, 0);
223
224    state_save_register_global(machine, chon);
225    state_save_register_global(machine, objon);
226    state_save_register_global(machine, sc1on);
227    state_save_register_global(machine, sc2on);
221   state_save_register_global(machine, state->char_on);
222   state_save_register_global(machine, state->obj_on);
223   state_save_register_global(machine, state->bg1_on);
224   state_save_register_global(machine, state->bg2_on);
228225}
229226
230static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
227static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority )
231228{
229   _1943_state *state = (_1943_state *)machine->driver_data;
232230   int offs;
233231
234232   for (offs = spriteram_size - 32; offs >= 0; offs -= 32)
235233   {
236      int attr = spriteram[offs + 1];
237      int code = spriteram[offs] + ((attr & 0xe0) << 3);
234      int attr = state->spriteram[offs + 1];
235      int code = state->spriteram[offs] + ((attr & 0xe0) << 3);
238236      int color = attr & 0x0f;
239      int sx = spriteram[offs + 3] - ((attr & 0x10) << 4);
240      int sy = spriteram[offs + 2];
237      int sx = state->spriteram[offs + 3] - ((attr & 0x10) << 4);
238      int sy = state->spriteram[offs + 2];
241239
242240      if (flip_screen_get(machine))
243241      {
r6428r6429
249247      if (priority)
250248      {
251249         if (color != 0x0a && color != 0x0b)
252         {
253            drawgfx_transpen(bitmap, cliprect, machine->gfx[3], code, color, flip_screen_get(machine), flip_screen_get(machine),
254               sx, sy, 0);
255         }
250            drawgfx_transpen(bitmap, cliprect, machine->gfx[3], code, color, flip_screen_get(machine), flip_screen_get(machine), sx, sy, 0);
256251      }
257252      else
258253      {
259254         if (color == 0x0a || color == 0x0b)
260         {
261            drawgfx_transpen(bitmap, cliprect, machine->gfx[3], code, color, flip_screen_get(machine), flip_screen_get(machine),
262               sx, sy, 0);
263         }
255            drawgfx_transpen(bitmap, cliprect, machine->gfx[3], code, color, flip_screen_get(machine), flip_screen_get(machine), sx, sy, 0);
264256      }
265257   }
266258}
267259
268260VIDEO_UPDATE( 1943 )
269261{
270   tilemap_set_scrollx(bg2_tilemap, 0, c1943_bgscrollx[0] + 256 * c1943_bgscrollx[1]);
271   tilemap_set_scrollx(bg_tilemap, 0, c1943_scrollx[0] + 256 * c1943_scrollx[1]);
272   tilemap_set_scrolly(bg_tilemap, 0, c1943_scrolly[0]);
262   _1943_state *state = (_1943_state *)screen->machine->driver_data;
263   tilemap_set_scrollx(state->bg2_tilemap, 0, state->bgscrollx[0] + 256 * state->bgscrollx[1]);
264   tilemap_set_scrollx(state->bg_tilemap, 0, state->scrollx[0] + 256 * state->scrollx[1]);
265   tilemap_set_scrolly(state->bg_tilemap, 0, state->scrolly[0]);
273266
274   if (sc2on)
275      tilemap_draw(bitmap, cliprect, bg2_tilemap, 0, 0);
267   if (state->bg2_on)
268      tilemap_draw(bitmap, cliprect, state->bg2_tilemap, 0, 0);
276269   else
277270      bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
278271
279   if (objon) draw_sprites(screen->machine, bitmap, cliprect, 0);
280   if (sc1on) tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
281   if (objon) draw_sprites(screen->machine, bitmap, cliprect, 1);
282   if (chon)  tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
272   if (state->obj_on)
273      draw_sprites(screen->machine, bitmap, cliprect, 0);
274
275   if (state->bg1_on)
276      tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
277
278   if (state->obj_on)
279      draw_sprites(screen->machine, bitmap, cliprect, 1);
280
281   if (state->char_on)
282      tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
283
283284   return 0;
284285}
src/mame/video/popper.c
r6428r6429
1/*
2Popper
3Omori Electric CAD (OEC) 1983
4*/
1/***************************************************************************
52
3    Popper
4
5    Omori Electric CAD (OEC) 1983
6
7***************************************************************************/
8
69#include "driver.h"
710#include "video/resnet.h"
11#include "popper.h"
812
9static tilemap *popper_p123_tilemap, *popper_p0_tilemap, *popper_ol_p123_tilemap, *popper_ol_p0_tilemap;
10UINT8 *popper_videoram, *popper_attribram, *popper_ol_videoram, *popper_ol_attribram, *popper_spriteram;
11size_t popper_spriteram_size;
12static INT32 popper_flipscreen, popper_e002, popper_gfx_bank;
13static rectangle tilemap_clip;
1413
15
1614/***************************************************************************
1715 *
1816 * Color guns - from schematics
r6428r6429
5856
5957WRITE8_HANDLER( popper_ol_videoram_w )
6058{
61   popper_ol_videoram[offset] = data;
62   tilemap_mark_tile_dirty(popper_ol_p123_tilemap,offset);
63   tilemap_mark_tile_dirty(popper_ol_p0_tilemap,offset);
59   popper_state *state = (popper_state *)space->machine->driver_data;
60
61   state->ol_videoram[offset] = data;
62   tilemap_mark_tile_dirty(state->ol_p123_tilemap, offset);
63   tilemap_mark_tile_dirty(state->ol_p0_tilemap, offset);
6464}
6565
6666WRITE8_HANDLER( popper_videoram_w )
6767{
68   popper_videoram[offset] = data;
69   tilemap_mark_tile_dirty(popper_p123_tilemap,offset);
70   tilemap_mark_tile_dirty(popper_p0_tilemap,offset);
68   popper_state *state = (popper_state *)space->machine->driver_data;
69
70   state->videoram[offset] = data;
71   tilemap_mark_tile_dirty(state->p123_tilemap, offset);
72   tilemap_mark_tile_dirty(state->p0_tilemap, offset);
7173}
7274
7375WRITE8_HANDLER( popper_ol_attribram_w )
7476{
75   popper_ol_attribram[offset] = data;
76   tilemap_mark_tile_dirty(popper_ol_p123_tilemap,offset);
77   tilemap_mark_tile_dirty(popper_ol_p0_tilemap,offset);
77   popper_state *state = (popper_state *)space->machine->driver_data;
78
79   state->ol_attribram[offset] = data;
80   tilemap_mark_tile_dirty(state->ol_p123_tilemap, offset);
81   tilemap_mark_tile_dirty(state->ol_p0_tilemap, offset);
7882}
7983
8084WRITE8_HANDLER( popper_attribram_w )
8185{
82   popper_attribram[offset] = data;
83   tilemap_mark_tile_dirty(popper_p123_tilemap,offset);
84   tilemap_mark_tile_dirty(popper_p0_tilemap,offset);
86   popper_state *state = (popper_state *)space->machine->driver_data;
87
88   state->attribram[offset] = data;
89   tilemap_mark_tile_dirty(state->p123_tilemap, offset);
90   tilemap_mark_tile_dirty(state->p0_tilemap, offset);
8591}
8692
8793WRITE8_HANDLER( popper_flipscreen_w )
8894{
89   popper_flipscreen = data;
90   tilemap_set_flip_all( space->machine,popper_flipscreen?(TILEMAP_FLIPX|TILEMAP_FLIPY):0 );
95   popper_state *state = (popper_state *)space->machine->driver_data;
9196
92   tilemap_clip = *video_screen_get_visible_area(space->machine->primary_screen);
97   state->flipscreen = data;
98   tilemap_set_flip_all(space->machine, state->flipscreen ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0);
9399
94   if (popper_flipscreen)
95      tilemap_clip.min_x=tilemap_clip.max_x-15;
100   if (state->flipscreen)
101      state->tilemap_clip.min_x = state->tilemap_clip.max_x - 15;
96102   else
97      tilemap_clip.max_x=15;
103      state->tilemap_clip.max_x = 15;
98104}
99105
100106WRITE8_HANDLER( popper_e002_w )
101107{
102   popper_e002 = data;
108   popper_state *state = (popper_state *)space->machine->driver_data;
109   state->e002 = data;
103110}
104111
105112WRITE8_HANDLER( popper_gfx_bank_w )
106113{
107   if (popper_gfx_bank != data)
114   popper_state *state = (popper_state *)space->machine->driver_data;
115
116   if (state->gfx_bank != data)
108117   {
109      popper_gfx_bank = data;
118      state->gfx_bank = data;
110119      tilemap_mark_all_tiles_dirty_all(space->machine);
111120   }
112121}
113122
114123static TILE_GET_INFO( get_popper_p123_tile_info )
115124{
116   UINT32 tile_number = popper_videoram[tile_index];
117   UINT8 attr  = popper_attribram[tile_index];
118   tile_number += popper_gfx_bank << 8;
125   popper_state *state = (popper_state *)machine->driver_data;
126   UINT32 tile_number = state->videoram[tile_index];
127   UINT8 attr = state->attribram[tile_index];
128   tile_number += state->gfx_bank << 8;
119129
120130   SET_TILE_INFO(
121131         0,
122132         tile_number,
123         (attr&0xf),
133         (attr & 0xf),
124134         0);
125   tileinfo->group = (attr & 0x80)>>7;
135   tileinfo->group = (attr & 0x80) >> 7;
126136}
127137
128138static TILE_GET_INFO( get_popper_p0_tile_info )
129139{
130   UINT32 tile_number = popper_videoram[tile_index];
131   UINT8 attr = popper_attribram[tile_index];
132   tile_number += popper_gfx_bank << 8;
140   popper_state *state = (popper_state *)machine->driver_data;
141   UINT32 tile_number = state->videoram[tile_index];
142   UINT8 attr = state->attribram[tile_index];
143   tile_number += state->gfx_bank << 8;
133144
134145   //pen 0 only in front if colour set as well
135   tileinfo->group = (attr&0x70) ? ((attr & 0x80)>>7) : 0;
146   tileinfo->group = (attr & 0x70) ? ((attr & 0x80) >> 7) : 0;
136147
137148   SET_TILE_INFO(
138149         0,
139150         tile_number,
140         ((attr&0x70)>>4)+8,
151         ((attr & 0x70) >> 4) + 8,
141152         0);
142153}
143154
144155static TILE_GET_INFO( get_popper_ol_p123_tile_info )
145156{
146   UINT32 tile_number = popper_ol_videoram[tile_index];
147   UINT8 attr  = popper_ol_attribram[tile_index];
148   tile_number += popper_gfx_bank << 8;
157   popper_state *state = (popper_state *)machine->driver_data;
158   UINT32 tile_number = state->ol_videoram[tile_index];
159   UINT8 attr  = state->ol_attribram[tile_index];
160   tile_number += state->gfx_bank << 8;
149161
150162   SET_TILE_INFO(
151163         0,
152164         tile_number,
153         (attr&0xf),
165         (attr & 0xf),
154166         0);
155   tileinfo->group = (attr & 0x80)>>7;
167   tileinfo->group = (attr & 0x80) >> 7;
156168}
157169
158170static TILE_GET_INFO( get_popper_ol_p0_tile_info )
159171{
160   UINT32 tile_number = popper_ol_videoram[tile_index];
161   UINT8 attr = popper_ol_attribram[tile_index];
162   tile_number += popper_gfx_bank << 8;
172   popper_state *state = (popper_state *)machine->driver_data;
173   UINT32 tile_number = state->ol_videoram[tile_index];
174   UINT8 attr = state->ol_attribram[tile_index];
175   tile_number += state->gfx_bank << 8;
163176
164177   //pen 0 only in front if colour set as well
165   tileinfo->group = (attr&0x70) ? ((attr & 0x80)>>7) : 0;
178   tileinfo->group = (attr & 0x70) ? ((attr & 0x80) >> 7) : 0;
166179
167180   SET_TILE_INFO(
168181         0,
169182         tile_number,
170         ((attr&0x70)>>4)+8,
183         ((attr & 0x70) >> 4) + 8,
171184         0);
172185}
173186
174187VIDEO_START( popper )
175188{
176   popper_p123_tilemap    = tilemap_create( machine, get_popper_p123_tile_info,   tilemap_scan_cols,8,8,33,32 );
177   popper_p0_tilemap      = tilemap_create( machine, get_popper_p0_tile_info,     tilemap_scan_cols,8,8,33,32 );
178   popper_ol_p123_tilemap = tilemap_create( machine, get_popper_ol_p123_tile_info,tilemap_scan_cols,8,8,2 ,32 );
179   popper_ol_p0_tilemap   = tilemap_create( machine, get_popper_ol_p0_tile_info,  tilemap_scan_cols,8,8,2 ,32 );
189   popper_state *state = (popper_state *)machine->driver_data;
190   state->p123_tilemap    = tilemap_create(machine, get_popper_p123_tile_info,    tilemap_scan_cols, 8, 8, 33, 32 );
191   state->p0_tilemap      = tilemap_create(machine, get_popper_p0_tile_info,      tilemap_scan_cols, 8, 8, 33, 32);
192   state->ol_p123_tilemap = tilemap_create(machine, get_popper_ol_p123_tile_info, tilemap_scan_cols, 8, 8, 2, 32);
193   state->ol_p0_tilemap   = tilemap_create(machine, get_popper_ol_p0_tile_info,   tilemap_scan_cols, 8, 8, 2, 32);
180194
181   tilemap_set_transmask(popper_p123_tilemap,   0,0x0f,0x01);
182   tilemap_set_transmask(popper_p123_tilemap,   1,0x01,0x0f);
183   tilemap_set_transmask(popper_p0_tilemap,     0,0x0f,0x0e);
184   tilemap_set_transmask(popper_p0_tilemap,     1,0x0e,0x0f);
185   tilemap_set_transmask(popper_ol_p123_tilemap,0,0x0f,0x01);
186   tilemap_set_transmask(popper_ol_p123_tilemap,1,0x01,0x0f);
187   tilemap_set_transmask(popper_ol_p0_tilemap,  0,0x0f,0x0e);
188   tilemap_set_transmask(popper_ol_p0_tilemap,  1,0x0e,0x0f);
195   tilemap_set_transmask(state->p123_tilemap,    0, 0x0f, 0x01);
196   tilemap_set_transmask(state->p123_tilemap,    1, 0x01, 0x0f);
197   tilemap_set_transmask(state->p0_tilemap,      0, 0x0f, 0x0e);
198   tilemap_set_transmask(state->p0_tilemap,      1, 0x0e, 0x0f);
199   tilemap_set_transmask(state->ol_p123_tilemap, 0, 0x0f, 0x01);
200   tilemap_set_transmask(state->ol_p123_tilemap, 1, 0x01, 0x0f);
201   tilemap_set_transmask(state->ol_p0_tilemap,   0, 0x0f, 0x0e);
202   tilemap_set_transmask(state->ol_p0_tilemap,   1, 0x0e, 0x0f);
189203
190   tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
204   state->tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
191205
192   state_save_register_global(machine, popper_flipscreen);
193//  state_save_register_global(machine, popper_e002);
194   state_save_register_global(machine, popper_gfx_bank);
206   state_save_register_global(machine, state->flipscreen);
207   state_save_register_global(machine, state->e002);
208   state_save_register_global(machine, state->gfx_bank);
195209}
196210
197static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
211static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect )
198212{
199   int offs,sx,sy,flipx,flipy;
213   popper_state *state = (popper_state *)machine->driver_data;
214   int offs, sx, sy, flipx, flipy;
200215
201   for (offs = 0; offs < popper_spriteram_size-4; offs += 4)
216   for (offs = 0; offs < spriteram_size - 4; offs += 4)
202217   {
203218      //if y position is in the current strip
204      if(popper_spriteram[offs+1] && (((popper_spriteram[offs]+(popper_flipscreen?2:0))&0xf0) == (0x0f-offs/0x80)<<4))
219      if (state->spriteram[offs + 1] && (((state->spriteram[offs] + (state->flipscreen ? 2 : 0)) & 0xf0) == (0x0f - offs / 0x80) << 4))
205220      {
206221         //offs     y pos
207222         //offs+1   sprite number
r6428r6429
213228         //----xxxx colour
214229         //offs+3   x pos
215230
216         sx = popper_spriteram[offs+3];
217         sy = 240-popper_spriteram[offs];
218         flipx = (popper_spriteram[offs+2]&0x40)>>6;
219         flipy = (popper_spriteram[offs+2]&0x80)>>7;
231         sx = state->spriteram[offs + 3];
232         sy = 240 - state->spriteram[offs];
233         flipx = (state->spriteram[offs + 2] & 0x40) >> 6;
234         flipy = (state->spriteram[offs + 2] & 0x80) >> 7;
220235
221         if (popper_flipscreen)
236         if (state->flipscreen)
222237         {
223238            sx = 248 - sx;
224239            sy = 242 - sy;
r6428r6429
226241            flipy = !flipy;
227242         }
228243
229         drawgfx_transpen(bitmap,cliprect,machine->gfx[1],
230               popper_spriteram[offs+1],
231               (popper_spriteram[offs+2]&0x0f),
244         drawgfx_transpen(bitmap, cliprect, machine->gfx[1],
245               state->spriteram[offs + 1],
246               (state->spriteram[offs + 2] & 0x0f),
232247               flipx,flipy,
233248               sx,sy,0);
234249      }
r6428r6429
237252
238253VIDEO_UPDATE( popper )
239254{
240   rectangle finalclip = tilemap_clip;
255   popper_state *state = (popper_state *)screen->machine->driver_data;
256   rectangle finalclip = state->tilemap_clip;
241257   sect_rect(&finalclip, cliprect);
242258
243259   //attribram
r6428r6429
246262   //-xxx---- colour for pen 0 (from second prom?)
247263   //----xxxx colour for pens 1,2,3
248264
249   tilemap_draw( bitmap,cliprect,popper_p123_tilemap,     TILEMAP_DRAW_LAYER1,0 );
250   tilemap_draw( bitmap,cliprect,popper_p0_tilemap,       TILEMAP_DRAW_LAYER1,0 );
251   tilemap_draw( bitmap,&finalclip,popper_ol_p123_tilemap,TILEMAP_DRAW_LAYER1,0 );
252   tilemap_draw( bitmap,&finalclip,popper_ol_p0_tilemap,  TILEMAP_DRAW_LAYER1,0 );
265   tilemap_draw(bitmap, cliprect, state->p123_tilemap,      TILEMAP_DRAW_LAYER1, 0);
266   tilemap_draw(bitmap, cliprect, state->p0_tilemap,        TILEMAP_DRAW_LAYER1, 0);
267   tilemap_draw(bitmap, &finalclip, state->ol_p123_tilemap, TILEMAP_DRAW_LAYER1, 0);
268   tilemap_draw(bitmap, &finalclip, state->ol_p0_tilemap,   TILEMAP_DRAW_LAYER1, 0);
253269
254   draw_sprites(screen->machine, bitmap,cliprect);
270   draw_sprites(screen->machine, bitmap, cliprect);
255271
256   tilemap_draw( bitmap,cliprect,popper_p123_tilemap,     TILEMAP_DRAW_LAYER0,0 );
257   tilemap_draw( bitmap,cliprect,popper_p0_tilemap,       TILEMAP_DRAW_LAYER0,0 );
258   tilemap_draw( bitmap,&finalclip,popper_ol_p123_tilemap,TILEMAP_DRAW_LAYER0,0 );
259   tilemap_draw( bitmap,&finalclip,popper_ol_p0_tilemap,  TILEMAP_DRAW_LAYER0,0 );
272   tilemap_draw(bitmap, cliprect, state->p123_tilemap,      TILEMAP_DRAW_LAYER0, 0);
273   tilemap_draw(bitmap, cliprect, state->p0_tilemap,        TILEMAP_DRAW_LAYER0, 0);
274   tilemap_draw(bitmap, &finalclip, state->ol_p123_tilemap, TILEMAP_DRAW_LAYER0, 0);
275   tilemap_draw(bitmap, &finalclip, state->ol_p0_tilemap,   TILEMAP_DRAW_LAYER0, 0);
260276   return 0;
261277}
src/mame/video/ladyfrog.c
r6428r6429
1111static tilemap *bg_tilemap;
1212static int palette_bank;
1313//static int gfxctrl;
14static int spritetilebase;
1415
1516UINT8 *ladyfrog_scrlram;
1617
r6428r6429
105106      int offs = (pr & 0x1f) * 4;
106107      {
107108         int code,sx,sy,flipx,flipy,pal;
108         code = ladyfrog_spriteram[offs+2] + ((ladyfrog_spriteram[offs+1] & 0x10) << 4)+0x800;
109         code = ladyfrog_spriteram[offs+2] + ((ladyfrog_spriteram[offs+1] & 0x10) << 4)+spritetilebase;
109110         pal=ladyfrog_spriteram[offs+1] & 0x0f;
110111         sx = ladyfrog_spriteram[offs+3];
111         sy = 240-ladyfrog_spriteram[offs+0];
112         sy = 238-ladyfrog_spriteram[offs+0];
112113         flipx = ((ladyfrog_spriteram[offs+1]&0x40)>>6);
113114         flipy = ((ladyfrog_spriteram[offs+1]&0x80)>>7);
114115         drawgfx_transpen(bitmap,cliprect,machine->gfx[1],
r6428r6429
131132
132133}
133134
134VIDEO_START( ladyfrog )
135VIDEO_START( ladyfrog_common )
135136{
136137  ladyfrog_spriteram = auto_alloc_array(machine, UINT8, 160);
137138  bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 );
r6428r6429
142143  tilemap_set_scrolldy( bg_tilemap,   15, 15 );
143144}
144145
146VIDEO_START( ladyfrog )
147{
148   // weird, there are sprite tiles at 0x000 and 0x400, but they don't contain all the sprites!
149   spritetilebase = 0x800;
150   VIDEO_START_CALL(ladyfrog_common);
151}
145152
153VIDEO_START( toucheme )
154{
155   spritetilebase = 0x000;
156   VIDEO_START_CALL(ladyfrog_common);
157}
158
159
146160VIDEO_UPDATE( ladyfrog )
147161{
148162    tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
src/mame/video/konamiic.c
r6428r6429
54395439      }
54405440   }
54415441
5442   // winning spike doesn't like layer association..
5443   if (K056832_djmain_hack==2)
5444      K056832_LayerAssociation = 0;
5445
5446
54425447   // disable all tilemaps
54435448   for (pageIndex=0; pageIndex<K056832_PAGE_COUNT; pageIndex++)
54445449   {
54455450      K056832_LayerAssociatedWithPage[pageIndex] = -1;
54465451   }
54475452
5453
54485454   // enable associated tilemaps
54495455   for (layer=0; layer<4; layer++)
54505456   {
r6428r6429
54605466         for (c=0; c<colspan; c++)
54615467         {
54625468            pageIndex = (((rowstart + r) & 3) << 2) + ((colstart + c) & 3);
5463if (!K056832_djmain_hack || K056832_LayerAssociatedWithPage[pageIndex] == -1) //*
5469if (!(K056832_djmain_hack==1) || K056832_LayerAssociatedWithPage[pageIndex] == -1) //*
54645470               K056832_LayerAssociatedWithPage[pageIndex] = setlayer;
54655471         }
54665472      }
r6428r6429
68166822         drawrect.min_x = (dminx < cminx ) ? cminx : dminx;
68176823         drawrect.max_x = (dmaxx > cmaxx ) ? cmaxx : dmaxx;
68186824
6825         // soccer superstars visible area is >512 pixels, this causes problems with the logic because
6826         // the tilemaps are 512 pixels across.  Assume that if the limits were set as below that we
6827         // want the tilemap to be drawn on the right hand side..  this is probably not the correct
6828         // logic, but it works.
6829         if ((drawrect.min_x>0) && (drawrect.max_x==511)) drawrect.max_x=cliprect->max_x;
6830
68196831         tilemap_set_scrollx(tmap, 0, dx);
68206832
68216833         LINE_SHORTCIRCUIT:
r6428r6429
72677279   return k54338_regs[reg];
72687280}
72697281
7270void K054338_update_all_shadows(running_machine *machine)
7282void K054338_update_all_shadows(running_machine *machine, int rushingheroes_hack)
72717283{
72727284   int i, d;
72737285   int noclip = k54338_regs[K338_REG_CONTROL] & K338_CTL_CLIPSL;
r6428r6429
72797291      K054338_shdRGB[i] = d;
72807292   }
72817293
7282   palette_set_shadow_dRGB32(machine, 0, K054338_shdRGB[0], K054338_shdRGB[1], K054338_shdRGB[2], noclip);
7283   palette_set_shadow_dRGB32(machine, 1, K054338_shdRGB[3], K054338_shdRGB[4], K054338_shdRGB[5], noclip);
7284   palette_set_shadow_dRGB32(machine, 2, K054338_shdRGB[6], K054338_shdRGB[7], K054338_shdRGB[8], noclip);
7294   if (!rushingheroes_hack)
7295   {
7296      palette_set_shadow_dRGB32(machine, 0, K054338_shdRGB[0], K054338_shdRGB[1], K054338_shdRGB[2], noclip);
7297      palette_set_shadow_dRGB32(machine, 1, K054338_shdRGB[3], K054338_shdRGB[4], K054338_shdRGB[5], noclip);
7298      palette_set_shadow_dRGB32(machine, 2, K054338_shdRGB[6], K054338_shdRGB[7], K054338_shdRGB[8], noclip);
7299   }
7300   else // rushing heroes seems to specify shadows in another format, or it's not being interpreted properly.
7301   {
7302      palette_set_shadow_dRGB32(machine, 0, -80, -80, -80, 0);
7303      palette_set_shadow_dRGB32(machine, 1, -80, -80, -80, 0);
7304      palette_set_shadow_dRGB32(machine, 2, -80, -80, -80, 0);
7305   }
72857306}
72867307
72877308// K054338 BG color fill
src/mame/video/konamiic.h
r6428r6429
392392WRITE16_HANDLER( K054338_word_w ); // "CLCT" registers
393393WRITE32_HANDLER( K054338_long_w );
394394int K054338_read_register(int reg);
395void K054338_update_all_shadows(running_machine *machine);         // called at the beginning of VIDEO_UPDATE()
395void K054338_update_all_shadows(running_machine *machine, int rushingheroes_hack);         // called at the beginning of VIDEO_UPDATE()
396396void K054338_fill_solid_bg(bitmap_t *bitmap);            // solid backcolor fill
397397void K054338_fill_backcolor(running_machine *machine, bitmap_t *bitmap, int mode);   // unified fill, 0=solid, 1=gradient
398398int  K054338_set_alpha_level(int pblend);                     // blend style 0-2
src/mame/video/aeroboto.c
r6428r6429
1/***************************************************************************
2
3    video/aeroboto.c
4
5***************************************************************************/
6
7
18#include "driver.h"
9#include "aeroboto.h"
210
311
412// how the starfield ROM is interpreted: 0=256x256x1 linear bitmap, 1=8x8x1x1024 tilemap
r6428r6429
715// scroll speed of the stars: 1=normal, 2=half, 3=one-third...etc.(possitive integers only)
816#define SCROLL_SPEED 1
917
10
11UINT8 *aeroboto_videoram;
12UINT8 *aeroboto_hscroll, *aeroboto_vscroll, *aeroboto_tilecolor;
13UINT8 *aeroboto_starx, *aeroboto_stary, *aeroboto_bgcolor;
14
15static int aeroboto_charbank, aeroboto_starsoff;
16
17static tilemap *bg_tilemap;
18
1918/***************************************************************************
2019
2120  Callbacks for the TileMap code
r6428r6429
2423
2524static TILE_GET_INFO( get_tile_info )
2625{
27   UINT8 code = aeroboto_videoram[tile_index];
26   aeroboto_state *state = (aeroboto_state *)machine->driver_data;
27   UINT8 code = state->videoram[tile_index];
2828   SET_TILE_INFO(
2929         0,
30         code + (aeroboto_charbank << 8),
31         aeroboto_tilecolor[code],
32         (aeroboto_tilecolor[code] >= 0x33) ? 0 : TILE_FORCE_LAYER0);
30         code + (state->charbank << 8),
31         state->tilecolor[code],
32         (state->tilecolor[code] >= 0x33) ? 0 : TILE_FORCE_LAYER0);
3333}
3434// transparency should only affect tiles with color 0x33 or higher
3535
r6428r6429
4242
4343VIDEO_START( aeroboto )
4444{
45   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,64);
45   aeroboto_state *state = (aeroboto_state *)machine->driver_data;
4646
47   tilemap_set_transparent_pen(bg_tilemap,0);
47   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 64);
48   tilemap_set_transparent_pen(state->bg_tilemap, 0);
49   tilemap_set_scroll_rows(state->bg_tilemap, 64);
4850
49   tilemap_set_scroll_rows(bg_tilemap,64);
51   state_save_register_global(machine, state->charbank);
52   state_save_register_global(machine, state->starsoff);
53   state_save_register_global(machine, state->sx);
54   state_save_register_global(machine, state->sy);
55   state_save_register_global(machine, state->ox);
56   state_save_register_global(machine, state->oy);
5057
51    state_save_register_global(machine, aeroboto_charbank);
52    state_save_register_global(machine, aeroboto_starsoff);
53
5458   #if STARS_LAYOUT
5559   {
56      UINT8 *rom, *temp;
57      int i, length;
60      UINT8 *temp;
61      int i;
5862
59      rom = memory_region(machine, "gfx2");
60      length = memory_region_length(machine, "gfx2");
61      temp = alloc_array_or_die(UINT8, length);
62      memcpy(temp, rom, length);
63      temp = alloc_array_or_die(UINT8, state->stars_length);
64      memcpy(temp, state->stars_rom, state->stars_length);
6365
64      for (i=0; i<length; i++) rom[(i&~0xff)+(i<<5&0xe0)+(i>>3&0x1f)] = temp[i];
66      for (i = 0; i < state->stars_length; i++)
67         state->stars_rom[(i & ~0xff) + (i << 5 & 0xe0) + (i >> 3 & 0x1f)] = temp[i];
6568
6669      free(temp);
6770   }
r6428r6429
8386
8487WRITE8_HANDLER( aeroboto_3000_w )
8588{
89   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
90
8691   /* bit 0 selects both flip screen and player1/player2 controls */
8792   flip_screen_set(space->machine, data & 0x01);
8893
8994   /* bit 1 = char bank select */
90   if (aeroboto_charbank != ((data & 0x02) >> 1))
95   if (state->charbank != ((data & 0x02) >> 1))
9196   {
92      tilemap_mark_all_tiles_dirty(bg_tilemap);
93      aeroboto_charbank = (data & 0x02) >> 1;
97      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
98      state->charbank = (data & 0x02) >> 1;
9499   }
95100
96101   /* bit 2 = disable star field? */
97   aeroboto_starsoff = data & 0x4;
102   state->starsoff = data & 0x4;
98103}
99104
100105WRITE8_HANDLER( aeroboto_videoram_w )
101106{
102   aeroboto_videoram[offset] = data;
103   tilemap_mark_tile_dirty(bg_tilemap,offset);
107   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
108
109   state->videoram[offset] = data;
110   tilemap_mark_tile_dirty(state->bg_tilemap,offset);
104111}
105112
106113WRITE8_HANDLER( aeroboto_tilecolor_w )
107114{
108   if (aeroboto_tilecolor[offset] != data)
115   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
116
117   if (state->tilecolor[offset] != data)
109118   {
110      aeroboto_tilecolor[offset] = data;
111      tilemap_mark_all_tiles_dirty(bg_tilemap);
119      state->tilecolor[offset] = data;
120      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
112121   }
113122}
114123
r6428r6429
120129
121130***************************************************************************/
122131
123static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
132static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
124133{
134   aeroboto_state *state = (aeroboto_state *)machine->driver_data;
125135   int offs;
126136
127   for (offs = 0;offs < spriteram_size;offs += 4)
137   for (offs = 0; offs < spriteram_size; offs += 4)
128138   {
129      int x = spriteram[offs+3];
130      int y = 240 - spriteram[offs];
139      int x = state->spriteram[offs + 3];
140      int y = 240 - state->spriteram[offs];
131141
132142      if (flip_screen_get(machine))
133143      {
r6428r6429
136146      }
137147
138148      drawgfx_transpen(bitmap, cliprect, machine->gfx[1],
139            spriteram[offs+1],
140            spriteram[offs+2] & 0x07,
149            state->spriteram[offs + 1],
150            state->spriteram[offs + 2] & 0x07,
141151            flip_screen_get(machine), flip_screen_get(machine),
142152            ((x + 8) & 0xff) - 8, y, 0);
143153   }
r6428r6429
146156
147157VIDEO_UPDATE( aeroboto )
148158{
159   aeroboto_state *state = (aeroboto_state *)screen->machine->driver_data;
160
149161   static const rectangle splitrect1 = { 0, 255, 0, 39 };
150162   static const rectangle splitrect2 = { 0, 255, 40, 255 };
151   static int sx=0, sy=0;
152   static UINT8 ox=0, oy=0;
153163   UINT8 *src_base, *src_colptr, *src_rowptr;
154164   int src_offsx, src_colmask, sky_color, star_color, x, y, i, j, pen;
155165
156   sky_color = star_color = *aeroboto_bgcolor << 2;
166   sky_color = star_color = *state->bgcolor << 2;
157167
158168   // the star field is supposed to be seen through tile pen 0 when active
159   if (!aeroboto_starsoff)
169   if (!state->starsoff)
160170   {
161      if (star_color < 0xd0) { star_color = 0xd0; sky_color = 0; }
171      if (star_color < 0xd0)
172      {
173         star_color = 0xd0;
174         sky_color = 0;
175      }
176
162177      star_color += 2;
163178
164179      bitmap_fill(bitmap, cliprect, sky_color);
165180
166181      // actual scroll speed is unknown but it can be adjusted by changing the SCROLL_SPEED constant
167      sx += (char)(*aeroboto_starx - ox);
168      ox = *aeroboto_starx;
169      x = sx / SCROLL_SPEED;
182      state->sx += (char)(*state->starx - state->ox);
183      state->ox = *state->starx;
184      x = state->sx / SCROLL_SPEED;
170185
171      if (*aeroboto_vscroll != 0xff) sy += (char)(*aeroboto_stary - oy);
172      oy = *aeroboto_stary;
173      y = sy / SCROLL_SPEED;
186      if (*state->vscroll != 0xff)
187         state->sy += (char)(*state->stary - state->oy);
188      state->oy = *state->stary;
189      y = state->sy / SCROLL_SPEED;
174190
175      src_base = memory_region(screen->machine, "gfx2");
191      src_base = state->stars_rom;
176192
177      for (i=0; i<256; i++)
193      for (i = 0; i < 256; i++)
178194      {
179195         src_offsx = (x + i) & 0xff;
180196         src_colmask = 1 << (src_offsx & 7);
r6428r6429
182198         src_colptr = src_base + src_offsx;
183199         pen = star_color + ((i + 8) >> 4 & 1);
184200
185         for (j=0; j<256; j++)
201         for (j = 0; j < 256; j++)
186202         {
187203            src_rowptr = src_colptr + (((y + j) & 0xff) << 5 );
188            if (!((unsigned)*src_rowptr & src_colmask)) *BITMAP_ADDR16(bitmap, j, i) = pen;
204            if (!((unsigned)*src_rowptr & src_colmask))
205               *BITMAP_ADDR16(bitmap, j, i) = pen;
189206         }
190207      }
191208   }
192209   else
193210   {
194      sx = ox = *aeroboto_starx;
195      sy = oy = *aeroboto_stary;
211      state->sx = state->ox = *state->starx;
212      state->sy = state->oy = *state->stary;
196213      bitmap_fill(bitmap, cliprect, sky_color);
197214   }
198215
199   for (y = 0;y < 64; y++)
200      tilemap_set_scrollx(bg_tilemap,y,aeroboto_hscroll[y]);
216   for (y = 0; y < 64; y++)
217      tilemap_set_scrollx(state->bg_tilemap, y, state->hscroll[y]);
201218
202219   // the playfield is part of a splitscreen and should not overlap with status display
203   tilemap_set_scrolly(bg_tilemap,0,*aeroboto_vscroll);
204   tilemap_draw(bitmap,&splitrect2,bg_tilemap,0,0);
220   tilemap_set_scrolly(state->bg_tilemap, 0, *state->vscroll);
221   tilemap_draw(bitmap, &splitrect2, state->bg_tilemap, 0, 0);
205222
206   draw_sprites(screen->machine,bitmap,cliprect);
223   draw_sprites(screen->machine, bitmap, cliprect);
207224
208225   // the status display behaves more closely to a 40-line splitscreen than an overlay
209   tilemap_set_scrolly(bg_tilemap,0,0);
210   tilemap_draw(bitmap,&splitrect1,bg_tilemap,0,0);
226   tilemap_set_scrolly(state->bg_tilemap, 0, 0);
227   tilemap_draw(bitmap, &splitrect1, state->bg_tilemap, 0, 0);
211228   return 0;
212229}
src/mame/video/nbmj8900.c
r0r6429
1/******************************************************************************
2
3    Video Hardware for Nichibutsu Mahjong series.
4
5    Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 1999/11/05 -
6
7******************************************************************************/
8
9#include "driver.h"
10#include "nb1413m3.h"
11
12
13static int nbmj8900_scrolly;
14static int blitter_destx, blitter_desty;
15static int blitter_sizex, blitter_sizey;
16static int blitter_src_addr;
17static int blitter_direction_x, blitter_direction_y;
18static int nbmj8900_vram;
19static int nbmj8900_gfxrom;
20static int nbmj8900_dispflag;
21static int nbmj8900_flipscreen;
22static int nbmj8900_clutsel;
23static int nbmj8900_screen_refresh;
24static int gfxdraw_mode;
25
26static int screen_height;
27static int screen_width;
28
29static bitmap_t *nbmj8900_tmpbitmap0, *nbmj8900_tmpbitmap1;
30static UINT8 *nbmj8900_videoram0, *nbmj8900_videoram1;
31static UINT8 *nbmj8900_palette;
32static UINT8 *nbmj8900_clut;
33
34
35static void nbmj8900_vramflip(running_machine *machine, int vram);
36static void nbmj8900_gfxdraw(running_machine *machine);
37
38
39/******************************************************************************
40
41
42******************************************************************************/
43READ8_HANDLER( nbmj8900_palette_type1_r )
44{
45   return nbmj8900_palette[offset];
46}
47
48WRITE8_HANDLER( nbmj8900_palette_type1_w )
49{
50   int r, g, b;
51
52   nbmj8900_palette[offset] = data;
53
54   if (!(offset & 1)) return;
55
56   offset &= 0x1fe;
57
58   r = ((nbmj8900_palette[offset + 0] & 0x0f) >> 0);
59   g = ((nbmj8900_palette[offset + 1] & 0xf0) >> 4);
60   b = ((nbmj8900_palette[offset + 1] & 0x0f) >> 0);
61
62   palette_set_color_rgb(space->machine, (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
63}
64
65READ8_HANDLER( nbmj8900_palette_type2_r )
66{
67   return nbmj8900_palette[offset];
68}
69
70WRITE8_HANDLER( nbmj8900_palette_type2_w )
71{
72   int r, g, b;
73
74   nbmj8900_palette[offset] = data;
75
76   if (!(offset & 0x100)) return;
77
78   offset &= 0x0ff;
79
80   r = ((nbmj8900_palette[offset + 0x000] & 0x0f) >> 0);
81   g = ((nbmj8900_palette[offset + 0x000] & 0xf0) >> 4);
82   b = ((nbmj8900_palette[offset + 0x100] & 0x0f) >> 0);
83
84   palette_set_color_rgb(space->machine, (offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b));
85}
86
87READ8_HANDLER( nbmj8900_palette_type3_r )
88{
89   return nbmj8900_palette[offset];
90}
91
92WRITE8_HANDLER( nbmj8900_palette_type3_w )
93{
94   int r, g, b;
95
96   nbmj8900_palette[offset] = data;
97
98   if (!(offset & 1)) return;
99
100   offset &= 0x1fe;
101
102   r = ((nbmj8900_palette[offset + 1] & 0x0f) >> 0);
103   g = ((nbmj8900_palette[offset + 0] & 0xf0) >> 4);
104   b = ((nbmj8900_palette[offset + 0] & 0x0f) >> 0);
105
106   palette_set_color_rgb(space->machine, (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
107}
108
109WRITE8_HANDLER( nbmj8900_clutsel_w )
110{
111   nbmj8900_clutsel = data;
112}
113
114READ8_HANDLER( nbmj8900_clut_r )
115{
116   return nbmj8900_clut[offset];
117}
118
119WRITE8_HANDLER( nbmj8900_clut_w )
120{
121   nbmj8900_clut[((nbmj8900_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data;
122}
123
124/******************************************************************************
125
126
127******************************************************************************/
128WRITE8_HANDLER( nbmj8900_blitter_w )
129{
130   switch (offset)
131   {
132      case 0x00:   blitter_src_addr = (blitter_src_addr & 0xff00) | data; break;
133      case 0x01:   blitter_src_addr = (blitter_src_addr & 0x00ff) | (data << 8); break;
134      case 0x02:   blitter_destx = data; break;
135      case 0x03:   blitter_desty = data; break;
136      case 0x04:   blitter_sizex = data; break;
137      case 0x05:   blitter_sizey = data;
138               /* writing here also starts the blit */
139               nbmj8900_gfxdraw(space->machine);
140               break;
141      case 0x06:   blitter_direction_x = (data & 0x01) ? 1 : 0;
142               blitter_direction_y = (data & 0x02) ? 1 : 0;
143               nbmj8900_flipscreen = (data & 0x04) ? 1 : 0;
144               nbmj8900_dispflag = (data & 0x08) ? 0 : 1;
145               if (gfxdraw_mode) nbmj8900_vramflip(space->machine, 1);
146               nbmj8900_vramflip(space->machine, 0);
147               break;
148      case 0x07:   break;
149   }
150}
151
152WRITE8_HANDLER( nbmj8900_scrolly_w )
153{
154   nbmj8900_scrolly = data;
155}
156
157WRITE8_HANDLER( nbmj8900_vramsel_w )
158{
159   /* protection - not sure about this */
160   nb1413m3_sndromrgntag = (data & 0x20) ? "protdata" : "voice";
161
162   nbmj8900_vram = data;
163}
164
165WRITE8_HANDLER( nbmj8900_romsel_w )
166{
167   nbmj8900_gfxrom = (data & 0x0f);
168
169   if ((0x20000 * nbmj8900_gfxrom) > (memory_region_length(space->machine, "gfx") - 1))
170   {
171#ifdef MAME_DEBUG
172      popmessage("GFXROM BANK OVER!!");
173#endif
174      nbmj8900_gfxrom &= (memory_region_length(space->machine, "gfx") / 0x20000 - 1);
175   }
176}
177
178/******************************************************************************
179
180
181******************************************************************************/
182void nbmj8900_vramflip(running_machine *machine, int vram)
183{
184   static int nbmj8900_flipscreen_old = 0;
185   int x, y;
186   unsigned char color1, color2;
187   unsigned char *vidram;
188   int width = video_screen_get_width(machine->primary_screen);
189   int height = video_screen_get_height(machine->primary_screen);
190
191   if (nbmj8900_flipscreen == nbmj8900_flipscreen_old) return;
192
193   vidram = vram ? nbmj8900_videoram1 : nbmj8900_videoram0;
194
195   for (y = 0; y < (height / 2); y++)
196   {
197      for (x = 0; x < width; x++)
198      {
199         color1 = vidram[(y * width) + x];
200         color2 = vidram[((y ^ 0xff) * width) + (x ^ 0x1ff)];
201         vidram[(y * width) + x] = color2;
202         vidram[((y ^ 0xff) * width) + (x ^ 0x1ff)] = color1;
203      }
204   }
205
206   nbmj8900_flipscreen_old = nbmj8900_flipscreen;
207   nbmj8900_screen_refresh = 1;
208}
209
210
211static void update_pixel0(running_machine *machine, int x, int y)
212{
213   UINT8 color = nbmj8900_videoram0[(y * screen_width) + x];
214   *BITMAP_ADDR16(nbmj8900_tmpbitmap0, y, x) = machine->pens[color];
215}
216
217static void update_pixel1(running_machine *machine, int x, int y)
218{
219   UINT8 color = nbmj8900_videoram1[(y * screen_width) + x];
220   *BITMAP_ADDR16(nbmj8900_tmpbitmap1, y, x) = machine->pens[color];
221}
222
223static TIMER_CALLBACK( blitter_timer_callback )
224{
225   nb1413m3_busyflag = 1;
226}
227
228static void nbmj8900_gfxdraw(running_machine *machine)
229{
230   unsigned char *GFX = memory_region(machine, "gfx");
231
232   int x, y;
233   int dx1, dx2, dy1, dy2;
234   int startx, starty;
235   int sizex, sizey;
236   int skipx, skipy;
237   int ctrx, ctry;
238   unsigned char color, color1, color2;
239   int gfxaddr;
240
241   nb1413m3_busyctr = 0;
242
243   startx = blitter_destx + blitter_sizex;
244   starty = blitter_desty + blitter_sizey;
245
246   if (blitter_direction_x)
247   {
248      sizex = blitter_sizex ^ 0xff;
249      skipx = 1;
250   }
251   else
252   {
253      sizex = blitter_sizex;
254      skipx = -1;
255   }
256
257   if (blitter_direction_y)
258   {
259      sizey = blitter_sizey ^ 0xff;
260      skipy = 1;
261   }
262   else
263   {
264      sizey = blitter_sizey;
265      skipy = -1;
266   }
267
268   gfxaddr = (nbmj8900_gfxrom << 17) + (blitter_src_addr << 1);
269
270   for (y = starty, ctry = sizey; ctry >= 0; y += skipy, ctry--)
271   {
272      for (x = startx, ctrx = sizex; ctrx >= 0; x += skipx, ctrx--)
273      {
274         if ((gfxaddr > (memory_region_length(machine, "gfx") - 1)))
275         {
276#ifdef MAME_DEBUG
277            popmessage("GFXROM ADDRESS OVER!!");
278#endif
279            gfxaddr &= (memory_region_length(machine, "gfx") - 1);
280         }
281
282         color = GFX[gfxaddr++];
283
284         // for hanamomo
285         if ((nb1413m3_type == NB1413M3_HANAMOMO) && ((gfxaddr >= 0x20000) && (gfxaddr < 0x28000)))
286         {
287            color |= ((color & 0x0f) << 4);
288         }
289
290         dx1 = (2 * x + 0) & 0x1ff;
291         dx2 = (2 * x + 1) & 0x1ff;
292
293         if (gfxdraw_mode)
294         {
295            // 2 layer type
296            dy1 = y & 0xff;
297            dy2 = (y + nbmj8900_scrolly) & 0xff;
298         }
299         else
300         {
301            // 1 layer type
302            dy1 = (y + nbmj8900_scrolly) & 0xff;
303            dy2 = 0;
304         }
305
306         if (!nbmj8900_flipscreen)
307         {
308            dx1 ^= 0x1ff;
309            dx2 ^= 0x1ff;
310            dy1 ^= 0xff;
311            dy2 ^= 0xff;
312         }
313
314         if (blitter_direction_x)
315         {
316            // flip
317            color1 = (color & 0x0f) >> 0;
318            color2 = (color & 0xf0) >> 4;
319         }
320         else
321         {
322            // normal
323            color1 = (color & 0xf0) >> 4;
324            color2 = (color & 0x0f) >> 0;
325         }
326
327         color1 = nbmj8900_clut[((nbmj8900_clutsel & 0x7f) << 4) + color1];
328         color2 = nbmj8900_clut[((nbmj8900_clutsel & 0x7f) << 4) + color2];
329
330         if ((!gfxdraw_mode) || (nbmj8900_vram & 0x01))
331         {
332            // layer 1
333            if (color1 != 0xff)
334            {
335               nbmj8900_videoram0[(dy1 * screen_width) + dx1] = color1;
336               update_pixel0(machine, dx1, dy1);
337            }
338            if (color2 != 0xff)
339            {
340               nbmj8900_videoram0[(dy1 * screen_width) + dx2] = color2;
341               update_pixel0(machine, dx2, dy1);
342            }
343         }
344         if (gfxdraw_mode && (nbmj8900_vram & 0x02))
345         {
346            // layer 2
347            if (nbmj8900_vram & 0x08)
348            {
349               // transparent enable
350               if (color1 != 0xff)
351               {
352                  nbmj8900_videoram1[(dy2 * screen_width) + dx1] = color1;
353                  update_pixel1(machine, dx1, dy2);
354               }
355               if (color2 != 0xff)
356               {
357                  nbmj8900_videoram1[(dy2 * screen_width) + dx2] = color2;
358                  update_pixel1(machine, dx2, dy2);
359               }
360            }
361            else
362            {
363               // transparent disable
364               nbmj8900_videoram1[(dy2 * screen_width) + dx1] = color1;
365               update_pixel1(machine, dx1, dy2);
366               nbmj8900_videoram1[(dy2 * screen_width) + dx2] = color2;
367               update_pixel1(machine, dx2, dy2);
368            }
369         }
370
371         nb1413m3_busyctr++;
372      }
373   }
374
375   nb1413m3_busyflag = 0;
376   timer_set(machine, attotime_mul(ATTOTIME_IN_NSEC(2500), nb1413m3_busyctr), NULL, 0, blitter_timer_callback);
377}
378
379/******************************************************************************
380
381
382******************************************************************************/
383VIDEO_START( nbmj8900_2layer )
384{
385   screen_width = video_screen_get_width(machine->primary_screen);
386   screen_height = video_screen_get_height(machine->primary_screen);
387
388   nbmj8900_tmpbitmap0 = video_screen_auto_bitmap_alloc(machine->primary_screen);
389   nbmj8900_tmpbitmap1 = video_screen_auto_bitmap_alloc(machine->primary_screen);
390   nbmj8900_videoram0 = auto_alloc_array(machine, UINT8, screen_width * screen_height);
391   nbmj8900_videoram1 = auto_alloc_array(machine, UINT8, screen_width * screen_height);
392   nbmj8900_palette = auto_alloc_array(machine, UINT8, 0x200);
393   nbmj8900_clut = auto_alloc_array(machine, UINT8, 0x800);
394   memset(nbmj8900_videoram0, 0xff, (screen_width * screen_height * sizeof(UINT8)));
395   memset(nbmj8900_videoram1, 0xff, (screen_width * screen_height * sizeof(UINT8)));
396//  machine->pens[0x07f] = 0xff;    /* palette_transparent_pen */
397   gfxdraw_mode = 1;
398}
399
400/******************************************************************************
401
402
403******************************************************************************/
404VIDEO_UPDATE( nbmj8900 )
405{
406   int x, y;
407
408   if (nbmj8900_screen_refresh)
409   {
410      nbmj8900_screen_refresh = 0;
411      for (y = 0; y < screen_height; y++)
412      {
413         for (x = 0; x < screen_width; x++)
414         {
415            update_pixel0(screen->machine, x, y);
416         }
417      }
418      if (gfxdraw_mode)
419      {
420         for (y = 0; y < screen_height; y++)
421         {
422            for (x = 0; x < screen_width; x++)
423            {
424               update_pixel1(screen->machine, x, y);
425            }
426         }
427      }
428   }
429
430   if (nbmj8900_dispflag)
431   {
432      static int scrolly;
433      if (!nbmj8900_flipscreen) scrolly =   nbmj8900_scrolly;
434      else                      scrolly = (-nbmj8900_scrolly) & 0xff;
435
436      if (gfxdraw_mode)
437      {
438         copyscrollbitmap(bitmap, nbmj8900_tmpbitmap0, 0, 0, 0, 0, cliprect);
439         copyscrollbitmap_trans(bitmap, nbmj8900_tmpbitmap1, 0, 0, 1, &scrolly, cliprect, 0xff);
440      }
441      else
442      {
443         copyscrollbitmap(bitmap, nbmj8900_tmpbitmap0, 0, 0, 1, &scrolly, cliprect);
444      }
445   }
446   else
447   {
448      bitmap_fill(bitmap, 0, 0);
449   }
450   return 0;
451}
src/mame/video/atarifb.c
r6428r6429
88#include "includes/atarifb.h"
99
1010
11/* local */
12UINT8 *atarifb_alphap1_videoram;
13UINT8 *atarifb_alphap2_videoram;
14UINT8 *atarifb_field_videoram;
15UINT8 *atarifb_scroll_register;
16
17static tilemap *alpha1_tilemap;
18static tilemap *alpha2_tilemap;
19static tilemap *field_tilemap;
20
21
22
2311/*************************************
2412 *
2513 *  Tilemap callbacks
2614 *
2715 *************************************/
2816
29static void get_tile_info_common(running_machine *machine, tile_data *tileinfo,
30                         tilemap_memory_index tile_index, UINT8 *alpha_videoram)
17static void get_tile_info_common( running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, UINT8 *alpha_videoram )
3118{
3219   int code = alpha_videoram[tile_index] & 0x3f;
3320   int flip = alpha_videoram[tile_index] & 0x40;
r6428r6429
4229
4330static TILE_GET_INFO( alpha1_get_tile_info )
4431{
45   get_tile_info_common(machine, tileinfo, tile_index, atarifb_alphap1_videoram);
32   atarifb_state *state = (atarifb_state *)machine->driver_data;
33   get_tile_info_common(machine, tileinfo, tile_index, state->alphap1_videoram);
4634}
4735
4836
4937static TILE_GET_INFO( alpha2_get_tile_info )
5038{
51   get_tile_info_common(machine, tileinfo, tile_index, atarifb_alphap2_videoram);
39   atarifb_state *state = (atarifb_state *)machine->driver_data;
40   get_tile_info_common(machine, tileinfo, tile_index, state->alphap2_videoram);
5241}
5342
5443
5544static TILE_GET_INFO( field_get_tile_info )
5645{
57   int code = atarifb_field_videoram[tile_index] & 0x3f;
58   int flipyx = atarifb_field_videoram[tile_index] >> 6;
46   atarifb_state *state = (atarifb_state *)machine->driver_data;
47   int code = state->field_videoram[tile_index] & 0x3f;
48   int flipyx = state->field_videoram[tile_index] >> 6;
5949
6050   SET_TILE_INFO(1, code, 0, TILE_FLIPYX(flipyx));
6151}
r6428r6429
7161
7262WRITE8_HANDLER( atarifb_alpha1_videoram_w )
7363{
74   atarifb_alphap1_videoram[offset] = data;
75   tilemap_mark_tile_dirty(alpha1_tilemap, offset);
64   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
65
66   state->alphap1_videoram[offset] = data;
67   tilemap_mark_tile_dirty(state->alpha1_tilemap, offset);
7668}
7769
7870
7971WRITE8_HANDLER( atarifb_alpha2_videoram_w )
8072{
81   atarifb_alphap2_videoram[offset] = data;
82   tilemap_mark_tile_dirty(alpha2_tilemap, offset);
73   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
74
75   state->alphap2_videoram[offset] = data;
76   tilemap_mark_tile_dirty(state->alpha2_tilemap, offset);
8377}
8478
8579
8680WRITE8_HANDLER( atarifb_field_videoram_w )
8781{
88   atarifb_field_videoram[offset] = data;
89   tilemap_mark_tile_dirty(field_tilemap, offset);
82   atarifb_state *state = (atarifb_state *)space->machine->driver_data;
83
84   state->field_videoram[offset] = data;
85   tilemap_mark_tile_dirty(state->field_tilemap, offset);
9086}
9187
9288
r6428r6429
9995
10096VIDEO_START( atarifb )
10197{
102   alpha1_tilemap = tilemap_create(machine, alpha1_get_tile_info, tilemap_scan_cols,  8,8,  3,32);
103   alpha2_tilemap = tilemap_create(machine, alpha2_get_tile_info, tilemap_scan_cols,  8,8,  3,32);
104   field_tilemap  = tilemap_create(machine, field_get_tile_info,  tilemap_scan_rows,  8,8, 32,32);
98   atarifb_state *state = (atarifb_state *)machine->driver_data;
99
100   state->alpha1_tilemap = tilemap_create(machine, alpha1_get_tile_info, tilemap_scan_cols, 8, 8, 3, 32);
101   state->alpha2_tilemap = tilemap_create(machine, alpha2_get_tile_info, tilemap_scan_cols, 8, 8, 3, 32);
102   state->field_tilemap  = tilemap_create(machine, field_get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
105103}
106104
107105
108106
109static void draw_playfield_and_alpha(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
110                            int playfield_x_offset, int playfield_y_offset)
107static void draw_playfield_and_alpha( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int playfield_x_offset, int playfield_y_offset )
111108{
112   static const rectangle bigfield_area = {  4*8, 34*8-1, 0*8, 32*8-1 };
109   atarifb_state *state = (atarifb_state *)machine->driver_data;
110   static const rectangle bigfield_area = { 4 * 8, 34 * 8 - 1, 0 * 8, 32 * 8 - 1 };
113111
114112   int scroll_x[1];
115113   int scroll_y[1];
116114
117   scroll_x[0] = - *atarifb_scroll_register + 32 + playfield_x_offset;
115   scroll_x[0] = - *state->scroll_register + 32 + playfield_x_offset;
118116   scroll_y[0] = 8 + playfield_y_offset;
119117
120   copybitmap(bitmap, tilemap_get_pixmap(alpha1_tilemap), 0, 0, 35*8, 1*8, NULL);
121   copybitmap(bitmap, tilemap_get_pixmap(alpha2_tilemap), 0, 0,  0*8, 1*8, NULL);
122   copyscrollbitmap(bitmap, tilemap_get_pixmap(field_tilemap),  1, scroll_x, 1, scroll_y, &bigfield_area);
118   copybitmap(bitmap, tilemap_get_pixmap(state->alpha1_tilemap), 0, 0, 35*8, 1*8, NULL);
119   copybitmap(bitmap, tilemap_get_pixmap(state->alpha2_tilemap), 0, 0,  0*8, 1*8, NULL);
120   copyscrollbitmap(bitmap, tilemap_get_pixmap(state->field_tilemap),  1, scroll_x, 1, scroll_y, &bigfield_area);
123121}
124122
125123
126static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
127                   int gfx, int is_soccer)
124static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int gfx, int is_soccer )
128125{
129   static const rectangle bigfield_area = {  4*8, 34*8-1, 0*8, 32*8-1 };
126   atarifb_state *state = (atarifb_state *)machine->driver_data;
127   static const rectangle bigfield_area = { 4 * 8, 34 * 8 - 1, 0 * 8, 32 * 8 - 1 };
130128
131129   int obj;
132130
133   for (obj=0;obj<16;obj++)
131   for (obj = 0; obj < 16; obj++)
134132   {
135133      int charcode;
136      int flipx,flipy;
137      int sx,sy;
134      int flipx, flipy;
135      int sx, sy;
138136      int shade = 0;
139137
140      sy = 255 - spriteram[obj*2 + 1];
141      if (sy == 255) continue;
138      sy = 255 - state->spriteram[obj * 2 + 1];
139      if (sy == 255)
140         continue;
142141
143      charcode = spriteram[obj*2] & 0x3f;
144      flipx = (spriteram[obj*2] & 0x40);
145      flipy = (spriteram[obj*2] & 0x80);
146      sx = spriteram[obj*2 + 0x20] + 8*3;
142      charcode = state->spriteram[obj * 2] & 0x3f;
143      flipx = (state->spriteram[obj * 2] & 0x40);
144      flipy = (state->spriteram[obj * 2] & 0x80);
145      sx = state->spriteram[obj * 2 + 0x20] + 8 * 3;
147146
148147      /* Note on Atari Soccer: */
149148      /* There are 3 sets of 2 bits each, where the 2 bits represent */
r6428r6429
151150      /* color of each bit in the sprite, but I haven't implemented it that way. */
152151      if (is_soccer)
153152      {
154         shade = ((spriteram[obj*2+1 + 0x20]) & 0x07);
153         shade = ((state->spriteram[obj * 2 + 1 + 0x20]) & 0x07);
155154
156         drawgfx_transpen(bitmap,&bigfield_area,machine->gfx[gfx + 1],
155         drawgfx_transpen(bitmap, &bigfield_area, machine->gfx[gfx + 1],
157156            charcode, shade,
158            flipx,flipy,sx,sy,0);
157            flipx, flipy, sx, sy, 0);
159158
160         shade = ((spriteram[obj*2+1 + 0x20]) & 0x08) >> 3;
159         shade = ((state->spriteram[obj * 2 + 1 + 0x20]) & 0x08) >> 3;
161160      }
162161
163      drawgfx_transpen(bitmap,&bigfield_area,machine->gfx[gfx],
162      drawgfx_transpen(bitmap, &bigfield_area, machine->gfx[gfx],
164163            charcode, shade,
165            flipx,flipy,sx,sy,0);
164            flipx, flipy, sx, sy, 0);
166165
167166      /* If this isn't soccer, handle the multiplexed sprites */
168167      if (!is_soccer)
r6428r6429
172171         if ((charcode == 0x11) && (sy == 0x07))
173172         {
174173            sy = 0xf1; /* When multiplexed, it's 0x10...why? */
175            drawgfx_transpen(bitmap,&bigfield_area,machine->gfx[gfx],
174            drawgfx_transpen(bitmap, &bigfield_area, machine->gfx[gfx],
176175               charcode, 0,
177               flipx,flipy,sx,sy,0);
176               flipx, flipy, sx, sy, 0);
178177         }
179178      }
180179   }
src/mame/video/mystwarr.c
r6428r6429
77
88#include "driver.h"
99#include "video/konamiic.h"
10#include "machine/konamigx.h"
10#include "konamigx.h"
1111
1212static int layer_colorbase[6];
1313static int oinprion, cbparam;
r6428r6429
337337
338338   sprite_colorbase = K055555_get_palette_index(4)<<5;
339339
340   konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, blendmode);
340   konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, blendmode, 0, 0);
341341   return 0;
342342}
343343
r6428r6429
354354
355355   sprite_colorbase = K055555_get_palette_index(4)<<4;
356356
357   konamigx_mixer(screen->machine, bitmap, cliprect, 0, GXSUB_K053250 | GXSUB_4BPP, 0, 0, 0);
357   konamigx_mixer(screen->machine, bitmap, cliprect, 0, GXSUB_K053250 | GXSUB_4BPP, 0, 0, 0, 0, 0);
358358   return 0;
359359}
360360
r6428r6429
377377   // not quite right
378378   blendmode = (oinprion==0xef && K054338_read_register(K338_REG_PBLEND)) ? ((1<<16|GXMIX_BLEND_FORCE)<<2) : 0;
379379
380   konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, blendmode);
380   konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, blendmode, 0, 0);
381381   return 0;
382382}
383383
r6428r6429
539539         popmessage("K053936: PSAC colorbase changed");
540540   }
541541
542   konamigx_mixer(screen->machine, bitmap, cliprect, (roz_enable) ? ult_936_tilemap : 0, rozmode, 0, 0, 0);
542   konamigx_mixer(screen->machine, bitmap, cliprect, (roz_enable) ? ult_936_tilemap : 0, rozmode, 0, 0, 0, 0, 0);
543543   return 0;
544544}
src/mame/video/m57.c
r6428r6429
55****************************************************************************/
66
77#include "driver.h"
8#include "m57.h"
8#include "includes/iremz80.h"
99
1010
11UINT8 *m57_scroll;
12
13static int flipscreen;
14static tilemap *bg_tilemap;
15
16
1711/***************************************************************************
1812
1913  Convert the color PROMs into a more useable format.
r6428r6429
3529  bit 0 -- 1  kohm resistor  -- BLUE
3630
3731***************************************************************************/
32
3833PALETTE_INIT( m57 )
3934{
4035   int i;
4136
42   machine->colortable = colortable_alloc(machine, 32*8+16);
37   machine->colortable = colortable_alloc(machine, 32 * 8 + 16);
4338
4439   /* character palette */
45   for (i = 0;i < 256;i++)
40   for (i = 0; i < 256; i++)
4641   {
47      int bit0,bit1,bit2,r,g,b;
42      int bit0, bit1, bit2, r, g, b;
4843
4944      /* red component */
5045      bit0 = 0;
r6428r6429
6257      bit2 = (color_prom[0] >> 2) & 0x01;
6358      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
6459
65      colortable_palette_set_color(machine->colortable,i,MAKE_RGB(r,g,b));
66      colortable_entry_set_value(machine->colortable,i,i);
60      colortable_palette_set_color(machine->colortable, i, MAKE_RGB(r,g,b));
61      colortable_entry_set_value(machine->colortable, i, i);
6762      color_prom++;
6863   }
6964
r6428r6429
7166   /* color_prom now points to the beginning of the sprite palette */
7267
7368   /* sprite palette */
74   for (i = 0;i < 16;i++)
69   for (i = 0; i < 16; i++)
7570   {
76      int bit0,bit1,bit2,r,g,b;
71      int bit0, bit1, bit2, r, g, b;
7772
7873      /* red component */
7974      bit0 = 0;
r6428r6429
9186      bit2 = (*color_prom >> 2) & 0x01;
9287      b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
9388
94      colortable_palette_set_color(machine->colortable,i+256,MAKE_RGB(r,g,b));
89      colortable_palette_set_color(machine->colortable, i + 256, MAKE_RGB(r,g,b));
9590      color_prom++;
9691   }
9792
r6428r6429
10095
10196
10297   /* sprite lookup table */
103   for (i = 0;i < 32*8;i++)
98   for (i = 0; i < 32 * 8; i++)
10499   {
105      colortable_entry_set_value(machine->colortable,i+32*8,256 + (~*color_prom & 0x0f));
100      colortable_entry_set_value(machine->colortable, i + 32 * 8, 256 + (~*color_prom & 0x0f));
106101      color_prom++;
107102   }
108103}
r6428r6429
116111
117112static TILE_GET_INFO( get_tile_info )
118113{
119   UINT8 attr = videoram[tile_index*2 + 0];
120   UINT16 code = videoram[tile_index*2 + 1] | ((attr & 0xc0) << 2);
114   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
121115
116   UINT8 attr = state->videoram[tile_index * 2 + 0];
117   UINT16 code = state->videoram[tile_index * 2 + 1] | ((attr & 0xc0) << 2);
118
122119   SET_TILE_INFO(0, code, attr & 0x0f, TILE_FLIPXY(attr >> 4));
123120}
124121
r6428r6429
131128
132129WRITE8_HANDLER( m57_videoram_w )
133130{
134   videoram[offset] = data;
135   tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
131   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
132
133   state->videoram[offset] = data;
134   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
136135}
137136
138137
r6428r6429
144143
145144VIDEO_START( m57 )
146145{
147   bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
148   tilemap_set_scroll_rows(bg_tilemap, 256);
146   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
147
148   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
149   tilemap_set_scroll_rows(state->bg_tilemap, 256);
150
151   state_save_register_global(machine, state->flipscreen);
149152}
150153
151154
r6428r6429
157160
158161WRITE8_HANDLER( m57_flipscreen_w )
159162{
163   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
164
160165   /* screen flip is handled both by software and hardware */
161   flipscreen = (data & 0x01) ^ (~input_port_read(space->machine, "DSW2") & 0x01);
162   tilemap_set_flip(bg_tilemap, flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
166   state->flipscreen = (data & 0x01) ^ (~input_port_read(space->machine, "DSW2") & 0x01);
167   tilemap_set_flip(state->bg_tilemap, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
163168
164169   coin_counter_w(0,data & 0x02);
165170   coin_counter_w(1,data & 0x20);
r6428r6429
174179
175180static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
176181{
182   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
177183   int y,x;
178184   INT16 scrolly;
179185
180186   // from 64 to 127: not wrapped
181187   for (y = 64; y < 128; y++)
182      tilemap_set_scrollx(bg_tilemap, y, m57_scroll[0x40]);
188      tilemap_set_scrollx(state->bg_tilemap, y, state->scrollram[0x40]);
183189
184   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
190   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
185191
186192   // from 128 to 255: wrapped
187193   for (y = 128; y <= cliprect->max_y; y++)
188194   {
189      scrolly = m57_scroll[y] + (m57_scroll[y + 0x100] << 8);
195      scrolly = state->scrollram[y] + (state->scrollram[y + 0x100] << 8);
190196
191197      if (scrolly >= 0)
192198      {
r6428r6429
217223
218224static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
219225{
226   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
220227   int offs;
221228
222
223   for (offs = spriteram_size-4;offs >= 0;offs -= 4)
229   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
224230   {
225      UINT8 attributes = spriteram[offs+1];
226      int sx = spriteram[offs+3];
227      int sy = ((224-spriteram[offs+0]-32)&0xff)+32;
228      int code = spriteram[offs+2];
229      int color = attributes&0x1f;
230      int flipy = attributes&0x80;
231      int flipx = attributes&0x40;
231      UINT8 attributes = state->spriteram[offs + 1];
232      int sx = state->spriteram[offs + 3];
233      int sy = ((224 - state->spriteram[offs + 0] - 32) & 0xff) + 32;
234      int code = state->spriteram[offs + 2];
235      int color = attributes & 0x1f;
236      int flipy = attributes & 0x80;
237      int flipx = attributes & 0x40;
232238
233239      int tile_number = code & 0x3f;
234240
235241      int bank = 0;
236      if( code&0x80 ) bank += 1;
237      if( attributes&0x20 ) bank += 2;
242      if (code & 0x80) bank += 1;
243      if (attributes & 0x20) bank += 2;
238244
239      if (flipscreen)
245      if (state->flipscreen)
240246      {
241247         sx = 240 - sx;
242248         sy = 224 - sy;
r6428r6429
244250         flipy = !flipy;
245251      }
246252
247      drawgfx_transmask(bitmap,cliprect,machine->gfx[1+bank],
253      drawgfx_transmask(bitmap, cliprect, machine->gfx[1 + bank],
248254         tile_number,
249255         color,
250         flipx,flipy,
251         sx,sy,
252         colortable_get_transpen_mask(machine->colortable, machine->gfx[1], color, 256+15));
256         flipx, flipy,
257         sx, sy,
258         colortable_get_transpen_mask(machine->colortable, machine->gfx[1], color, 256 + 15));
253259   }
254260}
255261
src/mame/video/konamigx.c
r6428r6429
11/*
2 * video/konamigx.c - Konami GX video hardware (here there be dragons)
2 * video/konamigx.c - Konami GX video hardware (here there be dragons, and achocode)
33 *
44 */
55
66#include "driver.h"
77#include "video/konamiic.h"
8#include "machine/konamigx.h"
8#include "konamigx.h"
99
10
11#define GX_DEBUG 0
1012#define VERBOSE 0
1113
14/***************************************************************************/
15/*                                                                         */
16/*                     2nd-Tier GX/MW Graphics Functions                   */
17/*                                                                         */
18/***************************************************************************/
19
20#if GX_DEBUG
21   #define GX_ZBUFW     512
22   #define GX_ZBUFH     384
23   #define GX_ZPAGESIZE 0x300000
24   #define GX_ZBUFSIZE  0x600000
25#else
26   #define GX_ZBUFW     576
27   #define GX_ZBUFH     224
28   #define GX_ZPAGESIZE (GX_ZBUFW*GX_ZBUFH)
29   #define GX_ZBUFSIZE  ((GX_ZBUFW*GX_ZBUFH)*2)
30#endif
31
32
33static UINT8 *gx_objzbuf, *gx_shdzbuf;
34
35
36
1237static int layer_colorbase[4];
1338static INT32 gx_tilebanks[8], gx_oldbanks[8];
1439static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase;
1540static int gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing
41static int gx_rushingheroes_hack;
1642static tilemap *gx_psac_tilemap, *gx_psac_tilemap2;
1743extern UINT32 *gx_psacram, *gx_subpaletteram32;
44static bitmap_t* type3_roz_temp_bitmap;
45static tilemap* gx_psac_tilemap_alt;
1846
47static int konamigx_has_dual_screen;
48int konamigx_current_frame;
49INLINE void set_color_555(running_machine *machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
50static int konamigx_palformat;
51static bitmap_t* dualscreen_left_tempbitmap;
52static bitmap_t* dualscreen_right_tempbitmap;
53
1954/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
2055   the 'voxel' effect to give the pixels height is a post-process operation on the
2156   output of the K053936 (this can clearly be seen in videos as large chunks of
r6428r6429
3974
4075static void (*game_tile_callback)(int layer, int *code, int *color, int *flags);
4176
77// Localized K053936/ROZ+
78#define K053936_MAX_CHIPS 2
79
80static rectangle K053936_cliprect[K053936_MAX_CHIPS] = {{0,0,0,0},{0,0,0,0}};
81static int K053936_offset[K053936_MAX_CHIPS][2] = {{0,0},{0,0}};
82static int K053936_clip_enabled[K053936_MAX_CHIPS] = {0,0};
83
84
85void K053936GP_set_offset(int chip, int xoffs, int yoffs) { K053936_offset[chip][0] = xoffs; K053936_offset[chip][1] = yoffs; }
86
87void K053936GP_clip_enable(int chip, int status) { K053936_clip_enabled[chip] = status; }
88
89void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy)
90{
91   rectangle *cliprect = &K053936_cliprect[chip];
92   cliprect->min_x = minx;
93   cliprect->max_x = maxx;
94   cliprect->min_y = miny;
95   cliprect->max_y = maxy;
96}
97
98INLINE void K053936GP_copyroz32clip( running_machine *machine,
99      bitmap_t *dst_bitmap, bitmap_t *src_bitmap,
100      const rectangle *dst_cliprect, const rectangle *src_cliprect,
101      UINT32 _startx,UINT32 _starty,int _incxx,int _incxy,int _incyx,int _incyy,
102      int tilebpp, int blend, int alpha, int clip )
103{
104   static const int colormask[8]={1,3,7,0xf,0x1f,0x3f,0x7f,0xff};
105
106   int cy, cx;
107   int ecx;
108   int src_pitch, incxy, incxx;
109   int src_minx, src_maxx, src_miny, src_maxy, cmask;
110   UINT16 *src_base;
111   size_t src_size;
112
113   const pen_t *pal_base;
114   UINT32 *dst_ptr;
115
116   int tx, dst_pitch;
117   UINT32 *dst_base;
118   int starty, incyy, startx, incyx, ty, sx, sy;
119
120   incxy = _incxy; incxx = _incxx; incyy = _incyy; incyx = _incyx;
121   starty = _starty; startx = _startx;
122
123   if (src_cliprect && clip) // set source clip range to some extreme values when disabled
124   {
125      src_minx = src_cliprect->min_x;
126      src_maxx = src_cliprect->max_x;
127      src_miny = src_cliprect->min_y;
128      src_maxy = src_cliprect->max_y;
129   }
130   // this simply isn't safe to do!
131   else { src_minx = src_miny = -0x10000; src_maxx = src_maxy = 0x10000; }
132
133   if (dst_cliprect) // set target clip range
134   {
135      sx = dst_cliprect->min_x;
136      tx = dst_cliprect->max_x - sx + 1;
137      sy = dst_cliprect->min_y;
138      ty = dst_cliprect->max_y - sy + 1;
139
140      startx += sx * incxx + sy * incyx;
141      starty += sx * incxy + sy * incyy;
142   }
143   else { sx = sy = 0; tx = dst_bitmap->width; ty = dst_bitmap->height; }
144
145   // adjust entry points and other loop constants
146   dst_pitch = dst_bitmap->rowpixels;
147   dst_base = (UINT32*)dst_bitmap->base + sy * dst_pitch + sx + tx;
148   ecx = tx = -tx;
149
150   tilebpp = (tilebpp-1) & 7;
151   pal_base = machine->pens;
152   cmask = colormask[tilebpp];
153
154   src_pitch = src_bitmap->rowpixels;
155   src_base = (UINT16 *)src_bitmap->base;
156   src_size = src_bitmap->width * src_bitmap->height;
157
158   dst_ptr = dst_base;
159   cy = starty;
160   cx = startx;
161
162   if (blend > 0)
163   {
164      dst_base += dst_pitch;      // draw blended
165      starty += incyy;
166      startx += incyx;
167
168      do {
169         do {
170            int srcx = (cx >> 16) & 0x1fff;
171            int srcy = (cy >> 16) & 0x1fff;
172            int pixel;
173            UINT32 offs;
174            offs = srcy * src_pitch + srcx;
175
176            cx += incxx;
177            cy += incxy;
178
179            if (offs<0 || offs>=src_size)
180               continue;
181
182            if (srcx < src_minx || srcx > src_maxx || srcy < src_miny || srcy > src_maxy)
183               continue;
184
185            pixel = src_base[offs];
186            if (!(pixel & cmask))
187               continue;
188
189            dst_ptr[ecx] = alpha_blend_r32(pal_base[pixel], dst_ptr[ecx], alpha);
190         }
191         while (++ecx);
192
193         ecx = tx;
194         dst_ptr = dst_base; dst_base += dst_pitch;
195         cy = starty; starty += incyy;
196         cx = startx; startx += incyx;
197      } while (--ty);
198   }
199   else   //  draw solid
200   {
201      if (blend == 0)
202      {
203         dst_base += dst_pitch;
204         starty += incyy;
205         startx += incyx;
206      }
207      else
208      {
209         if ((sy & 1) ^ (blend & 1))
210         {
211            if (ty <= 1) return;
212
213            dst_ptr += dst_pitch;
214            cy += incyy;
215            cx += incyx;
216         }
217
218         if (ty > 1)
219         {
220            ty >>= 1;
221            dst_pitch <<= 1;
222            incyy <<= 1;
223            incyx <<= 1;
224
225            dst_base = dst_ptr + dst_pitch;
226            starty = cy + incyy;
227            startx = cx + incyx;
228         }
229      }
230
231      do {
232         do {
233            int srcx = (cx >> 16) & 0x1fff;
234            int srcy = (cy >> 16) & 0x1fff;
235            int pixel;
236            UINT32 offs;
237
238            offs = srcy * src_pitch + srcx;
239
240            cx += incxx;
241            cy += incxy;
242
243            if (offs<0 || offs>=src_size)
244               continue;
245
246            if (srcx < src_minx || srcx > src_maxx || srcy < src_miny || srcy > src_maxy)
247               continue;
248
249            pixel = src_base[offs];
250            if (!(pixel & cmask))
251               continue;
252
253            dst_ptr[ecx] = pal_base[pixel];
254         }
255         while (++ecx);
256
257         ecx = tx;
258         dst_ptr = dst_base; dst_base += dst_pitch;
259         cy = starty; starty += incyy;
260         cx = startx; startx += incyx;
261      } while (--ty);
262   }
263}
264
265// adapted from generic K053936_zoom_draw()
266static void K053936GP_zoom_draw(running_machine *machine,
267      int chip, UINT16 *ctrl, UINT16 *linectrl,
268      bitmap_t *bitmap, const rectangle *cliprect, tilemap *tmap,
269      int tilebpp, int blend, int alpha)
270{
271   bitmap_t *src_bitmap;
272   rectangle *src_cliprect;
273   UINT16 *lineaddr;
274
275   rectangle my_clip;
276   UINT32 startx, starty;
277   int incxx, incxy, incyx, incyy, y, maxy, clip;
278
279   src_bitmap = tilemap_get_pixmap(tmap);
280   src_cliprect = &K053936_cliprect[chip];
281   clip = K053936_clip_enabled[chip];
282
283   if (ctrl[0x07] & 0x0040)    /* "super" mode */
284   {
285      my_clip.min_x = cliprect->min_x;
286      my_clip.max_x = cliprect->max_x;
287      y = cliprect->min_y;
288      maxy = cliprect->max_y;
289
290      while (y <= maxy)
291      {
292         lineaddr = linectrl + ( ((y - K053936_offset[chip][1]) & 0x1ff) << 2);
293         my_clip.min_y = my_clip.max_y = y;
294
295         startx = (INT16)(lineaddr[0] + ctrl[0x00]) << 8;
296         starty = (INT16)(lineaddr[1] + ctrl[0x01]) << 8;
297         incxx  = (INT16)(lineaddr[2]);
298         incxy  = (INT16)(lineaddr[3]);
299
300         if (ctrl[0x06] & 0x8000) incxx <<= 8;
301         if (ctrl[0x06] & 0x0080) incxy <<= 8;
302
303         startx -= K053936_offset[chip][0] * incxx;
304         starty -= K053936_offset[chip][0] * incxy;
305
306         K053936GP_copyroz32clip(machine,
307               bitmap, src_bitmap, &my_clip, src_cliprect,
308               startx<<5, starty<<5, incxx<<5, incxy<<5, 0, 0,
309               tilebpp, blend, alpha, clip);
310         y++;
311      }
312   }
313   else    /* "simple" mode */
314   {
315      startx = (INT16)(ctrl[0x00]) << 8;
316      starty = (INT16)(ctrl[0x01]) << 8;
317      incyx  = (INT16)(ctrl[0x02]);
318      incyy  = (INT16)(ctrl[0x03]);
319      incxx  = (INT16)(ctrl[0x04]);
320      incxy  = (INT16)(ctrl[0x05]);
321
322      if (ctrl[0x06] & 0x4000) { incyx <<= 8; incyy <<= 8; }
323      if (ctrl[0x06] & 0x0040) { incxx <<= 8; incxy <<= 8; }
324
325      startx -= K053936_offset[chip][1] * incyx;
326      starty -= K053936_offset[chip][1] * incyy;
327
328      startx -= K053936_offset[chip][0] * incxx;
329      starty -= K053936_offset[chip][0] * incxy;
330
331      K053936GP_copyroz32clip(machine,
332            bitmap, src_bitmap, cliprect, src_cliprect,
333            startx<<5, starty<<5, incxx<<5, incxy<<5, incyx<<5, incyy<<5,
334            tilebpp, blend, alpha, clip);
335   }
336}
337
338void K053936GP_0_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
339      tilemap *tmap, int tilebpp, int blend, int alpha)
340{
341   K053936GP_zoom_draw(machine, 0,K053936_0_ctrl,K053936_0_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha);
342}
343
344void K053936GP_1_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
345      tilemap *tmap, int tilebpp, int blend, int alpha)
346{
347   K053936GP_zoom_draw(machine, 1,K053936_1_ctrl,K053936_1_linectrl,bitmap,cliprect,tmap,tilebpp,blend,alpha);
348}
349
350
351
352/*
353    Parameter Notes
354    ---------------
355    clip    : *caller must supply a pointer to target clip rectangle
356    alpha   : 0 = invisible, 255 = solid
357    drawmode:
358        0 = all pens solid
359        1 = solid pens only
360        2 = all pens solid with alpha blending
361        3 = solid pens only with alpha blending
362        4 = shadow pens only
363        5 = all pens shadow
364    zcode   : 0 = closest, 255 = furthest (pixel z-depth), -1 = disable depth buffers and shadows
365    pri     : 0 = topmost, 255 = backmost (pixel priority)
366*/
367
368
369INLINE void zdrawgfxzoom32GP(
370      bitmap_t *bitmap, const rectangle *cliprect, const gfx_element *gfx,
371      UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy,
372      int scalex, int scaley, int alpha, int drawmode, int zcode, int pri)
373{
374#define FP     19
375#define FPONE  (1<<FP)
376#define FPHALF (1<<(FP-1))
377#define FPENT  0
378
379   // inner loop
380   const UINT8  *src_ptr;
381   int src_x;
382   int eax, ecx;
383   int src_fx, src_fdx;
384   int shdpen;
385   UINT8  z8, db0, p8, db1;
386   UINT8  *ozbuf_ptr;
387   UINT8  *szbuf_ptr;
388   const pen_t *pal_base;
389   const pen_t *shd_base;
390   UINT32 *dst_ptr;
391
392   // outter loop
393   int src_fby, src_fdy, src_fbx;
394   const UINT8 *src_base;
395   int dst_w, dst_h;
396
397   // one-time
398   int nozoom, granularity;
399   int src_fw, src_fh;
400   int dst_minx, dst_maxx, dst_miny, dst_maxy;
401   int dst_skipx, dst_skipy, dst_x, dst_y, dst_lastx, dst_lasty;
402   int src_pitch, dst_pitch;
403
404
405   // cull illegal and transparent objects
406   if (!scalex || !scaley) return;
407
408   // find shadow pens and cull invisible shadows
409   granularity = shdpen = gfx->color_granularity;
410   shdpen--;
411
412   if (zcode >= 0)
413   {
414      if (drawmode == 5) { drawmode = 4; shdpen = 1; }
415   }
416   else
417      if (drawmode >= 4) return;
418
419   // alpha blend necessary?
420   if (drawmode & 2)
421   {
422      if (alpha <= 0) return;
423      if (alpha >= 255) drawmode &= ~2;
424   }
425
426   // fill internal data structure with default values
427   ozbuf_ptr  = gx_objzbuf;
428   szbuf_ptr  = gx_shdzbuf;
429
430   src_pitch = 16;
431   src_fw    = 16;
432   src_fh    = 16;
433   src_base  = gfx_element_get_data(gfx, code % gfx->total_elements);
434
435   pal_base  = gfx->machine->pens + gfx->color_base + (color % gfx->total_colors) * granularity;
436   shd_base  = gfx->machine->shadow_table;
437
438   dst_ptr   = (UINT32 *)bitmap->base;
439   dst_pitch = bitmap->rowpixels;
440   dst_minx  = cliprect->min_x;
441   dst_maxx  = cliprect->max_x;
442   dst_miny  = cliprect->min_y;
443   dst_maxy  = cliprect->max_y;
444   dst_x     = sx;
445   dst_y     = sy;
446
447   // cull off-screen objects
448   if (dst_x > dst_maxx || dst_y > dst_maxy) return;
449   nozoom = (scalex == 0x10000 && scaley == 0x10000);
450   if (nozoom)
451   {
452      dst_h = dst_w = 16;
453      src_fdy = src_fdx = 1;
454   }
455   else
456   {
457      dst_w = ((scalex<<4)+0x8000)>>16;
458      dst_h = ((scaley<<4)+0x8000)>>16;
459      if (!dst_w || !dst_h) return;
460
461      src_fw <<= FP;
462      src_fh <<= FP;
463      src_fdx = src_fw / dst_w;
464      src_fdy = src_fh / dst_h;
465   }
466   dst_lastx = dst_x + dst_w - 1;
467   if (dst_lastx < dst_minx) return;
468   dst_lasty = dst_y + dst_h - 1;
469   if (dst_lasty < dst_miny) return;
470
471   // clip destination
472   dst_skipx = 0;
473   eax = dst_minx;  if ((eax -= dst_x) > 0) { dst_skipx = eax;  dst_w -= eax;  dst_x = dst_minx; }
474   eax = dst_lastx; if ((eax -= dst_maxx) > 0) dst_w -= eax;
475   dst_skipy = 0;
476   eax = dst_miny;  if ((eax -= dst_y) > 0) { dst_skipy = eax;  dst_h -= eax;  dst_y = dst_miny; }
477   eax = dst_lasty; if ((eax -= dst_maxy) > 0) dst_h -= eax;
478
479   // calculate zoom factors and clip source
480   if (nozoom)
481   {
482      if (!flipx) src_fbx = 0; else { src_fbx = src_fw - 1; src_fdx = -src_fdx; }
483      if (!flipy) src_fby = 0; else { src_fby = src_fh - 1; src_fdy = -src_fdy; src_pitch = -src_pitch; }
484   }
485   else
486   {
487      if (!flipx) src_fbx = FPENT; else { src_fbx = src_fw - FPENT - 1; src_fdx = -src_fdx; }
488      if (!flipy) src_fby = FPENT; else { src_fby = src_fh - FPENT - 1; src_fdy = -src_fdy; }
489   }
490   src_fbx += dst_skipx * src_fdx;
491   src_fby += dst_skipy * src_fdy;
492
493   // adjust insertion points and pre-entry constants
494   eax = (dst_y - dst_miny) * GX_ZBUFW + (dst_x - dst_minx) + dst_w;
495   db0 = z8 = (UINT8)zcode;
496   db1 = p8 = (UINT8)pri;
497   ozbuf_ptr += eax;
498   szbuf_ptr += eax << 1;
499   dst_ptr += dst_y * dst_pitch + dst_x + dst_w;
500   dst_w = -dst_w;
501
502   if (!nozoom)
503   {
504      ecx = src_fby;   src_fby += src_fdy;
505      ecx >>= FP;      src_fx = src_fbx;
506      src_x = src_fbx; src_fx += src_fdx;
507      ecx <<= 4;       src_ptr = src_base;
508      src_x >>= FP;    src_ptr += ecx;
509      ecx = dst_w;
510
511      if (zcode < 0) // no shadow and z-buffering
512      {
513         do {
514            do {
515               eax = src_ptr[src_x];
516               src_x = src_fx;
517               src_fx += src_fdx;
518               src_x >>= FP;
519               if (!eax || eax >= shdpen) continue;
520               dst_ptr [ecx] = pal_base[eax];
521            }
522            while (++ecx);
523
524            ecx = src_fby;   src_fby += src_fdy;
525            dst_ptr += dst_pitch;
526            ecx >>= FP;      src_fx = src_fbx;
527            src_x = src_fbx; src_fx += src_fdx;
528            ecx <<= 4;       src_ptr = src_base;
529            src_x >>= FP;    src_ptr += ecx;
530            ecx = dst_w;
531         }
532         while (--dst_h);
533      }
534      else
535      {
536         switch (drawmode)
537         {
538            case 0:   // all pens solid
539               do {
540                  do {
541                     eax = src_ptr[src_x];
542                     src_x = src_fx;
543                     src_fx += src_fdx;
544                     src_x >>= FP;
545                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
546                     eax = pal_base[eax];
547                     ozbuf_ptr[ecx] = z8;
548                     dst_ptr [ecx] = eax;
549                  }
550                  while (++ecx);
551
552                  ecx = src_fby;   src_fby += src_fdy;
553                  ozbuf_ptr += GX_ZBUFW;
554                  dst_ptr += dst_pitch;
555                  ecx >>= FP;      src_fx = src_fbx;
556                  src_x = src_fbx; src_fx += src_fdx;
557                  ecx <<= 4;       src_ptr = src_base;
558                  src_x >>= FP;    src_ptr += ecx;
559                  ecx = dst_w;
560               }
561               while (--dst_h);
562               break;
563
564            case 1: // solid pens only
565               do {
566                  do {
567                     eax = src_ptr[src_x];
568                     src_x = src_fx;
569                     src_fx += src_fdx;
570                     src_x >>= FP;
571                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
572                     eax = pal_base[eax];
573                     ozbuf_ptr[ecx] = z8;
574                     dst_ptr [ecx] = eax;
575                  }
576                  while (++ecx);
577
578                  ecx = src_fby;   src_fby += src_fdy;
579                  ozbuf_ptr += GX_ZBUFW;
580                  dst_ptr += dst_pitch;
581                  ecx >>= FP;      src_fx = src_fbx;
582                  src_x = src_fbx; src_fx += src_fdx;
583                  ecx <<= 4;       src_ptr = src_base;
584                  src_x >>= FP;    src_ptr += ecx;
585                  ecx = dst_w;
586               }
587               while (--dst_h);
588               break;
589
590            case 2: // all pens solid with alpha blending
591               do {
592                  do {
593                     eax = src_ptr[src_x];
594                     src_x = src_fx;
595                     src_fx += src_fdx;
596                     src_x >>= FP;
597                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
598                     ozbuf_ptr[ecx] = z8;
599
600                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
601                  }
602                  while (++ecx);
603
604                  ecx = src_fby;   src_fby += src_fdy;
605                  ozbuf_ptr += GX_ZBUFW;
606                  dst_ptr += dst_pitch;
607                  ecx >>= FP;      src_fx = src_fbx;
608                  src_x = src_fbx; src_fx += src_fdx;
609                  ecx <<= 4;       src_ptr = src_base;
610                  src_x >>= FP;    src_ptr += ecx;
611                  ecx = dst_w;
612               }
613               while (--dst_h);
614               break;
615
616            case 3: // solid pens only with alpha blending
617               do {
618                  do {
619                     eax = src_ptr[src_x];
620                     src_x = src_fx;
621                     src_fx += src_fdx;
622                     src_x >>= FP;
623                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
624                     ozbuf_ptr[ecx] = z8;
625
626                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
627                  }
628                  while (++ecx);
629
630                  ecx = src_fby;   src_fby += src_fdy;
631                  ozbuf_ptr += GX_ZBUFW;
632                  dst_ptr += dst_pitch;
633                  ecx >>= FP;      src_fx = src_fbx;
634                  src_x = src_fbx; src_fx += src_fdx;
635                  ecx <<= 4;       src_ptr = src_base;
636                  src_x >>= FP;    src_ptr += ecx;
637                  ecx = dst_w;
638               }
639               while (--dst_h);
640               break;
641
642            case 4: // shadow pens only
643               do {
644                  do {
645                     eax = src_ptr[src_x];
646                     src_x = src_fx;
647                     src_fx += src_fdx;
648                     src_x >>= FP;
649                     if (eax < shdpen || szbuf_ptr[ecx*2] < z8 || szbuf_ptr[ecx*2+1] <= p8) continue;
650                     eax = dst_ptr[ecx];
651                     szbuf_ptr[ecx*2] = z8;
652                     szbuf_ptr[ecx*2+1] = p8;
653
654                     // the shadow tables are 15-bit lookup tables which accept RGB15... lossy, nasty, yuck!
655                     dst_ptr[ecx] = shd_base[rgb_to_rgb15(eax)];
656                     //dst_ptr[ecx] =(eax>>3&0x001f);lend_r32( eax, 0x00000000, 128);
657                  }
658                  while (++ecx);
659
660                  ecx = src_fby;   src_fby += src_fdy;
661                  szbuf_ptr += (GX_ZBUFW<<1);
662                  dst_ptr += dst_pitch;
663                  ecx >>= FP;      src_fx = src_fbx;
664                  src_x = src_fbx; src_fx += src_fdx;
665                  ecx <<= 4;       src_ptr = src_base;
666                  src_x >>= FP;    src_ptr += ecx;
667                  ecx = dst_w;
668               }
669               while (--dst_h);
670               break;
671         }   // switch (drawmode)
672      }   // if (zcode < 0)
673   }   // if (!nozoom)
674   else
675   {
676      src_ptr = src_base + (src_fby<<4) + src_fbx;
677      src_fdy = src_fdx * dst_w + src_pitch;
678      ecx = dst_w;
679
680      if (zcode < 0) // no shadow and z-buffering
681      {
682         do {
683            do {
684               eax = *src_ptr;
685               src_ptr += src_fdx;
686               if (!eax || eax >= shdpen) continue;
687               dst_ptr[ecx] = pal_base[eax];
688            }
689            while (++ecx);
690
691            src_ptr += src_fdy;
692            dst_ptr += dst_pitch;
693            ecx = dst_w;
694         }
695         while (--dst_h);
696      }
697      else
698      {
699         switch (drawmode)
700         {
701            case 0: // all pens solid
702               do {
703                  do {
704                     eax = *src_ptr;
705                     src_ptr += src_fdx;
706                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
707                     eax = pal_base[eax];
708                     ozbuf_ptr[ecx] = z8;
709                     dst_ptr[ecx] = eax;
710                  }
711                  while (++ecx);
712
713                  src_ptr += src_fdy;
714                  ozbuf_ptr += GX_ZBUFW;
715                  dst_ptr += dst_pitch;
716                  ecx = dst_w;
717               }
718               while (--dst_h);
719               break;
720
721            case 1:  // solid pens only
722               do {
723                  do {
724                     eax = *src_ptr;
725                     src_ptr += src_fdx;
726                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
727                     eax = pal_base[eax];
728                     ozbuf_ptr[ecx] = z8;
729                     dst_ptr[ecx] = eax;
730                  }
731                  while (++ecx);
732
733                  src_ptr += src_fdy;
734                  ozbuf_ptr += GX_ZBUFW;
735                  dst_ptr += dst_pitch;
736                  ecx = dst_w;
737               }
738               while (--dst_h);
739               break;
740
741            case 2: // all pens solid with alpha blending
742               do {
743                  do {
744                     eax = *src_ptr;
745                     src_ptr += src_fdx;
746                     if (!eax || ozbuf_ptr[ecx] < z8) continue;
747                     ozbuf_ptr[ecx] = z8;
748
749                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
750                  }
751                  while (++ecx);
752
753                  src_ptr += src_fdy;
754                  ozbuf_ptr += GX_ZBUFW;
755                  dst_ptr += dst_pitch;
756                  ecx = dst_w;
757               }
758               while (--dst_h);
759               break;
760
761            case 3: // solid pens only with alpha blending
762               do {
763                  do {
764                     eax = *src_ptr;
765                     src_ptr += src_fdx;
766                     if (!eax || eax >= shdpen || ozbuf_ptr[ecx] < z8) continue;
767                     ozbuf_ptr[ecx] = z8;
768
769                     dst_ptr[ecx] = alpha_blend_r32(pal_base[eax], dst_ptr[ecx], alpha);
770                  }
771                  while (++ecx);
772
773                  src_ptr += src_fdy;
774                  ozbuf_ptr += GX_ZBUFW;
775                  dst_ptr += dst_pitch;
776                  ecx = dst_w;
777               }
778               while (--dst_h);
779               break;
780
781            case 4: // shadow pens only
782               do {
783                  do {
784                     eax = *src_ptr;
785                     src_ptr += src_fdx;
786                     if (eax < shdpen || szbuf_ptr[ecx*2] < z8 || szbuf_ptr[ecx*2+1] <= p8) continue;
787                     eax = dst_ptr[ecx];
788                     szbuf_ptr[ecx*2] = z8;
789                     szbuf_ptr[ecx*2+1] = p8;
790
791                     // the shadow tables are 15-bit lookup tables which accept RGB15... lossy, nasty, yuck!
792                     dst_ptr[ecx] = shd_base[rgb_to_rgb15(eax)];
793                  }
794                  while (++ecx);
795
796                  src_ptr += src_fdy;
797                  szbuf_ptr += (GX_ZBUFW<<1);
798                  dst_ptr += dst_pitch;
799                  ecx = dst_w;
800               }
801               while (--dst_h);
802               break;
803         }
804      }
805   }
806#undef FP
807#undef FPONE
808#undef FPHALF
809#undef FPENT
810}
811
812
813
814/***************************************************************************/
815/*                                                                         */
816/*                 1st-Tier GX/MW Variables and Functions                  */
817/*                                                                         */
818/***************************************************************************/
819
820// global system ports access
821UINT8  konamigx_wrport1_0, konamigx_wrport1_1;
822UINT16 konamigx_wrport2;
823
824// frequently used registers
825static int K053246_objset1;
826static int K053247_vrcbk[4];
827static int K053247_coreg, K053247_coregshift, K053247_opset;
828static int opri, oinprion;
829static int vcblk[6], ocblk;
830static int vinmix, vmixon, osinmix, osmixon;
831
832
833static void konamigx_precache_registers(void)
834{
835   // (see sprite color coding scheme on p.46 & 47)
836   static const int coregmasks[5] = {0xf,0xe,0xc,0x8,0x0};
837   static const int coregshifts[5]= {4,5,6,7,8};
838   int i;
839
840   K053246_objset1 = K053246_read_register(5);
841
842   i = K053247_read_register(0x8/2);
843   K053247_vrcbk[0] = (i & 0x000f) << 14;
844   K053247_vrcbk[1] = (i & 0x0f00) << 6;
845   i = K053247_read_register(0xa/2);
846   K053247_vrcbk[2] = (i & 0x000f) << 14;
847   K053247_vrcbk[3] = (i & 0x0f00) << 6;
848
849   // COREG == OBJSET2+1C == bit8-11 of OPSET ??? (see p.50 last table, needs p.49 to confirm)
850   K053247_opset = K053247_read_register(0xc/2);
851
852   i = K053247_opset & 7; if (i > 4) i = 4;
853
854   K053247_coreg = K053247_read_register(0xc/2)>>8 & 0xf;
855   K053247_coreg =(K053247_coreg & coregmasks[i]) << 12;
856
857   K053247_coregshift = coregshifts[i];
858
859   opri     = K055555_read_register(K55_PRIINP_8);
860   oinprion = K055555_read_register(K55_OINPRI_ON);
861   vcblk[0] = K055555_read_register(K55_PALBASE_A);
862   vcblk[1] = K055555_read_register(K55_PALBASE_B);
863   vcblk[2] = K055555_read_register(K55_PALBASE_C);
864   vcblk[3] = K055555_read_register(K55_PALBASE_D);
865   vcblk[4] = K055555_read_register(K55_PALBASE_SUB1);
866   vcblk[5] = K055555_read_register(K55_PALBASE_SUB2);
867   ocblk    = K055555_read_register(K55_PALBASE_OBJ);
868   vinmix   = K055555_read_register(K55_BLEND_ENABLES);
869   vmixon   = K055555_read_register(K55_VINMIX_ON);
870   osinmix  = K055555_read_register(K55_OSBLEND_ENABLES);
871   osmixon  = K055555_read_register(K55_OSBLEND_ON);
872}
873
874INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
875{
876   int c18;
877
878   c18 = (attrib & 0xff)<<K053247_coregshift | K053247_coreg;
879
880   if (konamigx_wrport2 & 4) c18 &= 0x3fff; else
881   if (!(konamigx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
882
883   return(c18);
884}
885
886INLINE int K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
887{
888   int ocb, opon;
889
890   opon  = oinprion<<8 | 0xff;
891   ocb   = (ocblk & 7) << 10;
892   c18  &= opon;
893   ocb  &=~opon;
894
895   return((ocb | c18) >> K053247_coregshift);
896}
897
898INLINE int K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
899{
900   int op = opri;
901
902   c18 >>= 8;
903   op   &= oinprion;
904   c18  &=~oinprion;
905
906   return(c18 | op);
907}
908
909void konamigx_type2_sprite_callback(int *code, int *color, int *priority)
910{
911   int num = *code;
912   int c18 = *color;
913
914   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
915   c18 = K053247GX_combine_c18(c18);
916   *color = K055555GX_decode_objcolor(c18);
917   *priority = K055555GX_decode_inpri(c18);
918}
919
920void konamigx_dragoonj_sprite_callback(int *code, int *color, int *priority)
921{
922   int num, op, pri, c18;
923
924   num = *code;
925   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
926
927   c18  = pri = *color;
928   op   = opri;
929   pri  = (pri & 0x200) ? 4 : pri>>4 & 0xf;
930   op  &= oinprion;
931   pri &=~oinprion;
932   *priority = pri | op;
933
934   c18 = K053247GX_combine_c18(c18);
935   *color = K055555GX_decode_objcolor(c18);
936}
937
938void konamigx_salmndr2_sprite_callback(int *code, int *color, int *priority)
939{
940   int num, op, pri, c18;
941
942   num = *code;
943   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
944
945   c18  = pri = *color;
946   op   = opri;
947   pri  = pri>>4 & 0x3f;
948   op  &= oinprion;
949   pri &=~oinprion;
950   *priority = pri | op;
951
952   c18 = K053247GX_combine_c18(c18);
953   *color = K055555GX_decode_objcolor(c18);
954}
955
956void konamigx_le2_sprite_callback(int *code, int *color, int *priority)
957{
958   int num, op, pri;
959
960   num = *code;
961   *code = K053247_vrcbk[num>>14] | (num & 0x3fff);
962
963   pri = *color;
964   *color &= 0x1f;
965
966   op   = opri;
967   pri &= 0xf0;
968   op  &= oinprion;
969   pri &=~oinprion;
970   *priority = pri | op;
971}
972
973int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
974{
975   int vcb, shift, pal, vmx, von, pl45, emx;
976
977   vcb    =  vcblk[layer]<<6;
978   shift  =  layer<<1;
979   pal    =  *color;
980   vmx    =  vinmix>>shift & 3;
981   von    =  vmixon>>shift & 3;
982   emx    =  pl45 = pal>>4 & 3;
983   pal   &=  0xf;
984   pl45  &=  von;
985   vmx   &=  von;
986   pl45 <<=  4;
987   emx   &= ~von;
988   pal   |=  pl45;
989   emx   |=  vmx;
990   pal   |=  vcb;
991
992   if (von == 3) emx = -1; // invalidate external mix code if all bits are from internal
993   *color =  pal;
994
995   return(emx);
996}
997
998int K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and p.27 3.3)
999{
1000   int scb, shift, pal, osmx, oson, pl45, emx;
1001
1002   shift  =  layer<<1;
1003   pal    =  *color;
1004   osmx   =  osinmix>>shift & 3;
1005   oson   =  osmixon>>shift & 3;
1006
1007   if (layer)
1008   {
1009      // layer 1-3 are external tile layers
1010      scb    =  vcblk[layer+3]<<6;
1011      emx    =  pl45 = pal>>4 & 3;
1012      pal   &=  0xf;
1013      pl45  &=  oson;
1014      osmx  &=  oson;
1015      pl45 <<=  4;
1016      emx   &= ~oson;
1017      pal   |=  pl45;
1018      emx   |=  osmx;
1019      pal   |=  scb;
1020
1021      if (oson == 3) emx = -1; // invalidate external mix code if all bits are from internal
1022      *color =  pal;
1023   }
1024   else
1025   {
1026      // layer 0 is the sprite layer with different attributes decode; detail on p.49 (missing)
1027      emx   = 0; // K053247_read_register(??)>>? & 3;
1028      osmx &= oson;
1029      emx  &=~oson;
1030      emx  |= osmx;
1031   }
1032
1033   return(emx);
1034}
1035
1036static void gx_wipezbuf(running_machine *machine, int noshadow)
1037{
1038   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
1039
1040   int w = visarea->max_x - visarea->min_x + 1;
1041   int h = visarea->max_y - visarea->min_y + 1;
1042
1043   UINT8 *zptr = gx_objzbuf;
1044   int ecx = h;
1045
1046   do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
1047
1048   if (!noshadow)
1049   {
1050      zptr = gx_shdzbuf;
1051      w <<= 1;
1052      ecx = h;
1053      do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
1054   }
1055}
1056
1057/*
1058 * Sprite Format
1059 * ------------------
1060 *
1061 * Word | Bit(s)           | Use
1062 * -----+-fedcba9876543210-+----------------
1063 *   0  | x--------------- | active (show this sprite)
1064 *   0  | -x-------------- | maintain aspect ratio (when set, zoom y acts on both axis)
1065 *   0  | --x------------- | flip y
1066 *   0  | ---x------------ | flip x
1067 *   0  | ----xxxx-------- | sprite size (see below)
1068 *   0  | --------xxxxxxxx | zcode
1069 *   1  | xxxxxxxxxxxxxxxx | sprite code
1070 *   2  | ------xxxxxxxxxx | y position
1071 *   3  | ------xxxxxxxxxx | x position
1072 *   4  | xxxxxxxxxxxxxxxx | zoom y (0x40 = normal, <0x40 = enlarge, >0x40 = reduce)
1073 *   5  | xxxxxxxxxxxxxxxx | zoom x (0x40 = normal, <0x40 = enlarge, >0x40 = reduce)
1074 *   6  | x--------------- | mirror y (top half is drawn as mirror image of the bottom)
1075 *   6  | -x-------------- | mirror x (right half is drawn as mirror image of the left)
1076 *   6  | --xx------------ | reserved (sprites with these two bits set don't seem to be graphics data at all)
1077 *   6  | ----xx---------- | shadow code: 0=off, 0x400=preset1, 0x800=preset2, 0xc00=preset3
1078 *   6  | ------xx-------- | effect code: flicker, upper palette, full shadow...etc. (game dependent)
1079 *   6  | --------xxxxxxxx | "color", but depends on external connections (implies priority)
1080 *   7  | xxxxxxxxxxxxxxxx | game dependent
1081 *
1082 * shadow enables transparent shadows. Note that it applies to the last sprite pen ONLY.
1083 * The rest of the sprite remains normal.
1084 */
1085#define GX_MAX_SPRITES 512
1086#define GX_MAX_LAYERS  6
1087#define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS)
1088
1089static struct GX_OBJ { int order, offs, code, color; } *gx_objpool;
1090static UINT16 *gx_spriteram;
1091static int gx_objdma, gx_primode;
1092
1093// mirrored K053247 and K054338 settings
1094UINT16 *K053247_ram;
1095static gfx_element *K053247_gfx;
1096static void (*K053247_callback)(int *code,int *color,int *priority);
1097static int K053247_dx, K053247_dy;
1098
1099static int *K054338_shdRGB;
1100
1101
1102void K053247GP_set_SpriteOffset(int offsx, int offsy)
1103{
1104   K053247_dx = offsx;
1105   K053247_dy = offsy;
1106}
1107
1108void konamigx_mixer_init(running_machine *machine, int objdma)
1109{
1110   gx_objdma = 0;
1111   gx_primode = 0;
1112
1113   gx_objzbuf = (UINT8 *)machine->priority_bitmap->base;
1114   gx_shdzbuf = auto_alloc_array(machine, UINT8, GX_ZBUFSIZE);
1115   gx_objpool = auto_alloc_array(machine, struct GX_OBJ, GX_MAX_OBJECTS);
1116
1117   K053247_export_config(&K053247_ram, &K053247_gfx, &K053247_callback, &K053247_dx, &K053247_dy);
1118   K054338_export_config(&K054338_shdRGB);
1119
1120   if (objdma)
1121   {
1122      gx_spriteram = auto_alloc_array(machine, UINT16, 0x1000/2);
1123      gx_objdma = 1;
1124   }
1125   else
1126      gx_spriteram = K053247_ram;
1127
1128   palette_set_shadow_dRGB32(machine, 3,-80,-80,-80, 0);
1129   K054338_invert_alpha(1);
1130}
1131
1132void konamigx_mixer_primode(int mode)
1133{
1134   gx_primode = mode;
1135}
1136
1137void konamigx_objdma(void)
1138{
1139   if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000);
1140}
1141
1142void konamigx_mixer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
1143               tilemap *sub1, int sub1flags,
1144               tilemap *sub2, int sub2flags,
1145               int mixerflags, bitmap_t *extra_bitmap, int rushingheroes_hack)
1146{
1147   static const int xoffset[8] = { 0, 1, 4, 5, 16, 17, 20, 21 };
1148   static const int yoffset[8] = { 0, 2, 8, 10, 32, 34, 40, 42 };
1149   static int parity = 0;
1150
1151   int objbuf[GX_MAX_OBJECTS];
1152   int shadowon[3], shdpri[3], layerid[6], layerpri[6];
1153
1154   struct GX_OBJ *objpool, *objptr;
1155   int wrapsize, xwraplim, ywraplim, cltc_shdpri, prflp, disp;
1156   int xa,ya,ox,oy,zw,zh,flipx,flipy,mirrorx,mirrory,zoomx,zoomy,scalex,scaley,nozoom;
1157   int screenwidth, flipscreenx, flipscreeny, offx, offy;
1158   int nobj, i, j, k, l, temp, temp1, temp2, temp3, temp4, count;
1159   int order, offs, code, color, zcode, pri = 0, spri, spri_min, shdprisel, shadow, alpha, drawmode;
1160
1161
1162   // abort if object database failed to initialize
1163   objpool = gx_objpool;
1164   if (!objpool) return;
1165
1166   // clear screen with backcolor and update flicker pulse
1167   K054338_fill_backcolor(machine, bitmap, konamigx_wrport1_0 & 0x20);
1168   parity ^= 1;
1169
1170   // abort if video has been disabled
1171   disp = K055555_read_register(K55_INPUT_ENABLES);
1172   if (!disp) return;
1173   cltc_shdpri = K054338_read_register(K338_REG_CONTROL);
1174
1175   if (!rushingheroes_hack) // Slam Dunk 2 never sets this.  It's either part of the protection, or type4 doesn't use it
1176   {
1177      if (!(cltc_shdpri & K338_CTL_KILL)) return;
1178   }
1179
1180   // demote shadows by one layer when this bit is set??? (see p.73 8.6)
1181   cltc_shdpri &= K338_CTL_SHDPRI;
1182
1183   // wipe z-buffer
1184   if (mixerflags & GXMIX_NOZBUF)
1185      mixerflags |= GXMIX_NOSHADOW;
1186   else
1187      gx_wipezbuf(machine, mixerflags & GXMIX_NOSHADOW);
1188
1189   // cache global parameters
1190   konamigx_precache_registers();
1191
1192   // init OBJSET1 parameters (see p.47 6.2)
1193   flipscreenx = K053246_objset1 & 1;
1194   flipscreeny = K053246_objset1 & 2;
1195
1196   // get "display window" offsets
1197   offx = (K053246_read_register(0)<<8 | K053246_read_register(1)) & 0x3ff;
1198   offy = (K053246_read_register(2)<<8 | K053246_read_register(3)) & 0x3ff;
1199
1200   // init OBJSET2 and mixer parameters (see p.51 and chapter 7)
1201   layerid[0] = 0; layerid[1] = 1; layerid[2] = 2; layerid[3] = 3; layerid[4] = 4; layerid[5] = 5;
1202
1203   if (K053247_opset & 0x40)
1204   {
1205      wrapsize = 512;
1206      xwraplim = 512 - 64;
1207      ywraplim = 512 - 128;
1208   }
1209   else
1210   {
1211      wrapsize  = 1024;
1212      xwraplim  = 1024 - 384;
1213      ywraplim  = 1024 - 512;
1214   }
1215
1216   // invert layer priority when this flag is set (not used by any GX game?)
1217   prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
1218
1219   layerpri[0] = K055555_read_register(K55_PRIINP_0);
1220   layerpri[1] = K055555_read_register(K55_PRIINP_3);
1221   layerpri[3] = K055555_read_register(K55_PRIINP_7);
1222   layerpri[4] = K055555_read_register(K55_PRIINP_9);
1223   layerpri[5] = K055555_read_register(K55_PRIINP_10);
1224
1225   if (gx_primode == -1)
1226   {
1227      // Lethal Enforcer hack (requires pixel color comparison)
1228      layerpri[2] = K055555_read_register(K55_PRIINP_3) + 0x20;
1229      shdprisel = 0x3f;
1230   }
1231   else
1232   {
1233      layerpri[2] = K055555_read_register(K55_PRIINP_6);
1234      shdprisel = K055555_read_register(K55_SHD_PRI_SEL);
1235   }
1236
1237   // SHDPRISEL filters shadows by different priority comparison methods (UNIMPLEMENTED, see detail on p.66)
1238   if (!(shdprisel & 0x03)) shadowon[0] = 0;
1239   if (!(shdprisel & 0x0c)) shadowon[1] = 0;
1240   if (!(shdprisel & 0x30)) shadowon[2] = 0;
1241
1242   shdpri[0]   = K055555_read_register(K55_SHAD1_PRI);
1243   shdpri[1]   = K055555_read_register(K55_SHAD2_PRI);
1244   shdpri[2]   = K055555_read_register(K55_SHAD3_PRI);
1245
1246   spri_min = 0;
1247   shadowon[2] = shadowon[1] = shadowon[0] = 0;
1248
1249   if (!(mixerflags & GXMIX_NOSHADOW))
1250   {
1251      // only enable shadows beyond a +/-7 RGB threshold
1252      for (j=0,i=0; i<3; j+=3,i++)
1253      {
1254         k = K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
1255         k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
1256         k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
1257      }
1258
1259      // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
1260      temp = K055555_read_register(K55_SHD_ON);
1261      for (i=0; i<4; i++) if (!(temp>>i & 1) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
1262
1263      // update shadows status
1264      K054338_update_all_shadows(machine, rushingheroes_hack);
1265   }
1266
1267   // pre-sort layers
1268   for (j=0; j<5; j++)
1269   {
1270      temp1 = layerpri[j];
1271      for (i=j+1; i<6; i++)
1272      {
1273         temp2 = layerpri[i];
1274         if ((UINT32)temp1 <= (UINT32)temp2)
1275         {
1276            layerpri[i] = temp1; layerpri[j] = temp1 = temp2;
1277            temp2 = layerid[i]; layerid[i] = layerid[j]; layerid[j] = temp2;
1278         }
1279      }
1280   }
1281
1282   // build object database and create indices
1283   objptr = objpool;
1284   nobj = 0;
1285
1286   for (i=5; i>=0; i--)
1287   {
1288      code = layerid[i];
1289      switch (code)
1290      {
1291         /*
1292                Background layers are represented by negative offset values as follow:
1293
1294                0+ : normal sprites
1295                -1 : tile layer A - D
1296                -2 : K053936 ROZ+ layer 1
1297                -3 : K053936 ROZ+ layer 2
1298                -4 : K053250 LVC layer 1
1299                -5 : K053250 LVC layer 2
1300            */
1301         case 4 :
1302            offs = -128;
1303            if (sub1flags & 0xf) { if (sub1flags & GXSUB_K053250) offs = -4; else if (sub1) offs = -2; }
1304         break;
1305         case 5 :
1306            offs = -128;
1307            if (sub2flags & 0xf) { if (sub2flags & GXSUB_K053250) offs = -5; else if (sub2) offs = -3; }
1308            if (extra_bitmap) offs = -3;
1309         break;
1310         default: offs = -1;
1311      }
1312
1313      if (offs != -128)
1314      {
1315         objptr->order = layerpri[i]<<24;
1316         objptr->code  = code;
1317         objptr->offs = offs;
1318         objptr++;
1319
1320         objbuf[nobj] = nobj;
1321         nobj++;
1322      }
1323   }
1324
1325   i = j = 0xff;
1326
1327   for (offs=0; offs<0x800; offs+=8)
1328   {
1329      if (!(gx_spriteram[offs] & 0x8000)) continue;
1330
1331      zcode = gx_spriteram[offs] & 0xff;
1332
1333      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
1334      if (K053247_opset & 0x10) zcode = 0xff - zcode;
1335
1336      code  = gx_spriteram[offs+1];
1337      color = k = gx_spriteram[offs+6];
1338      l     = gx_spriteram[offs+7];
1339
1340      (*K053247_callback)(&code, &color, &pri);
1341
1342      /*
1343            shadow = shadow code
1344            spri   = shadow priority
1345            temp1  = add solid object
1346            temp2  = solid pens draw mode
1347            temp3  = add shadow object
1348            temp4  = shadow pens draw mode
1349        */
1350      temp4 = temp3 = temp2 = temp1 = spri = shadow = 0;
1351
1352      if (color & K055555_FULLSHADOW)
1353      {
1354         shadow = 3; // use default intensity and color
1355         spri = pri; // retain host priority
1356         temp3 = 1; // add shadow
1357         temp4 = 5; // draw full shadow
1358      }
1359      else
1360      {
1361         shadow = k>>10 & 3;
1362         if (shadow) // object has shadow?
1363         {
1364            if (shadow != 1 || K053246_objset1 & 0x20)
1365            {
1366               shadow--;
1367               temp1 = 1; // add solid
1368               temp2 = 1; // draw partial solid
1369               if (shadowon[shadow])
1370               {
1371                  temp3 = 1; // add shadow
1372                  temp4 = 4; // draw partial shadow
1373               }
1374            }
1375            else
1376            {
1377               // drop the entire sprite to shadow if its shadow code is 1 and SD0EN is off (see p.48)
1378               shadow = 0;
1379               if (!shadowon[0]) continue;
1380               temp3 = 1; // add shadow
1381               temp4 = 5; // draw full shadow
1382            }
1383         }
1384         else
1385         {
1386            temp1 = 1; // add solid
1387            temp2 = 0; // draw full solid
1388         }
1389
1390         if (temp1)
1391         {
1392            // tag sprite for alpha blending
1393            if (color>>K055555_MIXSHIFT & 3) temp2 |= 2;
1394         }
1395
1396         if (temp3)
1397         {
1398            // determine shadow priority
1399            spri = (K053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
1400         }
1401      }
1402
1403      switch (gx_primode & 0xf)
1404      {
1405         // Dadandarn zcode suppression
1406         case  1:
1407            zcode = 0;
1408         break;
1409
1410         // Daisukiss bad shadow filter
1411         case  4:
1412            if (k & 0x3000 || k == 0x0800) continue;
1413
1414         // Tokkae shadow masking (INACCURATE)
1415         case  5:
1416            if (spri < spri_min) spri = spri_min;
1417         break;
1418      }
1419
1420      /*
1421            default sort order:
1422            fedcba9876543210fedcba9876543210
1423            xxxxxxxx------------------------ (priority)
1424            --------xxxxxxxx---------------- (zcode)
1425            ----------------xxxxxxxx-------- (offset)
1426            ------------------------xxxx---- (shadow mode)
1427            ----------------------------xxxx (shadow code)
1428        */
1429      if (temp1)
1430      {
1431         // add objects with solid or alpha pens
1432         order = pri<<24 | zcode<<16 | offs<<(8-3) | temp2<<4;
1433         objptr->order = order;
1434         objptr->offs  = offs;
1435         objptr->code  = code;
1436         objptr->color = color;
1437         objptr++;
1438
1439         objbuf[nobj] = nobj;
1440         nobj++;
1441      }
1442
1443      if (temp3 && !(color & K055555_SKIPSHADOW) && !(mixerflags & GXMIX_NOSHADOW))
1444      {
1445         // add objects with shadows if enabled
1446         order = spri<<24 | zcode<<16 | offs<<(8-3) | temp4<<4 | shadow;
1447         objptr->order = order;
1448         objptr->offs  = offs;
1449         objptr->code  = code;
1450         objptr->color = color;
1451         objptr++;
1452
1453         objbuf[nobj] = nobj;
1454         nobj++;
1455      }
1456   }
1457
1458   // sort objects in decending order (SLOW)
1459   k = nobj;
1460   l = nobj - 1;
1461
1462   for (j=0; j<l; j++)
1463   {
1464      temp1 = objbuf[j];
1465      temp2 = objpool[temp1].order;
1466      for (i=j+1; i<k; i++)
1467      {
1468         temp3 = objbuf[i];
1469         temp4 = objpool[temp3].order;
1470         if ((UINT32)temp2 <= (UINT32)temp4) { temp2 = temp4; objbuf[i] = temp1; objbuf[j] = temp1 = temp3; }
1471      }
1472   }
1473
1474   // traverse draw list
1475   screenwidth = video_screen_get_width(machine->primary_screen);
1476
1477   for (count=0; count<nobj; count++)
1478   {
1479      objptr = objpool + objbuf[count];
1480      order  = objptr->order;
1481      offs   = objptr->offs;
1482      code   = objptr->code;
1483      color  = objptr->color;
1484
1485      if (offs >= 0)
1486      {
1487         if (!(disp & K55_INP_OBJ)) continue;
1488      }
1489      else
1490      {
1491         i = code<<1;
1492         j = mixerflags>>i & 3;
1493         k = 0;
1494
1495         switch (offs)
1496         {
1497            case -1:
1498            if (disp & (1<<code))
1499            {
1500               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1501               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>(i+16); temp3 = 3; }
1502               else
1503               {
1504                  temp1 = vinmix;
1505                  temp2 = vinmix>>i & 3;
1506                  temp3 = vmixon>>i & 3;
1507               }
1508
1509               /* blend layer only when:
1510                        1) vinmix != 0xff
1511                        2) its internal mix code is set
1512                        3) all mix code bits are internal(overriden until tile blending has been implemented)
1513                        4) 0 > alpha < 255;
1514                    */
1515               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1516               {
1517                  temp4 = K054338_set_alpha_level(temp2);
1518
1519                  if (temp4 <= 0) continue;
1520                  if (temp4 < 255) k = TILEMAP_DRAW_ALPHA(temp4);
1521               }
1522
1523               if (mixerflags & 1<<(code+12)) k |= K056382_DRAW_FLAG_FORCE_XYSCROLL;
1524
1525               K056832_tilemap_draw(machine, bitmap, cliprect, code, k, 0);
1526            }
1527            continue;
1528            case -2:
1529            case -4:
1530            if ((disp & K55_INP_SUB1) || (rushingheroes_hack))
1531            {
1532               int alpha = 255;
1533
1534               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1535               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>24; temp3 = 3; }
1536               else
1537               {
1538                  temp1 = osinmix;
1539                  temp2 = osinmix>>2 & 3;
1540                        temp3 = osmixon>>2 & 3;
1541               }
1542
1543               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1544               {
1545                  alpha = temp4 = K054338_set_alpha_level(temp2);
1546
1547                  if (temp4 <= 0) continue;
1548                  if (temp4 < 255) k = (j == GXMIX_BLEND_FAST) ? ~parity : 1;
1549               }
1550
1551               l = sub1flags & 0xf;
1552
1553               if (offs == -2)
1554               {
1555                  K053936GP_0_zoom_draw(machine, bitmap, cliprect, sub1, l, k, alpha);
1556               }
1557               else
1558               {
1559                  K053250_draw(machine, bitmap, cliprect, 0, vcblk[4]<<l, 0, 0);
1560               }
1561            }
1562            continue;
1563            case -3:
1564            case -5:
1565            if (disp & K55_INP_SUB2)
1566            {
1567               int alpha = 255;
1568               if (j == GXMIX_BLEND_NONE)  { temp1 = 0xff; temp2 = temp3 = 0; } else
1569               if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>26; temp3 = 3; }
1570               else
1571               {
1572                  temp1 = osinmix;
1573                  temp2 = osinmix>>4 & 3;
1574                        temp3 = osmixon>>4 & 3;
1575               }
1576
1577               if (temp1!=0xff && temp2 /*&& temp3==3*/)
1578               {
1579                  alpha = temp4 = K054338_set_alpha_level(temp2);
1580
1581                  if (temp4 <= 0) continue;
1582                  if (temp4 < 255) k = (j == GXMIX_BLEND_FAST) ? ~parity : 1;
1583               }
1584
1585               l = sub2flags & 0xf;
1586
1587               if (offs == -3)
1588               {
1589                  if (extra_bitmap) // soccer superstars roz layer
1590                  {
1591                     int xx,yy;
1592                     int width = video_screen_get_width(machine->primary_screen);
1593                     int height = video_screen_get_height(machine->primary_screen);
1594                     const pen_t *paldata = machine->pens;
1595
1596                     // the output size of the roz layer has to be doubled horizontally
1597                     // so that it aligns with the sprites and normal tilemaps.  This appears
1598                     // to be done as a post-processing / mixing step effect
1599                     for (yy=0;yy<height;yy++)
1600                     {
1601                        UINT16* src = BITMAP_ADDR16(extra_bitmap,yy,0);
1602                        UINT32* dst = BITMAP_ADDR32(bitmap,yy,0);
1603                        int shiftpos = 0;
1604                        for (xx=0;xx<width;xx+=2)
1605                        {
1606                           UINT16 dat = src[(((xx/2)+shiftpos))%width];
1607                           if (dat&0xff)
1608                              dst[xx+1] = dst[xx] = paldata[dat];
1609                        }
1610                     }
1611                  }
1612                  else
1613                     K053936GP_1_zoom_draw(machine, bitmap, cliprect, sub2, l, k, alpha);
1614
1615               }
1616               else
1617                  K053250_draw(machine, bitmap, cliprect, 1, vcblk[5]<<l, 0, 0);
1618            }
1619            continue;
1620         }
1621         continue;
1622      }
1623
1624      drawmode = order>>4 & 0xf;
1625
1626      alpha = 255;
1627      if (drawmode & 2)
1628      {
1629         alpha = color>>K055555_MIXSHIFT & 3;
1630         if (alpha) alpha = K054338_set_alpha_level(alpha);
1631         if (alpha <= 0) continue;
1632      }
1633      color &= K055555_COLORMASK;
1634
1635      if (drawmode >= 4) palette_set_shadow_mode(machine, order & 0x0f);
1636
1637      if (!(mixerflags & GXMIX_NOZBUF))
1638      {
1639         zcode = order>>16 & 0xff;
1640         pri = order>>24 & 0xff;
1641      }
1642      else
1643         zcode = -1; // negative zcode values turn off z-buffering
1644
1645      xa = ya = 0;
1646      if (code & 0x01) xa += 1;
1647      if (code & 0x02) ya += 1;
1648      if (code & 0x04) xa += 2;
1649      if (code & 0x08) ya += 2;
1650      if (code & 0x10) xa += 4;
1651      if (code & 0x20) ya += 4;
1652      code &= ~0x3f;
1653
1654      temp4 = gx_spriteram[offs];
1655
1656      // mask off the upper 6 bits of coordinate and zoom registers
1657      oy = gx_spriteram[offs+2] & 0x3ff;
1658      ox = gx_spriteram[offs+3] & 0x3ff;
1659
1660      scaley = zoomy = gx_spriteram[offs+4] & 0x3ff;
1661      if (zoomy) zoomy = (0x400000+(zoomy>>1)) / zoomy;
1662      else zoomy = 0x800000;
1663      if (!(temp4 & 0x4000))
1664      {
1665         scalex = zoomx = gx_spriteram[offs+5] & 0x3ff;
1666         if (zoomx) zoomx = (0x400000+(zoomx>>1)) / zoomx;
1667         else zoomx = 0x800000;
1668      }
1669      else { zoomx = zoomy; scalex = scaley; }
1670
1671      nozoom = (scalex == 0x40 && scaley == 0x40);
1672
1673      flipx = temp4 & 0x1000;
1674      flipy = temp4 & 0x2000;
1675
1676      temp = gx_spriteram[offs+6];
1677      mirrorx = temp & 0x4000;
1678      if (mirrorx) flipx = 0; // only applies to x mirror, proven
1679      mirrory = temp & 0x8000;
1680
1681      // for Escape Kids (GX975)
1682      if ( K053246_objset1 & 8 ) // Check only "Bit #3 is '1'?"
1683      {
1684         zoomx = zoomx>>1; // Fix sprite width to HALF size
1685         ox = (ox>>1) + 1; // Fix sprite draw position
1686
1687         if (flipscreenx) ox += screenwidth;
1688      }
1689
1690      if (flipscreenx) { ox = -ox; if (!mirrorx) flipx = !flipx; }
1691      if (flipscreeny) { oy = -oy; if (!mirrory) flipy = !flipy; }
1692
1693      // apply wrapping and global offsets
1694      temp = wrapsize-1;
1695
1696      ox += K053247_dx;
1697      oy -= K053247_dy;
1698      ox = ( ox - offx) & temp;
1699      oy = (-oy - offy) & temp;
1700      if (ox >= xwraplim) ox -= wrapsize;
1701      if (oy >= ywraplim) oy -= wrapsize;
1702
1703
1704      temp = temp4>>8 & 0x0f;
1705      k = 1 << (temp & 3);
1706      l = 1 << (temp>>2 & 3);
1707
1708      ox -= (zoomx * k) >> 13;
1709      oy -= (zoomy * l) >> 13;
1710
1711      // substitutes: i=x, j=y, k=w, l=h, temp=code, temp1=fx, temp2=fy, temp3=sx, temp4=sy;
1712      for (j=0; j<l; j++)
1713      {
1714         temp4 = oy + ((zoomy * j + (1<<11)) >> 12);
1715         zh = (oy + ((zoomy * (j+1) + (1<<11)) >> 12)) - temp4;
1716
1717         for (i=0; i<k; i++)
1718         {
1719            temp3 = ox + ((zoomx * i + (1<<11)) >> 12);
1720            zw = (ox + ((zoomx * (i+1) + (1<<11)) >> 12)) - temp3;
1721            temp = code;
1722
1723            if (mirrorx)
1724            {
1725               if ((!flipx)^((i<<1)<k))
1726               {
1727                  /* mirror left/right */
1728                  temp += xoffset[(k-1-i+xa)&7];
1729                  temp1 = 1;
1730               }
1731               else
1732               {
1733                  temp += xoffset[(i+xa)&7];
1734                  temp1 = 0;
1735               }
1736            }
1737            else
1738            {
1739               if (flipx) temp += xoffset[(k-1-i+xa)&7];
1740               else temp += xoffset[(i+xa)&7];
1741               temp1 = flipx;
1742            }
1743
1744            if (mirrory)
1745            {
1746               if ((!flipy)^((j<<1)>=l))
1747               {
1748                  /* mirror top/bottom */
1749                  temp += yoffset[(l-1-j+ya)&7];
1750                  temp2 = 1;
1751               }
1752               else
1753               {
1754                  temp += yoffset[(j+ya)&7];
1755                  temp2 = 0;
1756               }
1757            }
1758            else
1759            {
1760               if (flipy) temp += yoffset[(l-1-j+ya)&7];
1761               else temp += yoffset[(j+ya)&7];
1762               temp2 = flipy;
1763            }
1764
1765            if (nozoom) { scaley = scalex = 0x10000; } else { scalex = zw << 12; scaley = zh << 12; };
1766
1767            zdrawgfxzoom32GP(
1768                  bitmap, cliprect, K053247_gfx,
1769                  temp,
1770                  color,
1771                  temp1,temp2,
1772                  temp3,temp4,
1773                  scalex, scaley, alpha, drawmode, zcode, pri);
1774         }
1775      }
1776   }
1777}
1778
1779
1780
1781
1782
421783/* Run and Gun 2 / Rushing Heroes */
431784static TILE_GET_INFO( get_gx_psac_tile_info )
441785{
45   int tileno, colour, flipx;
46   UINT16 *map16 = (UINT16 *)gx_psacram;
1786   int tileno, colour, col, flip = 0;
1787   if (tile_index&1)
1788   {
1789      tileno = gx_psacram[tile_index/2] & 0x00001fff;
1790      col    =(gx_psacram[tile_index/2] & 0x00002000)>>13;
1791      if      (gx_psacram[tile_index/2] & 0x00004000) flip |= TILE_FLIPX;
1792      if      (gx_psacram[tile_index/2] & 0x00008000) flip |= TILE_FLIPY;
471793
48   tileno = map16[tile_index*2+1] & 0x3fff;
49   colour = (psac_colorbase << 4);
50   flipx = 0;
1794   }
1795   else
1796   {
1797      tileno = (gx_psacram[tile_index/2] & 0x1fff0000)>>16;
1798      col    = (gx_psacram[tile_index/2] & 0x20000000)>>29;
1799      if       (gx_psacram[tile_index/2] & 0x40000000) flip |= TILE_FLIPX;
1800      if       (gx_psacram[tile_index/2] & 0x80000000) flip |= TILE_FLIPY;
511801
52   SET_TILE_INFO(0, tileno, colour, TILE_FLIPYX(flipx));
1802   }
1803
1804   colour = (psac_colorbase << 4) + col;
1805
1806   SET_TILE_INFO(0, tileno, colour, TILE_FLIPYX(flip));
531807}
541808
55/* Soccer Superstars (tile and flip bits now TRUSTED) */
56static TILE_GET_INFO( get_gx_psac3_tile_info )
1809UINT32* konamigx_type3_psac2_bank;
1810int konamigx_type3_psac2_actual_bank;
1811int konamigx_type3_psac2_actual_last_bank = 0;
1812
1813WRITE32_HANDLER( konamigx_type3_psac2_bank_w )
571814{
58   int tileno, colour, flip;
59   UINT8 *tmap = memory_region(machine, "gfx4");
1815   // other bits are used for something...
601816
61   tileno = tmap[tile_index*2] | ((tmap[(tile_index*2)+1] & 0x0f)<<8);
62   colour = (psac_colorbase << 8);
1817   COMBINE_DATA(&konamigx_type3_psac2_bank[offset]);
1818   konamigx_type3_psac2_actual_bank = (konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
631819
64   flip = 0;
65   if (tmap[(tile_index*2)+1] & 0x20) flip |= TILE_FLIPX;
66   if (tmap[(tile_index*2)+1] & 0x10) flip |= TILE_FLIPY;
67
68   SET_TILE_INFO(0, tileno, colour, flip);
1820   /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
1821    if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
1822    {
1823        tilemap_mark_all_tiles_dirty (gx_psac_tilemap);
1824        konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
1825    }
1826    */
691827}
701828
1829
1830
1831/* Soccer Superstars (tile and flip bits now TRUSTED) */
1832 static TILE_GET_INFO( get_gx_psac3_tile_info )
1833 {
1834    int tileno, colour, flip;
1835    UINT8 *tmap = memory_region(machine, "gfx4");
1836
1837   int base_index = tile_index;
1838
1839//  if (konamigx_type3_psac2_actual_bank)
1840//      base_index+=0x20000/2;
1841
1842
1843   tileno =  tmap[base_index*2] | ((tmap[(base_index*2)+1] & 0x0f)<<8);
1844   colour = (tmap[(base_index*2)+1]&0xc0)>>6;
1845
1846    flip = 0;
1847   if (tmap[(base_index*2)+1] & 0x20) flip |= TILE_FLIPY;
1848   if (tmap[(base_index*2)+1] & 0x10) flip |= TILE_FLIPX;
1849
1850    SET_TILE_INFO(0, tileno, colour, flip);
1851 }
1852
1853 static TILE_GET_INFO( get_gx_psac3_alt_tile_info )
1854 {
1855    int tileno, colour, flip;
1856    UINT8 *tmap = memory_region(machine, "gfx4")+0x20000;
1857
1858   int base_index = tile_index;
1859
1860//  if (konamigx_type3_psac2_actual_bank)
1861//      base_index+=0x20000/2;
1862
1863
1864   tileno =  tmap[base_index*2] | ((tmap[(base_index*2)+1] & 0x0f)<<8);
1865   colour = (tmap[(base_index*2)+1]&0xc0)>>6;
1866
1867    flip = 0;
1868   if (tmap[(base_index*2)+1] & 0x20) flip |= TILE_FLIPY;
1869   if (tmap[(base_index*2)+1] & 0x10) flip |= TILE_FLIPX;
1870
1871    SET_TILE_INFO(0, tileno, colour, flip);
1872 }
1873
1874
711875/* PSAC4 */
721876/* these tilemaps are weird in both format and content, one of them
731877   doesn't really look like it should be displayed? - it's height data */
r6428r6429
1921996
1931997   gx_rozenable = 0;
1941998   gx_specialrozenable = 0;
1999   gx_rushingheroes_hack = 0;
1952000
1962001   // Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0).
1972002   // (+ve values move layers to the right and -ve values move layers to the left)
r6428r6429
2022007   K056832_set_LayerOffset(1,  0, 0);
2032008   K056832_set_LayerOffset(2,  2, 0);
2042009   K056832_set_LayerOffset(3,  3, 0);
2010
2011   konamigx_has_dual_screen = 0;
2012   konamigx_current_frame = 0;
2052013}
2062014
2072015static void _gxcommoninit(running_machine *machine)
r6428r6429
2572065
2582066VIDEO_START(winspike)
2592067{
260   K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, 0);
2068   K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, 2);
2612069   K055673_vh_start(machine, "gfx2", K055673_LAYOUT_LE2, -53, -23, konamigx_type2_sprite_callback);
2622070
2632071   _gxcommoninitnosprites(machine);
r6428r6429
3012109
3022110VIDEO_START(konamigx_type3)
3032111{
304   K056832_vh_start(machine, "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0);
2112   int width = video_screen_get_width(machine->primary_screen);
2113   int height = video_screen_get_height(machine->primary_screen);
3052114
306   _gxcommoninit(machine);
2115   K056832_vh_start(machine, "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 1);
2116   K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -132, -23, konamigx_type2_sprite_callback);
3072117
308   gx_psac_tilemap = tilemap_create(machine, get_gx_psac3_tile_info, tilemap_scan_rows,  16, 16, 256, 1024);
309   gx_rozenable = 1;
2118   dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
2119   dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
3102120
2121   _gxcommoninitnosprites(machine);
2122
2123   gx_psac_tilemap = tilemap_create(machine, get_gx_psac3_tile_info, tilemap_scan_cols,  16, 16, 256, 256);
2124   gx_psac_tilemap_alt = tilemap_create(machine, get_gx_psac3_alt_tile_info, tilemap_scan_cols,  16, 16, 256, 256);
2125
2126   gx_rozenable = 0;
2127   gx_specialrozenable = 2;
2128
2129
2130   /* set up tile layers */
2131   type3_roz_temp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
2132
2133
2134   //tilemap_set_flip(gx_psac_tilemap, TILEMAP_FLIPX| TILEMAP_FLIPY);
2135
3112136   K053936_wraparound_enable(0, 1);
312   K053936GP_set_offset(0, 0, 0);
2137//  K053936GP_set_offset(0, -30, -1);
2138   K053936_set_offset(0, -30, +1);
2139
2140   K056832_set_LayerOffset(0,  -52, 0);
2141   K056832_set_LayerOffset(1,  -48, 0);
2142   K056832_set_LayerOffset(2,  -48, 0);
2143   K056832_set_LayerOffset(3,  -48, 0);
2144
2145   konamigx_has_dual_screen = 1;
2146   konamigx_palformat = 1;
3132147}
3142148
3152149VIDEO_START(konamigx_type4)
3162150{
2151   int width = video_screen_get_width(machine->primary_screen);
2152   int height = video_screen_get_height(machine->primary_screen);
2153
3172154   K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0);
2155   K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -79, -24, konamigx_type2_sprite_callback); // -23 looks better in intro
3182156
319   _gxcommoninit(machine);
2157   dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
2158   dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
3202159
321   gx_psac_tilemap = tilemap_create(machine, get_gx_psac_tile_info, tilemap_scan_rows,  16, 16, 128, 128);
322   gx_rozenable = 1;
2160   _gxcommoninitnosprites(machine);
3232161
2162   gx_psac_tilemap = tilemap_create(machine, get_gx_psac_tile_info, tilemap_scan_cols,  16, 16, 128, 128);
2163   gx_rozenable = 0;
2164   gx_specialrozenable = 3;
2165
2166   K056832_set_LayerOffset(0,  -27, 0);
2167   K056832_set_LayerOffset(1,  -25, 0);
2168   K056832_set_LayerOffset(2,  -24, 0);
2169   K056832_set_LayerOffset(3,  -22, 0);
2170
3242171   K053936_wraparound_enable(0, 0);
325   K053936GP_set_offset(0, 0, 0);
2172   K053936GP_set_offset(0, -36, 1);
2173
2174   gx_rushingheroes_hack = 1;
2175   konamigx_has_dual_screen = 1;
2176   konamigx_palformat = 0;
2177
3262178}
3272179
2180VIDEO_START(konamigx_type4_sd2)
2181{
2182   int width = video_screen_get_width(machine->primary_screen);
2183   int height = video_screen_get_height(machine->primary_screen);
2184
2185   K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0);
2186   K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX6, -81, -23, konamigx_type2_sprite_callback);
2187
2188   dualscreen_left_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
2189   dualscreen_right_tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_RGB32);
2190
2191   _gxcommoninitnosprites(machine);
2192
2193   gx_psac_tilemap = tilemap_create(machine, get_gx_psac_tile_info, tilemap_scan_cols,  16, 16, 128, 128);
2194   gx_rozenable = 0;
2195   gx_specialrozenable = 3;
2196
2197
2198   K056832_set_LayerOffset(0,  -29, -1);
2199   K056832_set_LayerOffset(1,  -27, -1);
2200   K056832_set_LayerOffset(2,  -26, -1);
2201   K056832_set_LayerOffset(3,  -24, -1);
2202
2203
2204   K053936_wraparound_enable(0, 0);
2205   K053936GP_set_offset(0, -36, -1);
2206
2207   gx_rushingheroes_hack = 1;
2208   konamigx_has_dual_screen = 1;
2209   konamigx_palformat = 0;
2210
2211}
2212
2213
3282214VIDEO_START(konamigx_6bpp_2)
3292215{
3302216   K056832_vh_start(machine, "gfx1", K056832_BPP_6, 1, NULL, konamigx_type2_tile_callback, 0);
r6428r6429
4272313VIDEO_UPDATE(konamigx)
4282314{
4292315   int i, newbank, newbase, dirty, unchained;
2316   bitmap_t* realbitmap = bitmap;
4302317
2318   if (konamigx_has_dual_screen)
2319   {
2320      const device_config *left_screen  = devtag_get_device(screen->machine, "screen");
2321      const device_config *right_screen = devtag_get_device(screen->machine, "screen2");
2322
2323      /* the video gets demuxed by a board which plugs into the jamma connector */
2324      if (screen==left_screen)
2325      {
2326         konamigx_current_frame^=1;
2327
2328         if (konamigx_current_frame==1)
2329         {
2330            int offset=0;
2331
2332            if (konamigx_palformat==1)
2333            {
2334               for (offset=0;offset<0x4000/4;offset++)
2335               {
2336                  UINT32 coldat = paletteram32[offset];
2337
2338                  set_color_555(screen->machine, offset*2, 0, 5, 10,coldat >> 16);
2339                  set_color_555(screen->machine, offset*2+1, 0, 5, 10,coldat & 0xffff);
2340               }
2341            }
2342            else
2343            {
2344               for (offset=0;offset<0x8000/4;offset++)
2345               {
2346                  int r,g,b;
2347
2348                   r = (paletteram32[offset] >>16) & 0xff;
2349                  g = (paletteram32[offset] >> 8) & 0xff;
2350                  b = (paletteram32[offset] >> 0) & 0xff;
2351
2352                  palette_set_color(screen->machine,offset,MAKE_RGB(r,g,b));
2353               }
2354            }
2355
2356            bitmap = dualscreen_left_tempbitmap;
2357            // draw
2358         }
2359         else
2360         {
2361            copybitmap(bitmap, dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
2362            return 0;
2363         }
2364
2365      }
2366      else if (screen==right_screen)
2367      {
2368
2369         if (konamigx_current_frame==1)
2370         {
2371            copybitmap(bitmap, dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
2372            return 0;
2373         }
2374         else
2375         {
2376
2377            int offset=0;
2378
2379            if (konamigx_palformat==1)
2380            {
2381               for (offset=0;offset<0x4000/4;offset++)
2382               {
2383                  UINT32 coldat = gx_subpaletteram32[offset];
2384
2385                  set_color_555(screen->machine, offset*2, 0, 5, 10,coldat >> 16);
2386                  set_color_555(screen->machine, offset*2+1, 0, 5, 10,coldat & 0xffff);
2387               }
2388            }
2389            else
2390            {
2391               for (offset=0;offset<0x8000/4;offset++)
2392               {
2393                  int r,g,b;
2394
2395                   r = (gx_subpaletteram32[offset] >>16) & 0xff;
2396                  g = (gx_subpaletteram32[offset] >> 8) & 0xff;
2397                  b = (gx_subpaletteram32[offset] >> 0) & 0xff;
2398
2399                  palette_set_color(screen->machine,offset,MAKE_RGB(r,g,b));
2400               }
2401            }
2402            bitmap = dualscreen_right_tempbitmap;
2403            // draw
2404         }
2405      }
2406   }
2407
2408
4312409   /* if any banks are different from last render, we need to flush the planes */
4322410   for (dirty = 0, i = 0; i < 8; i++)
4332411   {
r6428r6429
4772455   if (dirty) K056832_MarkAllTilemapsDirty();
4782456
4792457   // Type-1
480   if (gx_specialrozenable)
2458   if (gx_specialrozenable == 1)
4812459   {
4822460      K053936_0_zoom_draw(gxtype1_roz_dstbitmap, &gxtype1_roz_dstbitmapclip,gx_psac_tilemap, 0,0,0); // height data
4832461      K053936_0_zoom_draw(gxtype1_roz_dstbitmap2,&gxtype1_roz_dstbitmapclip,gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
4842462   }
4852463
486   if (gx_rozenable)
487      konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, gx_psac_tilemap, GXSUB_8BPP, 0);
2464
2465
2466   if (gx_specialrozenable==3)
2467   {
2468      konamigx_mixer(screen->machine, bitmap, cliprect, gx_psac_tilemap, GXSUB_8BPP,0,0,  0, 0, gx_rushingheroes_hack);
2469   }
2470    // hack, draw the roz tilemap if W is held
2471    // todo: fix so that it works with the mixer without crashing(!)
2472   else if (gx_specialrozenable == 2)
2473   {
2474      // we're going to throw half of this away anyway in post-process, so only render what's needed
2475      rectangle temprect;
2476      temprect.min_x = cliprect->min_x;
2477      temprect.max_x = cliprect->min_x+320;
2478      temprect.min_y = cliprect->min_y;
2479      temprect.max_y = cliprect->max_y;
2480
2481      if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(type3_roz_temp_bitmap, &temprect,gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
2482      else K053936_0_zoom_draw(type3_roz_temp_bitmap, &temprect,gx_psac_tilemap, 0,0,0); // soccerss playfield
2483
2484
2485      konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, 0, type3_roz_temp_bitmap, gx_rushingheroes_hack);
2486   }
4882487   else
489      konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, 0);
2488   {
2489       konamigx_mixer(screen->machine, bitmap, cliprect, 0, 0, 0, 0, 0, 0, gx_rushingheroes_hack);
2490   }
4902491
2492
2493
4912494   /* Hack! draw type-1 roz layer here for testing purposes only */
492   if (gx_specialrozenable)
2495   if (gx_specialrozenable == 1)
4932496   {
4942497      const pen_t *paldata = screen->machine->pens;
4952498
r6428r6429
5232526
5242527   }
5252528
2529   if (konamigx_has_dual_screen)
2530   {
2531      const device_config *left_screen  = devtag_get_device(screen->machine, "screen");
2532      const device_config *right_screen = devtag_get_device(screen->machine, "screen2");
2533
2534      if (screen==left_screen)
2535      {
2536         copybitmap(realbitmap, dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
2537      }
2538      else if (screen==right_screen)
2539      {
2540         copybitmap(realbitmap, dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
2541      }
2542   }
2543
5262544   return 0;
5272545}
5282546
r6428r6429
5462564
5472565   COMBINE_DATA(&gx_subpaletteram32[offset]);
5482566
2567    r = (gx_subpaletteram32[offset] >>16) & 0xff;
2568   g = (gx_subpaletteram32[offset] >> 8) & 0xff;
2569   b = (gx_subpaletteram32[offset] >> 0) & 0xff;
2570
5492571   offset += (0x8000/4);
5502572
551   COMBINE_DATA(&paletteram32[offset]);
552
553    r = (paletteram32[offset] >>16) & 0xff;
554   g = (paletteram32[offset] >> 8) & 0xff;
555   b = (paletteram32[offset] >> 0) & 0xff;
556
5572573   palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
5582574}
5592575
2576INLINE void set_color_555(running_machine *machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data)
2577{
2578   palette_set_color_rgb(machine, color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
2579}
2580
5602581// main monitor for type 3
5612582WRITE32_HANDLER( konamigx_555_palette_w )
5622583{
2584   UINT32 coldat;
5632585   COMBINE_DATA(&paletteram32[offset]);
564   paletteram16 = (UINT16 *)paletteram32;
5652586
566   if ((ACCESSING_BITS_16_23) && (ACCESSING_BITS_24_31))
567      paletteram16_xRRRRRGGGGGBBBBB_word_w(space, offset*2, data >> 16, mem_mask >> 16);
568   if ((ACCESSING_BITS_0_7) && (ACCESSING_BITS_8_15))
569      paletteram16_xRRRRRGGGGGBBBBB_word_w(space, offset*2+1, data, mem_mask);
2587   coldat = paletteram32[offset];
2588
2589   set_color_555(space->machine, offset*2, 0, 5, 10,coldat >> 16);
2590   set_color_555(space->machine, offset*2+1, 0, 5, 10,coldat & 0xffff);
5702591}
5712592
5722593// sub monitor for type 3
5732594WRITE32_HANDLER( konamigx_555_palette2_w )
5742595{
2596   UINT32 coldat;
5752597   COMBINE_DATA(&gx_subpaletteram32[offset]);
2598   coldat = gx_subpaletteram32[offset];
2599
5762600   offset += (0x4000/4);
577   COMBINE_DATA(&paletteram32[offset]);
578   paletteram16 = (UINT16 *)paletteram32;
5792601
580   if ((ACCESSING_BITS_16_23) && (ACCESSING_BITS_24_31))
581      paletteram16_xRRRRRGGGGGBBBBB_word_w(space, offset*2, data >> 16, mem_mask >> 16);
582   if ((ACCESSING_BITS_0_7) && (ACCESSING_BITS_8_15))
583      paletteram16_xRRRRRGGGGGBBBBB_word_w(space, offset*2+1, data, mem_mask);
2602   set_color_555(space->machine, offset*2, 0, 5, 10,coldat >> 16);
2603   set_color_555(space->machine, offset*2+1, 0, 5, 10,coldat & 0xffff);
5842604}
5852605
2606
5862607WRITE32_HANDLER( konamigx_tilebank_w )
5872608{
5882609   if (ACCESSING_BITS_24_31)
r6428r6429
6082629{
6092630   COMBINE_DATA(&gx_psacram[offset]);
6102631
611   tilemap_mark_tile_dirty(gx_psac_tilemap, offset);
2632   tilemap_mark_tile_dirty(gx_psac_tilemap, offset*2);
2633   tilemap_mark_tile_dirty(gx_psac_tilemap, (offset*2)+1);
6122634}
6132635
src/mame/video/blueprnt.c
r6428r6429
1/***************************************************************************
2
3    Blue Print
4
5***************************************************************************/
6
17#include "driver.h"
8#include "blueprnt.h"
29
3UINT8 *blueprnt_scrollram;
4static int gfx_bank;
5static tilemap *bg_tilemap;
610
711/***************************************************************************
812
r6428r6429
4448
4549WRITE8_HANDLER( blueprnt_videoram_w )
4650{
47   videoram[offset] = data;
48   tilemap_mark_tile_dirty(bg_tilemap, offset);
51   blueprnt_state *state = (blueprnt_state *)space->machine->driver_data;
52
53   state->videoram[offset] = data;
54   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
4955}
5056
5157WRITE8_HANDLER( blueprnt_colorram_w )
5258{
53   colorram[offset] = data;
54   tilemap_mark_tile_dirty(bg_tilemap, offset);
59   blueprnt_state *state = (blueprnt_state *)space->machine->driver_data;
60
61   state->colorram[offset] = data;
62   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
5563}
5664
5765WRITE8_HANDLER( blueprnt_flipscreen_w )
5866{
67   blueprnt_state *state = (blueprnt_state *)space->machine->driver_data;
68
5969   flip_screen_set(space->machine, ~data & 0x02);
6070
61   if (gfx_bank != ((data & 0x04) >> 2))
71   if (state->gfx_bank != ((data & 0x04) >> 2))
6272   {
63      gfx_bank = ((data & 0x04) >> 2);
73      state->gfx_bank = ((data & 0x04) >> 2);
6474      tilemap_mark_all_tiles_dirty_all(space->machine);
6575   }
6676}
6777
6878static TILE_GET_INFO( get_bg_tile_info )
6979{
70   int attr = colorram[tile_index];
71   int code = videoram[tile_index] + 256 * gfx_bank;
80   blueprnt_state *state = (blueprnt_state *)machine->driver_data;
81   int attr = state->colorram[tile_index];
82   int code = state->videoram[tile_index] + 256 * state->gfx_bank;
7283   int color = attr & 0x7f;
7384
7485   tileinfo->category = (attr & 0x80) ? 1 : 0;
r6428r6429
7889
7990VIDEO_START( blueprnt )
8091{
81   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols_flip_x,
82       8, 8, 32, 32);
92   blueprnt_state *state = (blueprnt_state *)machine->driver_data;
8393
84   tilemap_set_transparent_pen(bg_tilemap, 0);
85   tilemap_set_scroll_cols(bg_tilemap, 32);
94   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols_flip_x, 8, 8, 32, 32);
95   tilemap_set_transparent_pen(state->bg_tilemap, 0);
96   tilemap_set_scroll_cols(state->bg_tilemap, 32);
97
98   state_save_register_global(machine, state->gfx_bank);
8699}
87100
88static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
101static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
89102{
103   blueprnt_state *state = (blueprnt_state *)machine->driver_data;
90104   int offs;
91105
92106   for (offs = 0; offs < spriteram_size; offs += 4)
93107   {
94      int code = spriteram[offs + 1];
95      int sx = spriteram[offs + 3];
96      int sy = 240 - spriteram[offs];
97      int flipx = spriteram[offs + 2] & 0x40;
98      int flipy = spriteram[offs + 2 - 4] & 0x80;   // -4? Awkward, isn't it?
108      int code = state->spriteram[offs + 1];
109      int sx = state->spriteram[offs + 3];
110      int sy = 240 - state->spriteram[offs];
111      int flipx = state->spriteram[offs + 2] & 0x40;
112      int flipy = state->spriteram[offs + 2 - 4] & 0x80;   // -4? Awkward, isn't it?
99113
100114      if (flip_screen_get(machine))
101115      {
r6428r6429
106120      }
107121
108122      // sprites are slightly misplaced, regardless of the screen flip
109      drawgfx_transpen(bitmap, cliprect, machine->gfx[1], code, 0, flipx, flipy, 2+sx, sy-1, 0);
123      drawgfx_transpen(bitmap, cliprect, machine->gfx[1], code, 0, flipx, flipy, 2 + sx, sy - 1, 0);
110124   }
111125}
112126
113127VIDEO_UPDATE( blueprnt )
114128{
129   blueprnt_state *state = (blueprnt_state *)screen->machine->driver_data;
115130   int i;
116131
117132   if (flip_screen_get(screen->machine))
118133      for (i = 0; i < 32; i++)
119         tilemap_set_scrolly(bg_tilemap, i, blueprnt_scrollram[32 - i]);
134         tilemap_set_scrolly(state->bg_tilemap, i, state->scrollram[32 - i]);
120135   else
121136      for (i = 0; i < 32; i++)
122         tilemap_set_scrolly(bg_tilemap, i, blueprnt_scrollram[30 - i]);
137         tilemap_set_scrolly(state->bg_tilemap, i, state->scrollram[30 - i]);
123138
124139   bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
125   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
126   draw_sprites(screen->machine,bitmap, cliprect);
127   tilemap_draw(bitmap, cliprect, bg_tilemap, 1, 0);
140   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
141   draw_sprites(screen->machine, bitmap, cliprect);
142   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 1, 0);
128143   return 0;
129144}
src/mame/video/pandoras.c
r6428r6429
11#include "driver.h"
2#include "pandoras.h"
23#include "video/resnet.h"
34
4static int flipscreen;
5static tilemap *layer0;
6
75/***********************************************************************
86
97  Convert the color PROMs into a more useable format.
r6428r6429
2220  bit 0 -- 1  kohm resistor  -- RED
2321
2422***************************************************************************/
23
2524PALETTE_INIT( pandoras )
2625{
2726   static const int resistances_rg[3] = { 1000, 470, 220 };
r6428r6429
9089
9190static TILE_GET_INFO( get_tile_info0 )
9291{
93   UINT8 attr = colorram[tile_index];
92   pandoras_state *state = (pandoras_state *)machine->driver_data;
93   UINT8 attr = state->colorram[tile_index];
9494   SET_TILE_INFO(
9595         1,
96         videoram[tile_index] + ((attr & 0x10) << 4),
96         state->videoram[tile_index] + ((attr & 0x10) << 4),
9797         attr & 0x0f,
9898         TILE_FLIPYX((attr & 0xc0) >> 6));
9999   tileinfo->category = (attr & 0x20) >> 5;
r6428r6429
107107
108108VIDEO_START( pandoras )
109109{
110   layer0 = tilemap_create(machine, get_tile_info0,tilemap_scan_rows,8,8,32,32);
110   pandoras_state *state = (pandoras_state *)machine->driver_data;
111   state->layer0 = tilemap_create(machine, get_tile_info0, tilemap_scan_rows, 8, 8, 32, 32);
112
113   state_save_register_global(machine, state->flipscreen);
111114}
112115
113116/***************************************************************************
r6428r6429
118121
119122WRITE8_HANDLER( pandoras_vram_w )
120123{
121   tilemap_mark_tile_dirty(layer0,offset);
122   videoram[offset] = data;
124   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
125
126   tilemap_mark_tile_dirty(state->layer0, offset);
127   state->videoram[offset] = data;
123128}
124129
125130WRITE8_HANDLER( pandoras_cram_w )
126131{
127   tilemap_mark_tile_dirty(layer0,offset);
128   colorram[offset] = data;
132   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
133
134   tilemap_mark_tile_dirty(state->layer0, offset);
135   state->colorram[offset] = data;
129136}
130137
131138WRITE8_HANDLER( pandoras_scrolly_w )
132139{
133   tilemap_set_scrolly(layer0,0,data);
140   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
141
142   tilemap_set_scrolly(state->layer0, 0, data);
134143}
135144
136145WRITE8_HANDLER( pandoras_flipscreen_w )
137146{
138   flipscreen = data;
139   tilemap_set_flip_all(space->machine, flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
147   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
148
149   state->flipscreen = data;
150   tilemap_set_flip_all(space->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
140151}
141152
142153/***************************************************************************
r6428r6429
145156
146157***************************************************************************/
147158
148static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT8* sr)
159static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT8* sr )
149160{
150161   int offs;
151162
r6428r6429
168179
169180VIDEO_UPDATE( pandoras )
170181{
171   tilemap_draw(bitmap,cliprect, layer0, 1 ,0);
172   draw_sprites(screen->machine, bitmap,cliprect, &spriteram[0x800] );
173   tilemap_draw(bitmap,cliprect, layer0, 0 ,0);
182   pandoras_state *state = (pandoras_state *)screen->machine->driver_data;
183   tilemap_draw(bitmap,cliprect, state->layer0, 1 ,0);
184   draw_sprites(screen->machine, bitmap, cliprect, &state->spriteram[0x800] );
185   tilemap_draw(bitmap,cliprect, state->layer0, 0 ,0);
174186   return 0;
175187}
src/mame/video/n64.c
r6428r6429
242242
243243static RECTANGLE clip;
244244
245static UINT8 *TMEM;
246#define tlut ((UINT16*)(TMEM + 0x800))
245static UINT8 *texture_cache;
246static UINT32 tlut[256];
247247
248248static INT32 k0, k1, k2, k3, k4, k5;
249249static UINT8 primitive_lod_frac = 0;
r6428r6429
473473   if (LOG_RDP_EXECUTION)
474474      rdp_exec = fopen("rdp_execute.txt", "wt");
475475
476   TMEM = auto_alloc_array(machine, UINT8, 0x1004); // 4 guard bytes
477   memset(TMEM, 0, 0x1000);
478   TMEM[0x1000] = TMEM[0x1001] = 25;
476   texture_cache = auto_alloc_array(machine, UINT8, 0x100000);
479477
480478   combiner_rgbsub_a_r[0] = combiner_rgbsub_a_r[1] = &one_color.r;
481479   combiner_rgbsub_a_g[0] = combiner_rgbsub_a_g[1] = &one_color.g;
r6428r6429
11281126   }
11291127
11301128   memory_color.r = (((mem >> 11) & 0x1f) << 3) | (((mem >> 11) & 0x1f) >> 2);
1131   memory_color.g = (((mem >>  6) & 0x1f) << 3) | (((mem >>  6) & 0x1f) >> 2);
1132   memory_color.b = (((mem >>  1) & 0x1f) << 3) | (((mem >>  1) & 0x1f) >> 2);
1129   memory_color.g = (((mem >>  6) & 0x1f) << 3) | (((mem >> 11) & 0x1f) >> 2);
1130   memory_color.b = (((mem >>  1) & 0x1f) << 3) | (((mem >> 11) & 0x1f) >> 2);
11331131
11341132   if (other_modes.image_read_en)
11351133   {
r6428r6429
13351333         {
13361334            case PIXEL_SIZE_4BIT:
13371335            {
1338               UINT8 *tc = (UINT8*)TMEM;
1336               UINT8 *tc = (UINT8*)texture_cache;
13391337                    int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff;
13401338               UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4);
1341               UINT16 c = tlut[(((tpal << 4) | p) ^ WORD_ADDR_XOR) << 2];
1339               UINT16 c = tlut[((tpal << 4) | p) ^ WORD_ADDR_XOR];
13421340
13431341               if (other_modes.en_tlut)
13441342               {
r6428r6429
13631361            }
13641362            case PIXEL_SIZE_8BIT:
13651363            {
1366               UINT8 *tc = (UINT8*)TMEM;
1364               UINT8 *tc = (UINT8*)texture_cache;
13671365                    int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff;
13681366               UINT8 p = tc[taddr ^ BYTE_ADDR_XOR];
1369               UINT16 c = tlut[(p ^ WORD_ADDR_XOR) << 2];
1367               UINT16 c = tlut[p ^ WORD_ADDR_XOR];
13701368
13711369               if (other_modes.en_tlut)
13721370               {
r6428r6429
13911389            }
13921390            case PIXEL_SIZE_16BIT:
13931391            {
1394               UINT16 *tc = (UINT16*)TMEM;
1392               UINT16 *tc = (UINT16*)texture_cache;
13951393                    int taddr = ((tbase>>1) + ((t) * (twidth>>1)) + (s))  ^ ((t & 1) ? XOR_SWAP_WORD : 0);
13961394               UINT16 c = tc[(taddr & 0x7ff) ^ WORD_ADDR_XOR]; // PGA European Tour (U)
13971395
r6428r6429
14221420            }
14231421            case PIXEL_SIZE_32BIT:
14241422            {
1425               UINT32 *tc = (UINT32*)TMEM;
1423               UINT32 *tc = (UINT32*)texture_cache;
14261424               int xorval = (fb_size == PIXEL_SIZE_16BIT) ? XOR_SWAP_WORD : XOR_SWAP_DWORD; // Conker's Bad Fur Day, Jet Force Gemini, Super Smash Bros., Mickey's Speedway USA, Ogre Battle, Wave Race, Gex 3, South Park Rally
14271425                    int taddr = (((tbase >> 2) + ((t) * (twidth >> 1)) + (s)) ^ ((t & 1) ? xorval : 0)) & 0x3ff;
14281426               UINT32 c = tc[taddr];
r6428r6429
14681466               INT32 newr = 0;
14691467               INT32 newg = 0;
14701468               INT32 newb = 0;
1471               UINT16 *tc = (UINT16*)TMEM;
1469               UINT16 *tc = (UINT16*)texture_cache;
14721470               int taddr = ((tbase >> 1) + ((t) * (twidth)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0);
14731471               UINT16 c1, c2;
14741472               INT32 y;
r6428r6429
15121510         {
15131511            case PIXEL_SIZE_4BIT:
15141512            {
1515               UINT8 *tc = (UINT8*)TMEM;
1513               UINT8 *tc = (UINT8*)texture_cache;
15161514                    int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff;
15171515               UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4);
1518               UINT16 c = tlut[(((tpal << 4) | p) ^ WORD_ADDR_XOR) << 2];
1516               UINT16 c = tlut[((tpal << 4) | p) ^ WORD_ADDR_XOR];
15191517
15201518               if (other_modes.en_tlut)
15211519               {
r6428r6429
15401538            }
15411539            case PIXEL_SIZE_8BIT:
15421540            {
1543               UINT8 *tc = (UINT8*)TMEM;
1541               UINT8 *tc = (UINT8*)texture_cache;
15441542                    int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff;
15451543               UINT8 p = tc[taddr ^ BYTE_ADDR_XOR];
1546               UINT16 c = tlut[(p ^ WORD_ADDR_XOR) << 2];
1544               UINT16 c = tlut[p ^ WORD_ADDR_XOR];
15471545
15481546               if (other_modes.en_tlut)
15491547               {
r6428r6429
15691567            case PIXEL_SIZE_16BIT:
15701568            {
15711569                    // 16-bit CI is a "valid" mode; some games use it, it behaves the same as 16-bit RGBA
1572               UINT16 *tc = (UINT16*)TMEM;
1570               UINT16 *tc = (UINT16*)texture_cache;
15731571                    int taddr = ((tbase>>1) + ((t) * (twidth>>1)) + (s))  ^ ((t & 1) ? XOR_SWAP_WORD : 0);
15741572               UINT16 c = tc[(taddr & 0x7ff) ^ WORD_ADDR_XOR]; // PGA European Tour (U)
15751573
r6428r6429
16111609         {
16121610            case PIXEL_SIZE_4BIT:
16131611            {
1614               UINT8 *tc = (UINT8*)TMEM;
1612               UINT8 *tc = (UINT8*)texture_cache;
16151613                    int taddr = (tbase + ((t) * twidth) + (s >> 1)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0);
16161614               UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4);
16171615               UINT8 i = ((p & 0xe) << 4) | ((p & 0xe) << 1) | (p & 0xe >> 2);
r6428r6429
16281626                  UINT16 c = tlut[((tpal << 4) | p) << 2];
16291627                  if (!other_modes.tlut_type)
16301628                  {
1631                          color->r = (((c >> 11) & 0x1f) << 3) | (((c >> 11) & 0x1f) >> 2);
1632                          color->g = (((c >>  6) & 0x1f) << 3) | (((c >>  6) & 0x1f) >> 2);
1633                          color->b = (((c >>  1) & 0x1f) << 3) | (((c >>  1) & 0x1f) >> 2);
1629                          color->r = (((c >> 11) & 0x1f) << 3) | (((c >> 11) & 0x1f) << 3);
1630                          color->g = (((c >>  6) & 0x1f) << 3) | (((c >>  6) & 0x1f) << 3);
1631                          color->b = (((c >>  1) & 0x1f) << 3) | (((c >>  1) & 0x1f) << 3);
16341632                          color->a = (c & 1) ? 0xff : 0;
16351633                  }
16361634                  else
r6428r6429
16431641            }
16441642            case PIXEL_SIZE_8BIT:
16451643            {
1646               UINT8 *tc = (UINT8*)TMEM;
1644               UINT8 *tc = (UINT8*)texture_cache;
16471645                    int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff;
16481646               UINT8 p = tc[taddr ^ BYTE_ADDR_XOR];
16491647               UINT8 i = 0;
r6428r6429
16761674            }
16771675            case PIXEL_SIZE_16BIT:
16781676            {
1679               UINT16 *tc = (UINT16*)TMEM;
1677               UINT16 *tc = (UINT16*)texture_cache;
16801678                    int taddr = ((tbase >> 1) + ((t) * (twidth >> 1)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0);
16811679               UINT16 c = tc[taddr ^ WORD_ADDR_XOR];
16821680               UINT8 i = (c >> 8);
r6428r6429
17211719         {
17221720            case PIXEL_SIZE_4BIT:
17231721            {
1724               UINT8 *tc = (UINT8*)TMEM;
1722               UINT8 *tc = (UINT8*)texture_cache;
17251723                    int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff;
17261724               UINT8 c = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4);
17271725               c |= (c << 4);
r6428r6429
17531751            }
17541752            case PIXEL_SIZE_8BIT:
17551753            {
1756               UINT8 *tc = (UINT8*)TMEM;
1754               UINT8 *tc = (UINT8*)texture_cache;
17571755                    int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff;
17581756               UINT8 c = tc[taddr ^ BYTE_ADDR_XOR];
17591757
r6428r6429
51355133   sh = tile[tilenum].sh = ((w2 >> 12) & 0xfff);
51365134   th = tile[tilenum].th = w2 & 0xfff;
51375135
5138   switch (ti_size)
5136   switch (ti_format)
51395137   {
5140      case PIXEL_SIZE_16BIT:
5138      case 0:      // RGBA
51415139      {
5142         UINT16 *src = (UINT16*)&rdram[(ti_address + (tl >> 2) * (ti_width << 1) + (sl >> 1)) >> 2];
5143         UINT16 *dst = (UINT16*)&TMEM[tile[tilenum].tmem];
5144         int count = ((sh >> 2) - (sl >> 2)) + 1;
5145
5146         for (i = 0; i < count; i++)
5140         switch (ti_size)
51475141         {
5148            if((i*4) < 0x400)
5142            case PIXEL_SIZE_16BIT:
51495143            {
5150               dst[i*4] = src[i];
5151               dst[i*4+1] = 0;
5152               dst[i*4+2] = 0;
5153               dst[i*4+3] = 0;
5144               UINT16 *src = (UINT16*)&rdram[(ti_address + (tl >> 2) * (ti_width << 1) + (sl >> 1)) >> 2];
5145
5146               for (i = (sl >> 2); i <= (sh >> 2); i++)
5147               {
5148                  tlut[i] = src[i];
5149               }
5150               break;
51545151            }
5155            //tlut[i] = src[i];
5152            default:   fatalerror("RDP: load_tlut: size = %d\n", ti_size);
51565153         }
51575154         break;
51585155      }
5159      /*
5160      case PIXEL_SIZE_16BIT:
5161      {
5162         UINT16 *src = (UINT16*)&rdram[(ti_address + (tl >> 2) * (ti_width << 1) + (sl >> 1)) >> 2];
51635156
5164         for (i = (sl >> 2); i <= (sh >> 2); i++)
5165         {
5166            tlut[i] = src[i];
5167         }
5168         break;
5169      }*/
5170      default:   stricterror("RDP: load_tlut: size = %d\n", ti_size);
5157      default:   fatalerror("RDP: load_tlut: format = %d\n", ti_format);
51715158   }
5172
5173   if (TMEM[0x1000] != 25 || TMEM[0x1001] != 25)
5174   {
5175      stricterror("rdp_load_tlut: TMEM has been written out-of-bounds");
5176   }
51775159}
51785160
51795161static RDP_COMMAND( rdp_set_tile_size )
r6428r6429
52295211   }
52305212
52315213   src = (UINT32*)&ram16[ti_address2 >> 1];
5232   tc = (UINT32*)TMEM;
5214   tc = (UINT32*)texture_cache;
52335215   tb = tile[tilenum].tmem >> 2;
52345216
52355217   if ((tb + (width >> 2)) > 0x400)
r6428r6429
53425324      case PIXEL_SIZE_8BIT:
53435325      {
53445326         UINT8 *src = (UINT8*)rdram;
5345         UINT8 *tc = (UINT8*)TMEM;
5327         UINT8 *tc = (UINT8*)texture_cache;
53465328         int tb = tile[tilenum].tmem;
53475329
53485330         if (tb + (width * height) > 4096)
r6428r6429
53725354      {
53735355         UINT16 *src = (UINT16*)rdram;
53745356         UINT32 ti_addr16 = ti_address >> 1;
5375         UINT16 *tc = (UINT16*)TMEM;
5357         UINT16 *tc = (UINT16*)texture_cache;
53765358         int tb = (tile[tilenum].tmem / 2);
53775359         int taddr;
53785360
r6428r6429
54125394      case PIXEL_SIZE_32BIT:
54135395      {
54145396         UINT32 *src = (UINT32*)&rdram[ti_address / 4];
5415         UINT32 *tc = (UINT32*)TMEM;
5397         UINT32 *tc = (UINT32*)texture_cache;
54165398         int tb = (tile[tilenum].tmem / 4);
54175399         int xorval32 = ((fb_size == PIXEL_SIZE_16BIT) ? 2 : 1);
54185400
src/mame/video/moo.c
r6428r6429
143143
144144   sortlayers(layers, layerpri);
145145
146   K054338_update_all_shadows(screen->machine);
146   K054338_update_all_shadows(screen->machine, 0);
147147   K054338_fill_backcolor(screen->machine, bitmap, 0);
148148
149149   bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
src/mame/video/m58.c
r6428r6429
55***************************************************************************/
66
77#include "driver.h"
8#include "m58.h"
8#include "includes/iremz80.h"
99#include "video/resnet.h"
1010
11UINT8 *yard_scroll_x_low;
12UINT8 *yard_scroll_x_high;
13UINT8 *yard_scroll_y_low;
14UINT8 *yard_score_panel_disabled;
15static bitmap_t *scroll_panel_bitmap;
16
17static tilemap *bg_tilemap;
18
1911#define SCROLL_PANEL_WIDTH  (14*4)
2012#define RADAR_PALETTE_BASE   (256)
2113
r6428r6429
113105
114106WRITE8_HANDLER( yard_videoram_w )
115107{
116   videoram[offset] = data;
117   tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
108   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
109
110   state->videoram[offset] = data;
111   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
118112}
119113
120114
121115WRITE8_HANDLER( yard_scroll_panel_w )
122116{
117   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
118
123119   int sx,sy,i;
124120
125121   sx = ( offset % 16 );
126122   sy = ( offset / 16 );
127123
128   if (sx < 1 || sx > 14)  return;
124   if (sx < 1 || sx > 14)
125      return;
129126
130127   sx = 4 * (sx - 1);
131128
r6428r6429
136133      col = (data >> i) & 0x11;
137134      col = ((col >> 3) | col) & 3;
138135
139      *BITMAP_ADDR16(scroll_panel_bitmap, sy, sx + i) = RADAR_PALETTE_BASE + (sy & 0xfc) + col;
136      *BITMAP_ADDR16(state->scroll_panel_bitmap, sy, sx + i) = RADAR_PALETTE_BASE + (sy & 0xfc) + col;
140137   }
141138}
142139
r6428r6429
150147
151148static TILE_GET_INFO( yard_get_bg_tile_info )
152149{
150   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
151
153152   int offs = tile_index * 2;
154   int attr = videoram[offs + 1];
155   int code = videoram[offs] + ((attr & 0xc0) << 2);
153   int attr = state->videoram[offs + 1];
154   int code = state->videoram[offs] + ((attr & 0xc0) << 2);
156155   int color = attr & 0x1f;
157156   int flags = (attr & 0x20) ? TILE_FLIPX : 0;
158157
r6428r6429
164163{
165164   /* logical (col,row) -> memory offset */
166165   if (col >= 32)
167      return (row+32)*32 + col-32;
166      return (row + 32) * 32 + col - 32;
168167   else
169      return row*32 + col;
168      return row * 32 + col;
170169}
171170
172171
r6428r6429
179178
180179VIDEO_START( yard )
181180{
181   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
182
182183   int width = video_screen_get_width(machine->primary_screen);
183184   int height = video_screen_get_height(machine->primary_screen);
184185   bitmap_format format = video_screen_get_format(machine->primary_screen);
185186   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
186187
187   bg_tilemap = tilemap_create(machine, yard_get_bg_tile_info, yard_tilemap_scan_rows,  8, 8, 64, 32);
188   tilemap_set_scrolldx(bg_tilemap, visarea->min_x, width - (visarea->max_x + 1));
189   tilemap_set_scrolldy(bg_tilemap, visarea->min_y - 8, height + 16 - (visarea->max_y + 1));
188   state->bg_tilemap = tilemap_create(machine, yard_get_bg_tile_info, yard_tilemap_scan_rows,  8, 8, 64, 32);
189   tilemap_set_scrolldx(state->bg_tilemap, visarea->min_x, width - (visarea->max_x + 1));
190   tilemap_set_scrolldy(state->bg_tilemap, visarea->min_y - 8, height + 16 - (visarea->max_y + 1));
190191
191   scroll_panel_bitmap = auto_bitmap_alloc(machine, SCROLL_PANEL_WIDTH, height, format);
192   state->scroll_panel_bitmap = auto_bitmap_alloc(machine, SCROLL_PANEL_WIDTH, height, format);
192193}
193194
194195
r6428r6429
220221
221222static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
222223{
224   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
223225   int offs;
224226   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
225227
226228   for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
227229   {
228      int attr = spriteram[offs + 1];
230      int attr = state->spriteram[offs + 1];
229231      int bank = (attr & 0x20) >> 5;
230      int code1 = spriteram[offs + 2] & 0xbf;
232      int code1 = state->spriteram[offs + 2] & 0xbf;
231233      int code2 = 0;
232234      int color = attr & 0x1f;
233235      int flipx = attr & 0x40;
234236      int flipy = attr & 0x80;
235      int sx = spriteram[offs + 3];
236      int sy1 = 233 - spriteram[offs];
237      int sx = state->spriteram[offs + 3];
238      int sy1 = 233 - state->spriteram[offs];
237239      int sy2 = 0;
238240
239241      if (flipy)
r6428r6429
274276
275277static void draw_panel( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
276278{
277   if (! *yard_score_panel_disabled)
279   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
280
281   if (!*state->yard_score_panel_disabled)
278282   {
279283      static const rectangle clippanel =
280284      {
r6428r6429
295299      clip.max_y += visarea->max_y + yoffs;
296300      sect_rect(&clip, cliprect);
297301
298      copybitmap(bitmap, scroll_panel_bitmap, flip_screen_get(machine), flip_screen_get(machine),
302      copybitmap(bitmap, state->scroll_panel_bitmap, flip_screen_get(machine), flip_screen_get(machine),
299303               sx, visarea->min_y + yoffs, &clip);
300304   }
301305}
r6428r6429
310314
311315VIDEO_UPDATE( yard )
312316{
313   tilemap_set_scrollx(bg_tilemap, 0, (*yard_scroll_x_high * 0x100) + *yard_scroll_x_low);
314   tilemap_set_scrolly(bg_tilemap, 0, *yard_scroll_y_low);
317   irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data;
315318
316   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
319   tilemap_set_scrollx(state->bg_tilemap, 0, (*state->yard_scroll_x_high * 0x100) + *state->yard_scroll_x_low);
320   tilemap_set_scrolly(state->bg_tilemap, 0, *state->yard_scroll_y_low);
321
322   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
317323   draw_sprites(screen->machine, bitmap, cliprect);
318324   draw_panel(screen->machine, bitmap, cliprect);
319325   return 0;
src/mame/video/marineb.c
r6428r6429
1010#include "includes/espial.h"
1111
1212
13UINT8 *marineb_videoram;
14UINT8 *marineb_colorram;
15UINT8 marineb_active_low_flipscreen;
16
17static UINT8 column_scroll;
18static UINT8 palette_bank;
19static UINT8 flipscreen_x;
20static UINT8 flipscreen_y;
21static tilemap *bg_tilemap;
22
23
24
2513/***************************************************************************
2614
2715  Callbacks for the TileMap code
r6428r6429
3018
3119static TILE_GET_INFO( get_tile_info )
3220{
33   UINT8 code = marineb_videoram[tile_index];
34   UINT8 col = marineb_colorram[tile_index];
21   espial_state *state = (espial_state *)machine->driver_data;
3522
23   UINT8 code = state->videoram[tile_index];
24   UINT8 col = state->colorram[tile_index];
25
3626   SET_TILE_INFO(0,
3727              code | ((col & 0xc0) << 2),
38              (col & 0x0f) | (palette_bank << 4),
28              (col & 0x0f) | (state->palette_bank << 4),
3929              TILE_FLIPXY((col >> 4) & 0x03));
4030}
4131
r6428r6429
4939
5040VIDEO_START( marineb )
5141{
52   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,32);
42   espial_state *state = (espial_state *)machine->driver_data;
5343
54   tilemap_set_scroll_cols(bg_tilemap, 32);
44   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
45   tilemap_set_scroll_cols(state->bg_tilemap, 32);
46
47   state_save_register_global(machine, state->palette_bank);
48   state_save_register_global(machine, state->column_scroll);
49   state_save_register_global(machine, state->flipscreen_x);
50   state_save_register_global(machine, state->flipscreen_y);
5551}
5652
5753
r6428r6429
6460
6561WRITE8_HANDLER( marineb_videoram_w )
6662{
67   marineb_videoram[offset] = data;
68   tilemap_mark_tile_dirty(bg_tilemap, offset);
63   espial_state *state = (espial_state *)space->machine->driver_data;
64
65   state->videoram[offset] = data;
66   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
6967}
7068
7169
7270WRITE8_HANDLER( marineb_colorram_w )
7371{
74   marineb_colorram[offset] = data;
75   tilemap_mark_tile_dirty(bg_tilemap, offset);
72   espial_state *state = (espial_state *)space->machine->driver_data;
73
74   state->colorram[offset] = data;
75   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
7676}
7777
7878
7979WRITE8_HANDLER( marineb_column_scroll_w )
8080{
81   column_scroll = data;
81   espial_state *state = (espial_state *)space->machine->driver_data;
82   state->column_scroll = data;
8283}
8384
8485
8586WRITE8_HANDLER( marineb_palette_bank_0_w )
8687{
87   UINT8 old = palette_bank;
88   espial_state *state = (espial_state *)space->machine->driver_data;
89   UINT8 old = state->palette_bank;
8890
89   palette_bank = (palette_bank & 0x02) | ((data & 0x01) << 0);
91   state->palette_bank = (state->palette_bank & 0x02) | (data & 0x01);
9092
91   if (old != palette_bank)
93   if (old != state->palette_bank)
9294   {
93      tilemap_mark_all_tiles_dirty(bg_tilemap);
95      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
9496   }
9597}
9698
9799
98100WRITE8_HANDLER( marineb_palette_bank_1_w )
99101{
100   UINT8 old = palette_bank;
102   espial_state *state = (espial_state *)space->machine->driver_data;
103   UINT8 old = state->palette_bank;
101104
102   palette_bank = (palette_bank & 0x01) | ((data & 0x01) << 1);
105   state->palette_bank = (state->palette_bank & 0x01) | ((data & 0x01) << 1);
103106
104   if (old != palette_bank)
107   if (old != state->palette_bank)
105108   {
106      tilemap_mark_all_tiles_dirty(bg_tilemap);
109      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
107110   }
108111}
109112
110113
111114WRITE8_HANDLER( marineb_flipscreen_x_w )
112115{
113   flipscreen_x = data ^ marineb_active_low_flipscreen;
116   espial_state *state = (espial_state *)space->machine->driver_data;
114117
115   tilemap_set_flip(bg_tilemap, (flipscreen_x ? TILEMAP_FLIPX : 0) | (flipscreen_y ? TILEMAP_FLIPY : 0));
118   state->flipscreen_x = data ^ state->marineb_active_low_flipscreen;
119   tilemap_set_flip(state->bg_tilemap, (state->flipscreen_x ? TILEMAP_FLIPX : 0) | (state->flipscreen_y ? TILEMAP_FLIPY : 0));
116120}
117121
118122
119123WRITE8_HANDLER( marineb_flipscreen_y_w )
120124{
121   flipscreen_y = data ^ marineb_active_low_flipscreen;
125   espial_state *state = (espial_state *)space->machine->driver_data;
122126
123   tilemap_set_flip(bg_tilemap, (flipscreen_x ? TILEMAP_FLIPX : 0) | (flipscreen_y ? TILEMAP_FLIPY : 0));
127   state->flipscreen_y = data ^ state->marineb_active_low_flipscreen;
128   tilemap_set_flip(state->bg_tilemap, (state->flipscreen_x ? TILEMAP_FLIPX : 0) | (state->flipscreen_y ? TILEMAP_FLIPY : 0));
124129}
125130
126131
r6428r6429
131136 *
132137 *************************************/
133138
134static void set_tilemap_scrolly(int cols)
139static void set_tilemap_scrolly( running_machine *machine, int cols )
135140{
141   espial_state *state = (espial_state *)machine->driver_data;
136142   int col;
137143
138144   for (col = 0; col < cols; col++)
139      tilemap_set_scrolly(bg_tilemap, col, column_scroll);
145      tilemap_set_scrolly(state->bg_tilemap, col, state->column_scroll);
140146
141147   for (; col < 32; col++)
142      tilemap_set_scrolly(bg_tilemap, col, 0);
148      tilemap_set_scrolly(state->bg_tilemap, col, 0);
143149}
144150
145151
146152VIDEO_UPDATE( marineb )
147153{
154   espial_state *state = (espial_state *)screen->machine->driver_data;
148155   int offs;
149156
157   set_tilemap_scrolly(screen->machine, 24);
158   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
150159
151   set_tilemap_scrolly(24);
152   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
153
154
155160   /* draw the sprites */
156161   for (offs = 0x0f; offs >= 0; offs--)
157162   {
158      int gfx,sx,sy,code,col,flipx,flipy,offs2;
163      int gfx, sx, sy, code, col, flipx, flipy, offs2;
159164
165      if ((offs == 0) || (offs == 2))
166         continue;  /* no sprites here */
160167
161      if ((offs == 0) || (offs == 2))  continue;  /* no sprites here */
162
163
164168      if (offs < 8)
165      {
166169         offs2 = 0x0018 + offs;
167      }
168170      else
169      {
170171         offs2 = 0x03d8 - 8 + offs;
171      }
172172
173
174      code  = marineb_videoram[offs2];
175      sx    = marineb_videoram[offs2 + 0x20];
176      sy    = marineb_colorram[offs2];
177      col   = (marineb_colorram[offs2 + 0x20] & 0x0f) + 16 * palette_bank;
178      flipx =   code & 0x02;
173      code = state->videoram[offs2];
174      sx = state->videoram[offs2 + 0x20];
175      sy = state->colorram[offs2];
176      col = (state->colorram[offs2 + 0x20] & 0x0f) + 16 * state->palette_bank;
177      flipx = code & 0x02;
179178      flipy = !(code & 0x01);
180179
181180      if (offs < 4)
r6428r6429
191190         code >>= 2;
192191      }
193192
194      if (!flipscreen_y)
193      if (!state->flipscreen_y)
195194      {
196195         sy = 256 - screen->machine->gfx[gfx]->width - sy;
197196         flipy = !flipy;
198197      }
199198
200      if (flipscreen_x)
199      if (state->flipscreen_x)
201200      {
202201         sx++;
203202      }
r6428r6429
214213
215214VIDEO_UPDATE( changes )
216215{
217   int offs,sx,sy,code,col,flipx,flipy;
216   espial_state *state = (espial_state *)screen->machine->driver_data;
217   int offs, sx, sy, code, col, flipx, flipy;
218218
219   set_tilemap_scrolly(screen->machine, 26);
220   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
219221
220   set_tilemap_scrolly(26);
221   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
222
223
224222   /* draw the small sprites */
225223   for (offs = 0x05; offs >= 0; offs--)
226224   {
227225      int offs2;
228226
229
230227      offs2 = 0x001a + offs;
231228
232      code  = marineb_videoram[offs2];
233      sx    = marineb_videoram[offs2 + 0x20];
234      sy    = marineb_colorram[offs2];
235      col   = (marineb_colorram[offs2 + 0x20] & 0x0f) + 16 * palette_bank;
236      flipx =   code & 0x02;
229      code = state->videoram[offs2];
230      sx = state->videoram[offs2 + 0x20];
231      sy = state->colorram[offs2];
232      col = (state->colorram[offs2 + 0x20] & 0x0f) + 16 * state->palette_bank;
233      flipx = code & 0x02;
237234      flipy = !(code & 0x01);
238235
239      if (!flipscreen_y)
236      if (!state->flipscreen_y)
240237      {
241238         sy = 256 - screen->machine->gfx[1]->width - sy;
242239         flipy = !flipy;
243240      }
244241
245      if (flipscreen_x)
242      if (state->flipscreen_x)
246243      {
247244         sx++;
248245      }
r6428r6429
256253
257254   /* draw the big sprite */
258255
259   code  = marineb_videoram[0x3df];
260   sx    = marineb_videoram[0x3ff];
261   sy    = marineb_colorram[0x3df];
262   col   = marineb_colorram[0x3ff];
263   flipx =   code & 0x02;
256   code = state->videoram[0x3df];
257   sx = state->videoram[0x3ff];
258   sy = state->colorram[0x3df];
259   col = state->colorram[0x3ff];
260   flipx = code & 0x02;
264261   flipy = !(code & 0x01);
265262
266   if (!flipscreen_y)
263   if (!state->flipscreen_y)
267264   {
268265      sy = 256 - screen->machine->gfx[2]->width - sy;
269266      flipy = !flipy;
270267   }
271268
272   if (flipscreen_x)
269   if (state->flipscreen_x)
273270   {
274271      sx++;
275272   }
r6428r6429
295292
296293VIDEO_UPDATE( springer )
297294{
295   espial_state *state = (espial_state *)screen->machine->driver_data;
298296   int offs;
299297
298   set_tilemap_scrolly(screen->machine, 0);
299   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
300300
301   set_tilemap_scrolly(0);
302   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
303
304
305301   /* draw the sprites */
306302   for (offs = 0x0f; offs >= 0; offs--)
307303   {
308      int gfx,sx,sy,code,col,flipx,flipy,offs2;
304      int gfx, sx, sy, code, col, flipx, flipy, offs2;
309305
306      if ((offs == 0) || (offs == 2))
307         continue;  /* no sprites here */
310308
311      if ((offs == 0) || (offs == 2))  continue;  /* no sprites here */
312
313
314309      offs2 = 0x0010 + offs;
315310
316
317      code  = marineb_videoram[offs2];
318      sx    = 240 - marineb_videoram[offs2 + 0x20];
319      sy    = marineb_colorram[offs2];
320      col   = (marineb_colorram[offs2 + 0x20] & 0x0f) + 16 * palette_bank;
311      code = state->videoram[offs2];
312      sx = 240 - state->videoram[offs2 + 0x20];
313      sy = state->colorram[offs2];
314      col = (state->colorram[offs2 + 0x20] & 0x0f) + 16 * state->palette_bank;
321315      flipx = !(code & 0x02);
322316      flipy = !(code & 0x01);
323317
r6428r6429
335329         code >>= 2;
336330      }
337331
338      if (!flipscreen_y)
332      if (!state->flipscreen_y)
339333      {
340334         sy = 256 - screen->machine->gfx[gfx]->width - sy;
341335         flipy = !flipy;
342336      }
343337
344      if (!flipscreen_x)
338      if (!state->flipscreen_x)
345339      {
346340         sx--;
347341      }
r6428r6429
358352
359353VIDEO_UPDATE( hoccer )
360354{
355   espial_state *state = (espial_state *)screen->machine->driver_data;
361356   int offs;
362357
358   set_tilemap_scrolly(screen->machine, 0);
359   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
363360
364   set_tilemap_scrolly(0);
365   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
366
367
368361   /* draw the sprites */
369362   for (offs = 0x07; offs >= 0; offs--)
370363   {
371      int sx,sy,code,col,flipx,flipy,offs2;
364      int sx, sy, code, col, flipx, flipy, offs2;
372365
373
374366      offs2 = 0x0018 + offs;
375367
376
377      code  = spriteram[offs2];
378      sx    = spriteram[offs2 + 0x20];
379      sy    = marineb_colorram[offs2];
380      col   = marineb_colorram[offs2 + 0x20];
381      flipx =   code & 0x02;
368      code = state->spriteram[offs2];
369      sx = state->spriteram[offs2 + 0x20];
370      sy = state->colorram[offs2];
371      col = state->colorram[offs2 + 0x20];
372      flipx = code & 0x02;
382373      flipy = !(code & 0x01);
383374
384      if (!flipscreen_y)
375      if (!state->flipscreen_y)
385376      {
386377         sy = 256 - screen->machine->gfx[1]->width - sy;
387378         flipy = !flipy;
388379      }
389380
390      if (flipscreen_x)
381      if (state->flipscreen_x)
391382      {
392383         sx = 256 - screen->machine->gfx[1]->width - sx;
393384         flipx = !flipx;
r6428r6429
405396
406397VIDEO_UPDATE( hopprobo )
407398{
399   espial_state *state = (espial_state *)screen->machine->driver_data;
408400   int offs;
409401
402   set_tilemap_scrolly(screen->machine, 0);
403   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
410404
411   set_tilemap_scrolly(0);
412   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
413
414
415405   /* draw the sprites */
416406   for (offs = 0x0f; offs >= 0; offs--)
417407   {
418      int gfx,sx,sy,code,col,flipx,flipy,offs2;
408      int gfx, sx, sy, code, col, flipx, flipy, offs2;
419409
410      if ((offs == 0) || (offs == 2))
411         continue;  /* no sprites here */
420412
421      if ((offs == 0) || (offs == 2))  continue;  /* no sprites here */
422
423
424413      offs2 = 0x0010 + offs;
425414
426
427      code  = marineb_videoram[offs2];
428      sx    = marineb_videoram[offs2 + 0x20];
429      sy    = marineb_colorram[offs2];
430      col   = (marineb_colorram[offs2 + 0x20] & 0x0f) + 16 * palette_bank;
431      flipx =   code & 0x02;
415      code = state->videoram[offs2];
416      sx = state->videoram[offs2 + 0x20];
417      sy = state->colorram[offs2];
418      col = (state->colorram[offs2 + 0x20] & 0x0f) + 16 * state->palette_bank;
419      flipx = code & 0x02;
432420      flipy = !(code & 0x01);
433421
434422      if (offs < 4)
r6428r6429
444432         code >>= 2;
445433      }
446434
447      if (!flipscreen_y)
435      if (!state->flipscreen_y)
448436      {
449437         sy = 256 - screen->machine->gfx[gfx]->width - sy;
450438         flipy = !flipy;
451439      }
452440
453      if (!flipscreen_x)
441      if (!state->flipscreen_x)
454442      {
455443         sx--;
456444      }
src/mame/video/arkanoid.c
r6428r6429
99#include "driver.h"
1010#include "includes/arkanoid.h"
1111
12static UINT8 gfxbank, palettebank;
1312
14static tilemap *bg_tilemap;
15
1613WRITE8_HANDLER( arkanoid_videoram_w )
1714{
18   videoram[offset] = data;
19   tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
15   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
16   state->videoram[offset] = data;
17   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
2018}
2119
2220WRITE8_HANDLER( arkanoid_d008_w )
2321{
22   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
2423   int bank;
2524
2625   /* bits 0 and 1 flip X and Y, I don't know which is which */
2726   if (flip_screen_x_get(space->machine) != (data & 0x01))
2827   {
2928      flip_screen_x_set(space->machine, data & 0x01);
30      tilemap_mark_all_tiles_dirty(bg_tilemap);
29      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
3130   }
3231
3332   if (flip_screen_y_get(space->machine) != (data & 0x02))
3433   {
3534      flip_screen_y_set(space->machine, data & 0x02);
36      tilemap_mark_all_tiles_dirty(bg_tilemap);
35      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
3736   }
3837
3938   /* bit 2 selects the input paddle */
40   arkanoid_paddle_select = data & 0x04;
39   state->paddle_select = data & 0x04;
4140
4241   /* bit 3 is coin lockout (but not the service coin) */
4342   coin_lockout_w(0, !(data & 0x08));
r6428r6429
4948   /* so I don't know which is which. */
5049   bank = (data & 0x20) >> 5;
5150
52   if (gfxbank != bank)
51   if (state->gfxbank != bank)
5352   {
54      gfxbank = bank;
55      tilemap_mark_all_tiles_dirty(bg_tilemap);
53      state->gfxbank = bank;
54      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
5655   }
5756
5857   bank = (data & 0x40) >> 6;
5958
60   if (palettebank != bank)
59   if (state->palettebank != bank)
6160   {
62      palettebank = bank;
63      tilemap_mark_all_tiles_dirty(bg_tilemap);
61      state->palettebank = bank;
62      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
6463   }
6564
6665   /* BM:  bit 7 is suspected to be MCU reset, the evidence for this is that
r6428r6429
7675/* different hook-up, everything except for bits 0-1 and 7 aren't tested afaik. */
7776WRITE8_HANDLER( tetrsark_d008_w )
7877{
78   arkanoid_state *state = (arkanoid_state *)space->machine->driver_data;
7979   int bank;
8080
8181   /* bits 0 and 1 flip X and Y, I don't know which is which */
8282   if (flip_screen_x_get(space->machine) != (data & 0x01))
8383   {
8484      flip_screen_x_set(space->machine, data & 0x01);
85      tilemap_mark_all_tiles_dirty(bg_tilemap);
85      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
8686   }
8787
8888   if (flip_screen_y_get(space->machine) != (data & 0x02))
8989   {
9090      flip_screen_y_set(space->machine, data & 0x02);
91      tilemap_mark_all_tiles_dirty(bg_tilemap);
91      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
9292   }
9393
9494   /* bit 2 selects the input paddle? */
95   arkanoid_paddle_select = data & 0x04;
95   state->paddle_select = data & 0x04;
9696
9797   /* bit 3-4 is unknown? */
9898
r6428r6429
100100   /* so I don't know which is which.? */
101101   bank = (data & 0x20) >> 5;
102102
103   if (gfxbank != bank)
103   if (state->gfxbank != bank)
104104   {
105      gfxbank = bank;
106      tilemap_mark_all_tiles_dirty(bg_tilemap);
105      state->gfxbank = bank;
106      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
107107   }
108108
109109   bank = (data & 0x40) >> 6;
110110
111   if (palettebank != bank)
111   if (state->palettebank != bank)
112112   {
113      palettebank = bank;
114      tilemap_mark_all_tiles_dirty(bg_tilemap);
113      state->palettebank = bank;
114      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
115115   }
116116
117117   /* bit 7 is coin lockout (but not the service coin) */
r6428r6429
122122
123123static TILE_GET_INFO( get_bg_tile_info )
124124{
125   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
125126   int offs = tile_index * 2;
126   int code = videoram[offs + 1] + ((videoram[offs] & 0x07) << 8) + 2048 * gfxbank;
127   int color = ((videoram[offs] & 0xf8) >> 3) + 32 * palettebank;
127   int code = state->videoram[offs + 1] + ((state->videoram[offs] & 0x07) << 8) + 2048 * state->gfxbank;
128   int color = ((state->videoram[offs] & 0xf8) >> 3) + 32 * state->palettebank;
128129
129130   SET_TILE_INFO(0, code, color, 0);
130131}
131132
132133VIDEO_START( arkanoid )
133134{
134   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
135       8, 8, 32, 32);
135   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
136136
137   state_save_register_global(machine, gfxbank);
138   state_save_register_global(machine, palettebank);
137   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
139138}
140139
141static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
140static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
142141{
142   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
143143   int offs;
144144
145   for (offs = 0;offs < spriteram_size;offs += 4)
145   for (offs = 0; offs < spriteram_size; offs += 4)
146146   {
147      int sx,sy,code;
147      int sx, sy, code;
148148
149      sx = spriteram[offs];
150      sy = 248 - spriteram[offs + 1];
151      if (flip_screen_x_get(machine)) sx = 248 - sx;
152      if (flip_screen_y_get(machine)) sy = 248 - sy;
149      sx = state->spriteram[offs];
150      sy = 248 - state->spriteram[offs + 1];
151      if (flip_screen_x_get(machine))
152         sx = 248 - sx;
153      if (flip_screen_y_get(machine))
154         sy = 248 - sy;
153155
154      code = spriteram[offs + 3] + ((spriteram[offs + 2] & 0x03) << 8) + 1024 * gfxbank;
156      code = state->spriteram[offs + 3] + ((state->spriteram[offs + 2] & 0x03) << 8) + 1024 * state->gfxbank;
155157
156158      drawgfx_transpen(bitmap,cliprect,machine->gfx[0],
157159            2 * code,
158            ((spriteram[offs + 2] & 0xf8) >> 3) + 32 * palettebank,
160            ((state->spriteram[offs + 2] & 0xf8) >> 3) + 32 * state->palettebank,
159161            flip_screen_x_get(machine),flip_screen_y_get(machine),
160162            sx,sy + (flip_screen_y_get(machine) ? 8 : -8),0);
161163      drawgfx_transpen(bitmap,cliprect,machine->gfx[0],
162164            2 * code + 1,
163            ((spriteram[offs + 2] & 0xf8) >> 3) + 32 * palettebank,
165            ((state->spriteram[offs + 2] & 0xf8) >> 3) + 32 * state->palettebank,
164166            flip_screen_x_get(machine),flip_screen_y_get(machine),
165167            sx,sy,0);
166168   }
r6428r6429
169171
170172VIDEO_UPDATE( arkanoid )
171173{
172   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
174   arkanoid_state *state = (arkanoid_state *)screen->machine->driver_data;
175
176   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
173177   draw_sprites(screen->machine, bitmap, cliprect);
174178   return 0;
175179}
src/mame/video/brkthru.c
r6428r6429
55***************************************************************************/
66
77#include "driver.h"
8#include "brkthru.h"
89
910
10//UINT8 *brkthru_scroll;
11UINT8 *brkthru_videoram;
12size_t brkthru_videoram_size;
13static int bgscroll;
14static int bgbasecolor;
15static int flipscreen;
16
17static tilemap *fg_tilemap;
18static tilemap *bg_tilemap;
19
20
2111/***************************************************************************
2212
2313  Convert the color PROMs into a more useable format.
r6428r6429
4131  bit 0 -- 2.2kohm resistor  -- BLUE
4232
4333***************************************************************************/
34
4435PALETTE_INIT( brkthru )
4536{
4637   int i;
4738
48
49   for (i = 0;i < machine->config->total_colors;i++)
39   for (i = 0; i < machine->config->total_colors; i++)
5040   {
51      int bit0,bit1,bit2,bit3,r,g,b;
41      int bit0, bit1, bit2, bit3, r, g, b;
5242
53
5443      bit0 = (color_prom[0] >> 0) & 0x01;
5544      bit1 = (color_prom[0] >> 1) & 0x01;
5645      bit2 = (color_prom[0] >> 2) & 0x01;
r6428r6429
6756      bit3 = (color_prom[machine->config->total_colors] >> 3) & 0x01;
6857      b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
6958
70      palette_set_color(machine,i,MAKE_RGB(r,g,b));
59      palette_set_color(machine, i, MAKE_RGB(r,g,b));
7160
7261      color_prom++;
7362   }
r6428r6429
8372
8473static TILE_GET_INFO( get_bg_tile_info )
8574{
75   brkthru_state *state = (brkthru_state *)machine->driver_data;
8676   /* BG RAM format
8777        0         1
8878        ---- -c-- ---- ---- = Color
8979        ---- --xx xxxx xxxx = Code
9080    */
9181
92   int code = (videoram[tile_index*2] | ((videoram[tile_index*2+1]) << 8)) & 0x3ff;
82   int code = (state->videoram[tile_index * 2] | ((state->videoram[tile_index * 2 + 1]) << 8)) & 0x3ff;
9383   int region = 1 + (code >> 7);
94   int colour = bgbasecolor + ((videoram[tile_index*2+1] & 0x04) >> 2);
84   int colour = state->bgbasecolor + ((state->videoram[tile_index * 2 + 1] & 0x04) >> 2);
9585
96   SET_TILE_INFO(region, code & 0x7f,colour,0);
86   SET_TILE_INFO(region, code & 0x7f, colour,0);
9787}
9888
9989WRITE8_HANDLER( brkthru_bgram_w )
10090{
101   videoram[offset] = data;
102   tilemap_mark_tile_dirty(bg_tilemap,offset/2);
91   brkthru_state *state = (brkthru_state *)space->machine->driver_data;
92
93   state->videoram[offset] = data;
94   tilemap_mark_tile_dirty(state->bg_tilemap, offset / 2);
10395}
10496
10597
10698static TILE_GET_INFO( get_fg_tile_info )
10799{
108   UINT8 code = brkthru_videoram[tile_index];
100   brkthru_state *state = (brkthru_state *)machine->driver_data;
101   UINT8 code = state->fg_videoram[tile_index];
109102   SET_TILE_INFO(0, code, 0, 0);
110103}
111104
112105WRITE8_HANDLER( brkthru_fgram_w )
113106{
114   brkthru_videoram[offset] = data;
115   tilemap_mark_tile_dirty(fg_tilemap,offset);
107   brkthru_state *state = (brkthru_state *)space->machine->driver_data;
108
109   state->fg_videoram[offset] = data;
110   tilemap_mark_tile_dirty(state->fg_tilemap,offset);
116111}
117112
118113VIDEO_START( brkthru )
119114{
120   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32,32);
121   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_cols,16,16,32,16);
115   brkthru_state *state = (brkthru_state *)machine->driver_data;
122116
123   tilemap_set_transparent_pen( fg_tilemap, 0 );
124   tilemap_set_transparent_pen( bg_tilemap, 0 );
117   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
118   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols, 16, 16, 32, 16);
119
120   tilemap_set_transparent_pen(state->fg_tilemap, 0);
121   tilemap_set_transparent_pen(state->bg_tilemap, 0);
122
123   state_save_register_global(machine, state->bgscroll);
124   state_save_register_global(machine, state->bgbasecolor);
125   state_save_register_global(machine, state->flipscreen);
125126}
126127
127128
128
129129WRITE8_HANDLER( brkthru_1800_w )
130130{
131   brkthru_state *state = (brkthru_state *)space->machine->driver_data;
132
131133   if (offset == 0)   /* low 8 bits of scroll */
132      bgscroll = (bgscroll & 0x100) | data;
134      state->bgscroll = (state->bgscroll & 0x100) | data;
133135   else if (offset == 1)
134136   {
135      int bankaddress;
136      UINT8 *RAM = memory_region(space->machine, "maincpu");
137
138
139137      /* bit 0-2 = ROM bank select */
140      bankaddress = 0x10000 + (data & 0x07) * 0x2000;
141      memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
138      memory_set_bank(space->machine, 1, data & 0x07);
142139
143140      /* bit 3-5 = background tiles color code */
144      if (((data & 0x38) >> 2) != bgbasecolor)
141      if (((data & 0x38) >> 2) != state->bgbasecolor)
145142      {
146         bgbasecolor = (data & 0x38) >> 2;
147         tilemap_mark_all_tiles_dirty (bg_tilemap);
143         state->bgbasecolor = (data & 0x38) >> 2;
144         tilemap_mark_all_tiles_dirty(state->bg_tilemap);
148145      }
149146
150147      /* bit 6 = screen flip */
151      if (flipscreen != (data & 0x40))
148      if (state->flipscreen != (data & 0x40))
152149      {
153         flipscreen = data & 0x40;
154         tilemap_set_flip(bg_tilemap,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
155         tilemap_set_flip(fg_tilemap,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
150         state->flipscreen = data & 0x40;
151         tilemap_set_flip(state->bg_tilemap, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
152         tilemap_set_flip(state->fg_tilemap, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
156153
157154      }
158155
159156      /* bit 7 = high bit of scroll */
160      bgscroll = (bgscroll & 0xff) | ((data & 0x80) << 1);
157      state->bgscroll = (state->bgscroll & 0xff) | ((data & 0x80) << 1);
161158   }
162159}
163160
r6428r6429
173170#endif
174171
175172
176static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int prio )
173static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int prio )
177174{
175   brkthru_state *state = (brkthru_state *)machine->driver_data;
178176   int offs;
179177   /* Draw the sprites. Note that it is important to draw them exactly in this */
180178   /* order, to have the correct priorities. */
r6428r6429
193191
194192   for (offs = 0;offs < spriteram_size; offs += 4)
195193   {
196      if ((spriteram[offs] & 0x09) == prio)   /* Enable && Low Priority */
194      if ((state->spriteram[offs] & 0x09) == prio)   /* Enable && Low Priority */
197195      {
198         int sx,sy,code,color;
196         int sx, sy, code, color;
199197
200         sx = 240 - spriteram[offs+3];
201         if (sx < -7) sx += 256;
202         sy = 240 - spriteram[offs+2];
203         code = spriteram[offs+1] + 128 * (spriteram[offs] & 0x06);
204         color = (spriteram[offs] & 0xe0) >> 5;
205         if (flipscreen)
198         sx = 240 - state->spriteram[offs + 3];
199         if (sx < -7)
200            sx += 256;
201
202         sy = 240 - state->spriteram[offs + 2];
203         code = state->spriteram[offs + 1] + 128 * (state->spriteram[offs] & 0x06);
204         color = (state->spriteram[offs] & 0xe0) >> 5;
205         if (state->flipscreen)
206206         {
207207            sx = 240 - sx;
208208            sy = 240 - sy;
209209         }
210210
211         if (spriteram[offs] & 0x10)   /* double height */
211         if (state->spriteram[offs] & 0x10)   /* double height */
212212         {
213213            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
214214                  code & ~1,
215215                  color,
216                  flipscreen,flipscreen,
217                  sx,flipscreen? sy + 16 : sy - 16,0);
216                  state->flipscreen, state->flipscreen,
217                  sx, state->flipscreen ? sy + 16 : sy - 16,0);
218218            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
219219                  code | 1,
220220                  color,
221                  flipscreen,flipscreen,
221                  state->flipscreen, state->flipscreen,
222222                  sx,sy,0);
223223
224224            /* redraw with wraparound */
225225            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
226226                  code & ~1,
227227                  color,
228                  flipscreen,flipscreen,
229                  sx,(flipscreen? sy + 16 : sy - 16) + 256,0);
228                  state->flipscreen, state->flipscreen,
229                  sx,(state->flipscreen ? sy + 16 : sy - 16) + 256,0);
230230            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
231231                  code | 1,
232232                  color,
233                  flipscreen,flipscreen,
233                  state->flipscreen, state->flipscreen,
234234                  sx,sy + 256,0);
235235
236236         }
r6428r6429
239239            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
240240                  code,
241241                  color,
242                  flipscreen,flipscreen,
242                  state->flipscreen, state->flipscreen,
243243                  sx,sy,0);
244244
245245            /* redraw with wraparound */
246246            drawgfx_transpen(bitmap,cliprect,machine->gfx[9],
247247                  code,
248248                  color,
249                  flipscreen,flipscreen,
249                  state->flipscreen, state->flipscreen,
250250                  sx,sy + 256,0);
251251
252252         }
r6428r6429
255255   }
256256
257257VIDEO_UPDATE( brkthru )
258   {
259   tilemap_set_scrollx(bg_tilemap,0, bgscroll);
260   tilemap_draw(bitmap,cliprect,bg_tilemap,TILEMAP_DRAW_OPAQUE,0);
258{
259   brkthru_state *state = (brkthru_state *)screen->machine->driver_data;
261260
261   tilemap_set_scrollx(state->bg_tilemap, 0, state->bgscroll);
262   tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
263
262264   /* low priority sprites */
263   draw_sprites(screen->machine, bitmap, cliprect, 0x01 );
265   draw_sprites(screen->machine, bitmap, cliprect, 0x01);
264266
265267   /* draw background over low priority sprites */
266   tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
268   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
267269
268270   /* high priority sprites */
269   draw_sprites(screen->machine, bitmap, cliprect, 0x09 );
271   draw_sprites(screen->machine, bitmap, cliprect, 0x09);
270272
271273   /* fg layer */
272   tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
274   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
273275
274/*  show_register(bitmap,8,8,(UINT32)flipscreen); */
276/*  show_register(bitmap, 8, 8, (UINT32)state->flipscreen); */
275277
276278   return 0;
277279}
src/mame/video/battlane.c
r6428r6429
55***************************************************************************/
66
77#include "driver.h"
8#include "battlane.h"
89
9UINT8 *battlane_spriteram;
10UINT8 *battlane_tileram;
11
12static tilemap *bg_tilemap;
13
14static int battlane_video_ctrl;
15extern int battlane_cpu_control;
16
17static bitmap_t *screen_bitmap;
18
1910/*
2011    Video control register
2112
r6428r6429
2617
2718WRITE8_HANDLER( battlane_palette_w )
2819{
20   battlane_state *state = (battlane_state *)space->machine->driver_data;
2921   int r, g, b;
3022   int bit0, bit1, bit2;
3123
r6428r6429
4537
4638   /* blue component */
4739
48   bit0 = (~battlane_video_ctrl >> 7) & 0x01;
40   bit0 = (~state->video_ctrl >> 7) & 0x01;
4941   bit1 = (~data >> 6) & 0x01;
5042   bit2 = (~data >> 7) & 0x01;
5143   b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
r6428r6429
5547
5648WRITE8_HANDLER( battlane_scrollx_w )
5749{
58   tilemap_set_scrollx(bg_tilemap, 0, ((battlane_video_ctrl & 0x01) << 8) + data);
50   battlane_state *state = (battlane_state *)space->machine->driver_data;
51   tilemap_set_scrollx(state->bg_tilemap, 0, ((state->video_ctrl & 0x01) << 8) + data);
5952}
6053
6154WRITE8_HANDLER( battlane_scrolly_w )
6255{
63   tilemap_set_scrolly(bg_tilemap, 0, ((battlane_cpu_control & 0x01) << 8) + data);
56   battlane_state *state = (battlane_state *)space->machine->driver_data;
57   tilemap_set_scrolly(state->bg_tilemap, 0, ((state->cpu_control & 0x01) << 8) + data);
6458}
6559
6660WRITE8_HANDLER( battlane_tileram_w )
6761{
68    battlane_tileram[offset] = data;
69   //tilemap_mark_tile_dirty(bg_tilemap, offset);
62   battlane_state *state = (battlane_state *)space->machine->driver_data;
63   state->tileram[offset] = data;
64   //tilemap_mark_tile_dirty(state->bg_tilemap, offset);
7065}
7166
7267WRITE8_HANDLER( battlane_spriteram_w )
7368{
74    battlane_spriteram[offset] = data;
69   battlane_state *state = (battlane_state *)space->machine->driver_data;
70   state->spriteram[offset] = data;
7571}
7672
7773WRITE8_HANDLER( battlane_bitmap_w )
7874{
75   battlane_state *state = (battlane_state *)space->machine->driver_data;
7976   int i, orval;
8077
81    orval = (~battlane_video_ctrl >> 1) & 0x07;
78   orval = (~state->video_ctrl >> 1) & 0x07;
8279
8380   if (!orval)
8481      orval = 7;
r6428r6429
8784   {
8885      if (data & 1 << i)
8986      {
90         *BITMAP_ADDR8(screen_bitmap, offset % 0x100, (offset / 0x100) * 8 + i) |= orval;
87         *BITMAP_ADDR8(state->screen_bitmap, offset % 0x100, (offset / 0x100) * 8 + i) |= orval;
9188      }
9289      else
9390      {
94         *BITMAP_ADDR8(screen_bitmap, offset % 0x100, (offset / 0x100) * 8 + i) &= ~orval;
91         *BITMAP_ADDR8(state->screen_bitmap, offset % 0x100, (offset / 0x100) * 8 + i) &= ~orval;
9592      }
9693   }
9794}
9895
9996WRITE8_HANDLER( battlane_video_ctrl_w )
10097{
101   battlane_video_ctrl = data;
98   battlane_state *state = (battlane_state *)space->machine->driver_data;
99   state->video_ctrl = data;
102100}
103101
104102static TILE_GET_INFO( get_tile_info_bg )
105103{
106   int code = battlane_tileram[tile_index];
107   int attr = battlane_tileram[tile_index + 0x400];
104   battlane_state *state = (battlane_state *)machine->driver_data;
105   int code = state->tileram[tile_index];
106   int attr = state->tileram[tile_index + 0x400];
108107   int gfxn = (attr & 0x01) + 1;
109108   int color = (attr >> 1) & 0x03;
110109
r6428r6429
141140  Start the video hardware emulation.
142141
143142***************************************************************************/
143
144144VIDEO_START( battlane )
145145{
146   bg_tilemap = tilemap_create(machine, get_tile_info_bg, battlane_tilemap_scan_rows_2x2,
147       16, 16, 32, 32);
146   battlane_state *state = (battlane_state *)machine->driver_data;
147   state->bg_tilemap = tilemap_create(machine, get_tile_info_bg, battlane_tilemap_scan_rows_2x2, 16, 16, 32, 32);
148   state->screen_bitmap = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
148149
149   screen_bitmap = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
150   state_save_register_global(machine, state->video_ctrl);
151   state_save_register_global(machine, state->cpu_control);
150152}
151153
152static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
154static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
153155{
156   battlane_state *state = (battlane_state *)machine->driver_data;
154157   int offs, attr, code, color, sx, sy, flipx, flipy, dy;
155158
156159   for (offs = 0; offs < 0x100; offs += 4)
r6428r6429
166169            0x01 = Sprite Enable
167170        */
168171
169      attr = battlane_spriteram[offs + 1];
170      code = battlane_spriteram[offs + 3];
172      attr = state->spriteram[offs + 1];
173      code = state->spriteram[offs + 3];
171174
172175      code += 256 * ((attr >> 6) & 0x02);
173176      code += 256 * ((attr >> 5) & 0x01);
r6428r6429
176179      {
177180         color = (attr >> 3) & 0x01;
178181
179         sx = battlane_spriteram[offs + 2];
180         sy = battlane_spriteram[offs];
182         sx = state->spriteram[offs + 2];
183         sy = state->spriteram[offs];
181184
182185         flipx = attr & 0x04;
183186         flipy = attr & 0x02;
r6428r6429
212215   }
213216}
214217
215static void draw_fg_bitmap(running_machine *machine, bitmap_t *bitmap )
218static void draw_fg_bitmap( running_machine *machine, bitmap_t *bitmap )
216219{
220   battlane_state *state = (battlane_state *)machine->driver_data;
217221   int x, y, data;
218222
219223   for (y = 0; y < 32 * 8; y++)
220224   {
221225      for (x = 0; x < 32 * 8; x++)
222226      {
223         data = *BITMAP_ADDR8(screen_bitmap, y, x);
227         data = *BITMAP_ADDR8(state->screen_bitmap, y, x);
224228
225229         if (data)
226230         {
r6428r6429
235239
236240VIDEO_UPDATE( battlane )
237241{
238   tilemap_mark_all_tiles_dirty(bg_tilemap); // HACK
242   battlane_state *state = (battlane_state *)screen->machine->driver_data;
239243
240   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
244   tilemap_mark_all_tiles_dirty(state->bg_tilemap); // HACK
245
246   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
241247   draw_sprites(screen->machine, bitmap, cliprect);
242248   draw_fg_bitmap(screen->machine, bitmap);
243249   return 0;
src/mame/video/genesis.c
r6428r6429
395395      case 0x09:
396396      case 0x0a:
397397      case 0x0b:
398         device = devtag_get_device(space->machine, "sn");
398         device = devtag_get_device(space->machine, "snsnd");
399399         if (device != NULL && ACCESSING_BITS_0_7)
400400            sn76496_w(device, 0, data & 0xff);
401401         break;
src/mame/video/m10.c
r6428r6429
1313#include "driver.h"
1414#include "m10.h"
1515
16static tilemap *      tx_tilemap;
17static gfx_element *   back_gfx;
18static UINT32         extyoffs[32*8];
16static UINT32 extyoffs[32 * 8];   // FIXME: this should be moved to m10_state, but backlayout would have problems
1917
18
2019static const gfx_layout backlayout =
2120{
2221   8,8*32,   /* 8*(8*32) characters */
r6428r6429
4039   8*8   /* every char takes 8 consecutive bytes */
4140};
4241
43static UINT32 tilemap_scan(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows)
42static UINT32 tilemap_scan( UINT32 col, UINT32 row, UINT32 num_cols, UINT32 num_rows )
4443{
45   return (31-col)*32 + row;
44   return (31 - col) * 32 + row;
4645}
4746
4847
49static void get_tile_info(running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, void *param)
48static void get_tile_info( running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, void *param )
5049{
51   SET_TILE_INFO(0, videoram[tile_index], colorram[tile_index] & 0x07, 0);
50   m10_state *state = (m10_state *)machine->driver_data;
51
52   SET_TILE_INFO(0, state->videoram[tile_index], state->colorram[tile_index] & 0x07, 0);
5253}
5354
5455
5556WRITE8_HANDLER( m10_colorram_w )
5657{
57   if (colorram[offset] != data)
58   m10_state *state = (m10_state *)space->machine->driver_data;
59
60   if (state->colorram[offset] != data)
5861   {
59      tilemap_mark_tile_dirty(tx_tilemap, offset);
60      colorram[offset] = data;
62      tilemap_mark_tile_dirty(state->tx_tilemap, offset);
63      state->colorram[offset] = data;
6164   }
6265}
6366
r6428r6429
6972   if (state->chargen[offset] != data)
7073   {
7174      state->chargen[offset] = data;
72      gfx_element_mark_dirty(back_gfx, offset >> (3+5));
75      gfx_element_mark_dirty(state->back_gfx, offset >> (3 + 5));
7376   }
7477}
7578
r6428r6429
8184   if (state->chargen[offset] != data)
8285   {
8386      state->chargen[offset] = data;
84      gfx_element_mark_dirty(space->machine->gfx[0],offset >> 3);
87      gfx_element_mark_dirty(space->machine->gfx[0], offset >> 3);
8588   }
8689}
8790
8891
89INLINE void plot_pixel_m10(running_machine *machine, bitmap_t *bm, int x, int y, int col)
92INLINE void plot_pixel_m10( running_machine *machine, bitmap_t *bm, int x, int y, int col )
9093{
9194   m10_state *state = (m10_state *)machine->driver_data;
9295
9396   if (!state->flip)
9497      *BITMAP_ADDR16(bm, y, x) = col;
9598   else
96      *BITMAP_ADDR16(bm, (IREMM10_VBSTART - 1)- (y - IREMM10_VBEND) + 6
97            , (IREMM10_HBSTART - 1)- (x- IREMM10_HBEND)) = col; // only when flip_screen(?)
99      *BITMAP_ADDR16(bm, (IREMM10_VBSTART - 1) - (y - IREMM10_VBEND) + 6,
100            (IREMM10_HBSTART - 1) - (x - IREMM10_HBEND)) = col; // only when flip_screen(?)
98101}
99102
100103VIDEO_START( m10 )
r6428r6429
102105   m10_state *state = (m10_state *)machine->driver_data;
103106   int i;
104107
105   for (i=0;i<32*8;i++)
106      extyoffs[i] = i*8;
108   for (i = 0; i < 32 * 8; i++)
109      extyoffs[i] = i * 8;
107110
108   tx_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan,8,8,32,32);
109   tilemap_set_transparent_pen(tx_tilemap, 0);
110   tilemap_set_scrolldx(tx_tilemap, 0, 62);
111   tilemap_set_scrolldy(tx_tilemap, 0, 0);
111   state->tx_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan, 8, 8, 32, 32);
112   tilemap_set_transparent_pen(state->tx_tilemap, 0);
113   tilemap_set_scrolldx(state->tx_tilemap, 0, 62);
114   tilemap_set_scrolldy(state->tx_tilemap, 0, 0);
112115
113   back_gfx = gfx_element_alloc(machine, &backlayout, state->chargen, 8, 0);
116   state->back_gfx = gfx_element_alloc(machine, &backlayout, state->chargen, 8, 0);
114117
115   machine->gfx[1] = back_gfx;
118   machine->gfx[1] = state->back_gfx;
116119   return ;
117120}
118121
r6428r6429
122125
123126   machine->gfx[0] = gfx_element_alloc(machine, &charlayout, state->chargen, 8, 0);
124127
125   tx_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan,8,8,32,32);
126   tilemap_set_scrolldx(tx_tilemap, 0, 116);
127   tilemap_set_scrolldy(tx_tilemap, 0, 0);
128   state->tx_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan, 8, 8, 32, 32);
129   tilemap_set_scrolldx(state->tx_tilemap, 0, 116);
130   tilemap_set_scrolldy(state->tx_tilemap, 0, 0);
128131
129132   return ;
130133}
r6428r6429
134137  Draw the game screen in the given bitmap_t.
135138
136139***************************************************************************/
140
137141VIDEO_UPDATE( m10 )
138142{
139143   m10_state *state = (m10_state *)screen->machine->driver_data;
r6428r6429
142146   static const int xpos[4] = { 4*8, 26*8, 7*8, 6*8};
143147   int i;
144148
145   bitmap_fill(bitmap,cliprect,0);
149   bitmap_fill(bitmap, cliprect, 0);
146150
147   for (i=0;i<4;i++)
151   for (i = 0; i < 4; i++)
148152      if (state->flip)
149         drawgfx_opaque(bitmap, cliprect, back_gfx, i, color[i], 1, 1, 31*8 - xpos[i], 6);
153         drawgfx_opaque(bitmap, cliprect, state->back_gfx, i, color[i], 1, 1, 31 * 8 - xpos[i], 6);
150154      else
151         drawgfx_opaque(bitmap, cliprect, back_gfx, i, color[i], 0, 0, xpos[i], 0);
155         drawgfx_opaque(bitmap, cliprect, state->back_gfx, i, color[i], 0, 0, xpos[i], 0);
152156
153157   if (state->bottomline)
154158   {
155159      int y;
156160
157      for (y = IREMM10_VBEND;y < IREMM10_VBSTART;y++)
158         plot_pixel_m10(screen->machine, bitmap,16,y,1);
161      for (y = IREMM10_VBEND; y < IREMM10_VBSTART; y++)
162         plot_pixel_m10(screen->machine, bitmap, 16, y, 1);
159163   }
160164
161   for (offs = videoram_size - 1;offs >= 0;offs--)
162      tilemap_mark_tile_dirty(tx_tilemap, offs);
165   for (offs = videoram_size - 1; offs >= 0; offs--)
166      tilemap_mark_tile_dirty(state->tx_tilemap, offs);
163167
164   tilemap_set_flip(tx_tilemap, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
165   tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
168   tilemap_set_flip(state->tx_tilemap, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
169   tilemap_draw(bitmap, cliprect, state->tx_tilemap, 0, 0);
166170
167171   return 0;
168172}
r6428r6429
173177  Draw the game screen in the given bitmap_t.
174178
175179***************************************************************************/
180
176181VIDEO_UPDATE( m15 )
177182{
178183   m10_state *state = (m10_state *)screen->machine->driver_data;
179184   int offs;
180185
181   for (offs = videoram_size - 1;offs >= 0;offs--)
182      tilemap_mark_tile_dirty(tx_tilemap, offs);
186   for (offs = videoram_size - 1; offs >= 0; offs--)
187      tilemap_mark_tile_dirty(state->tx_tilemap, offs);
183188
184   //tilemap_mark_all_tiles_dirty(tx_tilemap);
185   tilemap_set_flip(tx_tilemap, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
186   tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
189   //tilemap_mark_all_tiles_dirty(state->tx_tilemap);
190   tilemap_set_flip(state->tx_tilemap, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
191   tilemap_draw(bitmap, cliprect, state->tx_tilemap, 0, 0);
187192
188193   return 0;
189194}
190
src/mame/drivers/bfcobra.c
r6428r6429
14441444   AM_RANGE(0x2800, 0x2800) AM_RAM      // W
14451445   AM_RANGE(0x2A00, 0x2A02) AM_READWRITE(latch_r, latch_w)
14461446   AM_RANGE(0x2E00, 0x2E00) AM_READ(int_latch_r)
1447   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("ay", ay8910_data_w)
1448   AM_RANGE(0x3201, 0x3201) AM_DEVWRITE("ay", ay8910_address_w)
1447   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_data_w)
1448   AM_RANGE(0x3201, 0x3201) AM_DEVWRITE("aysnd", ay8910_address_w)
14491449   AM_RANGE(0x3404, 0x3404) AM_DEVREADWRITE("acia6850_1", acia6850_stat_r, acia6850_ctrl_w)
14501450   AM_RANGE(0x3405, 0x3405) AM_DEVREADWRITE("acia6850_1", acia6850_data_r, acia6850_data_w)
14511451   AM_RANGE(0x3406, 0x3406) AM_DEVREADWRITE("acia6850_2", acia6850_stat_r, acia6850_ctrl_w)
r6428r6429
17591759
17601760   MDRV_SPEAKER_STANDARD_MONO("mono")
17611761
1762   MDRV_SOUND_ADD("ay", AY8910, M6809_XTAL)
1762   MDRV_SOUND_ADD("aysnd", AY8910, M6809_XTAL)
17631763   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
17641764
17651765   MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
src/mame/drivers/mitchell.c
r6428r6429
373373                                                       The Mahjong games and Block Block need special input treatment */
374374   AM_RANGE(0x01, 0x01) AM_WRITE(input_w)
375375   AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w)   /* Code bank register */
376   AM_RANGE(0x03, 0x03) AM_DEVWRITE("ym", ym2413_data_port_w)
377   AM_RANGE(0x04, 0x04) AM_DEVWRITE("ym", ym2413_register_port_w)
376   AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_data_port_w)
377   AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_register_port_w)
378378   AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE("oki", okim6295_w)
379379   AM_RANGE(0x06, 0x06) AM_WRITENOP            /* watchdog? irq ack? */
380380   AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w)   /* Video RAM bank register */
r6428r6429
399399   AM_RANGE(0x00, 0x02) AM_READ(input_r)   /* Super Pang needs a kludge to initialize EEPROM. */
400400   AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w)    /* Palette bank, layer enable, coin counters, more */
401401   AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w)      /* Code bank register */
402   AM_RANGE(0x03, 0x03) AM_DEVWRITE("ym", ym2413_data_port_w)
403   AM_RANGE(0x04, 0x04) AM_DEVWRITE("ym", ym2413_register_port_w)
402   AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_data_port_w)
403   AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_register_port_w)
404404   AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r)
405405   AM_RANGE(0x06, 0x06) AM_WRITENOP   /* watchdog? irq ack? */
406406   AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w)      /* Video RAM bank register */
r6428r6429
11171117   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
11181118   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
11191119
1120   MDRV_SOUND_ADD("ym", YM2413, 4000000)
1120   MDRV_SOUND_ADD("ymsnd", YM2413, 4000000)
11211121   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
11221122MACHINE_DRIVER_END
11231123
r6428r6429
11531153   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 verified
11541154   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
11551155
1156   MDRV_SOUND_ADD("ym",YM2413, XTAL_16MHz/4) /* verified on pcb */
1156   MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_16MHz/4) /* verified on pcb */
11571157   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
11581158MACHINE_DRIVER_END
11591159
r6428r6429
12831283   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
12841284   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
12851285
1286   MDRV_SOUND_ADD("ym", YM2413, 4000000)
1286   MDRV_SOUND_ADD("ymsnd", YM2413, 4000000)
12871287   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
12881288MACHINE_DRIVER_END
12891289
src/mame/drivers/bublbobl.c
r6428r6429
391391   AM_RANGE(0x9800, 0x9800) AM_READNOP   // ???
392392   AM_RANGE(0xa000, 0xa000) AM_WRITE(bublbobl_sh_nmi_disable_w)
393393   AM_RANGE(0xa800, 0xa800) AM_WRITE(bublbobl_sh_nmi_enable_w)
394   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
394   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
395395   AM_RANGE(0xe000, 0xffff) AM_ROM   // space for diagnostic ROM?
396396ADDRESS_MAP_END
397397
r6428r6429
720720   // sound hardware
721721   MDRV_SPEAKER_STANDARD_MONO("mono")
722722
723   MDRV_SOUND_ADD("ym", YM2203, MAIN_XTAL/8)
723   MDRV_SOUND_ADD("ymsnd", YM2203, MAIN_XTAL/8)
724724   MDRV_SOUND_CONFIG(ym2203_config)
725725   MDRV_SOUND_ROUTE(0, "mono", 0.08)
726726   MDRV_SOUND_ROUTE(1, "mono", 0.08)
src/mame/drivers/coinmstr.c
r6428r6429
197197   ADDRESS_MAP_GLOBAL_MASK(0xff)
198198   AM_RANGE(0x00, 0x00) AM_READ(question_r)
199199   AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
200   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_address_data_w)
201   AM_RANGE(0x41, 0x41) AM_DEVREAD("ay", ay8910_r)
200   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_address_data_w)
201   AM_RANGE(0x41, 0x41) AM_DEVREAD("aysnd", ay8910_r)
202202   AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
203203   AM_RANGE(0x50, 0x53) AM_READNOP
204204   AM_RANGE(0x50, 0x53) AM_WRITENOP
r6428r6429
215215   AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
216216   AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_address_w)
217217   AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_register_w)
218   AM_RANGE(0x48, 0x49) AM_DEVWRITE("ay", ay8910_address_data_w)
219   AM_RANGE(0x49, 0x49) AM_DEVREAD("ay", ay8910_r)
218   AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_address_data_w)
219   AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_r)
220220   AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) //?
221221   AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w)
222222   AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pia2", pia6821_r, pia6821_w)
r6428r6429
239239   AM_RANGE(0x68, 0x69) AM_READNOP
240240   AM_RANGE(0x68, 0x6b) AM_WRITENOP
241241   AM_RANGE(0x6b, 0x6b) AM_READNOP
242   AM_RANGE(0x78, 0x79) AM_DEVWRITE("ay", ay8910_address_data_w)
243   AM_RANGE(0x79, 0x79) AM_DEVREAD("ay", ay8910_r)
242   AM_RANGE(0x78, 0x79) AM_DEVWRITE("aysnd", ay8910_address_data_w)
243   AM_RANGE(0x79, 0x79) AM_DEVREAD("aysnd", ay8910_r)
244244   AM_RANGE(0xc0, 0xc1) AM_READNOP
245245   AM_RANGE(0xc0, 0xc3) AM_WRITENOP
246246ADDRESS_MAP_END
r6428r6429
249249   ADDRESS_MAP_GLOBAL_MASK(0xff)
250250   AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_address_w)
251251   AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_register_w)
252   AM_RANGE(0x48, 0x49) AM_DEVWRITE("ay", ay8910_address_data_w)
253   AM_RANGE(0x49, 0x49) AM_DEVREAD("ay", ay8910_r)
252   AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_address_data_w)
253   AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_r)
254254   AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) /* confirmed */
255255   AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w) /* confirmed */
256256   AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE("pia2", pia6821_r, pia6821_w) /* confirmed */
r6428r6429
10081008   /* sound hardware */
10091009   MDRV_SPEAKER_STANDARD_MONO("mono")
10101010
1011   MDRV_SOUND_ADD("ay", AY8910, 1500000)
1011   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
10121012   MDRV_SOUND_CONFIG(ay8912_interface)
10131013   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
10141014MACHINE_DRIVER_END
src/mame/drivers/rampart.c
r6428r6429
111111         devtag_reset(space->machine, "oki");
112112      atarigen_set_ym2413_vol(space->machine, ((data >> 1) & 7) * 100 / 7);
113113      if (!(data & 0x0001))
114         devtag_reset(space->machine, "ym");
114         devtag_reset(space->machine, "ymsnd");
115115   }
116116}
117117
r6428r6429
136136   AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram)
137137   AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM
138138   AM_RANGE(0x460000, 0x460001) AM_MIRROR(0x019ffe) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0xff00)
139   AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8("ym", ym2413_w, 0xff00)
139   AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8("ymsnd", ym2413_w, 0xff00)
140140   AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_BASE(&atarigen_eeprom) AM_SIZE(&atarigen_eeprom_size)
141141   AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_WRITE(atarigen_eeprom_enable_w)
142142   AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffe) AM_WRITE(latch_w)
r6428r6429
365365   MDRV_SOUND_CONFIG(okim6295_interface_pin7low)
366366   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
367367
368   MDRV_SOUND_ADD("ym", YM2413, MASTER_CLOCK/4)
368   MDRV_SOUND_ADD("ymsnd", YM2413, MASTER_CLOCK/4)
369369   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
370370MACHINE_DRIVER_END
371371
src/mame/drivers/magicard.c
r6428r6429
478478   AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r)
479479   AM_RANGE(0x001ffd00, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_WRITE(paletteram_io_w) //RAMDAC
480480   /*not the right sound chip,unknown type,it should be an ADPCM with 8 channels.*/
481   AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
481   AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
482482   AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r)
483483   AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //?
484484   AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer?
r6428r6429
543543   MDRV_MACHINE_RESET(magicard)
544544
545545   MDRV_SPEAKER_STANDARD_MONO("mono")
546   MDRV_SOUND_ADD("ym", YM2413, CLOCK_A/12)
546   MDRV_SOUND_ADD("ymsnd", YM2413, CLOCK_A/12)
547547   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
548548MACHINE_DRIVER_END
549549
src/mame/drivers/yiear.c
r6428r6429
8888   AM_RANGE(0x0000, 0x0000) AM_DEVREAD("vlm", yiear_speech_r)
8989   AM_RANGE(0x4000, 0x4000) AM_WRITE(yiear_control_w)
9090   AM_RANGE(0x4800, 0x4800) AM_WRITE(konami_SN76496_latch_w)
91   AM_RANGE(0x4900, 0x4900) AM_DEVWRITE("sn", konami_SN76496_w)
91   AM_RANGE(0x4900, 0x4900) AM_DEVWRITE("snsnd", konami_SN76496_w)
9292   AM_RANGE(0x4a00, 0x4a00) AM_DEVWRITE("vlm", yiear_VLM5030_control_w)
9393   AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("vlm", vlm5030_data_w)
9494   AM_RANGE(0x4c00, 0x4c00) AM_READ_PORT("DSW1")
r6428r6429
219219   /* sound hardware */
220220   MDRV_SPEAKER_STANDARD_MONO("mono")
221221
222   MDRV_SOUND_ADD("sn", SN76496, XTAL_18_432MHz/16)   /* verified on pcb */
222   MDRV_SOUND_ADD("snsnd", SN76496, XTAL_18_432MHz/16)   /* verified on pcb */
223223   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
224224
225225   MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz)   /* verified on pcb */
src/mame/drivers/bfm_sc1.c
r6428r6429
780780   AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r)         // irq latch
781781
782782   AM_RANGE(0x3001, 0x3001) AM_READ(soundlatch_r)
783   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("ay", ay8910_data_w)
784   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("ay", ay8910_address_w)
783   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_data_w)
784   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("aysnd", ay8910_address_w)
785785
786786   AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w)  // MC6850 status register
787787   AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w)  // MC6850 data register
r6428r6429
825825   AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r)  // irq latch
826826
827827   AM_RANGE(0x3001, 0x3001) AM_READ(soundlatch_r)
828   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("ay", ay8910_data_w)
829   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("ay", ay8910_address_w)
828   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_data_w)
829   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("aysnd", ay8910_address_w)
830830
831831   AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w)  // MC6850 status register
832832   AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w)  // MC6850 data register
r6428r6429
874874   AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r)     // irq latch
875875
876876   AM_RANGE(0x3001, 0x3001) AM_READ(soundlatch_r)
877   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("ay", ay8910_data_w)
878   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("ay", ay8910_address_w)
877   AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_data_w)
878   AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("aysnd", ay8910_address_w)
879879
880880   AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w)  // MC6850 status register
881881   AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w)  // MC6850 data register
r6428r6429
12471247   MDRV_CPU_PERIODIC_INT(timer_irq, 1000 )            // generate 1000 IRQ's per second
12481248
12491249   MDRV_SPEAKER_STANDARD_MONO("mono")
1250   MDRV_SOUND_ADD("ay",AY8912, MASTER_CLOCK/4)
1250   MDRV_SOUND_ADD("aysnd",AY8912, MASTER_CLOCK/4)
12511251   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
12521252
12531253   MDRV_NVRAM_HANDLER(generic_0fill)
src/mame/drivers/snowbros.c
r6428r6429
198198
199199static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
200200   ADDRESS_MAP_GLOBAL_MASK(0xff)
201   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
201   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
202202   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w)   /* goes back to the main CPU, checked during boot */
203203ADDRESS_MAP_END
204204
r6428r6429
300300
301301static ADDRESS_MAP_START( honeydol_sound_io_map, ADDRESS_SPACE_IO, 8 )
302302   ADDRESS_MAP_GLOBAL_MASK(0xff)
303   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)                        // not connected?
303   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)                        // not connected?
304304   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w)   /* goes back to the main CPU, checked during boot */
305305ADDRESS_MAP_END
306306
r6428r6429
375375static ADDRESS_MAP_START( hyperpac_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
376376   AM_RANGE(0x0000, 0xcfff) AM_ROM
377377   AM_RANGE(0xd000, 0xd7ff) AM_RAM
378   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
378   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
379379   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki",okim6295_r,okim6295_w)
380380   AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r)
381381ADDRESS_MAP_END
r6428r6429
15431543   /* sound hardware */
15441544   MDRV_SPEAKER_STANDARD_MONO("mono")
15451545
1546   MDRV_SOUND_ADD("ym", YM3812, 3000000)
1546   MDRV_SOUND_ADD("ymsnd", YM3812, 3000000)
15471547   MDRV_SOUND_CONFIG(ym3812_config)
15481548   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
15491549MACHINE_DRIVER_END
r6428r6429
15751575   MDRV_GFXDECODE(hyperpac)
15761576
15771577   /* sound hardware */
1578   MDRV_SOUND_REPLACE("ym", YM2151, 4000000)
1578   MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000)
15791579   MDRV_SOUND_CONFIG(ym2151_config)
15801580   MDRV_SOUND_ROUTE(0, "mono", 0.10)
15811581   MDRV_SOUND_ROUTE(1, "mono", 0.10)
r6428r6429
16521652
16531653   /* sound hardware */
16541654
1655   MDRV_SOUND_ADD("ym", YM3812, 3000000)
1655   MDRV_SOUND_ADD("ymsnd", YM3812, 3000000)
16561656   MDRV_SOUND_CONFIG(ym3812_config)
16571657   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
16581658
r6428r6429
17251725
17261726   MDRV_MACHINE_RESET ( finalttr )
17271727
1728   MDRV_SOUND_REPLACE("ym", YM2151, 4000000)
1728   MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000)
17291729   MDRV_SOUND_CONFIG(ym2151_config)
17301730   MDRV_SOUND_ROUTE(0, "mono", 0.08)
17311731   MDRV_SOUND_ROUTE(1, "mono", 0.08)
src/mame/drivers/segaxbd.c
r6428r6429
793793static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
794794   ADDRESS_MAP_UNMAP_HIGH
795795   ADDRESS_MAP_GLOBAL_MASK(0xff)
796   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
796   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
797797   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
798798ADDRESS_MAP_END
799799
r6428r6429
13661366   /* sound hardware */
13671367   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
13681368
1369   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4)
1369   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
13701370   MDRV_SOUND_CONFIG(ym2151_config)
13711371   MDRV_SOUND_ROUTE(0, "lspeaker", 0.43)
13721372   MDRV_SOUND_ROUTE(1, "rspeaker", 0.43)
src/mame/drivers/nbmj9195.c
r6428r6429
10101010   AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_1_dir_pc_r,tmpz84c011_1_dir_pc_w)
10111011   AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_1_dir_pd_r,tmpz84c011_1_dir_pd_w)
10121012   AM_RANGE(0x44, 0x44) AM_READWRITE(tmpz84c011_1_dir_pe_r,tmpz84c011_1_dir_pe_w)
1013   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym", ym3812_w)
1013   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym3812_w)
10141014ADDRESS_MAP_END
10151015
10161016/********************************************************************************
r6428r6429
29472947   /* sound hardware */
29482948   MDRV_SPEAKER_STANDARD_MONO("mono")
29492949
2950   MDRV_SOUND_ADD("ym", YM3812, 4000000)
2950   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
29512951   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
29522952
29532953   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/hcastle.c
r6428r6429
9191   AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("konami2", k051649_frequency_w)
9292   AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("konami2", k051649_volume_w)
9393   AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("konami2", k051649_keyonoff_w)
94   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
94   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
9595   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w)
9696   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("konami1", sound_bank_w) /* 7232 bankswitch */
9797   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
r6428r6429
223223   MDRV_SOUND_ROUTE(0, "mono", 0.44)
224224   MDRV_SOUND_ROUTE(1, "mono", 0.50)
225225
226   MDRV_SOUND_ADD("ym", YM3812, 3579545)
226   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
227227   MDRV_SOUND_CONFIG(ym3812_config)
228228   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
229229
src/mame/drivers/skeetsht.c
r6428r6429
137137
138138static WRITE8_HANDLER( ay8910_w )
139139{
140   const device_config *ay = devtag_get_device(space->machine, "ay");
140   const device_config *ay = devtag_get_device(space->machine, "aysnd");
141141
142142   if (ay_sel)
143143      ay8910_data_w(ay, 0, data);
r6428r6429
248248
249249   MDRV_SPEAKER_STANDARD_MONO("mono")
250250
251   MDRV_SOUND_ADD("ay", AY8910, 2000000) // ?
251   MDRV_SOUND_ADD("aysnd", AY8910, 2000000) // ?
252252   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
253253MACHINE_DRIVER_END
254254
src/mame/drivers/dblewing.c
r6428r6429
468468static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
469469   AM_RANGE(0x0000, 0x7fff) AM_ROM
470470   AM_RANGE(0x8000, 0x87ff) AM_RAM
471    AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_status_port_r,ym2151_w)
471    AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_status_port_r,ym2151_w)
472472   AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
473473   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)
474474    AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch?
r6428r6429
691691   /* sound hardware */
692692   MDRV_SPEAKER_STANDARD_MONO("mono")
693693
694   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
694   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
695695   MDRV_SOUND_CONFIG(ym2151_config)
696696   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
697697
src/mame/drivers/arabian.c
r6428r6429
7171#include "arabian.h"
7272#include "sound/ay8910.h"
7373
74
7574/* constants */
7675#define MAIN_OSC      12000000
7776
7877
79/* local variables */
80static UINT8 custom_cpu_reset;
81static UINT8 custom_cpu_busy;
82static UINT8 *custom_cpu_ram;
83
84
85
8678/*************************************
8779 *
8880 *  Audio chip output ports
r6428r6429
9183
9284static WRITE8_DEVICE_HANDLER( ay8910_porta_w )
9385{
86   arabian_state *state = (arabian_state *)device->machine->driver_data;
87
9488   /*
9589        bit 7 = ENA
9690        bit 6 = ENB
r6428r6429
9892        bit 4 = /AGHF
9993        bit 3 = /ARHF
10094    */
101   arabian_video_control = data;
95   state->video_control = data;
10296}
10397
10498
10599static WRITE8_DEVICE_HANDLER( ay8910_portb_w )
106100{
101   arabian_state *state = (arabian_state *)device->machine->driver_data;
102
107103   /*
108104        bit 5 = /IREQ to custom CPU
109105        bit 4 = /SRES to custom CPU
r6428r6429
112108    */
113109
114110   /* track the custom CPU reset */
115   custom_cpu_reset = ~data & 0x10;
111   state->custom_cpu_reset = ~data & 0x10;
116112
117113   /* clock the coin counters */
118114   coin_counter_w(1, ~data & 0x02);
r6428r6429
129125
130126static READ8_HANDLER( custom_cpu_r )
131127{
128   arabian_state *state = (arabian_state *)space->machine->driver_data;
129
132130   /* since we don't have a simulator for the Fujitsu 8841 4-bit microprocessor */
133131   /* we have to simulate its behavior; it looks like Arabian reads out of the  */
134132   /* alternate CPU's RAM space while the CPU is running. If the CPU is not     */
r6428r6429
137135   static const char *const comnames[] = { "COM0", "COM1", "COM2", "COM3", "COM4", "COM5" };
138136
139137   /* if the CPU reset line is being held down, just return RAM */
140   if (custom_cpu_reset)
141      return custom_cpu_ram[0x7f0 + offset];
138   if (state->custom_cpu_reset)
139      return state->custom_cpu_ram[0x7f0 + offset];
142140
143141   /* otherwise, assume the custom CPU is live */
144142   switch (offset)
r6428r6429
157155      /* it wants. There appears to be a number of different ways to make */
158156      /* the custom turn this on. */
159157      case 6:
160         return custom_cpu_busy ^= 1;
158         return state->custom_cpu_busy ^= 1;
161159
162160      /* handshake read; the main CPU writes to the previous memory location */
163161      /* and waits for the custom to copy that value here */
164162      case 8:
165         return custom_cpu_ram[0x7f0 + offset - 1];
163         return state->custom_cpu_ram[0x7f0 + offset - 1];
166164
167165      /* error cases */
168166      default:
169         logerror("Input Port %04X read.  PC=%04X\n", offset+0xd7f0, cpu_get_pc(space->cpu));
167         logerror("Input Port %04X read.  PC = %04X\n", offset + 0xd7f0, cpu_get_pc(space->cpu));
170168   }
171169   return 0;
172170}
173171
174172static WRITE8_HANDLER( custom_cpu_w )
175173{
176    custom_cpu_ram[0x7f0 + offset] = data;
174   arabian_state *state = (arabian_state *)space->machine->driver_data;
175
176    state->custom_cpu_ram[0x7f0 + offset] = data;
177177}
178178
179179
180static void update_flip_state(void)
180static void update_flip_state( running_machine *machine )
181181{
182   arabian_state *state = (arabian_state *)machine->driver_data;
183
182184   /* the custom CPU also controls the video flip control line; unfortunately,    */
183185   /* it appears that the custom is smart enough to flip the screen itself, based */
184186   /* on the information stored at $d400 and $d401. The value at $d400 specifies  */
r6428r6429
187189   /* state. */
188190
189191   /* initial state is based on the flip screen flag */
190   arabian_flip_screen = custom_cpu_ram[0x34b];
192   state->flip_screen = state->custom_cpu_ram[0x34b];
191193
192194   /* flip if not player 1 and cocktail mode */
193   if (custom_cpu_ram[0x400] != 0 && !(custom_cpu_ram[0x401] & 0x02))
194      arabian_flip_screen = !arabian_flip_screen;
195   if (state->custom_cpu_ram[0x400] != 0 && !(state->custom_cpu_ram[0x401] & 0x02))
196      state->flip_screen = !state->flip_screen;
195197}
196198
197199
198200static WRITE8_HANDLER( custom_flip_w )
199201{
200   custom_cpu_ram[0x34b + offset] = data;
201   update_flip_state();
202   arabian_state *state = (arabian_state *)space->machine->driver_data;
203
204   state->custom_cpu_ram[0x34b + offset] = data;
205   update_flip_state(space->machine);
202206}
203207
204208
205209static WRITE8_HANDLER( custom_cocktail_w )
206210{
207   custom_cpu_ram[0x400 + offset] = data;
208   update_flip_state();
211   arabian_state *state = (arabian_state *)space->machine->driver_data;
212
213   state->custom_cpu_ram[0x400 + offset] = data;
214   update_flip_state(space->machine);
209215}
210216
211217
r6428r6429
221227   AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w)
222228   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x01ff) AM_READ_PORT("IN0")
223229   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x01ff) AM_READ_PORT("DSW1")
224   AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE(&custom_cpu_ram)
230   AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE_MEMBER(arabian_state, custom_cpu_ram)
225231   AM_RANGE(0xd7f0, 0xd7ff) AM_READWRITE(custom_cpu_r, custom_cpu_w)
226   AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_BASE(&arabian_blitter)
232   AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_BASE_MEMBER(arabian_state, blitter)
227233ADDRESS_MAP_END
228234
229235
r6428r6429
235241 *************************************/
236242
237243static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
238   AM_RANGE(0xc800, 0xc800) AM_MIRROR(0x01ff) AM_DEVWRITE("ay", ay8910_address_w)
239   AM_RANGE(0xca00, 0xca00) AM_MIRROR(0x01ff) AM_DEVWRITE("ay", ay8910_data_w)
244   AM_RANGE(0xc800, 0xc800) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_address_w)
245   AM_RANGE(0xca00, 0xca00) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_data_w)
240246ADDRESS_MAP_END
241247
242248
r6428r6429
368374
369375static MACHINE_START( arabian )
370376{
371    state_save_register_global(machine, custom_cpu_reset);
372    state_save_register_global(machine, custom_cpu_busy);
377   arabian_state *state = (arabian_state *)machine->driver_data;
378
379   state_save_register_global(machine, state->custom_cpu_reset);
380   state_save_register_global(machine, state->custom_cpu_busy);
373381}
374382
383static MACHINE_RESET( arabian )
384{
385   arabian_state *state = (arabian_state *)machine->driver_data;
386
387   state->custom_cpu_reset = 0;
388   state->custom_cpu_busy = 0;
389   state->video_control = 0;
390   state->flip_screen = 0;
391}
392
375393static MACHINE_DRIVER_START( arabian )
376394
395   /* driver data */
396   MDRV_DRIVER_DATA(arabian_state)
397
377398   /* basic machine hardware */
378399   MDRV_CPU_ADD("maincpu", Z80, MAIN_OSC/4)
379400   MDRV_CPU_PROGRAM_MAP(main_map)
380401   MDRV_CPU_IO_MAP(main_io_map)
381402   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
382403
383    MDRV_MACHINE_START(arabian)
404   MDRV_MACHINE_START(arabian)
405   MDRV_MACHINE_RESET(arabian)
384406
385407   /* video hardware */
386408   MDRV_SCREEN_ADD("screen", RASTER)
r6428r6429
398420   /* sound hardware */
399421   MDRV_SPEAKER_STANDARD_MONO("mono")
400422
401   MDRV_SOUND_ADD("ay", AY8910, MAIN_OSC/4/2)
423   MDRV_SOUND_ADD("aysnd", AY8910, MAIN_OSC/4/2)
402424   MDRV_SOUND_CONFIG(ay8910_config)
403425   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
404426MACHINE_DRIVER_END
src/mame/drivers/shougi.c
r6428r6429
278278
279279   AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1")
280280   AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(shougi_watchdog_reset_w)   /* game won't boot if watchdog doesn't work */
281   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay", ay8910_address_w)
282   AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("ay", ay8910_data_w)
281   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_address_w)
282   AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("aysnd", ay8910_data_w)
283283   AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE(1) /* 2114 x 2 (0x400 x 4bit each) */
284284   AM_RANGE(0x7800, 0x7bff) AM_RAM AM_SHARE(2) /* 2114 x 2 (0x400 x 4bit each) */
285285
r6428r6429
407407   /* sound hardware */
408408   MDRV_SPEAKER_STANDARD_MONO("mono")
409409
410   MDRV_SOUND_ADD("ay", AY8910, 10000000/8)
410   MDRV_SOUND_ADD("aysnd", AY8910, 10000000/8)
411411   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
412412MACHINE_DRIVER_END
413413
src/mame/drivers/taito_o.c
r6428r6429
6666   AM_RANGE(0x000000, 0x01ffff) AM_ROM
6767   AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
6868   AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
69   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ym", ym2203_r, ym2203_w, 0x00ff)
69   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
7070   AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
7171   AM_RANGE(0x500800, 0x500fff) AM_RAM AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
7272ADDRESS_MAP_END
r6428r6429
254254
255255   MDRV_SPEAKER_STANDARD_MONO("mono")
256256
257   MDRV_SOUND_ADD("ym", YM2203, 2000000) /*?? MHz */
257   MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) /*?? MHz */
258258   MDRV_SOUND_CONFIG(ym2203_config)
259259   MDRV_SOUND_ROUTE(0, "mono",  0.25)
260260   MDRV_SOUND_ROUTE(0, "mono", 0.25)
src/mame/drivers/hornet.c
r6428r6429
823823static ADDRESS_MAP_START( sound_memmap, ADDRESS_SPACE_PROGRAM, 16 )
824824   AM_RANGE(0x000000, 0x07ffff) AM_ROM
825825   AM_RANGE(0x100000, 0x10ffff) AM_RAM      /* Work RAM */
826   AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rf", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
826   AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
827827   AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w)
828828   AM_RANGE(0x480000, 0x480001) AM_WRITENOP
829829   AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP
r6428r6429
11171117
11181118   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11191119
1120   MDRV_SOUND_ADD("rf", RF5C400, 16934400)   // value from Guru readme, gives 44100 Hz sample rate
1120   MDRV_SOUND_ADD("rfsnd", RF5C400, 16934400)   // value from Guru readme, gives 44100 Hz sample rate
11211121   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
11221122   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
11231123
r6428r6429
13951395
13961396ROM_START(sscope)
13971397   ROM_REGION32_BE(0x400000, "user1", 0)   /* PowerPC program */
1398   ROM_LOAD16_WORD_SWAP("ss1-1.27p", 0x200000, 0x200000, CRC(3b6bb075) SHA1(babc134c3a20c7cdcaa735d5f1fd5cab38667a14) )
1398   ROM_LOAD16_WORD_SWAP("830d01.27p", 0x200000, 0x200000, CRC(de9b3dfa) SHA1(660652a5f745cb04687481c3626d8a43cd169193) )
13991399   ROM_RELOAD(0x000000, 0x200000)
14001400
14011401   ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00)   /* Data roms */
14021402
14031403   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
1404   ROM_LOAD16_WORD_SWAP("ss1-1.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
1404   ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
14051405
14061406   ROM_REGION(0x1000000, "user5", 0)      /* CG Board texture roms */
1407   ROM_LOAD32_WORD( "ss1-3.u32",    0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1408   ROM_LOAD32_WORD( "ss1-3.u24",    0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
1407   ROM_LOAD32_WORD( "830a14.u32", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1408   ROM_LOAD32_WORD( "830a13.u24", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
14091409
1410   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1411   ROM_LOAD( "830a09.16p",    0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1412   ROM_LOAD( "830a10.14p",    0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
1410   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
1411   ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1412   ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
14131413
14141414   ROM_REGION(0x2000, "m48t58",0)
1415   ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(ee815325) SHA1(91b10802791b68a8360c0cd6c376c0c4bbbc6fa0) )
1415   ROM_LOAD( "m48t58y.35d", 0x000000, 0x002000, CRC(b077e262) SHA1(5cdcc1b742bf23562f4558216063fea903f045ab) )
14161416ROM_END
14171417
14181418ROM_START(sscopea)
14191419   ROM_REGION32_BE(0x400000, "user1", 0)   /* PowerPC program */
1420   ROM_LOAD16_WORD_SWAP("830_a01.bin", 0x200000, 0x200000, CRC(39e353f1) SHA1(569b06969ae7a690f6d6e63cc3b5336061663a37) )
1420   ROM_LOAD16_WORD_SWAP("830b01.27p", 0x200000, 0x200000, CRC(3b6bb075) SHA1(babc134c3a20c7cdcaa735d5f1fd5cab38667a14) )
14211421   ROM_RELOAD(0x000000, 0x200000)
14221422
14231423   ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00)   /* Data roms */
14241424
14251425   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
1426   ROM_LOAD16_WORD_SWAP("ss1-1.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
1426   ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
14271427
14281428   ROM_REGION(0x1000000, "user5", 0)      /* CG Board texture roms */
1429   ROM_LOAD32_WORD( "ss1-3.u32",    0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1430   ROM_LOAD32_WORD( "ss1-3.u24",    0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
1429   ROM_LOAD32_WORD( "830a14.u32", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1430   ROM_LOAD32_WORD( "830a13.u24", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
14311431
1432   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1433   ROM_LOAD( "830a09.16p",    0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1434   ROM_LOAD( "830a10.14p",    0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
1432   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
1433   ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1434   ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
14351435
14361436   ROM_REGION(0x2000, "m48t58",0)
14371437   ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(ee815325) SHA1(91b10802791b68a8360c0cd6c376c0c4bbbc6fa0) )
r6428r6429
14391439
14401440ROM_START(sscopeb)
14411441   ROM_REGION32_BE(0x400000, "user1", 0)   /* PowerPC program */
1442   ROM_LOAD16_WORD_SWAP("830_a01.bin", 0x200000, 0x200000, CRC(39e353f1) SHA1(569b06969ae7a690f6d6e63cc3b5336061663a37) )
1442   ROM_LOAD16_WORD_SWAP("830a01.27p", 0x200000, 0x200000, CRC(39e353f1) SHA1(569b06969ae7a690f6d6e63cc3b5336061663a37) )
14431443   ROM_RELOAD(0x000000, 0x200000)
14441444
14451445   ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00)   /* Data roms */
14461446
14471447   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
1448   ROM_LOAD16_WORD_SWAP("ss1-1.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
1448   ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) )
14491449
14501450   ROM_REGION(0x1000000, "user5", 0)      /* CG Board texture roms */
1451   ROM_LOAD32_WORD( "ss1-3.u32",    0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1452   ROM_LOAD32_WORD( "ss1-3.u24",    0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
1451   ROM_LOAD32_WORD( "830a14.u32", 0x000000, 0x400000, CRC(335793e1) SHA1(d582b53c3853abd59bc728f619a30c27cfc9497c) )
1452   ROM_LOAD32_WORD( "830a13.u24", 0x000002, 0x400000, CRC(d6e7877e) SHA1(b4d0e17ada7dd126ec564a20e7140775b4b3fdb7) )
14531453
1454   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1455   ROM_LOAD( "830a09.16p",    0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1456   ROM_LOAD( "830a10.14p",    0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
1454   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
1455   ROM_LOAD( "830a09.16p", 0x000000, 0x400000, CRC(e4b9f305) SHA1(ce2c6f63bdc9374dde48d8359102b57e48b4fdeb) )
1456   ROM_LOAD( "830a10.14p", 0x400000, 0x400000, CRC(8b8aaf7e) SHA1(49b694dc171c149056b87c15410a6bf37ff2987f) )
14571457
14581458   ROM_REGION(0x2000, "m48t58",0)
14591459   ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(ee815325) SHA1(91b10802791b68a8360c0cd6c376c0c4bbbc6fa0) )
r6428r6429
14761476   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
14771477   ROM_LOAD16_WORD_SWAP("931a08.bin", 0x000000, 0x80000, CRC(1597d604) SHA1(a1eab4d25907930b59ea558b484c3b6ddcb9303c) )
14781478
1479   ROM_REGION(0xc00000, "rf", 0)      /* PCM sample roms */
1479   ROM_REGION(0xc00000, "rfsnd", 0)      /* PCM sample roms */
14801480   ROM_LOAD( "931a09.bin",   0x000000, 0x400000, CRC(694c354c) SHA1(42f54254a5959e1b341f2801f1ad032c4ed6f329) )
14811481   ROM_LOAD( "931a10.bin",   0x400000, 0x400000, CRC(78ceb519) SHA1(e61c0d21b6dc37a9293e72814474f5aee59115ad) )
14821482   ROM_LOAD( "931a11.bin",   0x800000, 0x400000, CRC(9c8362b2) SHA1(a8158c4db386e2bbd61dc9a600720f07a1eba294) )
r6428r6429
15031503   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
15041504   ROM_LOAD16_WORD_SWAP( "837a08.7s",    0x000000, 0x080000, CRC(c3a7ff56) SHA1(9d8d033277d560b58da151338d14b4758a9235ea) )
15051505
1506   ROM_REGION(0x800000, "rf", 0)      /* PCM sample roms */
1506   ROM_REGION(0x800000, "rfsnd", 0)      /* PCM sample roms */
15071507   ROM_LOAD( "837a09.16p",   0x000000, 0x400000, CRC(fb8f3dc2) SHA1(69e314ac06308c5a24309abc3d7b05af6c0302a8) )
15081508   ROM_LOAD( "837a10.14p",   0x400000, 0x400000, CRC(1419cad2) SHA1(a6369a5c29813fa51e8246d0c091736f32994f3d) )
15091509
r6428r6429
15291529   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
15301530   ROM_LOAD16_WORD_SWAP( "778a08.7s",    0x000000, 0x080000, CRC(6259b4bf) SHA1(d0c38870495c9a07984b4b85e736d6477dd44832) )
15311531
1532   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1532   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
15331533   ROM_LOAD( "778a09.16p",   0x000000, 0x400000, CRC(e8c6fd93) SHA1(dd378b67b3b7dd932e4b39fbf4321e706522247f) )
15341534   ROM_LOAD( "778a10.14p",   0x400000, 0x400000, CRC(c6a0857b) SHA1(976734ba56460fcc090619fbba043a3d888c4f4e) )
15351535   ROM_LOAD( "778a11.12p",   0x800000, 0x400000, CRC(40199382) SHA1(bee268adf9b6634a4f6bb39278ecd02f2bdcb1f4) )
r6428r6429
15551555   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
15561556   ROM_LOAD16_WORD_SWAP( "715a08.7s",    0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) )
15571557
1558   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1558   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
15591559   ROM_LOAD( "715a09.16p",   0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) )
15601560   ROM_LOAD( "715a10.14p",   0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) )
15611561
r6428r6429
15821582   ROM_REGION(0x80000, "audiocpu", 0)      /* 68K Program */
15831583   ROM_LOAD16_WORD_SWAP( "715a08.7s",    0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) )
15841584
1585   ROM_REGION(0x1000000, "rf", 0)      /* PCM sample roms */
1585   ROM_REGION(0x1000000, "rfsnd", 0)      /* PCM sample roms */
15861586   ROM_LOAD( "715a09.16p",   0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) )
15871587   ROM_LOAD( "715a10.14p",   0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) )
15881588
r6428r6429
15991599GAME(  1998, nbapbp,   0,      hornet,           hornet, hornet,        ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
16001600GAMEL( 1998, terabrst, 0,      terabrst,        hornet, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs )
16011601GAMEL( 1998, terabrsta,terabrst,terabrst,       hornet, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs )
1602GAMEL( 2000, sscope,   0,      hornet_2board,    sscope, hornet_2board, ROT0, "Konami", "Silent Scope (ver UAB)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
1603GAMEL( 2000, sscopea,  sscope, hornet_2board,    sscope, hornet_2board, ROT0, "Konami", "Silent Scope (ver UAA)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
1602GAMEL( 2000, sscope,   0,      hornet_2board,    sscope, hornet_2board, ROT0, "Konami", "Silent Scope (ver JZD)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
1603GAMEL( 2000, sscopea,  sscope, hornet_2board,    sscope, hornet_2board, ROT0, "Konami", "Silent Scope (ver UAB)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
1604GAMEL( 2000, sscopeb,  sscope, hornet_2board,    sscope, hornet_2board, ROT0, "Konami", "Silent Scope (ver UAA)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
16041605GAMEL( 2000, sscope2,  0,      hornet_2board_v2, sscope, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
src/mame/drivers/pipedrm.c
r6428r6429
322322   AM_RANGE(0x04, 0x04) AM_WRITE(sound_bankswitch_w)
323323   AM_RANGE(0x16, 0x16) AM_READ(sound_command_r)
324324   AM_RANGE(0x17, 0x17) AM_WRITE(pending_command_clear_w)
325   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
325   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
326326ADDRESS_MAP_END
327327
328328
329329static ADDRESS_MAP_START( hatris_sound_portmap, ADDRESS_SPACE_IO, 8 )
330330   ADDRESS_MAP_GLOBAL_MASK(0xff)
331   AM_RANGE(0x00, 0x03) AM_MIRROR(0x08) AM_DEVREADWRITE("ym", ym2608_r, ym2608_w)
331   AM_RANGE(0x00, 0x03) AM_MIRROR(0x08) AM_DEVREADWRITE("ymsnd", ym2608_r, ym2608_w)
332332   AM_RANGE(0x04, 0x04) AM_READ(sound_command_r)
333333   AM_RANGE(0x05, 0x05) AM_READWRITE(pending_command_r, pending_command_clear_w)
334334ADDRESS_MAP_END
r6428r6429
634634   /* sound hardware */
635635   MDRV_SPEAKER_STANDARD_MONO("mono")
636636
637   MDRV_SOUND_ADD("ym", YM2610, 8000000)
637   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
638638   MDRV_SOUND_CONFIG(ym2610_config)
639639   MDRV_SOUND_ROUTE(0, "mono", 0.50)
640640   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
673673   /* sound hardware */
674674   MDRV_SPEAKER_STANDARD_MONO("mono")
675675
676   MDRV_SOUND_ADD("ym", YM2608, 8000000)
676   MDRV_SOUND_ADD("ymsnd", YM2608, 8000000)
677677   MDRV_SOUND_CONFIG(ym2608_config)
678678   MDRV_SOUND_ROUTE(0, "mono", 0.50)
679679   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
709709   ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) )
710710   ROM_LOAD16_BYTE( "a29.u2",  0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) )
711711
712   ROM_REGION( 0x80000, "ym", 0 )
712   ROM_REGION( 0x80000, "ymsnd", 0 )
713713   ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) )
714714
715715   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
743743   ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) )
744744   ROM_LOAD16_BYTE( "a29.u2",  0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) )
745745
746   ROM_REGION( 0x80000, "ym", 0 )
746   ROM_REGION( 0x80000, "ymsnd", 0 )
747747   ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) )
748748
749749   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
778778   ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) )
779779   ROM_LOAD16_BYTE( "a29.u2",  0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) )
780780
781   ROM_REGION( 0x80000, "ym", 0 )
781   ROM_REGION( 0x80000, "ymsnd", 0 )
782782   ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) )
783783
784784   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
809809   ROM_LOAD( "a0-ic55.bin", 0x00000, 0x20000, CRC(7b7bc619) SHA1(b661c772e33aa7352dcdc20c4a9a84ed25ff89d7) )
810810   ROM_LOAD( "a1-ic60.bin", 0x20000, 0x20000, CRC(f74d4168) SHA1(9ac433c4ce61fe402334aa97d32a51cfac634c46) )
811811
812   ROM_REGION( 0x20000, "ym", 0 )
812   ROM_REGION( 0x20000, "ymsnd", 0 )
813813   ROM_LOAD( "pc-ic53.bin", 0x00000, 0x20000, CRC(07147712) SHA1(97692186e85f3a4a19dbd1bd95ed882e903a3c4a) )
814814ROM_END
815815
r6428r6429
831831   ROM_LOAD( "a0-ic55.bin", 0x00000, 0x20000, CRC(7b7bc619) SHA1(b661c772e33aa7352dcdc20c4a9a84ed25ff89d7) )
832832   ROM_LOAD( "a1-ic60.bin", 0x20000, 0x20000, CRC(f74d4168) SHA1(9ac433c4ce61fe402334aa97d32a51cfac634c46) )
833833
834   ROM_REGION( 0x20000, "ym", 0 )
834   ROM_REGION( 0x20000, "ymsnd", 0 )
835835   ROM_LOAD( "pc-ic53.bin", 0x00000, 0x20000, CRC(07147712) SHA1(97692186e85f3a4a19dbd1bd95ed882e903a3c4a) )
836836ROM_END
837837
src/mame/drivers/discoboy.c
r6428r6429
326326static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
327327   AM_RANGE(0x0000, 0x7fff) AM_ROM
328328   AM_RANGE(0xf000, 0xf7ff) AM_RAM
329   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym3812_w)
329   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_w)
330330   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
331331ADDRESS_MAP_END
332332
r6428r6429
474474   /* sound hardware */
475475   MDRV_SPEAKER_STANDARD_MONO("mono")
476476
477   MDRV_SOUND_ADD("ym", YM3812, 2500000)
477   MDRV_SOUND_ADD("ymsnd", YM3812, 2500000)
478478   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
479479
480480
src/mame/drivers/mediagx.c
r6428r6429
363363
364364static READ8_DEVICE_HANDLER(at_dma8237_2_r)
365365{
366   return dma8237_r(device, offset / 2);
366   return i8237_r(device, offset / 2);
367367}
368368
369369static WRITE8_DEVICE_HANDLER(at_dma8237_2_w)
370370{
371   dma8237_w(device, offset / 2, data);
371   i8237_w(device, offset / 2, data);
372372}
373373
374374
r6428r6429
726726 *
727727 *************************************************************************/
728728
729static int dma_channel;
729730static UINT8 dma_offset[2][4];
730731static UINT8 at_pages[0x10];
731732
r6428r6429
775776}
776777
777778
778static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
779static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
779780{
780781   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
781782
782783   /* Assert HLDA */
783   dma8237_set_hlda( device, state );
784   i8237_hlda_w( device, state );
784785}
785786
786787
787static DMA8237_MEM_READ( pc_dma_read_byte )
788static READ8_HANDLER( pc_dma_read_byte )
788789{
789   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
790   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
790   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
791791      & 0xFF0000;
792792
793793   return memory_read_byte(space, page_offset + offset);
794794}
795795
796796
797static DMA8237_MEM_WRITE( pc_dma_write_byte )
797static WRITE8_HANDLER( pc_dma_write_byte )
798798{
799   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
800   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
799   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
801800      & 0xFF0000;
802801
803802   memory_write_byte(space, page_offset + offset, data);
804803}
805804
806
807static const struct dma8237_interface dma8237_1_config =
805static void set_dma_channel(const device_config *device, int channel, int state)
808806{
809   XTAL_14_31818MHz/3,
807   if (!state) dma_channel = channel;
808}
810809
811   pc_dma_hrq_changed,
812   pc_dma_read_byte,
813   pc_dma_write_byte,
810static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
811static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
812static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
813static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
814814
815   { NULL, NULL, NULL, NULL },
816   { NULL, NULL, NULL, NULL },
817   NULL
815static I8237_INTERFACE( dma8237_1_config )
816{
817   DEVCB_LINE(pc_dma_hrq_changed),
818   DEVCB_NULL,
819   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
820   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
821   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
822   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
823   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
818824};
819825
820
821static const struct dma8237_interface dma8237_2_config =
826static I8237_INTERFACE( dma8237_2_config )
822827{
823   XTAL_14_31818MHz/3,
824
825   NULL,
826   NULL,
827   NULL,
828
829   { NULL, NULL, NULL, NULL },
830   { NULL, NULL, NULL, NULL },
831   NULL
828   DEVCB_NULL,
829   DEVCB_NULL,
830   DEVCB_NULL,
831   DEVCB_NULL,
832   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
833   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
834   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
832835};
833836
834837
r6428r6429
848851ADDRESS_MAP_END
849852
850853static ADDRESS_MAP_START(mediagx_io, ADDRESS_SPACE_IO, 32)
851   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
854   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
852855   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_master", io20_r, io20_w, 0xffffffff)
853856   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
854857   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r6428r6429
10571060
10581061   MDRV_PIT8254_ADD( "pit8254", mediagx_pit8254_config )
10591062
1060   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
1063   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
10611064
1062   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
1065   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
10631066
10641067   MDRV_PIC8259_ADD( "pic8259_master", mediagx_pic8259_1_config )
10651068
src/mame/drivers/ambush.c
r6428r6429
11/***************************************************************************
22
3Ambush Memory Map (preliminary)
3    Ambush Memory Map (preliminary)
44
5driver by Zsolt Vasvari
5    driver by Zsolt Vasvari
66
77
8Memory Mapped:
8    Memory Mapped:
99
100000-7fff   R   ROM
118000-87ff   R/W RAM
12a000        R   Watchdog Reset
13c080-c09f   W   Scroll RAM (1 byte for each column)
14c100-c1ff   W   Color RAM (1 line corresponds to 4 in the video ram)
15c200-c3ff   W   Sprite RAM
16c400-c7ff   W   Video RAM
17c800        R   DIP Switches
18cc00-cc03   W   ??? (Maybe analog sound triggers?)
19cc04        W   Flip Screen
20cc05        W   Color Bank Select
21cc07        W   Coin Counter
10    0000-7fff   R   ROM
11    8000-87ff   R/W RAM
12    a000        R   Watchdog Reset
13    c080-c09f   W   Scroll RAM (1 byte for each column)
14    c100-c1ff   W   Color RAM (1 line corresponds to 4 in the video ram)
15    c200-c3ff   W   Sprite RAM
16    c400-c7ff   W   Video RAM
17    c800        R   DIP Switches
18    cc00-cc03   W   ??? (Maybe analog sound triggers?)
19    cc04        W   Flip Screen
20    cc05        W   Color Bank Select
21    cc07        W   Coin Counter
2222
2323
24I/O Ports:
24    I/O Ports:
2525
2600-01       R/W AY8910 #0 (Port A = Input Port #0)
2780-81       R/W AY8910 #1 (Port A = Input Port #1)
26    00-01       R/W AY8910 #0 (Port A = Input Port #0)
27    80-81       R/W AY8910 #1 (Port A = Input Port #1)
2828
2929
30TODO:
30    TODO:
3131
32- Verify Z80 and AY8910 clock speeds
32    - Verify Z80 and AY8910 clock speeds
3333
3434***************************************************************************/
3535
3636#include "driver.h"
3737#include "cpu/z80/z80.h"
3838#include "sound/ay8910.h"
39#include "ambush.h"
3940
4041
41extern UINT8 *ambush_scrollram;
42extern UINT8 *ambush_colorbank;
42/*************************************
43 *
44 *  Memory handlers
45 *
46 *************************************/
4347
44PALETTE_INIT( ambush );
45VIDEO_UPDATE( ambush );
46
47
4848static WRITE8_HANDLER( ambush_coin_counter_w )
4949{
5050   coin_counter_w(0, data & 0x01);
r6428r6429
5757}
5858
5959
60/*************************************
61 *
62 *  Address maps
63 *
64 *************************************/
65
6066static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
6167   AM_RANGE(0x0000, 0x7fff) AM_ROM
6268   AM_RANGE(0x8000, 0x87ff) AM_RAM
6369   AM_RANGE(0xa000, 0xa000) AM_READ(watchdog_reset_r)
6470   AM_RANGE(0xc000, 0xc7ff) AM_RAM
65   AM_RANGE(0xc080, 0xc09f) AM_BASE(&ambush_scrollram)
66   AM_RANGE(0xc100, 0xc1ff) AM_BASE(&colorram)
67   AM_RANGE(0xc200, 0xc3ff) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
68   AM_RANGE(0xc400, 0xc7ff) AM_BASE(&videoram) AM_SIZE(&videoram_size)
71   AM_RANGE(0xc080, 0xc09f) AM_BASE_MEMBER(ambush_state, scrollram)
72   AM_RANGE(0xc100, 0xc1ff) AM_BASE_MEMBER(ambush_state, colorram)
73   AM_RANGE(0xc200, 0xc3ff) AM_BASE_MEMBER(ambush_state, spriteram) AM_SIZE(&spriteram_size)
74   AM_RANGE(0xc400, 0xc7ff) AM_BASE_MEMBER(ambush_state, videoram) AM_SIZE(&videoram_size)
6975   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW1")
7076   AM_RANGE(0xcc00, 0xcc03) AM_WRITENOP
7177   AM_RANGE(0xcc04, 0xcc04) AM_WRITE(flip_screen_w)
72   AM_RANGE(0xcc05, 0xcc05) AM_WRITEONLY AM_BASE(&ambush_colorbank)
78   AM_RANGE(0xcc05, 0xcc05) AM_WRITEONLY AM_BASE_MEMBER(ambush_state, colorbank)
7379   AM_RANGE(0xcc07, 0xcc07) AM_WRITE(ambush_coin_counter_w)
7480ADDRESS_MAP_END
7581
r6428r6429
8288ADDRESS_MAP_END
8389
8490
91/*************************************
92 *
93 *  Input ports
94 *
95 *************************************/
96
8597static INPUT_PORTS_START( ambush )
8698   PORT_START("SYSTEM")
8799   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
r6428r6429
145157INPUT_PORTS_END
146158
147159
160/*************************************
161 *
162 *  Graphics definitions
163 *
164 *************************************/
165
148166static const gfx_layout charlayout =
149167{
150168   8,8,    /* 8*8 chars */
r6428r6429
175193GFXDECODE_END
176194
177195
196/*************************************
197 *
198 *  Sound interfaces
199 *
200 *************************************/
201
178202static const ay8910_interface ay8910_interface_1 =
179203{
180204   AY8910_LEGACY_OUTPUT,
r6428r6429
196220};
197221
198222
223/*************************************
224 *
225 *  Machine driver
226 *
227 *************************************/
228
199229static MACHINE_DRIVER_START( ambush )
200230
231   /* driver data */
232   MDRV_DRIVER_DATA(ambush_state)
233
201234   /* basic machine hardware */
202235   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4.00 MHz??? */
203236   MDRV_CPU_PROGRAM_MAP(main_map)
r6428r6429
230263MACHINE_DRIVER_END
231264
232265
233/***************************************************************************
266/*************************************
267 *
268 *  ROM definition(s)
269 *
270 *************************************/
234271
235  Game driver(s)
236
237***************************************************************************/
238
239272ROM_START( ambush )
240273   ROM_REGION( 0x10000, "maincpu", 0 )
241274   ROM_LOAD( "ambush.h7",    0x0000, 0x2000, CRC(ce306563) SHA1(c69b5c4465187a8eda6367d6cd3e0b71a57588d1) )
r6428r6429
294327   ROM_LOAD( "14.bpr",        0x0300, 0x0100, CRC(622a8ce7) SHA1(6834f67874251f2ef3a33aec893311f5d10e496f) )  /* They don't look like color PROMs */
295328ROM_END
296329
330/*************************************
331 *
332 *  Game driver(s)
333 *
334 *************************************/
335
297336GAME( 1983, ambush,   0,        ambush,   ambush,   0, ROT0, "Nippon Amuse Co-Ltd", "Ambush", GAME_SUPPORTS_SAVE )
298GAME( 1983, ambushv,  ambush,   ambush,   ambush,   0, ROT0, "Volt Elec co-ltd", "Ambush (Volt Elec co-ltd)", GAME_SUPPORTS_SAVE )
299GAME( 1983, ambusht,  ambush,   ambush,   ambusht,  0, ROT0, "Tecfri", "Ambush (Tecfri)", GAME_SUPPORTS_SAVE )
337GAME( 1983, ambushv,  ambush,   ambush,   ambush,   0, ROT0, "Volt Elec co-ltd",    "Ambush (Volt Elec co-ltd)", GAME_SUPPORTS_SAVE )
338GAME( 1983, ambusht,  ambush,   ambush,   ambusht,  0, ROT0, "Tecfri",              "Ambush (Tecfri)", GAME_SUPPORTS_SAVE )
src/mame/drivers/skimaxx.c
r6428r6429
1/***************************************************************************
1/*****************************************************************************************************
22
33    Skimaxx
44
5    Preliminary driver by Phil Bennett
5    driver by Phil Bennett and Luca Elia
66
7    68030-40 * 2
8    TMS34010-50
9    MSM6295 * 4
7    Top Board:
108
11    Video hardware consists of scaling sprites with a Mode 7-style ground?
12    TMS34010 seems to draws text, score etc.
9        68EC030-40
10        (MSM6295 + Crystal) * 4
1311
14    It looks like a bistream for a Xilinx FPGA is stored in ROM. The sub
15    CPU bit-bangs 30864 bits worth of data to 0x40000003 twice.
12    Bottom Board:
1613
17***************************************************************************/
14        68EC030-40
15        TMS34010-50
1816
17    Video hardware:
18
19    - Blitter that supports rotation and zoom (background and sprites)
20    - TMS34010 (text, score)
21
22    Notes:
23
24    - It looks like a bistream for a Xilinx FPGA is stored in ROM.
25      The sub CPU bit-bangs 30864 bits worth of data to 0x40000003 twice.
26
27    - There seems to be a bug in the game code drawing routines, causing objects to have some pixels
28      chopped off. This is most noticeable for distant thin objects (falgs, poles of the start banner).
29      See maincpu routine at 387B8, specifically the jump at 3880E throws 4 horizontal pixels away.
30
31    - The player often disappears (when she's too slow?). Is this normal ?
32
33    - Are button 2 and analog input "Y" used ?
34
35*****************************************************************************************************/
36
1937#include "driver.h"
2038#include "cpu/m68000/m68000.h"
2139#include "cpu/tms34010/tms34010.h"
40#include "sound/okim6295.h"
2241
2342
2443/*************************************
r6428r6429
2746 *
2847 *************************************/
2948
30static UINT32 *sprite_buffer;
31static UINT16 *frame_buffer;
49static UINT32 *bg_buffer;   // i.e. background and sprites
50static UINT16 *fg_buffer;   // i.e. text
3251
3352
3453/*************************************
r6428r6429
3756 *
3857 *************************************/
3958
59UINT32 *skimaxx_bg_buffer_front;
60UINT32 *skimaxx_bg_buffer_back;
61
62UINT32 *skimaxx_blitter_regs;
63UINT16 *skimaxx_blitter_gfx;
64
65UINT32 skimaxx_blitter_gfx_len;
66
67UINT32 skimaxx_blitter_src_x, skimaxx_blitter_src_dx;
68UINT32 skimaxx_blitter_src_y, skimaxx_blitter_src_dy;
69
70// Set up blit parameters
71static WRITE32_HANDLER( skimaxx_blitter_w )
72{
73   UINT32 newdata = COMBINE_DATA( &skimaxx_blitter_regs[offset] );
74
75   switch (offset)
76   {
77      case 0:
78         skimaxx_blitter_src_dy = (newdata & 0x7fff) - (newdata & 0x8000);
79         break;
80
81      case 1:
82         skimaxx_blitter_src_x = (newdata & 0x1ff) << 8;
83         skimaxx_blitter_src_y = (newdata >> 9) << 8;
84         break;
85
86      case 2:
87         if (ACCESSING_BITS_16_31)
88            skimaxx_blitter_src_dx = (newdata >> 16) & 0xffff;
89         if (ACCESSING_BITS_0_15)
90            skimaxx_blitter_src_dx = newdata & 0xffff;
91
92         skimaxx_blitter_src_dx = (skimaxx_blitter_src_dx & 0x7fff) - (skimaxx_blitter_src_dx & 0x8000);
93         break;
94
95      case 3:
96         // Usually 0. Set to 10 for water/sand near the horizon
97         break;
98   }
99}
100
101// A read by the 68030 from this area blits one pixel to the back buffer (at the same offset)
102static READ32_HANDLER( skimaxx_blitter_r )
103{
104   UINT32 penaddr = ((skimaxx_blitter_src_x >> 8) & 0x1ff) + ((skimaxx_blitter_src_y >> 8) << 9);
105   UINT16 *src = skimaxx_blitter_gfx + (penaddr % skimaxx_blitter_gfx_len);
106   UINT32 *dst = skimaxx_bg_buffer_back + offset;
107
108   UINT16 pen = (*src) & 0x7fff;
109
110   if (pen)
111   {
112      if (ACCESSING_BITS_16_31)
113         *dst = (*dst & 0x0000ffff) | (pen << 16);
114      else
115         *dst = (*dst & 0xffff0000) | pen;
116   }
117
118   skimaxx_blitter_src_x = (skimaxx_blitter_src_x & 0x10000) | ((skimaxx_blitter_src_x + skimaxx_blitter_src_dx) & 0xffff);
119   skimaxx_blitter_src_y = (skimaxx_blitter_src_y & 0xffff0000) | ((skimaxx_blitter_src_y + skimaxx_blitter_src_dy) & 0xffff);
120
121   return 0;
122}
123
124
40125static VIDEO_START( skimaxx )
41126{
127   skimaxx_blitter_gfx = (UINT16 *) memory_region( machine, "blitter" );
128   skimaxx_blitter_gfx_len = memory_region_length( machine, "blitter" ) / 2;
42129
130   bg_buffer = auto_alloc_array(machine, UINT32, 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 2);   // 2 buffers
131   skimaxx_bg_buffer_back  = bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 0;
132   skimaxx_bg_buffer_front = bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 1;
133   memory_configure_bank(machine, 1, 0, 1, skimaxx_bg_buffer_back,  0);
134   memory_configure_bank(machine, 1, 1, 1, skimaxx_bg_buffer_front, 0);
43135}
44136
137static VIDEO_UPDATE( skimaxx )
138{
139//  popmessage("%02x %02x", input_port_read(screen->machine, "X"), input_port_read(screen->machine, "Y") );
45140
141   VIDEO_UPDATE_CALL(tms340x0);
142
143   return 0;
144}
145
46146/*************************************
47147 *
48148 *  VRAM shift register callbacks
r6428r6429
52152// TODO: Might not be used
53153static void skimaxx_to_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg)
54154{
55   memcpy(shiftreg, &frame_buffer[TOWORD(address)], 512 * sizeof(UINT16));
155   memcpy(shiftreg, &fg_buffer[TOWORD(address)], 512 * sizeof(UINT16));
56156}
57157
58158static void skimaxx_from_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg)
59159{
60   memcpy(&frame_buffer[TOWORD(address)], shiftreg, 512 * sizeof(UINT16));
160   memcpy(&fg_buffer[TOWORD(address)], shiftreg, 512 * sizeof(UINT16));
61161}
62162
63163
r6428r6429
70170static void skimaxx_scanline_update(const device_config *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params)
71171{
72172   // TODO: This isn't correct. I just hacked it together quickly so I could see something!
173
73174   if (params->rowaddr >= 0x220)
74175   {
75176      UINT32 rowaddr = (params->rowaddr - 0x220);
76      UINT16 *vram1 = &frame_buffer[rowaddr << 8];
177      UINT16 *fg = &fg_buffer[rowaddr << 8];
178      UINT32 *bg = &skimaxx_bg_buffer_front[rowaddr/2 * 1024/2];
77179      UINT16 *dest = BITMAP_ADDR16(bitmap, scanline, 0);
78180      int coladdr = params->coladdr;
79181      int x;
80182      coladdr = 0;
81183
82      if (scanline >= 236)
83         return;
84
85      for (x = params->heblnk; x < params->hsblnk; ++x)
184      dest += params->heblnk;
185      for (x = params->heblnk; x < params->hsblnk; x+=2)
86186      {
87         UINT16 tmspix = vram1[coladdr++] & 0x7fff;
88         dest[x] = tmspix;
187         UINT16 tmspix;
188         tmspix = *fg & 0x7fff;
189         if (tmspix)
190         {
191            *dest++ = tmspix;
192            *dest++ = tmspix;
193         }
194         else
195         {
196            UINT32 data = *bg & 0x7fff7fff;
197            *dest++ = data >> 16;
198            *dest++ = data;
199         }
200         fg++;
201         bg++;
89202      }
90203   }
91204}
r6428r6429
114227 *
115228 *************************************/
116229
230/*
231  bit 7: 0->1 at the start, and before bit banging to 40000003 (Xilinx FPGA configuration write port?)
232  bit 6: double buffering
233  bit 5: 0/1 less oftenly
234  bit 4: 0->1 clocks bit banging
235  bit 3-1: 1?
236  bit 0: bit banging data
237*/
238
239UINT32 *skimaxx_fpga_ctrl;
240static WRITE32_HANDLER( skimaxx_fpga_ctrl_w )
241{
242   UINT32 newdata = COMBINE_DATA( skimaxx_fpga_ctrl );
243
244   if (ACCESSING_BITS_0_7)
245   {
246      // double buffering
247      UINT8 bank_bg_buffer = (newdata & 0x40) ? 1 : 0;
248
249      skimaxx_bg_buffer_back  = bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * bank_bg_buffer;
250      skimaxx_bg_buffer_front = bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * (1 - bank_bg_buffer);
251
252      memory_set_bank(space->machine, 1, bank_bg_buffer);
253   }
254}
255
256// 0x2000004c: bit 7, bit 0
117257static READ32_HANDLER( unk_r )
118258{
259   return (*skimaxx_fpga_ctrl & 0x20) ? 0x80 : 0x00;
260}
261
262// 0x20000023
263static READ32_HANDLER( skimaxx_unk1_r )
264{
119265   return 0x80;
120266}
121267
268static WRITE32_HANDLER( skimaxx_unk1_w )
269{
270}
122271
272static WRITE32_HANDLER( skimaxx_sub_ctrl_w )
273{
274   // 7e/7f at the start. 3f/7f, related to reads from 1018xxxx
275   if (ACCESSING_BITS_0_7)
276   {
277      const device_config *subcpu = devtag_get_device(space->machine, "subcpu");
278
279      cpu_set_input_line(subcpu, INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
280      cpu_set_input_line(subcpu, INPUT_LINE_HALT,  (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
281   }
282}
283
284/*
285    00      left max again
286
287    01      right max
288    ..
289    10      center
290    ..
291    1f      left max
292*/
293static READ32_HANDLER( skimaxx_analog_r )
294{
295   return BITSWAP8(input_port_read(space->machine, offset ? "Y" : "X"), 0,1,2,3,4,5,6,7);
296}
297
123298/*************************************
124299 *
125300 *  Main CPU memory map
r6428r6429
128303
129304static ADDRESS_MAP_START( 68030_1_map, ADDRESS_SPACE_PROGRAM, 32 )
130305   AM_RANGE(0x00000000, 0x001fffff) AM_ROM
131   AM_RANGE(0x10000000, 0x10000003) AM_RAM
132   AM_RANGE(0x10100000, 0x1010000f) AM_READWRITE(m68k_tms_r, m68k_tms_w)
133   AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE(1)
134   AM_RANGE(0x20000000, 0x20000003) AM_RAM
135   AM_RANGE(0x20000020, 0x20000023) AM_RAM
136   AM_RANGE(0x20000024, 0x20000027) AM_RAM
137   AM_RANGE(0x20000040, 0x20000043) AM_RAM
138   AM_RANGE(0x20000044, 0x20000047) AM_RAM
139   AM_RANGE(0x20000048, 0x2000004b) AM_RAM
140   AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r)
141   AM_RANGE(0x20000050, 0x20000053) AM_RAM
142   AM_RANGE(0x20000054, 0x20000057) AM_RAM
143   AM_RANGE(0xfffc0000, 0xfffdffff) AM_RAM AM_MIRROR(0x00020000)
306   AM_RANGE(0x10000000, 0x10000003) AM_WRITE( skimaxx_sub_ctrl_w )
307   AM_RANGE(0x10100000, 0x1010000f) AM_READWRITE(m68k_tms_r, m68k_tms_w)//AM_NOP
308//  AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE(1)
309   AM_RANGE(0x10180000, 0x1018ffff) AM_RAM AM_SHARE(1)   // above 10188000 accessed at level end (game bug?)
310   AM_RANGE(0x20000000, 0x20000003) AM_READNOP   // watchdog_r?
311
312   AM_RANGE(0x20000010, 0x20000013) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)   // left
313   AM_RANGE(0x20000014, 0x20000017) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)   // left
314   AM_RANGE(0x20000018, 0x2000001b) AM_DEVREADWRITE8("oki3", okim6295_r, okim6295_w, 0x00ff)   // right
315   AM_RANGE(0x2000001c, 0x2000001f) AM_DEVREADWRITE8("oki4", okim6295_r, okim6295_w, 0x00ff)   // right
316
317   AM_RANGE(0x20000020, 0x20000023) AM_READ ( skimaxx_unk1_r )   // units linking?
318   AM_RANGE(0x20000024, 0x20000027) AM_WRITE( skimaxx_unk1_w )   // ""
319
320   AM_RANGE(0x20000040, 0x20000043) AM_RAM   // write
321   AM_RANGE(0x20000044, 0x20000047) AM_READ_PORT( "DSW" )
322   AM_RANGE(0x20000048, 0x2000004b) AM_READ_PORT( "COIN" )
323   AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r)   // bit 7, bit 0
324
325   AM_RANGE(0x20000050, 0x20000057) AM_READ( skimaxx_analog_r ) AM_WRITENOP   // read (0-1f), write motor?
326
327   AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_MIRROR(0x00020000)
144328ADDRESS_MAP_END
145329
146330
147331/*************************************
148332 *
149 *  Sub CPU memory map
333 *  Sub CPU memory map (Blitter control)
150334 *
151335 *************************************/
152336
153337static ADDRESS_MAP_START( 68030_2_map, ADDRESS_SPACE_PROGRAM, 32 )
154338   AM_RANGE(0x00000000, 0x003fffff) AM_ROM
155   AM_RANGE(0x40000000, 0x40000003) AM_RAM // Xilinx FPGA configuration write port?
156   AM_RANGE(0x50000000, 0x5007ffff) AM_RAM AM_BASE(&sprite_buffer) // Part of this is mixed with the TMS frame buffer
157   AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE(1)
158   AM_RANGE(0xfffe0000, 0xffffffff) AM_RAM // I think this is banked with the shared RAM? (see CPU sync routines)
339
340   AM_RANGE(0x20000000, 0x2007ffff) AM_READ ( skimaxx_blitter_r )   // do blit
341   AM_RANGE(0x30000000, 0x3000000f) AM_WRITE( skimaxx_blitter_w ) AM_BASE( &skimaxx_blitter_regs )
342
343   AM_RANGE(0x40000000, 0x40000003) AM_WRITE( skimaxx_fpga_ctrl_w ) AM_BASE( &skimaxx_fpga_ctrl )
344
345   AM_RANGE(0x50000000, 0x5007ffff) AM_RAMBANK(1)   // background ram allocated here at video_start (skimaxx_bg_buffer_back/front)
346//  AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE(1)
347   AM_RANGE(0xfffc0000, 0xfffcffff) AM_RAM AM_SHARE(1)
348//  AM_RANGE(0xfffe0000, 0xffffffff) AM_RAM // I think this is banked with the shared RAM? (see CPU sync routines)
349   AM_RANGE(0xfffe0010, 0xfffeffff) AM_RAM            // HACK
350   AM_RANGE(0xfffe0000, 0xfffeffff) AM_RAM AM_SHARE(1)   // HACK
351   AM_RANGE(0xffff0000, 0xffffffff) AM_RAM
159352ADDRESS_MAP_END
160353
161354
162355/*************************************
163356 *
164 *  Video CPU memory map
357 *  Video CPU memory map (Text layer)
165358 *
166359 *************************************/
167360
r6428r6429
169362   AM_RANGE(0x00000000, 0x000100ff) AM_RAM
170363   AM_RANGE(0x00008000, 0x0003ffff) AM_RAM
171364   AM_RANGE(0x00050000, 0x0005ffff) AM_RAM
172   AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_BASE(&frame_buffer)
365   AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_BASE(&fg_buffer)
173366   AM_RANGE(0x02000000, 0x0200000f) AM_RAM
174367   AM_RANGE(0x02100000, 0x0210000f) AM_RAM
175368   AM_RANGE(0x04000000, 0x047fffff) AM_ROM AM_REGION("tmsgfx", 0)
r6428r6429
180373
181374/*************************************
182375 *
376 *  Graphics decoding (for debug)
377 *
378 *************************************/
379
380#if 0
381
382static const UINT32 texlayout_xoffset[512] =
383{
384   STEP512(0,16)
385};
386
387static const UINT32 texlayout_yoffset[128] =
388{
389   STEP128(0,512*16)
390};
391
392static const gfx_layout texlayout =
393{
394   512, 128,
395   RGN_FRAC(1,1),
396   5,
397   { 9,10,11,12,13 },
398   EXTENDED_XOFFS,
399   EXTENDED_YOFFS,
400   512*128*16,
401   texlayout_xoffset,
402   texlayout_yoffset
403};
404
405static GFXDECODE_START( skimaxx )
406   GFXDECODE_ENTRY( "blitter", 0, texlayout, 0, 1 )
407GFXDECODE_END
408
409#endif
410
411
412/*************************************
413 *
183414 *  Input definitions
184415 *
185416 *************************************/
186417
187418static INPUT_PORTS_START( skimaxx )
188   PORT_START("DSW")
189   // TODO
419   PORT_START("DSW")   // 20000044.l & 0xff
420   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Unknown ) )
421   PORT_DIPSETTING(    0x05, "12" )
422   PORT_DIPSETTING(    0x04, "17" )
423   PORT_DIPSETTING(    0x03, "25" )
424   PORT_DIPSETTING(    0x02, "33" )
425   PORT_DIPSETTING(    0x01, "50" )
426   PORT_DIPSETTING(    0x07, "100" )
427   PORT_DIPSETTING(    0x06, "200" )
428   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
429   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
430   PORT_DIPSETTING(    0x08, "0" )
431   PORT_DIPSETTING(    0x00, "1" )
432   PORT_DIPNAME( 0x70, 0x70, DEF_STR( Unknown ) )
433   PORT_DIPSETTING(    0x00, "2" )
434   PORT_DIPSETTING(    0x10, "4" )
435   PORT_DIPSETTING(    0x20, "8" )
436   PORT_DIPSETTING(    0x30, "10" )
437   PORT_DIPSETTING(    0x40, "12" )
438   PORT_DIPSETTING(    0x50, "15" )
439   PORT_DIPSETTING(    0x60, "20" )
440   PORT_DIPSETTING(    0x70, "30" )
441   PORT_DIPNAME( 0x80, 0x80, "Time For Super Course" )
442   PORT_DIPSETTING(    0x80, "50 s" )   // 3000
443   PORT_DIPSETTING(    0x00, "60 s" )   // 3600
444
445   PORT_START("COIN")   // 20000048.l & 0xff
446   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
447   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
448   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )   // ?
449   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1   )   // coin
450   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2   )   // coin
451   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1  )   // start
452   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
453   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )   // change course / letter
454
455   PORT_START("X")
456   PORT_BIT( 0x1f, 0x10, IPT_AD_STICK_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_MINMAX(0x00,0x1e) PORT_INVERT
457
458   PORT_START("Y")
459   PORT_BIT( 0x1f, 0x10, IPT_AD_STICK_Y ) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_MINMAX(0x00,0x1e) PORT_INVERT
460//  PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
461
190462INPUT_PORTS_END
191463
192464
r6428r6429
206478   FALSE,                     /* halt on reset */
207479   "screen",                  /* the screen operated on */
208480   50000000/8,                /* pixel clock */
209   1,                         /* pixels per clock */
481   2,                         /* pixels per clock */
210482   skimaxx_scanline_update,   /* scanline updater */
211483   skimaxx_tms_irq,           /* generate interrupt */
212484   skimaxx_to_shiftreg,       /* write to shiftreg function */
r6428r6429
225497
226498}
227499
228
229500/*************************************
230501 *
231502 *  Machine driver
r6428r6429
233504 *************************************/
234505
235506static MACHINE_DRIVER_START( skimaxx )
236   MDRV_CPU_ADD("maincpu", M68020, XTAL_40MHz)   // TODO: Should be a 68030!
507   MDRV_CPU_ADD("maincpu", M68EC030, XTAL_40MHz)
237508   MDRV_CPU_PROGRAM_MAP(68030_1_map)
238//  MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
509   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)   // 1,3,7 are identical, rest is RTE
239510
240   MDRV_CPU_ADD("subcpu", M68020, XTAL_40MHz)
241   MDRV_CPU_PROGRAM_MAP(68030_2_map)      // TODO: Should be a 68030!
511   MDRV_CPU_ADD("subcpu", M68EC030, XTAL_40MHz)
512   MDRV_CPU_PROGRAM_MAP(68030_2_map)
242513
514   MDRV_MACHINE_RESET(skimaxx)
515
516   /* video hardware */
243517   MDRV_CPU_ADD("tms", TMS34010, XTAL_50MHz)
244518   MDRV_CPU_CONFIG(tms_config)
245519   MDRV_CPU_PROGRAM_MAP(tms_program_map)
246520
247   MDRV_MACHINE_RESET(skimaxx)
248
249521   MDRV_SCREEN_ADD("screen", RASTER)
250522   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
251   MDRV_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300) // TODO - Wrong but TMS overrides it anyway
523//  MDRV_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300) // TODO - Wrong but TMS overrides it anyway
524   MDRV_SCREEN_REFRESH_RATE(60)
525   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
526   MDRV_SCREEN_SIZE(0x400, 0x100)
527   MDRV_SCREEN_VISIBLE_AREA(0, 0x280-1, 0, 0xf0-1)
252528
529   MDRV_VIDEO_START(skimaxx)
530//  MDRV_VIDEO_UPDATE(tms340x0)
531   MDRV_VIDEO_UPDATE(skimaxx)
532
533//  MDRV_GFXDECODE( skimaxx )
534
253535   MDRV_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
254536   MDRV_PALETTE_LENGTH(32768)
255537
256   MDRV_SPEAKER_STANDARD_MONO("mono")
538   /* sound hardware */
539   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
257540
258   MDRV_VIDEO_START(skimaxx)
259   MDRV_VIDEO_UPDATE(tms340x0)
541   MDRV_SOUND_ADD("oki1", OKIM6295, XTAL_4MHz)      // ?
542   MDRV_SOUND_CONFIG(okim6295_interface_pin7low)   // ?
543   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
544
545   MDRV_SOUND_ADD("oki2", OKIM6295, XTAL_4MHz/2)   // ?
546   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)   // ?
547   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
548
549   MDRV_SOUND_ADD("oki3", OKIM6295, XTAL_4MHz)      // ?
550   MDRV_SOUND_CONFIG(okim6295_interface_pin7low)   // ?
551   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
552
553   MDRV_SOUND_ADD("oki4", OKIM6295, XTAL_4MHz/2)   // ?
554   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)   // ?
555   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
260556MACHINE_DRIVER_END
261557
262558
r6428r6429
283579   ROM_LOAD16_BYTE( "vc8v-2_0", 0x000000, 0x80000, CRC(a6e9ef81) SHA1(59a0fb149e17d3773adb980428a0b107647bd4fa) )
284580   ROM_LOAD16_BYTE( "vc9v-2_0", 0x000001, 0x80000, CRC(b1e8ba65) SHA1(b91cf93ecd9b6067664780ab2c1b69f632c7ae05) )
285581
286   ROM_REGION( 0x600000, "tmsgfx", 0 )
582   ROM_REGION( 0x100000, "tmsgfx", 0 )
287583   ROM_LOAD16_BYTE( "vc10v2_0", 0x000000, 0x80000, CRC(433651cd) SHA1(9b9801703d16adbbca2b03e1714490fb166d48a0) )
288584   ROM_LOAD16_BYTE( "vc11v2_0", 0x000001, 0x80000, CRC(a906fc72) SHA1(c61ad560f203c7f507cc7b7dc8834f529a6501a7) )
289585
290   ROM_REGION( 0x600000, "gfx", 0 )
586   ROM_REGION16_LE( 0x600000, "blitter", 0 )
291587   ROM_LOAD16_BYTE( "ve5v-2_0", 0x000000, 0x100000, CRC(b95544a3) SHA1(1ad49da54d36543229e241887c3dd8411ef5c89a) )
292588   ROM_LOAD16_BYTE( "ve6v-2_0", 0x000001, 0x100000, CRC(d98bf89a) SHA1(f7fd66487f7696b53ee90a4cf45a810ec791df59) )
293   ROM_LOAD16_BYTE( "ve7v-2_0", 0x200000, 0x100000, CRC(a927716b) SHA1(0189d7b08b65b6a8a8d4c3e2affe93612db38155) )
294   ROM_LOAD16_BYTE( "ve8v-2_0", 0x200001, 0x100000, CRC(ad8ed4a4) SHA1(5d1339b3d6ce59fea062273fa2da35988ba94a80) )
295   ROM_LOAD16_BYTE( "ve9v-2_0", 0x400000, 0x100000, CRC(587b364d) SHA1(b53412bdcc804727990d959e5b2399a7e5e7fbf3) )
296   ROM_LOAD16_BYTE( "ve10v2_0", 0x400001, 0x100000, CRC(c2a16a62) SHA1(3663c19a6517b0a01fb454523b995be3cdf2e4b3) )
589   ROM_LOAD16_BYTE( "ve10v2_0", 0x200000, 0x100000, CRC(c2a16a62) SHA1(3663c19a6517b0a01fb454523b995be3cdf2e4b3) )
590   ROM_LOAD16_BYTE( "ve9v-2_0", 0x200001, 0x100000, CRC(587b364d) SHA1(b53412bdcc804727990d959e5b2399a7e5e7fbf3) )
591   ROM_LOAD16_BYTE( "ve7v-2_0", 0x400000, 0x100000, CRC(a927716b) SHA1(0189d7b08b65b6a8a8d4c3e2affe93612db38155) )
592   ROM_LOAD16_BYTE( "ve8v-2_0", 0x400001, 0x100000, CRC(ad8ed4a4) SHA1(5d1339b3d6ce59fea062273fa2da35988ba94a80) )
297593
298594   ROM_REGION( 0x80000, "oki1", 0 )
299   ROM_LOAD( "main2_0.u2", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )
595   ROM_LOAD( "main2_0.u3", 0x000000, 0x80000, CRC(24d8c6ad) SHA1(06f51a4c380c91c930d646826246f62c4e1f9cda) )
300596
301597   ROM_REGION( 0x80000, "oki2", 0 )
302   ROM_LOAD( "main2_0.u4", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )
598   ROM_LOAD( "main2_0.u2", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )   // identical to main2_0.u4
303599
304600   ROM_REGION( 0x80000, "oki3", 0 )
305   ROM_LOAD( "main2_0.u3", 0x000000, 0x80000, CRC(24d8c6ad) SHA1(06f51a4c380c91c930d646826246f62c4e1f9cda) )
601   ROM_LOAD( "main2_0.u5", 0x000000, 0x80000, CRC(e2ba07ad) SHA1(cf82753975f7b6756cca4e10b5372e00135440bf) )
306602
307603   ROM_REGION( 0x80000, "oki4", 0 )
308   ROM_LOAD( "main2_0.u5", 0x000000, 0x80000, CRC(e2ba07ad) SHA1(cf82753975f7b6756cca4e10b5372e00135440bf) )
604   ROM_LOAD( "main2_0.u4", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )   // identical to main2_0.u2
309605ROM_END
310606
311607
r6428r6429
315611 *
316612 *************************************/
317613
318GAME( 1996, skimaxx, 0, skimaxx, skimaxx, 0, ROT0, "Kyle Hodgetts/ICE", "Skimaxx", GAME_NOT_WORKING | GAME_NO_SOUND )
614GAME( 1996, skimaxx, 0, skimaxx, skimaxx, 0, ROT0, "Kyle Hodgetts / ICE", "Skimaxx", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/speedatk.c
r6428r6429
198198   AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_address_w)
199199   AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_register_w)
200200   AM_RANGE(0x24, 0x24) AM_WRITE(watchdog_reset_w)  //watchdog
201   AM_RANGE(0x40, 0x40) AM_DEVREAD("ay", ay8910_r)
202   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_address_data_w)
201   AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_r)
202   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_address_data_w)
203203   //what's 60-6f for? Seems used only in attract mode...
204204ADDRESS_MAP_END
205205
r6428r6429
345345   /* sound hardware */
346346   MDRV_SPEAKER_STANDARD_MONO("mono")
347347
348   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/4) //divider is unknown
348   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/4) //divider is unknown
349349   MDRV_SOUND_CONFIG(ay8910_config)
350350   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
351351MACHINE_DRIVER_END
src/mame/drivers/vroulet.c
r6428r6429
114114
115115static ADDRESS_MAP_START( vroulet_io_map, ADDRESS_SPACE_IO, 8 )
116116   ADDRESS_MAP_GLOBAL_MASK(0xff)
117   AM_RANGE(0x00, 0x00) AM_DEVREAD("ay", ay8910_r)
118   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_data_address_w)
117   AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_r)
118   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_data_address_w)
119119   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
120120   AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
121121ADDRESS_MAP_END
r6428r6429
287287   // sound hardware
288288   MDRV_SPEAKER_STANDARD_MONO("mono")
289289
290   MDRV_SOUND_ADD("ay", AY8910, 2000000)
290   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
291291   MDRV_SOUND_CONFIG(ay8910_config)
292292   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
293293
src/mame/drivers/twins.c
r6428r6429
8585ADDRESS_MAP_END
8686
8787static ADDRESS_MAP_START( twins_io, ADDRESS_SPACE_IO, 16 )
88   AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
89   AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
88   AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
89   AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
9090   AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w)
9191   AM_RANGE(0x0006, 0x0007) AM_WRITE(port6_pal0_w)
9292   AM_RANGE(0x000e, 0x000f) AM_WRITE(porte_paloff0_w)
r6428r6429
189189   /* sound hardware */
190190   MDRV_SPEAKER_STANDARD_MONO("mono")
191191
192   MDRV_SOUND_ADD("ay", AY8910, 2000000)
192   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
193193   MDRV_SOUND_CONFIG(ay8910_config)
194194   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
195195MACHINE_DRIVER_END
r6428r6429
248248   AM_RANGE(0x0000, 0x0001) AM_READWRITE(twinsa_unk_r, porte_paloff0_w)
249249   AM_RANGE(0x0002, 0x0003) AM_WRITE(porte_paloff0_w)
250250   AM_RANGE(0x0004, 0x0005) AM_WRITE(twinsa_port4_w) // palette on this set
251   AM_RANGE(0x0008, 0x0009) AM_DEVWRITE8("ay", ay8910_address_w, 0x00ff)
252   AM_RANGE(0x0010, 0x0011) AM_DEVREADWRITE8("ay", ay8910_r, ay8910_data_w, 0x00ff)
251   AM_RANGE(0x0008, 0x0009) AM_DEVWRITE8("aysnd", ay8910_address_w, 0x00ff)
252   AM_RANGE(0x0010, 0x0011) AM_DEVREADWRITE8("aysnd", ay8910_r, ay8910_data_w, 0x00ff)
253253   AM_RANGE(0x0018, 0x0019) AM_READ(twins_port4_r) AM_WRITE(twins_port4_w)
254254ADDRESS_MAP_END
255255
r6428r6429
277277   /* sound hardware */
278278   MDRV_SPEAKER_STANDARD_MONO("mono")
279279
280   MDRV_SOUND_ADD("ay", AY8910, XTAL_16MHz/8) /* verified on pcb */
280   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_16MHz/8) /* verified on pcb */
281281   MDRV_SOUND_CONFIG(ay8910_config)
282282   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
283283MACHINE_DRIVER_END
src/mame/drivers/exedexes.c
r6428r6429
6868   AM_RANGE(0x0000, 0x3fff) AM_ROM
6969   AM_RANGE(0x4000, 0x47ff) AM_RAM
7070   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
71   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay", ay8910_address_data_w)
71   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
7272   AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76496_w)
7373   AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn2", sn76496_w)
7474ADDRESS_MAP_END
r6428r6429
240240   /* sound hardware */
241241   MDRV_SPEAKER_STANDARD_MONO("mono")
242242
243   MDRV_SOUND_ADD("ay", AY8910, 1500000)
243   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
244244   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
245245
246246   MDRV_SOUND_ADD("sn1", SN76489, 3000000)
src/mame/drivers/seta2.c
r6428r6429
549549{
550550   if (ACCESSING_BITS_0_7)
551551   {
552      UINT8 *ROM = memory_region( space->machine, "x1" );
553      int banks = (memory_region_length( space->machine, "x1" ) - 0x100000) / 0x20000;
552      UINT8 *ROM = memory_region( space->machine, "x1snd" );
553      int banks = (memory_region_length( space->machine, "x1snd" ) - 0x100000) / 0x20000;
554554      if (data >= banks)
555555      {
556556         logerror("CPU #0 PC %06X: invalid sound bank %04X\n",cpu_get_pc(space->cpu),data);
r6428r6429
587587   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")            // Coins
588588   AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r)      // Watchdog
589589   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
590   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
590   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
591591   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
592592   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
593593   AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                        // cleared
r6428r6429
649649   AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1")            // P2
650650   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w)
651651   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
652   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
652   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
653653   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
654654   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
655655   AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                        // cleared
r6428r6429
710710   AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")            // DSW 1
711711   AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")            // DSW 2
712712   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
713   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
713   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
714714   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
715715   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
716716   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)   // Video Registers
r6428r6429
733733   AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1")            // DSW 1
734734   AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2")            // DSW 2
735735   AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
736   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
736   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
737737   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
738738   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
739739   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)            // Video Registers
r6428r6429
756756   AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")            // DSW 1
757757   AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")            // DSW 2
758758   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
759   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
759   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
760760   AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
761761   AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
762762   AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )         // Video Registers
r6428r6429
804804   AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
805805   AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
806806   AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)            // Video Registers
807   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
807   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
808808   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
809809ADDRESS_MAP_END
810810
r6428r6429
830830   AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
831831   AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
832832   AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )
833   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
833   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
834834   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
835835ADDRESS_MAP_END
836836
r6428r6429
874874   AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
875875   AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)   // Video Registers
876876
877   AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1", seta_sound_word_r, seta_sound_word_w   )   // Sound
877   AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1snd", seta_sound_word_r, seta_sound_word_w   )   // Sound
878878
879879   AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2")            // parallel data register (DSW 2)
880880   AM_RANGE( 0xfffc00, 0xffffff ) AM_RAM_WRITE( tmp68301_regs_w) AM_BASE(&tmp68301_regs )   // TMP68301 Registers
r6428r6429
23182318   /* sound hardware */
23192319   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
23202320
2321   MDRV_SOUND_ADD("x1", X1_010, 50000000/3)
2321   MDRV_SOUND_ADD("x1snd", X1_010, 50000000/3)
23222322   MDRV_SOUND_CONFIG(x1_010_sound_intf)
23232323   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
23242324   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
25302530   ROM_LOAD( "ka001008.u23",  0x1400000, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) )
25312531   ROM_FILL(                  0x1800000, 0x600000, 0 )   /* 6bpp instead of 8bpp */
25322532
2533   ROM_REGION( 0x300000, "x1", 0 )   /* Samples */
2533   ROM_REGION( 0x300000, "x1snd", 0 )   /* Samples */
25342534   /* Leave 1MB empty (addressable by the chip) */
25352535   ROM_LOAD( "ka001015.u28", 0x100000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) )
25362536ROM_END
r6428r6429
25592559   ROM_LOAD( "u21.bin",  0x1e00000, 0x200000, CRC(6f95e466) SHA1(28482fad16a3ac9302f152d81552e6f84a44f3e4) )
25602560   ROM_CONTINUE(         0x1c00000, 0x200000 )
25612561
2562   ROM_REGION( 0x200000, "x1", 0 )   /* Samples */
2562   ROM_REGION( 0x200000, "x1snd", 0 )   /* Samples */
25632563   /* Leave 1MB empty (addressable by the chip) */
25642564   ROM_LOAD( "u32.bin", 0x100000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) )
25652565ROM_END
r6428r6429
25802580   ROM_LOAD( "cha-02.u22",  0x1400000, 0x400000, CRC(f6346860) SHA1(4eebd3fa315b97964fa39b88224f9de7622ba881) )
25812581   ROM_FILL(                0x1800000, 0x800000, 0 )   /* 6bpp instead of 8bpp */
25822582
2583   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2583   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
25842584   /* Leave 1MB empty (addressable by the chip) */
25852585   ROM_LOAD( "cha-07.u32",  0x100000, 0x400000, CRC(817519ee) SHA1(ed09740cdbf61a328f7b50eb569cf498fb749416) )
25862586ROM_END
r6428r6429
26022602   ROM_LOAD( "kq1-cg7.u21", 0xc00000, 0x200000, CRC(9f48382c) SHA1(80dfc33a55123b5d3cdb3ed97b43a527f0254d61) )
26032603   ROM_LOAD( "kq1-cg5.u17", 0xe00000, 0x200000, CRC(a4bc4516) SHA1(0eb11fa54d16bba1b96f9dd943a68949a3bb9a2f) )
26042604
2605   ROM_REGION( 0x300000, "x1", 0 )   /* Samples */
2605   ROM_REGION( 0x300000, "x1snd", 0 )   /* Samples */
26062606   /* Leave 1MB empty (addressable by the chip) */
26072607   ROM_LOAD( "kq1-snd.u32", 0x100000, 0x200000, CRC(8ca1b449) SHA1(f54096fb5400843af4879135c96760485b6cb319) )
26082608ROM_END
r6428r6429
26242624   ROM_LOAD( "kqs1-cg7.u21", 0x1200000, 0x200000, CRC(2c977904) SHA1(2589447f2471cdc414266b34aff552044c680d93) )
26252625   ROM_LOAD( "kqs1-cg3.u17", 0x1400000, 0x400000, CRC(de3b2191) SHA1(d7d6ea07b665cfd834747d3c0776b968ce03bc6a) )
26262626
2627   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2627   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
26282628   /* Leave 1MB empty (addressable by the chip) */
26292629   ROM_LOAD( "kqs1-snd.u32", 0x100000, 0x400000, CRC(792a6b49) SHA1(341b4e8f248b5032217733bada32e353c67e3888) )
26302630ROM_END
r6428r6429
26402640   ROM_LOAD( "kuc-u40.i00", 0x800000, 0x400000, CRC(7e49a2cf) SHA1(d24683addbc54515c33fb620ac500e6702bd9e17) )
26412641   ROM_LOAD( "kuc-u41.i00", 0xc00000, 0x400000, CRC(2febf19b) SHA1(8081ac590c0463529777b5e4817305a1a6f6ea41) )
26422642
2643   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2643   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
26442644   /* Leave 1MB empty (addressable by the chip) */
26452645   ROM_LOAD( "kus-u18.i00", 0x100000, 0x400000, CRC(e2b1dfcf) SHA1(fb0b8be119531a1a27efa46ed7b86b05a37ed585) )
26462646ROM_END
r6428r6429
26562656   ROM_LOAD( "u40.bin", 0x800000, 0x400000, CRC(dc9e0a96) SHA1(c2c8ccf9039ee0e179b08fdd2d37f29899349cda) )
26572657   ROM_FILL(            0xc00000, 0x400000, 0 )   /* 6bpp instead of 8bpp */
26582658
2659   ROM_REGION( 0x300000, "x1", 0 )   /* Samples */
2659   ROM_REGION( 0x300000, "x1snd", 0 )   /* Samples */
26602660   /* Leave 1MB empty (addressable by the chip) */
26612661   ROM_LOAD( "u18.bin", 0x100000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
26622662ROM_END
r6428r6429
26722672   ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
26732673   ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
26742674
2675   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2675   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
26762676   /* Leave 1MB empty (addressable by the chip) */
26772677   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
26782678ROM_END
r6428r6429
26882688   ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
26892689   ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
26902690
2691   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2691   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
26922692   /* Leave 1MB empty (addressable by the chip) */
26932693   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
26942694ROM_END
r6428r6429
27042704   ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
27052705   ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
27062706
2707   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2707   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27082708   /* Leave 1MB empty (addressable by the chip) */
27092709   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
27102710ROM_END
r6428r6429
27222722   ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
27232723   ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
27242724
2725   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2725   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27262726   /* Leave 1MB empty (addressable by the chip) */
27272727   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
27282728ROM_END
r6428r6429
27382738   ROM_LOAD( "asx903m01.u40", 0x1000000, 0x800000, CRC(5f86c322) SHA1(5a72adb99eea176199f172384cb051e2b045ab94) )
27392739   ROM_LOAD( "asx904m01.u41", 0x1800000, 0x800000, CRC(c77e0b66) SHA1(0eba30e62e4bd38c198fa6cb69fb94d002ded77a) )
27402740
2741   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2741   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27422742   /* Leave 1MB empty (addressable by the chip) */
27432743   ROM_LOAD( "asx905m01.u18", 0x100000, 0x400000, CRC(8d9dd9a9) SHA1(1fc2f3688d2c24c720dca7357bca6bf5f4016c53) )
27442744ROM_END
r6428r6429
27542754   ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
27552755   ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
27562756
2757   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2757   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27582758   /* Leave 1MB empty (addressable by the chip) */
27592759   ROM_LOAD( "as1005m01.u18", 0x100000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
27602760ROM_END
r6428r6429
27702770   ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
27712771   ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
27722772
2773   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2773   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27742774   /* Leave 1MB empty (addressable by the chip) */
27752775   ROM_LOAD( "as1005m01.u18", 0x100000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
27762776ROM_END
r6428r6429
27862786   ROM_LOAD( "as1103m01.u40", 0x1000000, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) )
27872787   ROM_LOAD( "as1104m01.u41", 0x1800000, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) )
27882788
2789   ROM_REGION( 0x500000, "x1", 0 )   /* Samples */
2789   ROM_REGION( 0x500000, "x1snd", 0 )   /* Samples */
27902790   /* Leave 1MB empty (addressable by the chip) */
27912791   ROM_LOAD( "as1105m01.u18", 0x100000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) )
27922792ROM_END
src/mame/drivers/flkatck.c
r6428r6429
126126   AM_RANGE(0x9006, 0x9006) AM_WRITENOP                              /* ??? */
127127   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                        /* soundlatch_r */
128128   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)   /* 007232 registers */
129   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         /* YM2151 */
129   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)         /* YM2151 */
130130ADDRESS_MAP_END
131131
132132
r6428r6429
237237   /* sound hardware */
238238   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
239239
240   MDRV_SOUND_ADD("ym", YM2151, 3579545)
240   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
241241   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
242242   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
243243
src/mame/drivers/contra.c
r6428r6429
108108
109109static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
110110   AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_r)
111   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
111   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
112112   AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */
113113   AM_RANGE(0x6000, 0x67ff) AM_RAM
114114   AM_RANGE(0x8000, 0xffff) AM_ROM
r6428r6429
216216   /* sound hardware */
217217   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
218218
219   MDRV_SOUND_ADD("ym", YM2151, 3582071)
219   MDRV_SOUND_ADD("ymsnd", YM2151, 3582071)
220220   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
221221   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
222222MACHINE_DRIVER_END
src/mame/drivers/zn.c
r6428r6429
12141214   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10))   /* Fallthrough */
12151215   AM_RANGE(0x0000, 0x7fff) AM_ROM
12161216   AM_RANGE(0xc000, 0xdfff) AM_RAM
1217   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
1217   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
12181218   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
12191219   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
12201220   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
12421242   MDRV_MACHINE_RESET( coh1000ta )
12431243   MDRV_NVRAM_HANDLER( coh1000ta )
12441244
1245   MDRV_SOUND_ADD("ym", YM2610B, 16000000/2)
1245   MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2)
12461246   MDRV_SOUND_CONFIG(ym2610_config)
12471247   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
12481248   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
14411441{
14421442   if (state)
14431443   {
1444       psx_irq_set(device->machine, PSX_IRQ_EXTCD);
1444       psx_irq_set(device->machine, 0x400);
14451445   }
14461446}
14471447
r6428r6429
20082008{
20092009   if (state)
20102010   {
2011       psx_irq_set(device->machine, PSX_IRQ_EXTCD);
2011       psx_irq_set(device->machine, 0x400);
20122012   }
20132013}
20142014
r6428r6429
21112111static WRITE32_HANDLER( nbajamex_80_w )
21122112{
21132113   verboselog( space->machine, 0, "nbajamex_80_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
2114   psx_irq_set(space->machine, PSX_IRQ_EXTCD);
2114   psx_irq_set(space->machine, 0x400);
21152115}
21162116
21172117static READ32_HANDLER( nbajamex_08_r )
r6428r6429
39063906   ROM_LOAD( "e32-07.22",           0x0000000, 0x004000, CRC(adf3feb5) SHA1(bae5bc3fad99a92a3492be1b775dab861007eb3b) )
39073907   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
39083908
3909   ROM_REGION( 0x400000, "ym", 0 )
3909   ROM_REGION( 0x400000, "ymsnd", 0 )
39103910   ROM_LOAD( "e32-04.15",           0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) )
39113911ROM_END
39123912
r6428r6429
39243924   ROM_LOAD( "e32-10.22",           0x0000000, 0x004000, CRC(adf3feb5) SHA1(bae5bc3fad99a92a3492be1b775dab861007eb3b) )
39253925   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
39263926
3927   ROM_REGION( 0x400000, "ym", 0 )
3927   ROM_REGION( 0x400000, "ymsnd", 0 )
39283928   ROM_LOAD( "e32-04.15",           0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) )
39293929ROM_END
39303930
r6428r6429
39423942   ROM_LOAD( "e22-07.22",           0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) )
39433943   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
39443944
3945   ROM_REGION( 0x200000, "ym", 0 )
3945   ROM_REGION( 0x200000, "ymsnd", 0 )
39463946   ROM_LOAD( "e22-01.15",           0x000000,  0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
39473947ROM_END
39483948
r6428r6429
39603960   ROM_LOAD( "e22-07.22",           0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) )
39613961   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
39623962
3963   ROM_REGION( 0x200000, "ym", 0 )
3963   ROM_REGION( 0x200000, "ymsnd", 0 )
39643964   ROM_LOAD( "e22-01.15",           0x000000,  0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
39653965ROM_END
39663966
r6428r6429
39783978   ROM_LOAD( "e22-07.22",           0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) )
39793979   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
39803980
3981   ROM_REGION( 0x200000, "ym", 0 )
3981   ROM_REGION( 0x200000, "ymsnd", 0 )
39823982   ROM_LOAD( "e22-01.15",           0x000000,  0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) )
39833983ROM_END
39843984
r6428r6429
40304030   ROM_LOAD( "e18-09.22",           0x0000000, 0x004000, CRC(bb5a5319) SHA1(0bb700cafc157d3af663cc9bebb8167487ff2852) )
40314031   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
40324032
4033   ROM_REGION( 0x200000, "ym", 0 )
4033   ROM_REGION( 0x200000, "ymsnd", 0 )
40344034   ROM_LOAD( "e18-01.15",           0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
40354035ROM_END
40364036
r6428r6429
40494049   ROM_LOAD( "e18-09.22",           0x0000000, 0x004000, CRC(bb5a5319) SHA1(0bb700cafc157d3af663cc9bebb8167487ff2852) )
40504050   ROM_CONTINUE(                    0x0010000, 0x01c000 ) /* banked stuff */
40514051
4052   ROM_REGION( 0x200000, "ym", 0 )
4052   ROM_REGION( 0x200000, "ymsnd", 0 )
40534053   ROM_LOAD( "e18-01.15",           0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) )
40544054ROM_END
40554055
src/mame/drivers/balsente.c
r6428r6429
589589   PORT_DIPSETTING(    0x18, "5 Coins = 2 Bonus" )
590590   PORT_DIPSETTING(    0x1c, "5 Coins = 3 Bonus" )
591591   PORT_DIPNAME( 0x20, 0x00, "Left Coin Mech" )   PORT_DIPLOCATION("H1:6")
592   PORT_DIPSETTING(    0x00, "x1" )
592   PORT_DIPSETTING(    0x00, "x1snd" )
593593   PORT_DIPSETTING(    0x20, "x2" )
594594   PORT_DIPNAME( 0xc0, 0x00, "Right Coin Mech" )   PORT_DIPLOCATION("H1:7,8")
595   PORT_DIPSETTING(    0x00, "x1" )
595   PORT_DIPSETTING(    0x00, "x1snd" )
596596   PORT_DIPSETTING(    0x40, "x4" )
597597   PORT_DIPSETTING(    0x80, "x5" )
598598   PORT_DIPSETTING(    0xc0, "x6" )
src/mame/drivers/terracre.c
r6428r6429
248248
249249static ADDRESS_MAP_START( sound_3526_io_map, ADDRESS_SPACE_IO, 8 )
250250   ADDRESS_MAP_GLOBAL_MASK(0xff)
251   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3526_w)
251   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_w)
252252   AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_signed_w)
253253   AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_signed_w)
254254   AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r)
r6428r6429
568568
569569   MDRV_SPEAKER_STANDARD_MONO("mono")
570570
571   MDRV_SOUND_ADD("ym", YM3526, 4000000)
571   MDRV_SOUND_ADD("ymsnd", YM3526, 4000000)
572572   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
573573
574574   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
605605
606606   MDRV_SPEAKER_STANDARD_MONO("mono")
607607
608   MDRV_SOUND_ADD("ym", YM3526, 4000000)
608   MDRV_SOUND_ADD("ymsnd", YM3526, 4000000)
609609   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
610610
611611   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/deco32.c
r6428r6429
957957
958958static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
959959   AM_RANGE(0x000000, 0x00ffff) AM_ROM
960   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
960   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
961961   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
962962   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
963963   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
987987static ADDRESS_MAP_START( nslasher_sound, ADDRESS_SPACE_PROGRAM, 8 )
988988   AM_RANGE(0x0000, 0x7fff) AM_ROM
989989   AM_RANGE(0x8000, 0x87ff) AM_RAM
990   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
990   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
991991   AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
992992   AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
993993   AM_RANGE(0xd000, 0xd000) AM_READ(latch_r)
r6428r6429
17011701   /* sound hardware */
17021702   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17031703
1704   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1704   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
17051705   MDRV_SOUND_CONFIG(ym2151_config)
17061706   MDRV_SOUND_ROUTE(0, "lspeaker", 0.42)
17071707   MDRV_SOUND_ROUTE(1, "rspeaker", 0.42)
r6428r6429
17471747   /* sound hardware */
17481748   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17491749
1750   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1750   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
17511751   MDRV_SOUND_CONFIG(ym2151_config)
17521752   MDRV_SOUND_ROUTE(0, "lspeaker", 0.42)
17531753   MDRV_SOUND_ROUTE(1, "rspeaker", 0.42)
r6428r6429
17931793   /* sound hardware */
17941794   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17951795
1796   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1796   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
17971797   MDRV_SOUND_CONFIG(ym2151_config)
17981798   MDRV_SOUND_ROUTE(0, "lspeaker", 0.42)
17991799   MDRV_SOUND_ROUTE(1, "rspeaker", 0.42)
r6428r6429
18411841   /* sound hardware */
18421842   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18431843
1844   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1844   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
18451845   MDRV_SOUND_CONFIG(ym2151_config)
18461846   MDRV_SOUND_ROUTE(0, "lspeaker", 0.42)
18471847   MDRV_SOUND_ROUTE(1, "rspeaker", 0.42)
r6428r6429
18941894   /* sound hardware */
18951895   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18961896
1897   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1897   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
18981898   MDRV_SOUND_CONFIG(ym2151_config)
18991899   MDRV_SOUND_ROUTE(0, "lspeaker", 0.42)
19001900   MDRV_SOUND_ROUTE(1, "rspeaker", 0.42)
r6428r6429
19841984   /* sound hardware */
19851985   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19861986
1987   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
1987   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
19881988   MDRV_SOUND_CONFIG(ym2151_interface_nslasher)
19891989   MDRV_SOUND_ROUTE(0, "lspeaker", 0.40)
19901990   MDRV_SOUND_ROUTE(1, "rspeaker", 0.40)
src/mame/drivers/drw80pkr.c
r6428r6429
1010
1111    Name:    Draw 80 Poker
1212    Company: IGT - International Gaming Technology
13    Year:    1983
13    Year:    1982
1414
1515    Hardware:
1616
r6428r6429
2222
2323    This is one of the first video machines produced by IGT.  Originally, the
2424    company was called SIRCOMA and was founded in 1979.  It became a public
25    company in 1981 and changed its name to IGT.  The motherboard has a date
26    of 1982 (c) IGT, but the game rom labels and backglass are dated 1983.
25    company in 1981 and changed its name to IGT.
2726
2827***********************************************************************************/
2928#include "driver.h"
r6428r6429
3433
3534static tilemap *bg_tilemap;
3635
37static UINT8 p1, p2, prog, bus;
36static UINT8 t0, t1, p0, p1, p2, prog, bus;
3837
39static UINT8 *pkr_io_ram;
4038static UINT8 active_bank = 0;
4139
40static UINT8 pkr_io_ram[0x100];
4241static UINT16 video_ram[0x0400];
4342static UINT8 color_ram[0x0400];
4443
r6428r6429
4746* Write Handlers *
4847******************/
4948
49static WRITE8_HANDLER( t0_w )
50{
51   t0 = data;
52}
53
54static WRITE8_HANDLER( t1_w )
55{
56   t1 = data;
57}
58
59static WRITE8_HANDLER( p0_w )
60{
61   p0 = data;
62}
63
5064static WRITE8_HANDLER( p1_w )
5165{
5266   p1 = data;
r6428r6429
6478   // Bankswitch Program Memory
6579   if (prog == 0x01)
6680   {
67      active_bank++;
68      if (active_bank == 2)
69         active_bank = 0;
81      active_bank = active_bank ^ 0x01;
7082
7183      memory_set_bank(space->machine, 1, active_bank);
7284   }
r6428r6429
7991
8092static WRITE8_HANDLER( drw80pkr_io_w )
8193{
82   static UINT16 n_offs;
83   static UINT16 n_data;
84   static UINT16 add;
94   UINT16 n_offs;
8595
86
87   if (p2 == 0x3f) // write cg address
96   if (p2 == 0x3f || p2 == 0x7f)
8897   {
89      if (p1 == 0xbf || p1 == 0x3f)
90      {
91         n_data = data;
92      }
93      if (p1 == 0x7f && data != 0x0f)
94      {
95         n_data = data + 0x100;
96      }
98      n_offs = ((p1 & 0xc0) << 2 ) + offset;
9799
98      add = ((p1 & 0xc0) << 2);
99      if (p1 == 0x3f && offset >= 0xf0)
100      if (p2 == 0x3f)
100101      {
101         add = 0x200;
102         video_ram[n_offs] = data; // low address
103      } else {
104         color_ram[n_offs] = data & 0x0f; // color palette
105         video_ram[n_offs] += ((data & 0xf0) << 4 ); // high address
102106      }
103      n_offs = (add) + (0xff-offset);
104107
105      video_ram[n_offs] = n_data;
106
107108      tilemap_mark_tile_dirty(bg_tilemap, n_offs);
108109   }
109110
110   if (p2 == 0x7f) // write palette
111   {
112      n_offs = ((p1 & 0xc0) << 2 ) + (0xff-offset);
113
114      color_ram[n_offs] = 0;//data & 0x0f;
115
116      if (data < 0x10)
117         video_ram[n_offs] = video_ram[n_offs] + 0x100;
118
119      tilemap_mark_tile_dirty(bg_tilemap, n_offs);
120   }
121
122111   // ay8910 control port
123112   if (p1 == 0xfc && p2 == 0xff && offset == 0x00)
124      ay8910_address_w(devtag_get_device(space->machine, "ay"), 0, data);
113      ay8910_address_w(devtag_get_device(space->machine, "aysnd"), 0, data);
125114
126115   // ay8910_write_port_0_w
127116   if (p1 == 0xfe && p2 == 0xff && offset == 0x00)
128      ay8910_data_w(devtag_get_device(space->machine, "ay"), 0, data);
117      ay8910_data_w(devtag_get_device(space->machine, "aysnd"), 0, data);
129118
130119   // CRTC Register
131120   // R0 = 0x1f(31)    Horizontal Total
r6428r6429
152141   // CRTC Address
153142    //if (p1 == 0xff && p2 == 0xd7)
154143
155   pkr_io_ram[offset] = data;
144   if (p2 == 0xfb) {
145      pkr_io_ram[offset] = data;
146   }
156147}
157148
158149/****************
159150* Read Handlers *
160151****************/
161152
153static READ8_HANDLER( t0_r )
154{
155    return t0;
156}
157
158static READ8_HANDLER( t1_r )
159{
160    return t1;
161}
162
163static READ8_HANDLER( p0_r )
164{
165    return p0;
166}
167
162168static READ8_HANDLER( p1_r )
163169{
164170    return p1;
r6428r6429
176182
177183static READ8_HANDLER( drw80pkr_io_r )
178184{
179    return pkr_io_ram[offset];
185   UINT8 ret;
186   UINT16 kbdin;
187
188   ret = 0x00;
189
190   if (p2 == 0x3b)
191   {
192      // unknown
193   }
194
195   if (p2 == 0x7b)
196   {
197      ret = pkr_io_ram[offset];
198   }
199
200   if (p2 == 0xf7)
201   {
202      // unknown
203   }
204
205   if (p2 == 0xfb)
206   {
207      ret = pkr_io_ram[offset];
208   }
209
210   if (p2 == 0xff)
211   {
212      // TODO: Get Input Port Values
213      kbdin = ((input_port_read(space->machine, "IN1") & 0xaf ) << 8) + input_port_read(space->machine, "IN0");
214
215      switch (kbdin)
216      {
217         // The following is very incorrect, but does allow you to
218         // play slightly with very messed up hold buttons etc.
219         //
220         // Open/Close the door with 'O'
221         // Press '5' (twice) with door open to play credit
222         // Press '1' to draw/deal
223         //
224         case 0x0000: ret = 0x00; break;
225         case 0x0001: ret = 0x01; break;   /* Door */
226         case 0x4000: ret = 0x00; break;
227         case 0x8000: ret = 0x00; break;   /* Hand Pay */
228         case 0x0002: ret = 0x00; break;   /* Books */
229         case 0x0004: ret = 0x0e; break;   /* Coin In */
230         case 0x0008: ret = 0x0d; break;   /* Start */
231         case 0x0010: ret = 0x00; break;   /* Discard */
232         case 0x0020: ret = 0x00; break;   /* Cancel */
233         case 0x0040: ret = 0x01; break;   /* Hold 1 */
234         case 0x0080: ret = 0x02; break;   /* Hold 2 */
235         case 0x0100: ret = 0x03; break;   /* Hold 3 */
236         case 0x0200: ret = 0x04; break;   /* Hold 4 */
237         case 0x0400: ret = 0x05; break;   /* Hold 5 */
238         case 0x0800: ret = 0x00; break;   /* Bet */
239      }
240   }
241
242    return ret;
180243}
181244
182245
r6428r6429
206269
207270static PALETTE_INIT( drw80pkr )
208271{
209/*  prom bits
210    7654 3210
211    ---- -xxx   red component.
212    --xx x---   green component.
213    xx-- ----   blue component.
214*/
215   int i;
272   int j;
216273
217   for (i = 0;i < machine->config->total_colors;i++)
274   for (j = 0; j < machine->config->total_colors; j++)
218275   {
219      int bit0, bit1, bit2, r, g, b;
276      int r, g, b, tr, tg, tb, i;
220277
278      i = (color_prom[j] >> 3) & 0x01;
279      //i = color_prom[j];
280
221281      /* red component */
222      bit0 = (~color_prom[i] >> 0) & 0x01;
223      bit1 = (~color_prom[i] >> 1) & 0x01;
224      bit2 = (~color_prom[i] >> 2) & 0x01;
225      r = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0;
282      tr = 0xf0 - (0xf0 * ((color_prom[j] >> 0) & 0x01));
283      r = tr - (i * (tr / 5));
226284
227285      /* green component */
228      bit0 = (~color_prom[i] >> 3) & 0x01;
229      bit1 = (~color_prom[i] >> 4) & 0x01;
230      bit2 = (~color_prom[i] >> 5) & 0x01;
231      g = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0;
286      tg = 0xf0 - (0xf0 * ((color_prom[j] >> 1) & 0x01));
287      g = tg - (i * (tg / 5));
232288
233289      /* blue component */
234      bit0 = (~color_prom[i] >> 6) & 0x01;
235      bit1 = (~color_prom[i] >> 7) & 0x01;
236      bit2 = 0;
237      b = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0;
290      tb = 0xf0 - (0xf0 * ((color_prom[j] >> 2) & 0x01));
291      b = tb - (i * (tb / 5));
238292
239      palette_set_color(machine, i, MAKE_RGB(r, g, b));
293      palette_set_color(machine, j, MAKE_RGB(r, g, b));
240294   }
241295}
242296
r6428r6429
250304   8,8,    /* 8x8 characters */
251305   RGN_FRAC(1,2), /* 512 characters */
252306   2,  /* 2 bitplanes */
253   { RGN_FRAC(1,2), 0 },
307   { 0, RGN_FRAC(1,2) },
254308   { STEP8(0,1) },
255309   { STEP8(0,8) },
256310   8*8
r6428r6429
285339ADDRESS_MAP_END
286340
287341static ADDRESS_MAP_START( drw80pkr_io_map, ADDRESS_SPACE_IO, 8 )
288   AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w) AM_BASE(&pkr_io_ram)
289   AM_RANGE(MCS48_PORT_T1,   MCS48_PORT_T1) AM_RAM
342   AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w)
343   AM_RANGE(MCS48_PORT_T0,   MCS48_PORT_T0) AM_READWRITE(t0_r, t0_w)
344   AM_RANGE(MCS48_PORT_T1,   MCS48_PORT_T1) AM_READWRITE(t1_r, t1_w)
345   AM_RANGE(MCS48_PORT_P0,   MCS48_PORT_P0) AM_READWRITE(p0_r, p0_w)
290346   AM_RANGE(MCS48_PORT_P1,   MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w)
291347   AM_RANGE(MCS48_PORT_P2,   MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w)
292    AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE(prog_w)
348   AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE(prog_w)
293349    AM_RANGE(MCS48_PORT_BUS,  MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w)
294350ADDRESS_MAP_END
295351
r6428r6429
299355
300356static INPUT_PORTS_START( drw80pkr )
301357   // Unknown at this time
358   // These are temporary buttons for testing only
359   PORT_START("IN0")
360   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) PORT_TOGGLE
361   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books")
362   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
363   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start")
364   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Discard") PORT_CODE(KEYCODE_2)
365   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_CANCEL )
366   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 )
367   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 )
368
369   PORT_START("IN1")
370   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 )
371   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 )
372   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 )
373   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
374   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H)
375   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT)
376   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
377   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
302378INPUT_PORTS_END
303379
304380/*************************
r6428r6429
331407   // sound hardware
332408   MDRV_SPEAKER_STANDARD_MONO("mono")
333409
334   MDRV_SOUND_ADD("ay", AY8912, 20000000/12)
410   MDRV_SOUND_ADD("aysnd", AY8912, 20000000/12)
335411   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
336412MACHINE_DRIVER_END
337413
r6428r6429
341417
342418ROM_START( drw80pkr )
343419   ROM_REGION( 0x2000, "maincpu", 0 )
420   ROM_LOAD( "pm0.u81",   0x0000, 0x1000, CRC(73223555) SHA1(229999ec00a1353f0d4928c65c8975079060c5af) )
421   ROM_LOAD( "pm1.u82",   0x1000, 0x1000, CRC(f8158f2b) SHA1(da3b30cfd49cd0e8a48d78fd3f82b2b4ab33670c) )
422
423   ROM_REGION( 0x002000, "gfx1", 0 )
424   ROM_LOAD( "cg0-a.u74",    0x0000, 0x1000, CRC(0eefe598) SHA1(ed10aac345b10e35fb15babdd3ac30ebe2b8fc0f) )
425   ROM_LOAD( "cg1-a.u76",    0x1000, 0x1000, CRC(522a96d0) SHA1(48f855a132413493353fbf6a44a1feb34ae6726d) )
426
427   ROM_REGION( 0x100, "proms", 0 )
428   ROM_LOAD( "cap13.u92", 0x0000, 0x0100, CRC(be67a8d9) SHA1(24b8cd19a5ec09779a737f6fc8c07b44f1226c8f) )
429ROM_END
430
431ROM_START( drw80pk2 )
432   ROM_REGION( 0x2000, "maincpu", 0 )
344433   ROM_LOAD( "pm0.u81",   0x0000, 0x1000, CRC(0f3e97d2) SHA1(aa9e4015246284f32435d7320de667e075412e5b) )
345434   ROM_LOAD( "pm1.u82",   0x1000, 0x1000, CRC(5a6ad467) SHA1(0128bd70b65244a0f68031d5f451bf115eeb7609) )
346435
347
348436   ROM_REGION( 0x002000, "gfx1", 0 )
349437   ROM_LOAD( "cg0-a.u74",    0x0000, 0x1000, CRC(97f5eb92) SHA1(f6c7bb42ccef8a78e8d56104ad942ae5b8e5b0df) )
350438   ROM_LOAD( "cg1-a.u76",    0x1000, 0x1000, CRC(2a3a750d) SHA1(db6183d11b2865b011c3748dc472cf5858dde78f) )
351439
352   ROM_REGION( 0x100, "proms", 0 ) // WRONG CAP
353   ROM_LOAD( "cap13.u92", 0x0000, 0x0100, CRC(42d6e973) SHA1(5c2983d5c80333ca45033070a2296fe58c339ee1) )
440   ROM_REGION( 0x100, "proms", 0 )
441   ROM_LOAD( "cap13.u92", 0x0000, 0x0100, CRC(be67a8d9) SHA1(24b8cd19a5ec09779a737f6fc8c07b44f1226c8f) )
354442ROM_END
355443
356
357444/*************************
358445*      Game Drivers      *
359446*************************/
360447
361/*    YEAR  NAME      PARENT  MACHINE   INPUT     INIT      ROT    COMPANY                                  FULLNAME              FLAGS   */
362GAME( 1983, drw80pkr, 0,      drw80pkr, drw80pkr, drw80pkr, ROT0,  "IGT - International Gaming Technology", "Draw 80 Poker",      GAME_NOT_WORKING )
448/*    YEAR  NAME      PARENT  MACHINE   INPUT     INIT      ROT    COMPANY                                  FULLNAME                FLAGS   */
449GAME( 1982, drw80pkr, 0,      drw80pkr, drw80pkr, drw80pkr, ROT0,  "IGT - International Gaming Technology", "Draw 80 Poker",        GAME_NOT_WORKING )
450GAME( 1983, drw80pk2, 0,      drw80pkr, drw80pkr, drw80pkr, ROT0,  "IGT - International Gaming Technology", "Draw 80 Poker - Minn", GAME_NOT_WORKING )
src/mame/drivers/superdq.c
r6428r6429
186186   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
187187   AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1")
188188   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2")
189   AM_RANGE(0x04, 0x04) AM_READ(superdq_ld_r) AM_DEVWRITE("sn", sn76496_w)
189   AM_RANGE(0x04, 0x04) AM_READ(superdq_ld_r) AM_DEVWRITE("snsnd", sn76496_w)
190190   AM_RANGE(0x08, 0x08) AM_WRITE(superdq_io_w)
191191   AM_RANGE(0x0c, 0x0d) AM_NOP /* HD46505S */
192192ADDRESS_MAP_END
r6428r6429
322322   /* sound hardware */
323323   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
324324
325   MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK/8)
325   MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/8)
326326   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.8)
327327
328328   MDRV_SOUND_ADD("ldsound", LASERDISC, 0)
src/mame/drivers/tomcat.c
r6428r6429
288288
289289static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
290290   AM_RANGE(0x0000, 0x1fff) AM_RAM
291   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
291   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
292292   AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w)
293293   AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG
294294   AM_RANGE(0x5000, 0x507f) AM_RAM   // 6532 ram
r6428r6429
418418   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
419419   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
420420
421   MDRV_SOUND_ADD("ym", YM2151, XTAL_14_31818MHz / 4)
421   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz / 4)
422422   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
423423   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
424424MACHINE_DRIVER_END
src/mame/drivers/shangkid.c
r6428r6429
324324
325325static ADDRESS_MAP_START( chinhero_bbx_portmap, ADDRESS_SPACE_IO, 8 )
326326   ADDRESS_MAP_GLOBAL_MASK(0xff)
327   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
327   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
328328ADDRESS_MAP_END
329329
330330static ADDRESS_MAP_START( shangkid_bbx_portmap, ADDRESS_SPACE_IO, 8 )
331331   ADDRESS_MAP_GLOBAL_MASK(0xff)
332   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
332   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
333333ADDRESS_MAP_END
334334
335335/***************************************************************************************/
r6428r6429
414414   MDRV_SOUND_ADD("dac", DAC, 0)
415415   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
416416
417   MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12) /* verified on pcb */
417   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12) /* verified on pcb */
418418   MDRV_SOUND_CONFIG(chinhero_ay8910_interface)
419419   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
420420MACHINE_DRIVER_END
r6428r6429
439439   /* video hardware */
440440   MDRV_GFXDECODE(shangkid)
441441
442   MDRV_SOUND_MODIFY("ay")
442   MDRV_SOUND_MODIFY("aysnd")
443443   MDRV_SOUND_CONFIG(shangkid_ay8910_interface)
444444MACHINE_DRIVER_END
445445
r6428r6429
463463static ADDRESS_MAP_START( dynamski_portmap, ADDRESS_SPACE_IO, 8 )
464464   ADDRESS_MAP_GLOBAL_MASK(0xff)
465465   /* ports are reversed */
466   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_data_address_w)
466   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_data_address_w)
467467ADDRESS_MAP_END
468468
469469static MACHINE_DRIVER_START( dynamski )
r6428r6429
491491   /* sound hardware */
492492   MDRV_SPEAKER_STANDARD_MONO("mono")
493493
494   MDRV_SOUND_ADD("ay", AY8910, 2000000)
494   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
495495   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
496496MACHINE_DRIVER_END
497497
src/mame/drivers/norautp.c
r6428r6429
21832183
21842184/* The following ones are 'Draw Poker Hi-Lo', running in a i8080a based hardware */
21852185GAME(  1983, dphl,     0,       dphl,     norautp,  dphl,     ROT0, "M. Kramer Manufacturing.",  "Draw Poker Hi-Lo (M.Kramer)",  GAME_NOT_WORKING )
2186GAME(  1983, dphla,    0,       dphla,    norautp,  dphla,    ROT0, "Unknown",                   "Draw Poker Hi-Lo (Alt)",       GAME_NOT_WORKING )
2186GAME(  1983, dphla,    0,       dphla,    norautp,  dphla,    ROT0, "<unknown>",                 "Draw Poker Hi-Lo (Alt)",       GAME_NOT_WORKING )
21872187
21882188GAME(  1983, gtipoker, 0,       dphl,     norautp,  gtipoker, ROT0, "GTI Inc",                   "GTI Poker",                    GAME_NOT_WORKING )
2189GAME(  1983, dphljp,   0,       dphl,     norautp,  0,        ROT0, "Unknown",                   "Draw Poker Hi-Lo (Japanese)",  GAME_NOT_WORKING )
2189GAME(  1983, dphljp,   0,       dphl,     norautp,  0,        ROT0, "<unknown>",                 "Draw Poker Hi-Lo (Japanese)",  GAME_NOT_WORKING )
21902190GAME(  1983, smshilo,  0,       dphlnv,   norautp,  0,        ROT0, "SMS Manufacturing Corp.",   "Hi-Lo Double Up Joker Poker ", GAME_NOT_WORKING )
21912191GAME(  1993, tpoker2,  0,       dphltest, norautp,  0,        ROT0, "Micro Manufacturing, Inc.", "Turbo Poker 2",                GAME_NOT_WORKING )
src/mame/drivers/segaybd.c
r6428r6429
460460static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
461461   ADDRESS_MAP_UNMAP_HIGH
462462   ADDRESS_MAP_GLOBAL_MASK(0xff)
463   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
463   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
464464   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
465465ADDRESS_MAP_END
466466
r6428r6429
858858   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
859859   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
860860   PORT_DIPNAME( 0x04, 0x04, "Coin #1 multiplier" ) PORT_DIPLOCATION("SWA:3")
861   PORT_DIPSETTING(    0x04, "x1" )
861   PORT_DIPSETTING(    0x04, "x1snd" )
862862   PORT_DIPSETTING(    0x00, "x2" )
863863   PORT_DIPNAME( 0x18, 0x18, "Coin #2 multiplier" ) PORT_DIPLOCATION("SWA:4,5")
864   PORT_DIPSETTING(    0x18, "x1" )
864   PORT_DIPSETTING(    0x18, "x1snd" )
865865   PORT_DIPSETTING(    0x10, "x4" )
866866   PORT_DIPSETTING(    0x08, "x5" )
867867   PORT_DIPSETTING(    0x00, "x6" )
r6428r6429
999999   /* sound hardware */
10001000   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10011001
1002   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/8)
1002   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/8)
10031003   MDRV_SOUND_CONFIG(ym2151_config)
10041004   MDRV_SOUND_ROUTE(0, "lspeaker", 0.43)
10051005   MDRV_SOUND_ROUTE(1, "rspeaker", 0.43)
src/mame/drivers/cclimber.c
r6428r6429
381381
382382static ADDRESS_MAP_START( cclimber_portmap, ADDRESS_SPACE_IO, 8 )
383383   ADDRESS_MAP_GLOBAL_MASK(0xff)
384   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ay", ay8910_address_data_w)
385   AM_RANGE(0x0c, 0x0c) AM_DEVREAD("ay", ay8910_r)
384   AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_address_data_w)
385   AM_RANGE(0x0c, 0x0c) AM_DEVREAD("aysnd", ay8910_r)
386386ADDRESS_MAP_END
387387
388388static ADDRESS_MAP_START( yamato_portmap, ADDRESS_SPACE_IO, 8 )
r6428r6429
10061006   /* sound hardware */
10071007   MDRV_SPEAKER_STANDARD_MONO("mono")
10081008
1009   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/3/2/2)
1009   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/3/2/2)
10101010   MDRV_SOUND_CONFIG(cclimber_ay8910_interface)
10111011   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
10121012
r6428r6429
10791079static MACHINE_DRIVER_START( swimmer )
10801080
10811081   /* basic machine hardware */
1082   MDRV_CPU_ADD("maincpu", Z80, 3072000)   /* 3.072 MHz */
1082    MDRV_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6)    /* verified on pcb */
10831083   MDRV_CPU_PROGRAM_MAP(swimmer_map)
10841084   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
10851085
1086   MDRV_CPU_ADD("audiocpu", Z80,4000000/2)
1086    MDRV_CPU_ADD("audiocpu", Z80,XTAL_4MHz/2)  /* verified on pcb */
10871087   MDRV_CPU_PROGRAM_MAP(swimmer_audio_map)
10881088   MDRV_CPU_IO_MAP(swimmer_audio_portmap)
10891089   MDRV_CPU_PERIODIC_INT(nmi_line_pulse, (double)4000000/16384) /* IRQs are triggered by the main CPU */
10901090
10911091   /* video hardware */
10921092   MDRV_SCREEN_ADD("screen", RASTER)
1093   MDRV_SCREEN_REFRESH_RATE(60)
1093    MDRV_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */
10941094   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
10951095   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
10961096   MDRV_SCREEN_SIZE(32*8, 32*8)
r6428r6429
11051105
11061106   /* audio hardware */
11071107   MDRV_SPEAKER_STANDARD_MONO("mono")
1108   MDRV_SOUND_ADD("ay1", AY8910, 4000000/2)
1108    MDRV_SOUND_ADD("ay1", AY8910, XTAL_4MHz/2)  /* verified on pcb */
11091109   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
11101110
1111   MDRV_SOUND_ADD("ay2", AY8910, 4000000/2)
1111    MDRV_SOUND_ADD("ay2", AY8910, XTAL_4MHz/2)  /* verified on pcb */
11121112   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
11131113MACHINE_DRIVER_END
11141114
src/mame/drivers/forte2.c
r6428r6429
3737   ADDRESS_MAP_GLOBAL_MASK(0xff)
3838   AM_RANGE(0x98, 0x98) AM_READWRITE( TMS9928A_vram_r, TMS9928A_vram_w )
3939   AM_RANGE(0x99, 0x99) AM_READWRITE( TMS9928A_register_r, TMS9928A_register_w )
40   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ay", ay8910_address_data_w)
41   AM_RANGE(0xa2, 0xa2) AM_DEVREAD("ay", ay8910_r)
40   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
41   AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_r)
4242
4343//Ports a8-ab are originally for communicating with the i8255 PPI on MSX.
4444//( http://map.tni.nl/resources/msx_io_ports.php#ppi )
r6428r6429
137137
138138   /* sound hardware */
139139   MDRV_SPEAKER_STANDARD_MONO("mono")
140   MDRV_SOUND_ADD("ay", AY8910, (float)XTAL_3_579545MHz/2)
140   MDRV_SOUND_ADD("aysnd", AY8910, (float)XTAL_3_579545MHz/2)
141141   MDRV_SOUND_CONFIG(forte2_ay8910_interface)
142142   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
143143MACHINE_DRIVER_END
src/mame/drivers/aliens.c
r6428r6429
108108static ADDRESS_MAP_START( aliens_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
109109   AM_RANGE(0x0000, 0x7fff) AM_ROM                        /* ROM g04_b03.bin */
110110   AM_RANGE(0x8000, 0x87ff) AM_RAM                        /* RAM */
111   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
111   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
112112   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)            /* soundlatch_r */
113113   AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
114114ADDRESS_MAP_END
r6428r6429
219219   /* sound hardware */
220220   MDRV_SPEAKER_STANDARD_MONO("mono")
221221
222   MDRV_SOUND_ADD("ym", YM2151, 3579545)
222   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
223223   MDRV_SOUND_CONFIG(ym2151_config)
224224   MDRV_SOUND_ROUTE(0, "mono", 0.60)
225225   MDRV_SOUND_ROUTE(1, "mono", 0.60)
src/mame/drivers/88games.c
r6428r6429
113113   AM_RANGE(0x8000, 0x87ff) AM_RAM
114114   AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w)
115115   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
116   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
116   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
117117   AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w)
118118ADDRESS_MAP_END
119119
r6428r6429
252252   /* sound hardware */
253253   MDRV_SPEAKER_STANDARD_MONO("mono")
254254
255   MDRV_SOUND_ADD("ym", YM2151, 3579545)
255   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
256256   MDRV_SOUND_ROUTE(0, "mono", 0.75)
257257   MDRV_SOUND_ROUTE(1, "mono", 0.75)
258258
src/mame/drivers/ddenlovr.c
r6428r6429
16131613   AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r)                        // Video Chip
16141614
16151615   AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)// Sound
1616   AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1616   AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
16171617   AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
1618   AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1619   AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1618   AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
1619   AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
16201620   AM_RANGE(0x3003c2, 0x3003c3) AM_DEVWRITE("oki", quiz365_oki_bank1_w)
16211621   AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)               // Blitter irq acknowledge
16221622   AM_RANGE(0x3003cc, 0x3003cd) AM_DEVWRITE("oki", quiz365_oki_bank2_w)
r6428r6429
16671667   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)                              // ? must be 78 on startup (not necessary in ddlover)
16681668   AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
16691669   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)                        // Video Chip
1670   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1670   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
16711671   AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
1672   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1672   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
16731673   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
16741674   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
16751675   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
r6428r6429
17351735   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
17361736   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
17371737
1738   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1738   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
17391739   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r,   msm6242_w, 0x00ff)      // 6242RTC
1740   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1741   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1740   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
1741   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
17421742   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
17431743   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
17441744ADDRESS_MAP_END
r6428r6429
17731773   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
17741774   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
17751775
1776   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1776   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
17771777   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
1778   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1779   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1778   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
1779   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
17801780   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
17811781   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
17821782ADDRESS_MAP_END
r6428r6429
18471847   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)                                 // ? must be 78 on startup (not necessary in ddlover)
18481848   AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
18491849   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)                           // Video Chip
1850   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1850   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
18511851   AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
1852   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1852   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
18531853   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
18541854   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
18551855   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
r6428r6429
19091909   AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r)
19101910
19111911   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
1912   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
1912   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
19131913
19141914   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
19151915   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
r6428r6429
19441944
19451945   AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
19461946   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
1947   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
1947   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
19481948
19491949   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
19501950   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
r6428r6429
20702070   AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w)
20712071   AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r)   // Video Chip
20722072   AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w)
2073   AM_RANGE(0x68, 0x68) AM_DEVWRITE("ay", ddenlovr_select_w)
2073   AM_RANGE(0x68, 0x68) AM_DEVWRITE("aysnd", ddenlovr_select_w)
20742074   AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w)
20752075   AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0")
20762076   AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1")
r6428r6429
21002100   AM_RANGE(0x02, 0x02) AM_READ(SMH_NOP )      // read just before port 00
21012101   AM_RANGE(0x04, 0x04) AM_NOP               // read only once at the start
21022102   AM_RANGE(0x06, 0x06) AM_WRITENOP   // almost always 1, sometimes 0
2103   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym", ym2413_w)
2104   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay", ay8910_data_w)
2105   AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("ay", ay8910_address_w)
2103   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ymsnd", ym2413_w)
2104   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_data_w)
2105   AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_address_w)
21062106ADDRESS_MAP_END
21072107
21082108
r6428r6429
23902390   AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w)
23912391   AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w)
23922392   AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
2393   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2393   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
23942394   AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
23952395   AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
23962396ADDRESS_MAP_END
r6428r6429
24052405   AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
24062406   AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
24072407   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
2408   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2408   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
24092409   AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
24102410   AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
24112411   AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w)
r6428r6429
24432443   AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM")
24442444   AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r)
24452445   AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w)
2446   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2446   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
24472447   AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
24482448   AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
24492449ADDRESS_MAP_END
r6428r6429
25702570   AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4")
25712571   AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5")      // DSW 1-4 high bits
25722572   AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2573   AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ym", ym2413_w)
2573   AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym2413_w)
25742574   AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
2575   AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("ay", ay8910_address_data_w)
2575   AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_address_data_w)
25762576ADDRESS_MAP_END
25772577
25782578
r6428r6429
26782678   AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r)
26792679   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
26802680   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2681   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym", ym2413_w)
2682   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
2683   AM_RANGE(0x46, 0x46) AM_DEVWRITE("ay", ay8910_data_w)
2684   AM_RANGE(0x48, 0x48) AM_DEVWRITE("ay", ay8910_address_w)
2681   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ymsnd", ym2413_w)
2682   AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_r)
2683   AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_data_w)
2684   AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_address_w)
26852685   AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
26862686   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
26872687   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
r6428r6429
28432843   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
28442844   AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w)
28452845   AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
2846   AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym", ym2413_w)
2847   AM_RANGE(0x24, 0x24) AM_DEVREAD("ay", ay8910_r)
2848   AM_RANGE(0x26, 0x26) AM_DEVWRITE("ay", ay8910_data_w)
2849   AM_RANGE(0x28, 0x28) AM_DEVWRITE("ay", ay8910_address_w)
2846   AM_RANGE(0x22, 0x23) AM_DEVWRITE("ymsnd", ym2413_w)
2847   AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_r)
2848   AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_data_w)
2849   AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_address_w)
28502850   AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w)
28512851   AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w)
28522852   AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r)
r6428r6429
29592959   AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w)
29602960   AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r)
29612961   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2962   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ym", ym2413_w)
2963   AM_RANGE(0x84, 0x84) AM_DEVREAD("ay", ay8910_r)
2964   AM_RANGE(0x86, 0x86) AM_DEVWRITE("ay", ay8910_data_w)
2965   AM_RANGE(0x88, 0x88) AM_DEVWRITE("ay", ay8910_address_w)
2962   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ymsnd", ym2413_w)
2963   AM_RANGE(0x84, 0x84) AM_DEVREAD("aysnd", ay8910_r)
2964   AM_RANGE(0x86, 0x86) AM_DEVWRITE("aysnd", ay8910_data_w)
2965   AM_RANGE(0x88, 0x88) AM_DEVWRITE("aysnd", ay8910_address_w)
29662966   AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r)
29672967ADDRESS_MAP_END
29682968
r6428r6429
30383038   AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r)
30393039   AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w)
30403040   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
3041   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
3041   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
30423042   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
30433043   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
30443044   AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
r6428r6429
30833083   AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r)
30843084   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
30853085   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
3086   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym", ym2413_w)
3087   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
3088   AM_RANGE(0x46, 0x46) AM_DEVWRITE("ay", ay8910_data_w)
3089   AM_RANGE(0x48, 0x48) AM_DEVWRITE("ay", ay8910_address_w)
3086   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ymsnd", ym2413_w)
3087   AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_r)
3088   AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_data_w)
3089   AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_address_w)
30903090   AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
30913091   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
30923092   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
r6428r6429
31843184   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
31853185   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
31863186
3187   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
3187   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
31883188   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
3189   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
3190   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
3189   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
3190   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
31913191   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
31923192   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
31933193ADDRESS_MAP_END
r6428r6429
32773277   AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1")
32783278   AM_RANGE(0x0181, 0x0181) AM_WRITENOP                  // ? int. enable
32793279   AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w)
3280   AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ym", ym2413_w)
3280   AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ymsnd", ym2413_w)
32813281   AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
3282   AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("ay", ay8910_address_data_w)
3282   AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("aysnd", ay8910_address_data_w)
32833283   AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
32843284ADDRESS_MAP_END
32853285
r6428r6429
33173317   AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
33183318   AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
33193319   AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
3320   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym", ym2413_w)
3320   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym2413_w)
33213321   AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
33223322   AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
33233323ADDRESS_MAP_END
r6428r6429
33773377
33783378static ADDRESS_MAP_START( sryudens_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
33793379   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
3380   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ym", ym2413_w)
3381   AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay", ay8910_address_data_w)
3380   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym2413_w)
3381   AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_address_data_w)
33823382   AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w)   // ? ack on RTC int
33833383   AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
33843384   AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
r6428r6429
34943494   AM_RANGE(0x42, 0x44) AM_READ(hanakanz_gfxrom_r)
34953495   AM_RANGE(0x8a, 0x8b) AM_READ(daimyojn_year_hack_r)   // ?
34963496   AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
3497   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
3497   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
34983498   AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
34993499   AM_RANGE(0xa8, 0xa8) AM_READ_PORT("SYSTEM")
35003500   AM_RANGE(0xaa, 0xaa) AM_READ(daimyojn_keyb1_r)
r6428r6429
73627362   /* sound hardware */
73637363   MDRV_SPEAKER_STANDARD_MONO("mono")
73647364
7365   MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8)
7365   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
73667366   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
73677367
7368   MDRV_SOUND_ADD("ay", AY8910, XTAL_28_63636MHz / 16)   // or /8 ?
7368   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 16)   // or /8 ?
73697369   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
73707370
73717371   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28)
r6428r6429
74167416   MDRV_CPU_MODIFY("maincpu")
74177417   MDRV_CPU_PROGRAM_MAP(quiz365_map)
74187418
7419   MDRV_SOUND_MODIFY("ay")
7419   MDRV_SOUND_MODIFY("aysnd")
74207420   MDRV_SOUND_CONFIG(quiz365_ay8910_interface)
74217421MACHINE_DRIVER_END
74227422
r6428r6429
74887488   /* sound hardware */
74897489   MDRV_SPEAKER_STANDARD_MONO("mono")
74907490
7491   MDRV_SOUND_ADD("ym", YM2413, 3579545)
7491   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
74927492   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
74937493
74947494   MDRV_SOUND_ADD("oki", OKIM6295, 1022720)
r6428r6429
75667566   /* sound hardware */
75677567   MDRV_SPEAKER_STANDARD_MONO("mono")
75687568
7569   MDRV_SOUND_ADD("ym", YM2413, 3579545)
7569   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
75707570   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
75717571
7572   MDRV_SOUND_ADD("ay", AY8910, 3579545)
7572   MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
75737573   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
75747574
75757575   MDRV_SOUND_ADD("oki", OKIM6295, 1022720)
r6428r6429
76337633   /* sound hardware */
76347634   MDRV_SPEAKER_STANDARD_MONO("mono")
76357635
7636   MDRV_SOUND_ADD("ym", YM2413, 3579545)
7636   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
76377637   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
76387638
76397639   MDRV_SOUND_ADD("oki", OKIM6295, 1022720)
r6428r6429
76927692   MDRV_CPU_IO_MAP(mjchuuka_portmap)
76937693   MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq)
76947694
7695   MDRV_SOUND_ADD("ay", AY8910, 1789772)
7695   MDRV_SOUND_ADD("aysnd", AY8910, 1789772)
76967696   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
76977697MACHINE_DRIVER_END
76987698
r6428r6429
77677767   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
77687768   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
77697769
7770   MDRV_SOUND_ADD("ay", AY8910, 3579545)
7770   MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
77717771   MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
77727772   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
77737773MACHINE_DRIVER_END
r6428r6429
78157815   MDRV_CPU_IO_MAP(hginga_portmap)
78167816   MDRV_CPU_VBLANK_INT("screen", hginga_irq)
78177817
7818   MDRV_SOUND_ADD("ay", AY8910, 3579545)
7818   MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
78197819   MDRV_SOUND_CONFIG(hginga_ay8910_interface)
78207820   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
78217821MACHINE_DRIVER_END
r6428r6429
78287828   MDRV_CPU_IO_MAP(hgokou_portmap)
78297829   MDRV_CPU_VBLANK_INT("screen", hginga_irq)
78307830
7831   MDRV_SOUND_ADD("ay", AY8910, 3579545)
7831   MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
78327832   MDRV_SOUND_CONFIG(hginga_ay8910_interface)
78337833   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
78347834MACHINE_DRIVER_END
r6428r6429
78507850   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
78517851   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
78527852
7853   MDRV_SOUND_ADD("ay", AY8910, 1789772)
7853   MDRV_SOUND_ADD("aysnd", AY8910, 1789772)
78547854   MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
78557855   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
78567856MACHINE_DRIVER_END
r6428r6429
78637863   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
78647864   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
78657865
7866   MDRV_SOUND_ADD("ay", AY8910, 1789772)
7866   MDRV_SOUND_ADD("aysnd", AY8910, 1789772)
78677867   MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
78687868   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
78697869MACHINE_DRIVER_END
r6428r6429
78957895
78967896   MDRV_VIDEO_START(mjflove)   // blitter commands in the roms are shuffled around
78977897
7898   MDRV_SOUND_ADD("ay", AY8910, 28636363/8)
7898   MDRV_SOUND_ADD("aysnd", AY8910, 28636363/8)
78997899   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
79007900MACHINE_DRIVER_END
79017901
r6428r6429
79407940   /* sound hardware */
79417941   MDRV_SPEAKER_STANDARD_MONO("mono")
79427942
7943   MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8)
7943   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
79447944   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
79457945
79467946   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28)
r6428r6429
79807980   /* sound hardware */
79817981   MDRV_SPEAKER_STANDARD_MONO("mono")
79827982
7983   MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8)
7983   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
79847984   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
79857985
7986   MDRV_SOUND_ADD("ay", AY8910, XTAL_28_63636MHz / 8)
7986   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8)
79877987   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
79887988
79897989   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28)   // ?
r6428r6429
80238023   /* sound hardware */
80248024   MDRV_SPEAKER_STANDARD_MONO("mono")
80258025
8026   MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8)
8026   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
80278027   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
80288028
80298029   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28)
src/mame/drivers/chinagat.c
r6428r6429
365365static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
366366   AM_RANGE(0x0000, 0x7fff) AM_ROM
367367   AM_RANGE(0x8000, 0x87ff) AM_RAM
368   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
368   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
369369   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
370370   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r)
371371ADDRESS_MAP_END
r6428r6429
383383//  AM_RANGE(0x8804, 0x8804) AM_WRITE(SMH_RAM)
384384//  AM_RANGE(0x8805, 0x8805) AM_WRITE(SMH_RAM)
385385
386//  AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
386//  AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
387387//  AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
388388   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r)
389389ADDRESS_MAP_END
r6428r6429
391391static ADDRESS_MAP_START( saiyugb1_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
392392   AM_RANGE(0x0000, 0x7fff) AM_ROM
393393   AM_RANGE(0x8000, 0x87ff) AM_RAM
394   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
394   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
395395   AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugb1_mcu_command_w)
396396   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r)
397397ADDRESS_MAP_END
r6428r6429
575575   /* sound hardware */
576576   MDRV_SPEAKER_STANDARD_MONO("mono")
577577
578   MDRV_SOUND_ADD("ym", YM2151, 3579545)
578   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
579579   MDRV_SOUND_CONFIG(ym2151_config)
580580   MDRV_SOUND_ROUTE(0, "mono", 0.80)
581581   MDRV_SOUND_ROUTE(1, "mono", 0.80)
r6428r6429
618618   /* sound hardware */
619619   MDRV_SPEAKER_STANDARD_MONO("mono")
620620
621   MDRV_SOUND_ADD("ym", YM2151, 3579545)
621   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
622622   MDRV_SOUND_CONFIG(ym2151_config)
623623   MDRV_SOUND_ROUTE(0, "mono", 0.80)
624624   MDRV_SOUND_ROUTE(1, "mono", 0.80)
src/mame/drivers/kaneko16.c
r6428r6429
889889
890890static ADDRESS_MAP_START( blazeon_soundport, ADDRESS_SPACE_IO, 8 )
891891   ADDRESS_MAP_GLOBAL_MASK(0xff)
892   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
892   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
893893   AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r)
894894ADDRESS_MAP_END
895895
r6428r6429
19211921   /* sound hardware */
19221922   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19231923
1924   MDRV_SOUND_ADD("ym", YM2151, 4000000)
1924   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
19251925   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19261926   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
19271927MACHINE_DRIVER_END
src/mame/drivers/wc90.c
r6428r6429
155155static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
156156   AM_RANGE(0x0000, 0xbfff) AM_ROM
157157   AM_RANGE(0xf000, 0xf7ff) AM_RAM
158   AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ym", ym2608_r, ym2608_w)
158   AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_r, ym2608_w)
159159   AM_RANGE(0xfc00, 0xfc00) AM_READNOP /* ??? adpcm ??? */
160160   AM_RANGE(0xfc10, 0xfc10) AM_READ(soundlatch_r)
161161ADDRESS_MAP_END
r6428r6429
338338   /* sound hardware */
339339   MDRV_SPEAKER_STANDARD_MONO("mono")
340340
341   MDRV_SOUND_ADD("ym", YM2608, 8000000)
341   MDRV_SOUND_ADD("ymsnd", YM2608, 8000000)
342342   MDRV_SOUND_CONFIG(ym2608_config)
343343   MDRV_SOUND_ROUTE(0, "mono", 0.50)
344344   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
380380   ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) )   /* sprites  */
381381   ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) )   /* sprites  */
382382
383   ROM_REGION( 0x20000, "ym", 0 )   /* 64k for ADPCM samples */
383   ROM_REGION( 0x20000, "ymsnd", 0 )   /* 64k for ADPCM samples */
384384   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
385385ROM_END
386386
r6428r6429
413413   ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) )   /* sprites  */
414414   ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) )   /* sprites  */
415415
416   ROM_REGION( 0x20000, "ym", 0 )   /* 64k for ADPCM samples */
416   ROM_REGION( 0x20000, "ymsnd", 0 )   /* 64k for ADPCM samples */
417417   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
418418ROM_END
419419
r6428r6429
446446   ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) )   /* sprites  */
447447   ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) )   /* sprites  */
448448
449   ROM_REGION( 0x20000, "ym", 0 )   /* 64k for ADPCM samples */
449   ROM_REGION( 0x20000, "ymsnd", 0 )   /* 64k for ADPCM samples */
450450   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
451451ROM_END
452452
r6428r6429
479479   ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) )   /* sprites  */
480480   ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) )   /* sprites  */
481481
482   ROM_REGION( 0x20000, "ym", 0 )   /* 64k for ADPCM samples */
482   ROM_REGION( 0x20000, "ymsnd", 0 )   /* 64k for ADPCM samples */
483483   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
484484ROM_END
485485
src/mame/drivers/gauntlet.c
r6428r6429
337337   AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w)
338338   AM_RANGE(0x1030, 0x103f) AM_MIRROR(0x27c0) AM_READWRITE(switch_6502_r, sound_ctl_w)
339339   AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("pokey", pokey_r, pokey_w)
340   AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
340   AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
341341   AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE("tms", tms5220_data_w)
342342   AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_READWRITE(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w)
343343   AM_RANGE(0x4000, 0xffff) AM_ROM
r6428r6429
529529   /* sound hardware */
530530   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
531531
532   MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4)
532   MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
533533   MDRV_SOUND_ROUTE(0, "lspeaker", 0.48)
534534   MDRV_SOUND_ROUTE(1, "rspeaker", 0.48)
535535
src/mame/drivers/ms32.c
r6428r6429
11/* Jaleco MegaSystem 32 (Preliminary Driver)
22
3--- this driver is about to undergo a major update
4     based on actual hardware tests ---
3 - hardware tests are needed to establish how the mixing really works (and interrupt source etc.)
54
6
75Used by Jaleco in the Mid-90's this system, based on the V70 processor consisted
86of a two board set up, the first a standard mainboard and the second a 'cartridge'
97
r6428r6429
4543
4644Game Roms + Custom Chip
4745
48The Custom chip is probably related to the encryption?
46The Custom chip provides the encryption
4947
5048Desert War     - Custom chip: JALECO SS91022-10 (144 pin PQFP) (located on small plug-in board with) (ID: SE93139 EB91022-30056)
5149Game Paradise  - Custom chip: JALECO SS91022-10 9515EV 420201 06441
r6428r6429
7573
7674Z80 + Sound Bits
7775
78Re-Add Priorities
76Priorities (code in tetrisp2.c doesn't use all of the priority ram.. and doesn't work here)
77 - some games require completely reversed list processing!
7978
8079Dip switches/inputs in t2m32 and f1superb
8180some games (hayaosi2) don't seeem to have service mode even if it's listed among the dips
r6428r6429
8382
8483Fix Anything Else (Palette etc.)
8584
86Replace CPU divider with Idle skip since we don't know how fast the v70 really is (cpu timing is ignored)...
8785
88Mirror Ram addresses?
89
9086Not sure about the main "global brightness" control register, I don't think it can make the palette
9187completely black because of kirarast attract mode, so I'm making it cut by 50% at most.
88 - brightness control also breaks other games in various places, eg gametngk everything going dark
89   when bomb is used, p47 aces intro?
9290
9391gametngk seems to need some kind of shadow sprites but the only difference in the sprite attributes is one of the
9492    priority bits, forcing sprites of that priority to be shadows doesn't work
r6428r6429
9997
10098horizontal position of tx and bg tilemaps is off by 1 pixel in some games
10199
102There should be NVRAM somewhere, maybe fc000000-fc007fff
103
104100bbbxing: some sprite/roz/bg alignment issues
105101
106102gratia: at the beginning of a level it shows the level name in the bottom right corner, scrolling it up
r6428r6429
123119    repeated on the screen (p47aces, kirarast, bbbxing, gametngk need it OFF).
124120    gratia and desertwr need it ON.
125121
126there are sprite lag issues, but they might be caused by cpu timing so it's better to leave
127    them alone until the CPU clock is correct.
122there are sprite lag issues - sprites should be framebuffered
128123
124missing clipping window effect in gametngk intro
129125
126
130127Not Working Games
131128-----------------
132129
133tp2m32 - writes invalid SBR, enables interrupts, crashes (fixed patching the bogus SBR).
134f1superb - the road is straight despite the road signs saying otherwise? :-p
135         - there are 4 unknown ROMS which might be related to the above.
136         - the handler for IRQ 11 also seems to be valid, the game might need it.
130f1superb - the road is always rendered as straight.
131         - the game has a road layer and extra roms for it
132         - there is an unknown maths DSP for protection
137133
138
139134Jaleco Megasystem 32 Game List - thanks to Yasuhiro
140135---------------------------------------------------
141136
r6428r6429
146141Best Bout Boxing (bbbxing)
147142Wangan Sensou / Desert War (desertwr)
148143Second Earth Gratia (92047-01 version) (gratia)
149*Second Earth Gratia  (91022-10 version) (gratiaa)
150*Super Strong Warriors
144*Second Earth Gratia  (91022-10 version) (gratiaa) (redump needed)
151145F-1 Super Battle (f1superb)
152146
153147Idol Janshi Su-Chi-Pi 2 (47pie2)
154148Ryuusei Janshi Kirara Star (kirarast)
155149Mahjong Angel Kiss
156*Vs. Janshi Brand New Stars
150Vs. Janshi Brand New Stars
157151
158Hayaoshi Quiz Ouza Ketteisen (hayaosi2)
159*Hayaoshi Quiz Nettou Namahousou
160*Hayaoshi Quiz Grand Champion Taikai
161152
162Maybe some more...
153Hayaoshi Quiz Nettou Namahousou ( hayaosi3 )
154Hayaoshi Quiz Grand Champion Taikai (hayaosi2)
163155
164Games marked * need dumping / redumping
156Not Dumped:
165157
158Super Strong Warriors
159
160
161
166162*/
167163
168164/********** BITS & PIECES **********/
r6428r6429
174170#include "sound/ymf271.h"
175171#include "includes/ms32.h"
176172
177static UINT32 *ms32_fc000000;
173static UINT8 *ms32_nvram_8;
178174
179175static UINT32 *ms32_mahjong_input_select;
180176
r6428r6429
211207   return  mj_input & 0xff;
212208}
213209
210
214211static READ32_HANDLER( ms32_read_inputs3 )
215212{
216213   int a,b,c,d;
r6428r6429
221218   return a << 24 | b << 16 | c << 8 | d << 0;
222219}
223220
221
224222static WRITE32_HANDLER( ms32_sound_w )
225223{
226224   soundlatch_w(space, 0, data & 0xff);
r6428r6429
245243
246244/********** MEMORY MAP **********/
247245
248/* some games games test more ram than others .. ram areas with closed comments before
249the lines get tested by various games but I'm not sure are really used, maybe they're
250mirror addresses? */
251246
252/*
253p47 aces:
254there are bugs in the test routine, so it checks twice the amount of RAM
255actually present, relying on mirror addresses.
256See how ASCII and SCROLL overlap.
257SCRATCH RAM   fee00000-fee1ffff
258ASCII RAM     fec00000-fec0ffff (actually fec00000-fec07fff ?)
259SCROLL RAM    fec08000-fec17fff (actually fec08000-fec0ffff ?)
260ROTATE RAM    fe000000-fe03ffff (actually fe000000-fe01ffff ?)
261OBJECT RAM    fe800000-fe87ffff (actually fe800000-fe83ffff ?)
262COLOR RAM     fd400000-fd40ffff (this one is actually larger than tested)
263PRIORITY RAM  fd180000-fd1bffff (actually fd180000-fd19ffff ?)
264SOUND RAM
247extern tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap, *ms32_bg_tilemap_alt;
248extern UINT8* ms32_priram_8;
249extern UINT16* ms32_palram_16;
250extern UINT16* ms32_rozram_16;
251extern UINT16* ms32_lineram_16;
252extern UINT16* ms32_sprram_16;
253extern UINT16* ms32_txram_16;
254extern UINT16* ms32_bgram_16;
255extern UINT32 ms32_tilemaplayoutcontrol;
265256
266This applies to most of the other games.
267Also, gametngk uses mirror addresses for the background during gameplay, without
268support for them bad tiles appear in the bg.
269*/
257static READ8_HANDLER(   ms32_nvram_r8 )    { return ms32_nvram_8[offset]; }
258static WRITE8_HANDLER(  ms32_nvram_w8 )    { ms32_nvram_8[offset] = data; }
259static READ8_HANDLER(   ms32_priram_r8 )   { return ms32_priram_8[offset]; }
260static WRITE8_HANDLER(  ms32_priram_w8 )   { ms32_priram_8[offset] = data; }
261static READ16_HANDLER(  ms32_palram_r16 )  { return ms32_palram_16[offset]; }
262static WRITE16_HANDLER( ms32_palram_w16 )  { COMBINE_DATA(&ms32_palram_16[offset]); }
263static READ16_HANDLER(  ms32_rozram_r16 )  { return ms32_rozram_16[offset]; }
264static WRITE16_HANDLER( ms32_rozram_w16 )  { COMBINE_DATA(&ms32_rozram_16[offset]); tilemap_mark_tile_dirty(ms32_roz_tilemap,offset/2); }
265static READ16_HANDLER(  ms32_lineram_r16 ) { return ms32_lineram_16[offset]; }
266static WRITE16_HANDLER( ms32_lineram_w16 ) { COMBINE_DATA(&ms32_lineram_16[offset]); }
267static READ16_HANDLER(  ms32_sprram_r16 )  { return ms32_sprram_16[offset]; }
268static WRITE16_HANDLER( ms32_sprram_w16 )  { COMBINE_DATA(&ms32_sprram_16[offset]); }
269static READ16_HANDLER(  ms32_txram_r16 )   { return ms32_txram_16[offset]; }
270static WRITE16_HANDLER( ms32_txram_w16 )   { COMBINE_DATA(&ms32_txram_16[offset]); tilemap_mark_tile_dirty(ms32_tx_tilemap,offset/2); }
271static READ16_HANDLER(  ms32_bgram_r16 )   { return ms32_bgram_16[offset]; }
272static WRITE16_HANDLER( ms32_bgram_w16 )   { COMBINE_DATA(&ms32_bgram_16[offset]); tilemap_mark_tile_dirty(ms32_bg_tilemap,offset/2); tilemap_mark_tile_dirty(ms32_bg_tilemap_alt,offset/2); }
270273
271274static WRITE32_HANDLER( pip_w )
272275{
273   if (data)
276   ms32_tilemaplayoutcontrol = data;
277
278   if ((data) && (data != 1))
274279      popmessage("fce00a7c = %02x",data);
275280}
276281
282
277283static ADDRESS_MAP_START( ms32_map, ADDRESS_SPACE_PROGRAM, 32 )
278   AM_RANGE(0x00000000, 0x001fffff) AM_ROM
279   AM_RANGE(0xfc000000, 0xfc007fff) AM_RAM AM_BASE(&ms32_fc000000)   // NVRAM?
284   /* RAM areas verified by testing on real hw - usually accessed at the 0xfc000000 + mirror */
285   AM_RANGE(0xc0000000, 0xc0007fff) AM_READWRITE8 (ms32_nvram_r8,   ms32_nvram_w8,   0x000000ff) AM_MIRROR(0x3c1fe000)   // nvram is 8-bit wide, 0x2000 in size */
286/*  AM_RANGE(0xc0008000, 0xc01fffff) // mirrors of nvramram, handled above */
287   AM_RANGE(0xc1180000, 0xc1187fff) AM_READWRITE8 (ms32_priram_r8,  ms32_priram_w8,  0x000000ff) AM_MIRROR(0x3c038000) /* priram is 8-bit wide, 0x2000 in size */
288/*  AM_RANGE(0xc1188000, 0xc11bffff) // mirrors of priram, handled above */
289   AM_RANGE(0xc1400000, 0xc143ffff) AM_READWRITE16(ms32_palram_r16, ms32_palram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) /* palram is 16-bit wide, 0x20000 in size */
290/*  AM_RANGE(0xc1440000, 0xc145ffff) // mirrors of palram, handled above */
291   AM_RANGE(0xc2000000, 0xc201ffff) AM_READWRITE16(ms32_rozram_r16, ms32_rozram_w16, 0x0000ffff) AM_MIRROR(0x3c1e0000) /* rozram is 16-bit wide, 0x10000 in size */
292/*  AM_RANGE(0xc2020000, 0xc21fffff) // mirrors of rozram, handled above */
293   AM_RANGE(0xc2200000, 0xc2201fff) AM_READWRITE16(ms32_lineram_r16,ms32_lineram_w16,0x0000ffff) AM_MIRROR(0x3c1fe000) /* lineram is 16-bit wide, 0x1000 in size */
294/*  AM_RANGE(0xc2202000, 0xc23fffff) // mirrors of lineram, handled above */
295   AM_RANGE(0xc2800000, 0xc283ffff) AM_READWRITE16(ms32_sprram_r16, ms32_sprram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) /* spriteram is 16-bit wide, 0x20000 in size */
296/*  AM_RANGE(0xc2840000, 0xc29fffff) // mirrors of sprram, handled above */
297   AM_RANGE(0xc2c00000, 0xc2c07fff) AM_READWRITE16(ms32_txram_r16,  ms32_txram_w16,  0x0000ffff) AM_MIRROR(0x3c1f0000) /* txram is 16-bit wide, 0x4000 in size */
298   AM_RANGE(0xc2c08000, 0xc2c0ffff) AM_READWRITE16(ms32_bgram_r16,  ms32_bgram_w16,  0x0000ffff) AM_MIRROR(0x3c1f0000) /* bgram is 16-bit wide, 0x4000 in size */
299/*  AM_RANGE(0xc2c10000, 0xc2dfffff) // mirrors of txram / bg, handled above */
300   AM_RANGE(0xc2e00000, 0xc2e1ffff) AM_RAM AM_BASE(&ms32_mainram)                                AM_MIRROR(0x3c0e0000) /* mainram is 32-bit wide, 0x20000 in size */
301   AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROMBANK(1)                                                AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */
302
303   /* todo: clean up the mapping of these */
280304   AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP   /* sound? */
281305   AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) /* sound? */
282
283306   AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS")
284307   AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
285
286308   AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP // irq ack?
287309   AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
288310   AM_RANGE(0xfce00050, 0xfce0005f) AM_WRITENOP   // watchdog? I haven't investigated
r6428r6429
293315/**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_RAM AM_BASE(&ms32_tx_scroll)   /* tx layer scroll */
294316/**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_RAM AM_BASE(&ms32_bg_scroll)   /* bg layer scroll */
295317   AM_RANGE(0xfce00a7c, 0xfce00a7f) AM_WRITE(pip_w)   // ??? layer related? seems to be always 0
296//  AM_RANGE(0xfce00800, 0xfce0085f) // f1superb, roz #2 control?
297318//  AM_RANGE(0xfce00e00, 0xfce00e03)    coin counters + something else
298
299319   AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r)
300   AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) /* analog controls in f1superb? */
320   AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITEONLY AM_BASE(&ms32_mahjong_input_select)
321ADDRESS_MAP_END
301322
323
324/* F1 Super Battle has an extra linemap for the road, and am unknown maths chip (mcu?) handling perspective calculations for the road / corners etc. */
325/* it should use it's own memory map */
326
327extern UINT16* f1superb_extraram_16;
328extern tilemap* ms32_extra_tilemap;
329
330static WRITE16_HANDLER( ms32_extra_w16 )  { COMBINE_DATA(&f1superb_extraram_16[offset]); tilemap_mark_tile_dirty(ms32_extra_tilemap,offset/2); }
331static READ16_HANDLER(  ms32_extra_r16 )  { return f1superb_extraram_16[offset]; }
332
333static void irq_raise(running_machine *machine, int level);
334
335static WRITE32_HANDLER( ms32_irq2_guess_w )
336{
337   irq_raise(space->machine, 2);
338}
339
340static WRITE32_HANDLER( ms32_irq5_guess_w )
341{
342   irq_raise(space->machine, 5);
343}
344
345static ADDRESS_MAP_START( f1superb_map, ADDRESS_SPACE_PROGRAM, 32 )
346   AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3)
347
348   AM_RANGE(0xfce00004, 0xfce00023) AM_RAM // regs?
349   AM_RANGE(0xfce00200, 0xfce0021f) AM_RAM // regs?
350   AM_RANGE(0xfce00800, 0xfce0085f) AM_RAM // regs?
351
352   /* these two are almost certainly wrong, they just let you see what
353       happens if you generate the FPU ints without breaking other games */
354   AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(ms32_irq5_guess_w)
355   AM_RANGE(0xfd0f0000, 0xfd0f0003) AM_WRITE(ms32_irq2_guess_w)
356
357   AM_RANGE(0xfd100000, 0xfd103fff) AM_RAM // used when you start enabling fpu ints
358    AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM // uploads data here
359
360   AM_RANGE(0xfd140000, 0xfd143fff) AM_RAM // used when you start enabling fpu ints
361   AM_RANGE(0xfd144000, 0xfd145fff) AM_RAM // same data here
362
363    AM_RANGE(0xfdc00000, 0xfdc007ff) AM_RAM AM_READWRITE16(ms32_extra_r16, ms32_extra_w16, 0x0000ffff) // definitely line ram
364   AM_RANGE(0xfde00000, 0xfde01fff) AM_RAM // scroll info for lineram?
365
366   AM_IMPORT_FROM(ms32_map)
367ADDRESS_MAP_END
368
369/* F1 Super Battle speculation from nuapete
370
371Hi David,
372
373I had a first look at f1superb, this is what I found so far.
374
375The sprite RAM is updated in a few places, but taking one of the
376sprite RAM updating routines at 0xFFE47B6F which is used to draw stuff
377that should move around, I see that the information is copied from
378buffers with these bases:
379FEE11000 = x position data
380FEE11100 = y position data
381FEE11200 = priority etc data
382
383You already spotted that loop at FFE19D1C that fills the "y position"
384buffer from an array of static values. The buffers are refilled again
385by the routine at 0xFFE17581. You can see that the data is sourced
386from another buffer at 0xFD100000 (currently not mapped in the driver,
387but I mapped it in for testing...)
388
389If you backtrace that call, it comes from irq 5 and 7. (They have
390identical ISR code) so I tried adding in a trigger for irq 7. Now the
391values are populated, and stuff moves, but everything moves way too
392much, it's all over the place, eventually the car zooms off up into
393the sky. It gets clearer as you map less and less of the RAM at
3940xFD100000. With just 1K or so mapped, you can see the buildings in
395the background veer about in quite a promising manner. (The patch you
396put in loses effect with irq 5 or 7 hooked up, because they repopulate
397the Y coords too.)
398
399I took a closer look at the interrupts. Handily enough they left some
400strings in the ROM with names for each interrupt  :)  They aren't quite
401in the order of the interrupts, but I matched the unreferenced strings
402up to the valid interrupts as well as I could and then tried to
403confirm them by looking at the code. The ROM string is in quotes.
404
405FFE00DE8  ; irq_0  probably "1msec interrupt"
406FFE00DF4  ; irq_1  "sound cpu interrupt"
407FFE00878  ; irq_2  probably "fpu 1-1 interrupt"
408FFE00884  ; irq_3  unused and labelled "fpu 0-1 interrupt"
409FFE00898  ; irq_4  unused and labelled "fpu 1-0 interrupt"
410FFE008AC  ; irq_5  probably "fpu 0-0 interrupt", x coords (and y) populated from here
411FFE008D0  ; irq_6  unused and labelled "option 2 interrupt"
412FFE008E4  ; irq_7  same as 5 - probably "option 1 interrupt"
413FFE01034  ; irq_9  VBL at 60Hz this would be "16msec interrupt"
414FFE01094  ; irq_10 loads of processing in the 0xfc000000 area : must be "32msec interrupt"
415FFE00E14  ; irq_11 "communication interrupt"
416
417irq_0 is sort of confirmed by the "hayaosi2 needs at least 12 IRQ
4180..." comment. irq_1 I see is already known. irq_9 is known, irq_10 I
419tried halving the frequency it runs at, no effect. irq_11 can be
420pretty much confirmed as comms by the code there and the use of
421MOVT/MOVZ to i/o with 16 bit device based at FEE00000, so that leaves
422the ones that do the sprite info loading, this is where it starts to
423look less promising  :(
424
425Between irqs 2,3,4,5,7 the only unused strings in the ROM are the four "fpu
426* interrupt" and the "option 1".
427Irqs 2,5,7 all do "or.w    #6, FD1424C8[PC]" ,so they are all probably
428"fpu * interrupt".
429
430I'm thinking that the stuff is dumped in that RAM at 0xFD100000 that's
431not used by other games and then some FPU operation is carried out on it
432before it's grabbed by the sprite copy code. The "option" stuff, may be
433they tried a few different ways to work out the sprite coords? There's
434one more intersting string at 0xFFE481FC referenced from unused code
435at 0xFFE47FBC. It looks like debugging dump of sprite coordinate and
436angle information.
437
438I had a scout around for photos or anything of the PCB to see if there
439is some sort of DSP or FPU on it, but I can't find anything useful. I
440suspect it's not a generic MegaSystem 32 PCB, going by the extra
441stuff, and also the IRQ 5/7 breaks the other games. I see a vanilla
442one for sale, but I'd guess there's no point me picking it up for a
443closer look because it won't have whatever the extras are.
444
445I'll keep looking a bit more, but I think that 0xFD100000 buffer is
446processed by something external that triggers irq 5 or 7 when it's
447done. I might see something obvious by looking at the values in
448fact... I'd be interested to know what you think, or if there's any
449chance of finding out if there's stuff like dual port RAM or something
450that might qualify as a FPU?
451
452
453Hi David,
454
455On the f1superb stuff, I've traced the sprite elements right back to
456the arrays for each race track in ROM that they are sourced from. The
457only processing they get is in that "fpu" interrupt. I've figured out
458the structure of the "fpu" device, it uses two arrays of static info
459loaded from the ROM at boot, two identical sets of registers, and 4
460banks of volatile data read in every frame or so from the ROM race
461track arrays (although it looks like one was not used in the end).
462There's a sequence of four operations ivolving the "fpu" carried out
463to prepare the info which then gets copied back to RAM and then to
464sprite RAM. I'll capture the relevant info and see if I can figure out
465what the operations might be, my maths isn't up to much though...
466
467*/
468
469//  AM_RANGE(0xfce00800, 0xfce0085f) // f1superb, roz #2 control?
302470///**/AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM /* f1superb */
303471///**/AM_RANGE(0xfd144000, 0xfd145fff) AM_RAM /* f1superb */
304
305   AM_RANGE(0xfd180000, 0xfd19ffff) AM_READWRITE(ms32_priram_r,ms32_priram_w) AM_BASE(&ms32_priram) /* priority ram */
306   AM_RANGE(0xfd1a0000, 0xfd1bffff) AM_READWRITE(ms32_priram_r,ms32_priram_w)   /* mirror only used by memory test in service mode */
307   AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITEONLY AM_BASE(&ms32_mahjong_input_select)
308
309   AM_RANGE(0xfd400000, 0xfd43ffff) AM_RAM_WRITE(ms32_palram_w) AM_BASE(&ms32_palram) /* Palette */
310472///**/AM_RANGE(0xfd440000, 0xfd47ffff) AM_RAM /* f1superb color */
311
312473///**/AM_RANGE(0xfdc00000, 0xfdc006ff) AM_RAM /* f1superb */
313474///**/AM_RANGE(0xfde00000, 0xfde01fff) AM_RAM /* f1superb lineram #2? */
314   AM_RANGE(0xfe000000, 0xfe01ffff) AM_READWRITE(ms32_rozram_r,ms32_rozram_w) AM_BASE(&ms32_rozram)   /* roz layer */
315   AM_RANGE(0xfe020000, 0xfe03ffff) AM_READWRITE(ms32_rozram_r,ms32_rozram_w)   /* mirror only used by memory test in service mode */
316   AM_RANGE(0xfe1ffc88, 0xfe1fffff) AM_WRITENOP   /* gratia writes here before falling into lineram, could be a mirror */
317   AM_RANGE(0xfe200000, 0xfe201fff) AM_READWRITE(ms32_lineram_r,ms32_lineram_w) AM_BASE(&ms32_lineram) /* line ram for roz layer */
318475///**/AM_RANGE(0xfe202000, 0xfe2fffff) AM_RAM /* f1superb vram */
476//  AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) /* analog controls in f1superb? */
319477
320   AM_RANGE(0xfe800000, 0xfe83ffff) AM_READWRITE(ms32_spram_r,ms32_spram_w) AM_BASE(&ms32_spram)   /* sprites */
321   AM_RANGE(0xfe840000, 0xfe87ffff) AM_READWRITE(ms32_spram_r,ms32_spram_w) /* mirror only used by memory test in service mode */
322   AM_RANGE(0xfec00000, 0xfec07fff) AM_READWRITE(ms32_txram_r,ms32_txram_w) AM_BASE(&ms32_txram)   /* tx layer */
323   AM_RANGE(0xfec08000, 0xfec0ffff) AM_READWRITE(ms32_bgram_r,ms32_bgram_w) AM_BASE(&ms32_bgram)   /* bg layer */
324   AM_RANGE(0xfec10000, 0xfec17fff) AM_READWRITE(ms32_txram_r,ms32_txram_w) /* mirror only used by memory test in service mode */
325   AM_RANGE(0xfec18000, 0xfec1ffff) AM_READWRITE(ms32_bgram_r,ms32_bgram_w) /* mirror used by gametngk at the beginning of the game */
326   AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM AM_BASE(&ms32_mainram)
327   AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK(1)
328ADDRESS_MAP_END
329
330478/*************************************
331479 *
332480 *  Generic port definitions
r6428r6429
10411189static GFXLAYOUT_RAW( bglayout, 8, 16, 16, 16*8, 16*16*8 )
10421190static GFXLAYOUT_RAW( txlayout, 8, 8, 8, 8*8, 8*8*8 )
10431191
1192static GFXLAYOUT_RAW( f1layout, 8, 2048, 1, 2048*8, 2048*8 )
1193
1194
10441195static GFXDECODE_START( ms32 )
10451196   GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x0000, 0x10 )
10461197   GFXDECODE_ENTRY( "gfx2", 0, bglayout,     0x2000, 0x10 )
r6428r6429
10481199   GFXDECODE_ENTRY( "gfx4", 0, txlayout,     0x6000, 0x10 )
10491200GFXDECODE_END
10501201
1202static GFXDECODE_START( f1superb )
1203   GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x0000, 0x10 )
1204   GFXDECODE_ENTRY( "gfx2", 0, bglayout,     0x2000, 0x10 )
1205   GFXDECODE_ENTRY( "gfx3", 0, bglayout,     0x1000, 0x10 )
1206   GFXDECODE_ENTRY( "gfx4", 0, txlayout,     0x6000, 0x10 )
1207   GFXDECODE_ENTRY( "gfx5", 0, f1layout,     0x0000, 0x100 ) // not tilemap data?
1208GFXDECODE_END
10511209
10521210
1211
10531212/********** INTERRUPTS **********/
10541213
10551214/* Irqs used in desertwr:
r6428r6429
11841343   MDRV_SCREEN_ADD("screen", RASTER)
11851344   MDRV_SCREEN_REFRESH_RATE(60)
11861345   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
1187   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1346   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
11881347   MDRV_SCREEN_SIZE(40*8, 28*8)
11891348   MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
11901349
11911350   MDRV_GFXDECODE(ms32)
1192   MDRV_PALETTE_LENGTH(0x8000)
1351   MDRV_PALETTE_LENGTH(0x10000)
11931352
11941353   MDRV_VIDEO_START(ms32)
11951354   MDRV_VIDEO_UPDATE(ms32)
r6428r6429
12021361   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
12031362MACHINE_DRIVER_END
12041363
1364static MACHINE_DRIVER_START( f1superb )
1365   MDRV_IMPORT_FROM(ms32)
1366   /* basic machine hardware */
1367   MDRV_CPU_MODIFY("maincpu")
1368   MDRV_CPU_PROGRAM_MAP(f1superb_map)
12051369
1370   MDRV_GFXDECODE(f1superb)
1371
1372   MDRV_VIDEO_START(f1superb)
1373MACHINE_DRIVER_END
1374
1375
1376
12061377/********** ROM LOADING **********/
12071378
12081379ROM_START( bbbxing )
r6428r6429
13981569   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles, don't dispose since we use GFX_RAW */
13991570   ROM_LOAD( "f1sb32.bin", 0x000000, 0x080000, CRC(1b31fcce) SHA1(354cc6f43cd3bf3ba921ac8c5631ab993bedf563) )
14001571
1401   ROM_REGION( 0x800000, "user1", 0 ) /* extra ROMs, unknown */
1572   ROM_REGION( 0x800000, "gfx5", 0 ) /* extra data? doesn't seem to be tiles */
14021573   ROM_LOAD( "f1sb2b.bin", 0x000000, 0x200000, CRC(18d73b16) SHA1(f06f4d31b15658cc1e1b559ae3b8a90b797546ca) )
14031574   ROM_LOAD( "f1sb3b.bin", 0x200000, 0x200000, CRC(ce728fe0) SHA1(e0fd7b8f4d3dc9e2b15ddf027c61e67e5c1f22b5) )
14041575   ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) )
r6428r6429
21212292   memory_configure_bank(machine, 5, 0, 16, memory_region(machine, "audiocpu") + 0x14000, 0x4000);
21222293}
21232294
2295static DRIVER_INIT( ms32_common )
2296{
2297   ms32_nvram_8 = auto_alloc_array(machine, UINT8, 0x2000);
2298   configure_banks(machine);
2299}
2300
21242301/* SS91022-10: desertwr, gratiaa, tp2m32, gametngk */
21252302static DRIVER_INIT (ss91022_10)
21262303{
2127   configure_banks(machine);
2304   DRIVER_INIT_CALL(ms32_common);
21282305   ms32_rearrange_sprites(machine, "gfx1");
21292306   decrypt_ms32_tx(machine, 0x00000,0x35, "gfx4");
21302307   decrypt_ms32_bg(machine, 0x00000,0xa3, "gfx3");
r6428r6429
21332310/* SS92046_01: bbbxing, f1superb, tetrisp, hayaosi2 */
21342311static DRIVER_INIT (ss92046_01)
21352312{
2136   configure_banks(machine);
2313   DRIVER_INIT_CALL(ms32_common);
21372314   ms32_rearrange_sprites(machine, "gfx1");
21382315   decrypt_ms32_tx(machine, 0x00020,0x7e, "gfx4");
21392316   decrypt_ms32_bg(machine, 0x00001,0x9b, "gfx3");
r6428r6429
21422319/* SS92047-01: gratia, kirarast */
21432320static DRIVER_INIT (ss92047_01)
21442321{
2145   configure_banks(machine);
2322   DRIVER_INIT_CALL(ms32_common);
21462323   ms32_rearrange_sprites(machine, "gfx1");
21472324   decrypt_ms32_tx(machine, 0x24000,0x18, "gfx4");
21482325   decrypt_ms32_bg(machine, 0x24000,0x55, "gfx3");
r6428r6429
21512328/* SS92048-01: p47aces, 47pie2, 47pie2o */
21522329static DRIVER_INIT (ss92048_01)
21532330{
2154   configure_banks(machine);
2331   DRIVER_INIT_CALL(ms32_common);
21552332   ms32_rearrange_sprites(machine, "gfx1");
21562333   decrypt_ms32_tx(machine, 0x20400,0xd6, "gfx4");
21572334   decrypt_ms32_bg(machine, 0x20400,0xd4, "gfx3");
r6428r6429
22042381
22052382
22062383/* these boot and show something */
2207GAME( 1994, f1superb, 0,        ms32, f1superb, f1superb, ROT0,   "Jaleco", "F1 Super Battle", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
2384GAME( 1994, f1superb, 0,        f1superb, f1superb, f1superb, ROT0,   "Jaleco", "F1 Super Battle", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
2385
2386/* Notes from Charles MacDonald
2387
2388----------------------------------------------------------------------------
2389 Z80 communication
2390 ----------------------------------------------------------------------------
2391
2392 The system has two 8-bit registers which store bytes going from the Z80
2393 to the V70 and vice-versa.
2394
2395 V70 side
2396
2397 $FC800000 : Writes load the Z80 sound latch and trigger a NMI.
2398
2399             Reads return D31-D16 = open bus, D15-D0 = $FFFF.
2400
2401 $FD000000 : Reads return D31-D16 = open bus, D15-D8 = $FF, and
2402             D7-D0 =  V70 sound latch, inverted.
2403
2404             Writes halt the system.
2405
2406 Z80 side
2407
2408     $3F10 : Reads return the contents of the Z80 sound latch, inverted.
2409             Writes load the V70 sound latch.
2410
2411 To handle the inversion of sound latch data, both CPUs should invert the
2412 data read from their respective read addresses.
2413
2414 *** Does NMI stay low such that further NMIs can't occur until it's ACK'd?
2415
2416     Well, reading 3F10-3F1F allows further NMIs which are otherwise masked.
2417
2418     Is /NMI line really physically held low during this time?
2419     Or is there just a flip-flop that remains set until read, which
2420     gates NMI?
2421
2422 *** Does $3F10 cause interrupt on V60 side when accessed? Or $3F20?
2423     Could 3F20 be a V70-side interrupt request clear register?
2424
2425 ----------------------------------------------------------------------------
2426 Sound reset register
2427 ----------------------------------------------------------------------------
2428
2429 Writing a '1' to bit 0 of $FCE00038 temporarily pulses the Z80 /RESET pin
2430 low for approximately one second, at which point it goes high again and the
2431 Z80 resumes operation.
2432
2433 Setting this bit does *not* keep the Z80 reset for the duration that
2434 it is set. It's function is that of a trigger for an automatically timed
2435 reset pulse.
2436
2437 *** Measure /RESET pulse width in units of Z80 clocks.
2438
2439 ----------------------------------------------------------------------------
2440 V70 memory map
2441 ----------------------------------------------------------------------------
2442
2443 Overview
2444
2445 The hardware maps memory and other devices to a 64MB chunk that is
2446 repeatedly mirrored throughout the last 1GB of the address space.
2447
2448 The system is set up so the V70 is halted when it accesses an unused
2449 memory address or accesses it in an unintended way (reading write-only
2450 locations, writing to read-only locations). Shortly thereafter the
2451 watchdog resets the system due to inactivity.
2452
2453 The V70 data bus is 32-bit but is connected to a mix of 8, 16, and 32-bit
2454 hardware. The undriven data bus bits tend to float high, though my
2455 board had a lot of extra pull-up resistors someone added in one of
2456 the expansion sockets. I'll try to give approximate garbage values read
2457 from these locations when possible.
2458
2459 V70 memory map
2460
2461 C0000000-FBFFFFFF : Mirror of FC000000-FFFFFFFF
2462
2463 Range               Acc  Repeat  Size  Width Description
2464
2465 FC000000-FC1FFFFF : R/W : 32K  : 8K   : 8  : NVRAM
2466 FC600000-FC7FFFFF : R/W : ---  : ---  : -- : Unused (return $FFFFFFFF)
2467 FC800000-FC9FFFFF : R/W : 4b   :      : 16 : Z80 sound latch (out)
2468 FCC00000-FCDFFFFF : R/W : 32b  :      : 32 : I/O area
2469 FCE00000-FCFFFFFF : W/O : 8K   : 4K   : 16 : Video registers
2470 FD000000-FD03FFFF : R/O : 4b   :      : 16 : Z80 sound latch (in)
2471 FD180000-FD1BFFFF : R/W : 32K  : 8K   : 8  : Priority RAM
2472 FD400000-FD5FFFFF : R/W : 256K : 128K : 16 : Color RAM
2473 FE000000-FE1FFFFF : R/W : 128K : 64K  : 16 : Rotate RAM
2474 FE200000-FE3FFFFF : R/W : 8K   : 4K   : 16 : Line RAM
2475 FE800000-FE9FFFFF : R/W : 256K : 128K : 16 : Object RAM
2476 FEC00000-FEDFFFFF : R/W : 64K  : 32K  : 16 : ASCII RAM / Scroll RAM
2477 FEE00000-FEEFFFFF : R/W : 128K : 128K : 32 : Work RAM
2478 FF000000-FFFFFFFF : R/O : 2MB  : 2MB  : 32 : Program ROM
2479
2480 For example, the object RAM is 128Kx16, mapped to D15-D0 of each word.
2481 This corresponds to a 256K space (128K x 32-bits, 16 of which are used)
2482 that repeats every 256K within FE800000-FE9FFFFF.
2483
2484 1.) Data written to the LSB is stored inverted in $3F10 and triggers NMI.
2485     Writing to D15-D8 does nothing and value read is $FF.
2486     Writing to D31-D16 resets the machine, values read are open bus (opcodes).
2487
2488 All items listed are repeatedly mirrored throughout the memory ranges
2489 they are assigned to.
2490
2491 This is the memory map for a Desert War boardset. Other games can add
2492 additional hardware on the ROM board which take up memory ranges not listed
2493 here. Consider it to be the memory map for a stock Mega System 32 mainboard.
2494
2495 ----------------------------------------------------------------------------
2496 I/O ports
2497 ----------------------------------------------------------------------------
2498
2499 The I/O area consists of 16 word locations that are mirrored repeatedly
2500 throughout the range they are mapped to:
2501
2502 FCC00000 : ?
2503 FCC00004 : Player 1, 2 and control panel inputs
2504 FCC00008 : ?
2505 FCC0000C : ?
2506 FCC00010 : DIP switch inputs
2507 FCC00014 : ?
2508 FCC00018 : ?
2509 FCC0001C : ?
2510
2511 Input details
2512
2513 FCC00004 : ---- ---- ---- ---- ---- ---- 4321 rldu : 1P buttons, joystick
2514          : ---- ---- ---- ---- 4321 rldu ---- ---- : 2P buttons, joystick
2515          : ---- ---- ---- --21 ---- ---- ---- ---- : 2P coin, 1P coin
2516          : ---- ---- ---- ts-- ---- ---- ---- ---- : Test, service
2517          : ---- ---- --21 ---- ---- ---- ---- ---- : 2P start, 1P start
2518
2519 * All inputs are active-high (1= switch released, 0= switch pressed)
2520
2521 * When the TILT input is asserted, the system is reset. This continues
2522   until TILT is released. The state of TILT cannot be read.
2523
2524 FCC00010 : ---- ---- ---- ---- ---- ---- 1234 5678 : DIP SW2 #1-8
2525          : ---- ---- ---- ---- 1234 5678 ---- ---- : DIP SW1 #1-8
2526          : ---- ---- 1234 5678 ---- ---- ---- ---- : DIP SW3 #1-8
2527
2528 * All inputs are active-low (1= switch OFF, 0= switch ON)
2529
2530
2531 ----------------------------------------------------------------------------
2532 System and video registers
2533 ----------------------------------------------------------------------------
2534
2535 This area is 8K long and repeats every 8K. All registers are write-only
2536 and are mapped to D15-D0 of each word.
2537
2538 $FCE00000 : Screen mode control
2539
2540 D0 : Dot clock control (1= 24 KHz?, 0= 15 KHz)
2541
2542 $FCE00004 : Horizontal timing
2543 $FCE00008 : Horizontal timing
2544 $FCE0000C : Horizontal timing
2545 $FCE00010 : Horizontal viewport start
2546 $FCE00014 : Frame height
2547 $FCE00018 : Display height
2548 $FCE0001C : Horizontal positioning
2549 $FCE00020 : Fine positioning adjust
2550
2551 $FCE00045 : IRQ acknowledge
2552 $FCE00038 : Sound CPU reset
2553 $FCE00050 : Watchdog reset
2554 $FCE006xx : ROZ
2555
2556 $FCE00A00 : Text layer horizontal scroll #1
2557 $FCE00A04 : Text layer vertical scroll #1
2558 $FCE00A08 : Text layer horizontal scroll #2
2559 $FCE00A0C : Text layer vertical scroll #2
2560
2561 $FCE00A2x : BG layer
2562 $FCE00A7C : Layer related
2563 $FCE00Exx : Coin meter + lockout
2564
2565 ----------------------------------------------------------------------------
2566 NVRAM
2567 ----------------------------------------------------------------------------
2568
2569 NVRAM is 8K, occupying D7-D0 of each word. It is mirrored every 8K-words
2570 (32K bytes) in memory.
2571
2572 Remaining data bits return $FFFFF4xx.
2573
2574 The NVRAM consists of a low-power 8K SRAM connected to a .1F capacitor for
2575 short-term data retention and a CR2032 lithium battery for long-term
2576 retention. It also has a write inhibit circuit to protect RAM from spurious
2577 writes when the voltage drops low enough to trigger a system reset.
2578 During normal operation the write protection is transparent to the
2579 programmer and the SRAM can be accessed normally.
2580
2581 ----------------------------------------------------------------------------
2582 Priority RAM
2583 ----------------------------------------------------------------------------
2584
2585 Priority RAM is 8K, occupying D7-D0 of each word. It is mirrored
2586 every 8K-words (32K bytes) in memory.
2587
2588 Remaining data bits return $00FFFFxx.
2589
2590 Note that the priority RAM chip is actually 32K. The upper address lines
2591 are tied low or high, so perhaps priority RAM is banked.
2592
2593 ----------------------------------------------------------------------------
2594 Color RAM
2595 ----------------------------------------------------------------------------
2596
2597 Color RAM is implemented with three 32Kx8 SRAMs. Every eight-byte area
2598 within color RAM addresses one location in color RAM. The red and green
2599 color RAMs are connected in parallel to D15-D0 respectively for even words,
2600 and the blue color RAM is connected to D7-D0 for odd words:
2601
2602        MSB                                  LSB
2603 +$00 : ---- ---- ---- ---- rrrr rrrr gggg gggg : Red, green components
2604 +$04 : ---- ---- ---- ---- ---- ---- bbbb bbbb : Blue component
2605
2606 - = Bit isn't used. Usually returns '1'.
2607
2608 The color RAM area is 256K in size (32K entries x 8 bytes per entry) and
2609 is mirrored every 256K bytes in memory.
2610
2611 ----------------------------------------------------------------------------
2612 Rotate RAM
2613 ----------------------------------------------------------------------------
2614
2615 Rotate RAM is 64K, occuping D15-D0 of each word. It is mirrored every
2616 64K-words (128K bytes) in memory.
2617
2618 Remaining data bits return $00FFxxxx or $0000xxxx randomly.
2619
2620 ----------------------------------------------------------------------------
2621 Object RAM
2622 ----------------------------------------------------------------------------
2623
2624 Object RAM is 128K, occuping D15-D0 of each word. It is mirrored every
2625 128K-words (256K bytes) in memory.
2626
2627 Remaining data bits return $FFFFxxxx.
2628
2629 ----------------------------------------------------------------------------
2630 ASCII / Scroll RAM
2631 ----------------------------------------------------------------------------
2632
2633 ASCII / Scroll RAM is 32K, occupying D15-D0 of each word. It is mirrored
2634 every 64K-words (128K bytes) in memory.
2635
2636 Remaining data bits return $0000xxxx.
2637
2638 ----------------------------------------------------------------------------
2639 Work RAM
2640 ----------------------------------------------------------------------------
2641
2642 Work RAM is 128K, occupying D31-D0 of each word. It is mirrored every 128K
2643 bytes in memory.
2644
2645 ----------------------------------------------------------------------------
2646 Program ROM
2647 ----------------------------------------------------------------------------
2648
2649 Program ROM is 512K, occupying D31-D0 of each word. It is mirrored every
2650 512K bytes in memory.
2651
2652 ----------------------------------------------------------------------------
2653 CPU information
2654 ----------------------------------------------------------------------------
2655
2656 Main CPU:  NEC uPD70632GD-20 (200-pin PQFP, 20 MHz)
2657
2658 * The value of PIR for this particular chip is $00007007.
2659
2660 * The instruction MOV.D with a register operand uses the register
2661   pair "rn:rn+1" as the source data. R31 is a special case; the second
2662   register of the pair is still R31 rather than wrapping to R0.
2663
2664   mov.d r2, [r0]       ; Write pair R2:R3 to [R0]
2665   mov.d r3, [r0]       ; Write pair R3:R4 to [R0]
2666   mov.d r31, [r0]      ; Write pair R31:R31 to [R0]
2667
2668   Using the immediate or quick immediate addressing mode for the source
2669   operand causes an Addressing Mode exception, just like the uPD70616.
2670
2671 Sound CPU: Zilog Z80840008PSC (40-pin DIP, 8 MHz)
2672
2673 * NMOS type. Undocumented instruction "out (c), 0" functions normally.
2674
2675
2676 */
src/mame/drivers/deniam.c
r6428r6429
114114static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
115115   ADDRESS_MAP_GLOBAL_MASK(0xff)
116116   AM_RANGE(0x01, 0x01) AM_READ(soundlatch_r)
117   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ym", ym3812_w)
117   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym3812_w)
118118   AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
119119   AM_RANGE(0x07, 0x07) AM_DEVWRITE("oki", deniam16b_oki_rom_bank_w)
120120ADDRESS_MAP_END
r6428r6429
132132   AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1")
133133   AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP /* irq ack? */
134134   AM_RANGE(0xc44006, 0xc44007) AM_READNOP   AM_DEVWRITE("oki", deniam16c_oki_rom_bank_w) /* read unused? */
135   AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ym", ym3812_w, 0xff00)
135   AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ymsnd", ym3812_w, 0xff00)
136136   AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") /* probably YM3812 input port */
137137   AM_RANGE(0xff0000, 0xffffff) AM_RAM
138138ADDRESS_MAP_END
r6428r6429
276276   /* sound hardware */
277277   MDRV_SPEAKER_STANDARD_MONO("mono")
278278
279   MDRV_SOUND_ADD("ym", YM3812, XTAL_25MHz/6) /* "SM64" ym3812 clone; 4.166470 measured, = 4.166666Mhz verified */
279   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_25MHz/6) /* "SM64" ym3812 clone; 4.166470 measured, = 4.166666Mhz verified */
280280   MDRV_SOUND_CONFIG(ym3812_config)
281281   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
282282
r6428r6429
312312   /* sound hardware */
313313   MDRV_SPEAKER_STANDARD_MONO("mono")
314314
315   MDRV_SOUND_ADD("ym", YM3812, XTAL_25MHz/6) /* "SM64" ym3812 clone; 4.166470 measured, = 4.166666Mhz verified) */
315   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_25MHz/6) /* "SM64" ym3812 clone; 4.166470 measured, = 4.166666Mhz verified) */
316316   MDRV_SOUND_CONFIG(ym3812_config)
317317   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
318318
src/mame/drivers/big10.c
r6428r6429
140140   AM_RANGE(0x99, 0x99) AM_WRITE(v9938_0_command_w) AM_READ(v9938_0_status_r)
141141   AM_RANGE(0x9a, 0x9a) AM_WRITE(v9938_0_palette_w)
142142   AM_RANGE(0x9b, 0x9b) AM_WRITE(v9938_0_register_w)
143   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ay", ay8910_address_data_w)
144   AM_RANGE(0xa2, 0xa2) AM_DEVREAD("ay", ay8910_r) /* Dip-Switches routes here. */
143   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
144   AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_r) /* Dip-Switches routes here. */
145145ADDRESS_MAP_END
146146
147147
r6428r6429
207207   PORT_DIPSETTING(    0x20, "80%" )
208208   PORT_DIPSETTING(    0x30, "90%" )
209209   PORT_DIPNAME( 0xC0, 0x00, "Coinage (A=1; B=5; C=10)" )   PORT_DIPLOCATION("DSW1:1,2")
210   PORT_DIPSETTING(    0x00, "x1" )
210   PORT_DIPSETTING(    0x00, "x1snd" )
211211   PORT_DIPSETTING(    0x40, "x2" )
212212   PORT_DIPSETTING(    0x80, "x5" )
213213   PORT_DIPSETTING(    0xC0, "x10" )
r6428r6429
265265
266266   /* sound hardware */
267267   MDRV_SPEAKER_STANDARD_MONO("mono")
268   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/12)   /* guess */
268   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12)   /* guess */
269269   MDRV_SOUND_CONFIG(ay8910_config)
270270   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
271271MACHINE_DRIVER_END
src/mame/drivers/pipeline.c
r6428r6429
397397
398398   MDRV_SPEAKER_STANDARD_MONO("mono")
399399
400   MDRV_SOUND_ADD("ym", YM2203, 7372800/4)
400   MDRV_SOUND_ADD("ymsnd", YM2203, 7372800/4)
401401   MDRV_SOUND_CONFIG(ym2203_config)
402402   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
403403
src/mame/drivers/wwfsstar.c
r6428r6429
189189static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
190190   AM_RANGE(0x0000, 0x7fff) AM_ROM
191191   AM_RANGE(0x8000, 0x87ff) AM_RAM
192   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
192   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
193193   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
194194   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
195195ADDRESS_MAP_END
r6428r6429
457457   /* sound hardware */
458458   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
459459
460   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
460   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
461461   MDRV_SOUND_CONFIG(ym2151_config)
462462   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
463463   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/taito_b.c
r6428r6429
685685   AM_RANGE(0x0000, 0x3fff) AM_ROM
686686   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
687687   AM_RANGE(0x8000, 0x8fff) AM_RAM
688   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
688   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
689689   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
690690   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
691691ADDRESS_MAP_END
r6428r6429
694694   AM_RANGE(0x0000, 0x3fff) AM_ROM
695695   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
696696   AM_RANGE(0xc000, 0xdfff) AM_RAM
697   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
697   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
698698   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
699699   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
700700   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
709709   AM_RANGE(0x0000, 0x3fff) AM_ROM
710710   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
711711   AM_RANGE(0x8000, 0x8fff) AM_RAM
712   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
712   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
713713   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)      /* yes, both addresses for the same chip */
714714   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
715715   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
r6428r6429
21112111{
21122112   if (channel==1)
21132113   {
2114      const device_config *ym = devtag_get_device(machine, "ym");
2114      const device_config *ym = devtag_get_device(machine, "ymsnd");
21152115      sound_set_output_gain(ym, 0, percent / 100.0);
21162116      sound_set_output_gain(ym, 1, percent / 100.0);
21172117      sound_set_output_gain(ym, 2, percent / 100.0);
r6428r6429
21682168   /* sound hardware */
21692169   MDRV_SPEAKER_STANDARD_MONO("mono")
21702170
2171   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2171   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
21722172   MDRV_SOUND_CONFIG(ym2610_config)
21732173   MDRV_SOUND_ROUTE(0, "mono", 0.25)
21742174   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
22062206   /* sound hardware */
22072207   MDRV_SPEAKER_STANDARD_MONO("mono")
22082208
2209   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2209   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
22102210   MDRV_SOUND_CONFIG(ym2610_config)
22112211   MDRV_SOUND_ROUTE(0, "mono", 0.25)
22122212   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
22442244   /* sound hardware */
22452245   MDRV_SPEAKER_STANDARD_MONO("mono")
22462246
2247   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2247   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
22482248   MDRV_SOUND_CONFIG(ym2610_config)
22492249   MDRV_SOUND_ROUTE(0, "mono", 0.25)
22502250   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
22822282   /* sound hardware */
22832283   MDRV_SPEAKER_STANDARD_MONO("mono")
22842284
2285   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2285   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
22862286   MDRV_SOUND_CONFIG(ym2610_config)
22872287   MDRV_SOUND_ROUTE(0, "mono", 0.25)
22882288   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
23192319   /* sound hardware */
23202320   MDRV_SPEAKER_STANDARD_MONO("mono")
23212321
2322   MDRV_SOUND_ADD("ym", YM2203, 3000000)
2322   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
23232323   MDRV_SOUND_CONFIG(ym2203_config)
23242324   MDRV_SOUND_ROUTE(0, "mono", 0.25)
23252325   MDRV_SOUND_ROUTE(1, "mono", 0.25)
r6428r6429
23582358   /* sound hardware */
23592359   MDRV_SPEAKER_STANDARD_MONO("mono")
23602360
2361   MDRV_SOUND_ADD("ym", YM2203, 3000000)
2361   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
23622362   MDRV_SOUND_CONFIG(ym2203_config)
23632363   MDRV_SOUND_ROUTE(0, "mono", 0.25)
23642364   MDRV_SOUND_ROUTE(1, "mono", 0.25)
r6428r6429
24012401   /* sound hardware */
24022402   MDRV_SPEAKER_STANDARD_MONO("mono")
24032403
2404   MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2)   /* verified on pcb */
2404   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2)   /* verified on pcb */
24052405   MDRV_SOUND_CONFIG(ym2610_config)
24062406   MDRV_SOUND_ROUTE(0, "mono", 0.25)
24072407   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
24392439   /* sound hardware */
24402440   MDRV_SPEAKER_STANDARD_MONO("mono")
24412441
2442   MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2)   /* verified on pcb */
2442   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2)   /* verified on pcb */
24432443   MDRV_SOUND_CONFIG(ym2610_config)
24442444   MDRV_SOUND_ROUTE(0, "mono", 0.25)
24452445   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
24802480   /* sound hardware */
24812481   MDRV_SPEAKER_STANDARD_MONO("mono")
24822482
2483   MDRV_SOUND_ADD("ym", YM2610B, 8000000)
2483   MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000)
24842484   MDRV_SOUND_CONFIG(ym2610_config)
24852485   MDRV_SOUND_ROUTE(0, "mono", 0.25)
24862486   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
25212521   /* sound hardware */
25222522   MDRV_SPEAKER_STANDARD_MONO("mono")
25232523
2524   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2524   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
25252525   MDRV_SOUND_CONFIG(ym2610_config)
25262526   MDRV_SOUND_ROUTE(0, "mono", 0.25)
25272527   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
25592559   /* sound hardware */
25602560   MDRV_SPEAKER_STANDARD_MONO("mono")
25612561
2562   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2562   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
25632563   MDRV_SOUND_CONFIG(ym2610_config)
25642564   MDRV_SOUND_ROUTE(0, "mono", 0.25)
25652565   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
26002600   /* sound hardware */
26012601   MDRV_SPEAKER_STANDARD_MONO("mono")
26022602
2603   MDRV_SOUND_ADD("ym", YM2610B, 8000000)
2603   MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000)
26042604   MDRV_SOUND_CONFIG(ym2610_config)
26052605   MDRV_SOUND_ROUTE(0, "mono", 0.25)
26062606   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
26382638   /* sound hardware */
26392639   MDRV_SPEAKER_STANDARD_MONO("mono")
26402640
2641   MDRV_SOUND_ADD("ym", YM2203, 3000000)
2641   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
26422642   MDRV_SOUND_CONFIG(ym2203_config)
26432643   MDRV_SOUND_ROUTE(0, "mono", 0.25)
26442644   MDRV_SOUND_ROUTE(1, "mono", 0.25)
r6428r6429
26802680   /* sound hardware */
26812681   MDRV_SPEAKER_STANDARD_MONO("mono")
26822682
2683   MDRV_SOUND_ADD("ym", YM2203, 3000000)
2683   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
26842684   MDRV_SOUND_CONFIG(ym2203_config)
26852685   MDRV_SOUND_ROUTE(0, "mono", 0.25)
26862686   MDRV_SOUND_ROUTE(1, "mono", 0.25)
r6428r6429
27192719   /* sound hardware */
27202720   MDRV_SPEAKER_STANDARD_MONO("mono")
27212721
2722   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2722   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
27232723   MDRV_SOUND_CONFIG(ym2610_config)
27242724   MDRV_SOUND_ROUTE(0, "mono", 0.25)
27252725   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
27572757   /* sound hardware */
27582758   MDRV_SPEAKER_STANDARD_MONO("mono")
27592759
2760   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2760   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
27612761   MDRV_SOUND_CONFIG(ym2610_config)
27622762   MDRV_SOUND_ROUTE(0, "mono", 0.25)
27632763   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
28042804   /* sound hardware */
28052805   MDRV_SPEAKER_STANDARD_MONO("mono")
28062806
2807   MDRV_SOUND_ADD("ym", YM2610, 8000000)
2807   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
28082808   MDRV_SOUND_CONFIG(ym2610_config)
28092809   MDRV_SOUND_ROUTE(0, "mono", 0.25)
28102810   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
28492849   /* sound hardware */
28502850   MDRV_SPEAKER_STANDARD_MONO("mono")
28512851
2852   MDRV_SOUND_ADD("ym", YM2610B, 8000000)
2852   MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000)
28532853   MDRV_SOUND_CONFIG(ym2610_config)
28542854   MDRV_SOUND_ROUTE(0, "mono", 0.25)
28552855   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
28772877   ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) )
28782878   ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) )
28792879
2880   ROM_REGION( 0x80000, "ym", 0 )
2880   ROM_REGION( 0x80000, "ymsnd", 0 )
28812881   ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) )
28822882
28832883   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
28992899   ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) )
29002900   ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) )
29012901
2902   ROM_REGION( 0x80000, "ym", 0 )
2902   ROM_REGION( 0x80000, "ymsnd", 0 )
29032903   ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) )
29042904
29052905   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
29212921   ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) )
29222922   ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) )
29232923
2924   ROM_REGION( 0x80000, "ym", 0 )
2924   ROM_REGION( 0x80000, "ymsnd", 0 )
29252925   ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) )
29262926
29272927   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
29472947   ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) )
29482948   ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) )
29492949
2950   ROM_REGION( 0x80000, "ym", 0 )
2950   ROM_REGION( 0x80000, "ymsnd", 0 )
29512951   ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) )
29522952ROM_END
29532953
r6428r6429
29662966   ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) )
29672967   ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) )
29682968
2969   ROM_REGION( 0x80000, "ym", 0 )
2969   ROM_REGION( 0x80000, "ymsnd", 0 )
29702970   ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) )
29712971ROM_END
29722972
r6428r6429
29852985   ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) )
29862986   ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) )
29872987
2988   ROM_REGION( 0x80000, "ym", 0 )
2988   ROM_REGION( 0x80000, "ymsnd", 0 )
29892989   ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) )
29902990ROM_END
29912991
r6428r6429
30043004   ROM_LOAD( "c43-02",  0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) )
30053005   ROM_LOAD( "c43-03",  0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) )
30063006
3007   ROM_REGION( 0x80000, "ym", 0 )
3007   ROM_REGION( 0x80000, "ymsnd", 0 )
30083008   ROM_LOAD( "c43-01",  0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) )
30093009ROM_END
30103010
r6428r6429
30233023   ROM_LOAD( "c43-02",  0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) )
30243024   ROM_LOAD( "c43-03",  0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) )
30253025
3026   ROM_REGION( 0x80000, "ym", 0 )
3026   ROM_REGION( 0x80000, "ymsnd", 0 )
30273027   ROM_LOAD( "c43-01",  0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) )
30283028ROM_END
30293029
r6428r6429
30423042   ROM_LOAD( "c43-02",  0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) )
30433043   ROM_LOAD( "c43-03",  0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) )
30443044
3045   ROM_REGION( 0x80000, "ym", 0 )
3045   ROM_REGION( 0x80000, "ymsnd", 0 )
30463046   ROM_LOAD( "c43-01",  0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) )
30473047ROM_END
30483048
r6428r6429
30603060   ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASE00 )
30613061   /* empty (uses only pixel layer) */
30623062
3063   ROM_REGION( 0x80000, "ym", ROMREGION_ERASE00 )   /* adpcm samples */
3063   ROM_REGION( 0x80000, "ymsnd", ROMREGION_ERASE00 )   /* adpcm samples */
30643064   /* empty */
30653065
30663066   ROM_REGION( 0x80000, "ym.deltat", ROMREGION_ERASE00 )   /* DELTA-T samples */
r6428r6429
31763176   ROM_LOAD( "r3-ch2lh.rom", 0x1c0000, 0x020000, CRC(df3bc48f) SHA1(6747a453da4bca0b837f4ef1f1bbe871f15332ed) )
31773177   ROM_LOAD( "r3-ch2hh.rom", 0x1e0000, 0x020000, CRC(bf37dfac) SHA1(27e825bd0a4d7ae65714fefeb6fedac501984ba9) )
31783178
3179   ROM_REGION( 0x80000, "ym", 0 )
3179   ROM_REGION( 0x80000, "ymsnd", 0 )
31803180   ROM_LOAD( "r3-a1.rom", 0x00000, 0x20000, CRC(4396fa19) SHA1(cb6d983f210249676c500723041d74fa3fdc517d) )
31813181   ROM_LOAD( "r3-a2.rom", 0x20000, 0x20000, CRC(41fe53a8) SHA1(1723046111d0115d3f64c3111c50d51306e88ad0) )
31823182   ROM_LOAD( "r3-a3.rom", 0x40000, 0x20000, CRC(e89249ba) SHA1(cd94492a0643e9e1e25b121160914822a6a7723e) )
r6428r6429
32003200   ROM_LOAD( "ramb3-01.bin",  0x100000, 0x80000, CRC(c55fcf54) SHA1(6a26ed2541be9e3341f20e74cc49b5366ce7d424) )
32013201   ROM_LOAD( "ramb3-02.bin",  0x180000, 0x80000, CRC(9dd014c6) SHA1(0f046d9de57db0272810adde7d49cc348b78f1f7) )
32023202
3203   ROM_REGION( 0x80000, "ym", 0 )
3203   ROM_REGION( 0x80000, "ymsnd", 0 )
32043204   ROM_LOAD( "ramb3-05.bin", 0x00000, 0x80000, CRC(0179dc40) SHA1(89feb708618ae7fa96883473d5c7a09dcc6f452a) )
32053205ROM_END
32063206
r6428r6429
32213221   ROM_LOAD( "ramb3-01.bin",  0x100000, 0x80000, CRC(c55fcf54) SHA1(6a26ed2541be9e3341f20e74cc49b5366ce7d424) )
32223222   ROM_LOAD( "ramb3-02.bin",  0x180000, 0x80000, CRC(9dd014c6) SHA1(0f046d9de57db0272810adde7d49cc348b78f1f7) )
32233223
3224   ROM_REGION( 0x80000, "ym", 0 )
3224   ROM_REGION( 0x80000, "ymsnd", 0 )
32253225   ROM_LOAD( "ramb3-05.bin", 0x00000, 0x80000, CRC(0179dc40) SHA1(89feb708618ae7fa96883473d5c7a09dcc6f452a) )
32263226ROM_END
32273227
r6428r6429
32383238   ROM_LOAD( "pb-ic14.bin", 0x00000, 0x80000, CRC(55f90ea4) SHA1(793c79e5b72171124368ad09dd31235252c541f5) )
32393239   ROM_LOAD( "pb-ic9.bin",  0x80000, 0x80000, CRC(3253aac9) SHA1(916d85aa96e2914630833292a0655b0389b4a39b) )
32403240
3241   ROM_REGION( 0x100000, "ym", 0 )
3241   ROM_REGION( 0x100000, "ymsnd", 0 )
32423242   ROM_LOAD( "pb-ic15.bin", 0x000000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
32433243ROM_END
32443244
r6428r6429
32553255   ROM_LOAD( "d89-02.14", 0x00000, 0x80000, CRC(c36544b9) SHA1(6bd5257dfb27532621b75f43e31aa351ad2192a2) )
32563256   ROM_LOAD( "d89-01.9",  0x80000, 0x80000, CRC(fffa0660) SHA1(de1abe1b1e9d14405b5663103ea4a6119fce7cc5) )
32573257
3258   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3258   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
32593259   ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) )
32603260
32613261   ROM_REGION( 0x0c00, "plds", 0 )
r6428r6429
32813281   ROM_LOAD( "d89-02.14", 0x00000, 0x80000, CRC(c36544b9) SHA1(6bd5257dfb27532621b75f43e31aa351ad2192a2) )
32823282   ROM_LOAD( "d89-01.9" , 0x80000, 0x80000, CRC(fffa0660) SHA1(de1abe1b1e9d14405b5663103ea4a6119fce7cc5) )
32833283
3284   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3284   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
32853285   ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) )
32863286
32873287   ROM_REGION( 0x0c00, "plds", 0 )
r6428r6429
33073307   ROM_LOAD( "d89-12.bin",0x00000, 0x80000, CRC(53df86f1) SHA1(f03d77dd54eb455462133a29dd8fec007abedcfd) )
33083308   ROM_LOAD( "d89-13.bin",0x80000, 0x80000, CRC(c44c1352) SHA1(78a04fe0ade6e8f9e6bbda7652a54a79b6208fdd) )
33093309
3310   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3310   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
33113311   ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) )
33123312ROM_END
33133313
r6428r6429
33243324   ROM_LOAD( "d72-03.bin", 0x000000, 0x200000, CRC(1de257d0) SHA1(df03b1fb5cd69e2d2eb2088f96f26b0ea9756fb7) )
33253325   ROM_LOAD( "d72-02.bin", 0x200000, 0x200000, CRC(bf0da640) SHA1(2b2493904ed0b94dc12b56dae71cc5c25701aef9) )
33263326
3327   ROM_REGION( 0x200000, "ym", 0 )
3327   ROM_REGION( 0x200000, "ymsnd", 0 )
33283328   ROM_LOAD( "d72-01.bin", 0x00000, 0x200000, CRC(b82b8830) SHA1(4b2dca16fe072a5ee51de5cf40637e3f1b39f695) )
33293329ROM_END
33303330
r6428r6429
34683468   ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) )
34693469   ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) )
34703470
3471   ROM_REGION( 0x80000, "ym", 0 )
3471   ROM_REGION( 0x80000, "ymsnd", 0 )
34723472   ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) )
34733473
34743474   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
34923492   ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) )
34933493   ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) )
34943494
3495   ROM_REGION( 0x80000, "ym", 0 )
3495   ROM_REGION( 0x80000, "ymsnd", 0 )
34963496   ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) )
34973497
34983498   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
35163516   ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) )
35173517   ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) )
35183518
3519   ROM_REGION( 0x80000, "ym", 0 )
3519   ROM_REGION( 0x80000, "ymsnd", 0 )
35203520   ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) )
35213521
35223522   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
35363536   ROM_LOAD( "se-04.2",  0x000000, 0x80000, CRC(920ad100) SHA1(69cd2af6218db90632f09a131d2956ab69034643) )
35373537   ROM_LOAD( "se-05.1",  0x080000, 0x80000, CRC(d297c995) SHA1(e5ad5a8ce222621c9156c2949916bee6b3099c4e) )
35383538
3539   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3539   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
35403540   ROM_LOAD( "se-06.11", 0x00000, 0x80000, CRC(80d5e772) SHA1(bee4982a3d65210ff86495e36a0b656934b00c7d) )
35413541ROM_END
35423542
r6428r6429
35553555   ROM_LOAD( "ryujin07.2", 0x000000, 0x100000, CRC(34f50980) SHA1(432384bd283389bca17611602eb310726c9d78a4) )
35563556   ROM_LOAD( "ryujin06.1", 0x100000, 0x100000, CRC(1b85ff34) SHA1(5ad259e6f7aa4a0c08975da73bf41400495f2e61) )
35573557
3558   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3558   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
35593559   ROM_LOAD( "ryujin08.11", 0x00000, 0x80000, CRC(480d040d) SHA1(50add2f304ef34f7f45f25a2a2cf0568d58259ad) )
35603560ROM_END
35613561
r6428r6429
35803580   ROM_LOAD16_BYTE( "c69-14.ic3", 0x300001, 0x020000, CRC(0ed0272a) SHA1(03b15654213ff71ffc96d3a87657bdeb724e9269) )
35813581   /* 340000-3fffff empty */
35823582
3583   ROM_REGION( 0x80000, "ym", 0 )   /* adpcm samples */
3583   ROM_REGION( 0x80000, "ymsnd", 0 )   /* adpcm samples */
35843584   ROM_LOAD( "c69-03.36", 0x00000, 0x80000, CRC(63e6b6e7) SHA1(72574ca7505eee15fabc4996f253505d9dd65898) )
35853585ROM_END
35863586
src/mame/drivers/jackal.c
r6428r6429
117117ADDRESS_MAP_END
118118
119119static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
120   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
121121   AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(SMH_RAM) AM_BASE(&paletteram)   // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
122122   AM_RANGE(0x6000, 0x605f) AM_RAM                                                   // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff)
123123   AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE(1)
r6428r6429
281281   // sound hardware
282282   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
283283
284   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) // verified on pcb
284   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) // verified on pcb
285285   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
286286   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
287287MACHINE_DRIVER_END
src/mame/drivers/suna8.c
r6428r6429
911911
912912static ADDRESS_MAP_START( hardhead_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
913913   AM_RANGE(0x0000, 0x7fff) AM_ROM   // ROM
914   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
915   AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay", ay8910_address_data_w      )
914   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
915   AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("aysnd", ay8910_address_data_w      )
916916   AM_RANGE(0xc000, 0xc7ff) AM_RAM   // RAM
917   AM_RANGE(0xc800, 0xc800) AM_DEVREAD("ym", ym3812_status_port_r)   // ? unsure
917   AM_RANGE(0xc800, 0xc800) AM_DEVREAD("ymsnd", ym3812_status_port_r)   // ? unsure
918918   AM_RANGE(0xd000, 0xd000) AM_WRITE(soundlatch2_w            )   //
919919   AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_r            )   // From Main CPU
920920ADDRESS_MAP_END
r6428r6429
946946
947947static ADDRESS_MAP_START( brickzn_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
948948   AM_RANGE(0x0000, 0xbfff) AM_ROM   // ROM
949   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w   )
950   AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay", ay8910_address_data_w      )
949   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_w   )
950   AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("aysnd", ay8910_address_data_w      )
951951   AM_RANGE(0xe000, 0xe7ff) AM_RAM   // RAM
952952   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w            )   // To PCM CPU
953953   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r            )   // From Main CPU
r6428r6429
14371437   /* sound hardware */
14381438   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
14391439
1440   MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 8)
1440   MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8)
14411441   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
14421442   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
14431443
1444   MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16)
1444   MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)
14451445   MDRV_SOUND_CONFIG(hardhead_ay8910_interface)
14461446   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
14471447   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
r6428r6429
15671567   /* sound hardware */
15681568   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15691569
1570   MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6)
1570   MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6)
15711571   MDRV_SOUND_CONFIG(brickzn_ym3812_interface)
15721572   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
15731573   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
15741574
1575   MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16)
1575   MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)
15761576   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33)
15771577   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
15781578
r6428r6429
16671667   /* sound hardware */
16681668   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
16691669
1670   MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6)
1670   MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6)
16711671   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
16721672   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
16731673
1674   MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16)
1674   MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)
16751675   MDRV_SOUND_CONFIG(starfigh_ay8910_interface)
16761676   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
16771677   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
r6428r6429
17251725   /* sound hardware */
17261726   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17271727
1728   MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6)
1728   MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6)
17291729   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
17301730   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
17311731
1732   MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16)
1732   MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)
17331733   MDRV_SOUND_CONFIG(hardhead_ay8910_interface)
17341734   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
17351735   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
src/mame/drivers/namcos86.c
r6428r6429
414414   AM_RANGE(0x0080, 0x00ff) AM_RAM                                          \
415415   AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namcos1_cus30_r,namcos1_cus30_w) /* PSG device, shared RAM */   \
416416   AM_RANGE(0x1400, 0x1fff) AM_RAM                                          \
417   AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   \
417   AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   \
418418   AM_RANGE(ADDR_INPUT+0x20, ADDR_INPUT+0x20) AM_READ_PORT("IN0")                  \
419419   AM_RANGE(ADDR_INPUT+0x21, ADDR_INPUT+0x21) AM_READ_PORT("IN1")                  \
420420   AM_RANGE(ADDR_INPUT+0x30, ADDR_INPUT+0x30) AM_READ(dsw0_r)                     \
r6428r6429
10531053   /* sound hardware */
10541054   MDRV_SPEAKER_STANDARD_MONO("mono")
10551055
1056   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1056   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
10571057   MDRV_SOUND_ROUTE(0, "mono", 0.0)
10581058   MDRV_SOUND_ROUTE(1, "mono", 0.60)   /* only right channel is connected */
10591059
src/mame/drivers/chanbara.c
r6428r6429
183183   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW0")
184184   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM")
185185   AM_RANGE(0x2003, 0x2003) AM_READ_PORT("JOY")
186   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
186   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
187187   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))
188188   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
189189ADDRESS_MAP_END
r6428r6429
350350
351351   MDRV_SPEAKER_STANDARD_MONO("mono")
352352
353   MDRV_SOUND_ADD("ym", YM2203, 12000000/8)
353   MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/8)
354354   MDRV_SOUND_CONFIG(ym2203_config)
355355   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
356356MACHINE_DRIVER_END
src/mame/drivers/m14.c
r6428r6429
5353#include "driver.h"
5454#include "cpu/i8085/i8085.h"
5555
56static tilemap *m14_tilemap;
5756
57typedef struct _m14_state m14_state;
58struct _m14_state
59{
60   /* video-related */
61   tilemap  *m14_tilemap;
62   UINT8 *  video_ram;
63   UINT8 *  color_ram;
64
65   /* input-related */
66   UINT8 hop_mux;
67};
68
69
5870/*************************************
5971 *
6072 *  Video Hardware
r6428r6429
8193
8294static TILE_GET_INFO( m14_get_tile_info )
8395{
84   int code = videoram[tile_index];
85   int color = colorram[tile_index] & 0xf;
96   m14_state *state = (m14_state *)machine->driver_data;
8697
98   int code = state->video_ram[tile_index];
99   int color = state->color_ram[tile_index] & 0x0f;
100
87101   /* colorram & 0xf0 used but unknown purpose*/
88102
89103   SET_TILE_INFO(
r6428r6429
95109
96110static VIDEO_START( m14 )
97111{
98   m14_tilemap = tilemap_create(machine, m14_get_tile_info,tilemap_scan_rows,8,8,32,32);
112   m14_state *state = (m14_state *)machine->driver_data;
113
114   state->m14_tilemap = tilemap_create(machine, m14_get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
99115}
100116
101117static VIDEO_UPDATE( m14 )
102118{
103   tilemap_draw(bitmap,cliprect,m14_tilemap,0,0);
119   m14_state *state = (m14_state *)screen->machine->driver_data;
120
121   tilemap_draw(bitmap, cliprect, state->m14_tilemap, 0, 0);
104122   return 0;
105123}
106124
107125
108126static WRITE8_HANDLER( m14_vram_w )
109127{
110   videoram[offset] = data;
111   tilemap_mark_tile_dirty(m14_tilemap,offset);
128   m14_state *state = (m14_state *)space->machine->driver_data;
129
130   state->video_ram[offset] = data;
131   tilemap_mark_tile_dirty(state->m14_tilemap, offset);
112132}
113133
114134static WRITE8_HANDLER( m14_cram_w )
115135{
116   colorram[offset] = data;
117   tilemap_mark_tile_dirty(m14_tilemap,offset);
136   m14_state *state = (m14_state *)space->machine->driver_data;
137
138   state->color_ram[offset] = data;
139   tilemap_mark_tile_dirty(state->m14_tilemap, offset);
118140}
119141
120142/*************************************
r6428r6429
123145 *
124146 *************************************/
125147
126static UINT8 hop_mux;
127
128148static READ8_HANDLER( m14_rng_r )
129149{
130150   /* graphic artifacts happens if this doesn't return random values. */
r6428r6429
134154/* Here routes the hopper & the inputs */
135155static READ8_HANDLER( input_buttons_r )
136156{
137   if(hop_mux) { hop_mux = 0; return 0; } //0x43 status bits
138   else        { return input_port_read(space->machine, "IN0"); }
157   m14_state *state = (m14_state *)space->machine->driver_data;
158
159   if (state->hop_mux)
160   {
161      state->hop_mux = 0;
162      return 0; //0x43 status bits
163   }
164   else
165      return input_port_read(space->machine, "IN0");
139166}
140167
141168#if 0
r6428r6429
151178
152179static WRITE8_HANDLER( hopper_w )
153180{
181   m14_state *state = (m14_state *)space->machine->driver_data;
182
154183   /* ---- x--- coin out */
155184   /* ---- --x- hopper/input mux? */
156   hop_mux = data & 2;
185   state->hop_mux = data & 2;
157186   //popmessage("%02x",data);
158187}
159188
r6428r6429
166195static ADDRESS_MAP_START( m14_map, ADDRESS_SPACE_PROGRAM, 8 )
167196   AM_RANGE(0x0000, 0x1fff) AM_ROM
168197   AM_RANGE(0x2000, 0x23ff) AM_RAM
169   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(m14_vram_w) AM_BASE(&videoram)
170   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m14_cram_w) AM_BASE(&colorram)
198   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(m14_vram_w) AM_BASE_MEMBER(m14_state, video_ram)
199   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m14_cram_w) AM_BASE_MEMBER(m14_state, color_ram)
171200ADDRESS_MAP_END
172201
173202static ADDRESS_MAP_START( m14_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
188217static INPUT_CHANGED( left_coin_inserted )
189218{
190219   /* left coin insertion causes a rst6.5 (vector 0x34) */
191   if(newval)
220   if (newval)
192221      cputag_set_input_line(field->port->machine, "maincpu", I8085_RST65_LINE, HOLD_LINE);
193222}
194223
195224static INPUT_CHANGED( right_coin_inserted )
196225{
197226   /* right coin insertion causes a rst5.5 (vector 0x2c) */
198   if(newval)
227   if (newval)
199228      cputag_set_input_line(field->port->machine, "maincpu", I8085_RST55_LINE, HOLD_LINE);
200229}
201230
r6428r6429
275304   cpu_set_input_line(device, I8085_RST75_LINE, CLEAR_LINE);
276305}
277306
307static MACHINE_START( m14 )
308{
309   m14_state *state = (m14_state *)machine->driver_data;
310
311   state_save_register_global(machine, state->hop_mux);
312}
313
314static MACHINE_RESET( m14 )
315{
316   m14_state *state = (m14_state *)machine->driver_data;
317
318   state->hop_mux = 0;
319}
320
321
278322static MACHINE_DRIVER_START( m14 )
279323
324   /* driver data */
325   MDRV_DRIVER_DATA(m14_state)
326
280327   /* basic machine hardware */
281328   MDRV_CPU_ADD("maincpu",8085A,6000000/2) //guess: 6 Mhz internally divided by 2
282329   MDRV_CPU_PROGRAM_MAP(m14_map)
283330   MDRV_CPU_IO_MAP(m14_io_map)
284331   MDRV_CPU_VBLANK_INT("screen",m14_irq)
285332
333   MDRV_MACHINE_START(m14)
334   MDRV_MACHINE_RESET(m14)
335
286336   /* video hardware */
287337   MDRV_SCREEN_ADD("screen", RASTER)
288338   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
328378   ROM_LOAD( "mgpa10.bin",  0x0400, 0x0400, CRC(e1a4ebdc) SHA1(d9df42424ede17f0634d8d0a56c0374a33c55333) )
329379ROM_END
330380
331GAME( 1979, ptrmj,  0,       m14,  m14,  0, ROT0, "Irem", "PT Reach Mahjong (Japan)", GAME_NO_SOUND )
381GAME( 1979, ptrmj,  0,       m14,  m14,  0, ROT0, "Irem", "PT Reach Mahjong (Japan)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
src/mame/drivers/avalnche.c
r6428r6429
5858 *
5959 *************************************/
6060
61static UINT8 avalance_video_inverted;
62
63
6461static VIDEO_UPDATE( avalnche )
6562{
63   avalnche_state *state = (avalnche_state *)screen->machine->driver_data;
6664   offs_t offs;
6765
6866   for (offs = 0; offs < videoram_size; offs++)
r6428r6429
7169
7270      UINT8 x = offs << 3;
7371      int y = offs >> 5;
74      UINT8 data = videoram[offs];
72      UINT8 data = state->videoram[offs];
7573
7674      for (i = 0; i < 8; i++)
7775      {
7876         pen_t pen;
7977
80         if (avalance_video_inverted)
78         if (state->avalance_video_inverted)
8179            pen = (data & 0x80) ? RGB_WHITE : RGB_BLACK;
8280         else
8381            pen = (data & 0x80) ? RGB_BLACK : RGB_WHITE;
r6428r6429
9593
9694static WRITE8_HANDLER( avalance_video_invert_w )
9795{
98   avalance_video_inverted = data & 0x01;
96   avalnche_state *state = (avalnche_state *)space->machine->driver_data;
97   state->avalance_video_inverted = data & 0x01;
9998}
10099
101100
r6428r6429
133132
134133static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
135134   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
136   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
135   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_MEMBER(avalnche_state, videoram) AM_SIZE(&videoram_size)
137136   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0")
138137   AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1")
139138   AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE")
r6428r6429
217216 *
218217 *************************************/
219218
219static MACHINE_START( avalnche )
220{
221   avalnche_state *state = (avalnche_state *)machine->driver_data;
222
223   state_save_register_global(machine, state->avalance_video_inverted);
224}
225
226static MACHINE_RESET( avalnche )
227{
228   avalnche_state *state = (avalnche_state *)machine->driver_data;
229
230   state->avalance_video_inverted = 0;
231}
232
220233static MACHINE_DRIVER_START( avalnche )
221234
235   /* driver data */
236   MDRV_DRIVER_DATA(avalnche_state)
237
222238   /* basic machine hardware */
223239   MDRV_CPU_ADD("maincpu", M6502,MASTER_CLOCK/16)      /* clock input is the "2H" signal divided by two */
224240   MDRV_CPU_PROGRAM_MAP(main_map)
225241   MDRV_CPU_VBLANK_INT_HACK(avalnche_interrupt,8)
226242
243   MDRV_MACHINE_START(avalnche)
244   MDRV_MACHINE_RESET(avalnche)
245
227246   /* video hardware */
228247   MDRV_VIDEO_UPDATE(avalnche)
229248
r6428r6429
278297 *
279298 *************************************/
280299
281GAMEL( 1978, avalnche, 0,        avalnche, avalnche, 0, ROT0, "Atari", "Avalanche", 0, layout_avalnche )
282GAMEL( 1978, cascade,  avalnche, avalnche, cascade,  0, ROT0, "Sidam", "Cascade", 0, layout_avalnche )
300GAMEL( 1978, avalnche, 0,        avalnche, avalnche, 0, ROT0, "Atari",  "Avalanche", GAME_SUPPORTS_SAVE, layout_avalnche )
301GAMEL( 1978, cascade,  avalnche, avalnche, cascade,  0, ROT0, "Sidam",  "Cascade",   GAME_SUPPORTS_SAVE, layout_avalnche )
src/mame/drivers/dcon.c
r6428r6429
324324   ROM_LOAD16_BYTE("p1-1",   0x040001, 0x20000, CRC(4b8de320) SHA1(14a3ab347fc468869355951294c3e3a8f9211b6a) )
325325
326326   ROM_REGION( 0x20000, "audiocpu", 0 )    /* 64k code for sound Z80 */
327   ROM_LOAD( "fm",           0x000000, 0x08000, CRC(50450faa) SHA1(d4add7d357951b51d53ed7f143ece7f3bde7f4cb) )
327   ROM_LOAD( "fmsnd",           0x000000, 0x08000, CRC(50450faa) SHA1(d4add7d357951b51d53ed7f143ece7f3bde7f4cb) )
328328   ROM_CONTINUE(             0x010000, 0x08000 )
329329   ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
330330
src/mame/drivers/gstriker.c
r6428r6429
315315
316316static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
317317   ADDRESS_MAP_GLOBAL_MASK(0xff)
318   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
318   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
319319   AM_RANGE(0x04, 0x04) AM_WRITE(gs_sh_bankswitch_w)
320320   AM_RANGE(0x08, 0x08) AM_WRITE(gs_sh_pending_command_clear_w)
321321   AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r)
r6428r6429
574574
575575   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
576576
577   MDRV_SOUND_ADD("ym", YM2610, 8000000)
577   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
578578   MDRV_SOUND_CONFIG(ym2610_config)
579579   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
580580   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
614614
615615   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
616616
617   MDRV_SOUND_ADD("ym", YM2610, 8000000)
617   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
618618   MDRV_SOUND_CONFIG(ym2610_config)
619619   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
620620   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
652652   ROM_REGION( 0x40000, "ym.deltat", 0 )
653653   ROM_LOAD( "human_scr-gs-106_m532001b-16_3402370.u93", 0x00000, 0x040000, CRC(93c9868c) SHA1(dcecb34e46405155e35aaf134b8547430d23f5a7) )
654654
655   ROM_REGION( 0x100000, "ym", 0 )
655   ROM_REGION( 0x100000, "ymsnd", 0 )
656656   ROM_LOAD( "scrgs107.u99", 0x00000, 0x100000, CRC(ecc0a01b) SHA1(239e832b7d22925460a8f44eb82e782cd13aba49) )
657657
658658   ROM_REGION( 0x1000, "plds", 0 )
r6428r6429
688688   ROM_REGION( 0x40000, "ym.deltat", 0 )
689689   ROM_LOAD( "human_scr-gs-106_m532001b-16_3402370.u93", 0x00000, 0x040000, CRC(93c9868c) SHA1(dcecb34e46405155e35aaf134b8547430d23f5a7) )
690690
691   ROM_REGION( 0x100000, "ym", 0 )
691   ROM_REGION( 0x100000, "ymsnd", 0 )
692692   ROM_LOAD( "scrgs107.u99", 0x00000, 0x100000, CRC(ecc0a01b) SHA1(239e832b7d22925460a8f44eb82e782cd13aba49) )
693693
694694      /* PALs were protected on this version, used the ones from the "gstriker" set */
r6428r6429
726726   ROM_REGION( 0x40000, "ym.deltat", 0 )
727727   ROM_LOAD( "c13_u86.u86",  0x000000, 0x040000, CRC(4b76a162) SHA1(38dcb7536662f5f520e59f3ff746b42e9df789d2) )
728728
729   ROM_REGION( 0x200000, "ym", 0 )
729   ROM_REGION( 0x200000, "ymsnd", 0 )
730730   ROM_LOAD( "c13_u104.104", 0x000000, 0x200000, CRC(8437b6f8) SHA1(79f183dcbf3cde5c77e086e4fdd8341809396e37) )
731731ROM_END
732732
r6428r6429
754754   ROM_REGION( 0x40000, "ym.deltat", 0 )
755755   ROM_LOAD( "c13_u86.u86",  0x000000, 0x040000, CRC(4b76a162) SHA1(38dcb7536662f5f520e59f3ff746b42e9df789d2) )
756756
757   ROM_REGION( 0x100000, "ym", 0 )
757   ROM_REGION( 0x100000, "ymsnd", 0 )
758758   ROM_LOAD( "vgoalc16.104", 0x000000, 0x100000, CRC(6fb06e1b) SHA1(c4584b480fe1165f8e2f887acaa578690514d35d) )
759759ROM_END
760760
r6428r6429
784784   ROM_REGION( 0x40000, "ym.deltat", 0 )
785785   ROM_LOAD( "u86",          0x000000, 0x040000, CRC(775f45dc) SHA1(1a740dd880d9f873e93dfc096fbcae1784b4f522) )
786786
787   ROM_REGION( 0x100000, "ym", 0 )
787   ROM_REGION( 0x100000, "ymsnd", 0 )
788788   ROM_LOAD( "u104",         0x000000, 0x100000, CRC(df07d0af) SHA1(356560e164ff222bc9004fe202f829c93244a6c9) )
789789ROM_END
790790
r6428r6429
814814   ROM_REGION( 0x40000, "ym.deltat", 0 )
815815   ROM_LOAD( "u86",          0x000000, 0x040000, CRC(775f45dc) SHA1(1a740dd880d9f873e93dfc096fbcae1784b4f522) )
816816
817   ROM_REGION( 0x100000, "ym", 0 )
817   ROM_REGION( 0x100000, "ymsnd", 0 )
818818   ROM_LOAD( "u104",         0x000000, 0x100000, CRC(df07d0af) SHA1(356560e164ff222bc9004fe202f829c93244a6c9) )
819819ROM_END
820820
src/mame/drivers/snk.c
r6428r6429
926926   AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE(3)
927927ADDRESS_MAP_END
928928
929static ADDRESS_MAP_START( madcrush_cpuA_map, ADDRESS_SPACE_PROGRAM, 8 )
930   AM_RANGE(0x0000, 0x7fff) AM_ROM
931   AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0")
932   AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1")
933   AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2")
934   AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w)
935   AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1")
936   AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2")
937   AM_RANGE(0x8600, 0x8600) AM_MIRROR(0xff) AM_WRITE(marvins_flipscreen_w)
938   AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
939   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE(&spriteram) AM_SHARE(1)   // + work ram
940   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE(4)  AM_BASE(&snk_fg_videoram)
941   AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w)
942   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(5)
943   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE(2)AM_BASE(&snk_bg_videoram)
944   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE(3)
945   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE(6) AM_BASE(&snk_tx_videoram)
946   AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
947   AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
948   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
949   AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
950   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
951   AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
952   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
953   AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
954ADDRESS_MAP_END
929955
956static ADDRESS_MAP_START( madcrush_cpuB_map, ADDRESS_SPACE_PROGRAM, 8 )
957   AM_RANGE(0x0000, 0x9fff) AM_ROM
958   AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w)
959   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(1)   // + work ram
960   AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w)
961   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE(4)
962   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE(5)
963   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE(2) // ??
964   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE(3)
965   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE(6)
966   AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w)
967   AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w)
968   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w)
969   AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w)
970   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w)
971   AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w)
972   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w)
973   AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w)
974ADDRESS_MAP_END
975
976
930977static ADDRESS_MAP_START( jcross_cpuA_map, ADDRESS_SPACE_PROGRAM, 8 )
931978   AM_RANGE(0x0000, 0x9fff) AM_ROM
932979   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
r6428r6429
16231670   PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_START1 )
16241671   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_START2 )
16251672   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(marvins_sound_busy, NULL) /* sound CPU status */
1626   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1673   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(marvins_sound_busy, NULL) /* sound CPU status */
16271674   PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_SERVICE )
16281675
16291676   PORT_START("IN1")
r6428r6429
36243671MACHINE_DRIVER_END
36253672
36263673
3674static MACHINE_DRIVER_START( madcrush )
3675
3676   MDRV_IMPORT_FROM(marvins)
3677
3678   /* basic machine hardware */
3679   MDRV_CPU_MODIFY("maincpu")
3680   MDRV_CPU_PROGRAM_MAP(madcrush_cpuA_map)
3681
3682   MDRV_CPU_MODIFY("sub")
3683   MDRV_CPU_PROGRAM_MAP(madcrush_cpuB_map)
3684MACHINE_DRIVER_END
3685
3686
36273687static MACHINE_DRIVER_START( jcross )
36283688
36293689   /* basic machine hardware */
r6428r6429
41144174   ROM_LOAD( "m1-prom.j5",  0x800, 0x400, CRC(07678443) SHA1(267951886d8b031dd633dc4823d9bd862a585437) )
41154175ROM_END
41164176
4177ROM_START( madcrush )
4178   ROM_REGION( 0x10000, "maincpu", 0 )   /* 64k for CPUA code */
4179   ROM_LOAD( "p3.a8",   0x0000, 0x2000, CRC(fbd3eda1) SHA1(23fb06978fe51ec409f1ebdbcc70d1b3b73f08ca) ) /* These 3 roms are located on the A2003 UP02-03 PCB */
4180   ROM_LOAD( "p4.a9",   0x2000, 0x2000, CRC(1bc67cab) SHA1(7d667c234d9eac34c0e90df7f68e9f5aa2726e8c) )
4181   ROM_LOAD( "p5.a10",  0x4000, 0x2000, CRC(d905ff79) SHA1(5b45e63d10191544ff6ca8c3ecb517484d70d5e3) )
4182
4183   ROM_REGION( 0x10000, "sub", 0 )   /* 64k for CPUB code */
4184   ROM_LOAD( "p6.a11",   0x0000, 0x2000, CRC(432b5743) SHA1(d3c86c9983ee2174c58becc1e250d94426e6fc70) ) /* These 3 roms are located on the A2003 UP02-03 PCB */
4185   ROM_LOAD( "p7.a13",   0x2000, 0x2000, CRC(dea2865a) SHA1(0807281e35159ee29fbe2d1aa087b57804f1a14f) ) /* Same as Mad Crasher, but different label */
4186   ROM_LOAD( "p8.a14",   0x4000, 0x2000, CRC(e25a9b9c) SHA1(26853611e3898907239e15f1a00f62290889f89b) ) /* Same as Mad Crasher, but different label */
4187   /* Roms P9 & P10 are located on the A3006SUB plug-in module also containing a Z80A CPU plugged into the A2003 UP02-03 PCB */
4188   ROM_LOAD( "p10.bin",  0x6000, 0x2000, CRC(55b14a36) SHA1(7d5566a6ba285af92ddf560efda60a79f1da84c2) ) /* Same as Mad Crasher, but different label */
4189   ROM_LOAD( "p9.bin",   0x8000, 0x2000, CRC(e3c8c2cb) SHA1(b3e39eacd2609ff0fa0f511bff0fc83e6b3970d4) ) /* Same as Mad Crasher, but different label */
4190
4191   ROM_REGION( 0x10000, "audiocpu", 0 )   /* 64k for sound code */
4192   ROM_LOAD( "p1.a6",   0x0000, 0x2000, CRC(2dcd036d) SHA1(4da42ab1e502fff57f5d5787df406289538fa484) ) /* Located on the A2003UP03-01 duaghtercard PCB */
4193   ROM_LOAD( "p2.a8",   0x2000, 0x2000, CRC(cc30ae8b) SHA1(ffedc747b9e0b616a163ff8bb1def318e522585b) ) /* Located on the A2003UP03-01 duaghtercard PCB */
4194
4195   ROM_REGION( 0x2000, "tx_tiles", 0 )
4196   ROM_LOAD( "p13.e2",    0x0000, 0x2000, CRC(fcdd36ca) SHA1(bb9408e1feaa15949f11d797e3eb91d37c3e0add) ) /* Located on the A2003 UP01-04 PCB */
4197
4198   ROM_REGION( 0x2000, "fg_tiles", 0 )
4199   ROM_LOAD( "p11.a2",    0x0000, 0x2000, CRC(67174956) SHA1(65a921176294212971c748932a9010f45e1fb499) ) /* Located on the A2003 UP01-04 PCB */
4200
4201   ROM_REGION( 0x2000, "bg_tiles", 0 )
4202   ROM_LOAD( "p12.c2",    0x0000, 0x2000, CRC(085094c1) SHA1(5c5599d1ed7f8a717ada54bbd28383a22e09a8fe) ) /* Located on the A2003 UP01-04 PCB */
4203
4204   ROM_REGION( 0x6000, "sp16_tiles", 0 )
4205   ROM_LOAD( "p16.k4",    0x0000, 0x2000, CRC(6153611a) SHA1(b352f92b233761122f74830e46913cc4df800259) ) /* These 3 roms are located on the A2003 UP01-04 PCB */
4206   ROM_LOAD( "p15.k2",    0x2000, 0x2000, CRC(a74149d4) SHA1(e8011a8d4d1a98a0ffe67fc28ea9fa192ca80321) )
4207   ROM_LOAD( "p14.k1",    0x4000, 0x2000, CRC(07e807bc) SHA1(f651d3a5394ced8e0a1b2be3aa52b3e5a5d84c37) )
4208
4209   ROM_REGION( 0x0c00, "proms", 0 )
4210   ROM_LOAD( "m3-prom.j3",  0x000, 0x400, CRC(d19e8a91) SHA1(b21fbdb8ed8d0b27c3ec78cf2e115624f69c67e0) ) /* These 3 bproms are located on the A2003 UP02-03 PCB */
4211   ROM_LOAD( "m2-prom.j4",  0x400, 0x400, CRC(9fc325af) SHA1(a180662f168ba001376f25f5d9205cb119c1ffee) )
4212   ROM_LOAD( "m1-prom.j5",  0x800, 0x400, CRC(07678443) SHA1(267951886d8b031dd633dc4823d9bd862a585437) )
4213ROM_END
4214
41174215/***********************************************************************/
41184216
41194217ROM_START( vangrd2 )
r6428r6429
61696267GAME( 1983, marvins,  0,        marvins,  marvins,  0,        ROT270, "SNK", "Marvin's Maze", 0 )
61706268GAME( 1984, vangrd2,  0,        vangrd2,  vangrd2,  0,        ROT270, "SNK", "Vanguard II", 0 )
61716269GAME( 1984, madcrash, 0,        vangrd2,  madcrash, 0,        ROT0,   "SNK", "Mad Crasher", 0 )
6270GAME( 1984, madcrush, madcrash, madcrush, madcrash, 0,        ROT0,   "SNK", "Mad Crusher (Japan)", 0 )
61726271
61736272GAME( 1984, jcross,   0,        jcross,   jcross,   0,        ROT270, "SNK", "Jumping Cross", 0 )
61746273GAME( 1984, sgladiat, 0,        sgladiat, sgladiat, 0,        ROT0,   "SNK", "Gladiator 1984", 0 )
src/mame/drivers/f-32.c
r6428r6429
8080
8181static ADDRESS_MAP_START( mosaicf2_io, ADDRESS_SPACE_IO, 32 )
8282   AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_r, 0x000000ff)
83   AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ym", ym2151_status_port_r, 0x000000ff)
83   AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ymsnd", ym2151_status_port_r, 0x000000ff)
8484   AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1")
8585   AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r)
8686   AM_RANGE(0x5400, 0x5403) AM_READ(eeprom_r)
8787   AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_w, 0x000000ff)
88   AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ym", ym2151_data_port_w, 0x000000ff)
89   AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ym", ym2151_register_port_w, 0x000000ff)
88   AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ymsnd", ym2151_data_port_w, 0x000000ff)
89   AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ymsnd", ym2151_register_port_w, 0x000000ff)
9090   AM_RANGE(0x7000, 0x7003) AM_WRITE(eeprom_clock_line_w)
9191   AM_RANGE(0x7200, 0x7203) AM_WRITE(eeprom_cs_line_w)
9292   AM_RANGE(0x7400, 0x7403) AM_WRITE(eeprom_bit_w)
r6428r6429
148148   /* sound hardware */
149149   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
150150
151   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
151   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
152152   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
153153   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
154154
src/mame/drivers/cosmic.c
r6428r6429
2323* In devzone, setting SWA:3,4 on anything but OFF,OFF results in no coins
2424    accepted at all
2525
26TODO: Cosmic alien colors in-game are wrong;
27See http://www.andysarcade.net/pix/dumping/cosmic/
28The colors for the text on the "titlescreen" (with the 1979 universal
29copyright), and the status bars are correct in mame, but the sprite colors
30for the aliens when in formation are clearly wrong as compared to andy's pics.
31The shots on andy's page are the correct ones, as the aliens when 'breaking
32formation' in mame change to colors which match the ones in his pictures.
33There is probably a missing bit for color prom banking or for
34forcing all sprites on a row to have an added blue component.
35
2636***************************************************************************/
2737
2838
r6428r6429
3343#include "sound/samples.h"
3444#include "sound/dac.h"
3545
36#define MASTER_CLOCK (XTAL_9_828MHz)
46#define COSMICG_MASTER_CLOCK (XTAL_9_828MHz)
47#define Z80_MASTER_CLOCK (XTAL_10_816MHz)
3748
38
3949PALETTE_INIT( panic );
4050PALETTE_INIT( cosmica );
4151PALETTE_INIT( cosmicg );
r6428r6429
10631073static MACHINE_DRIVER_START( cosmic )
10641074
10651075   /* basic machine hardware */
1066   MDRV_CPU_ADD("maincpu", Z80,10816000/6)   /* 1.802 MHz*/
1076   MDRV_CPU_ADD("maincpu", Z80,Z80_MASTER_CLOCK/6)   /* 1.8026 MHz*/
10671077
10681078   /* video hardware */
10691079   MDRV_SCREEN_ADD("screen", RASTER)
r6428r6429
11341144static MACHINE_DRIVER_START( cosmicg )
11351145
11361146   /* basic machine hardware */
1137   MDRV_CPU_ADD("maincpu", TMS9980, MASTER_CLOCK/8)
1147   MDRV_CPU_ADD("maincpu", TMS9980, COSMICG_MASTER_CLOCK/8)
11381148         /* 9.828 MHz Crystal */
11391149         /* R Nabet : huh ? This would imply the crystal frequency is somehow divided by 2 before being
11401150            fed to the tms9904 or tms9980.  Also, I have never heard of a tms9900/9980 operating under
r6428r6429
13401350   ROM_LOAD( "spcpanic.8",   0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) )
13411351ROM_END
13421352
1343ROM_START( cosmica )
1353ROM_START( cosmica ) /* later revision 7910-AII pcb; some roms are marked II-x */
13441354   ROM_REGION( 0x10000, "maincpu", 0 )
1345   ROM_LOAD( "ca.e3",        0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) )
1346   ROM_LOAD( "ca.e4",        0x0800, 0x0800, CRC(ed3cf8f7) SHA1(6ba1d98d82400519e844b950cb2fb1274c06d89a) )
1347   ROM_LOAD( "ca.e5",        0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) )
1348   ROM_LOAD( "ca.e6",        0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) )
1349   ROM_LOAD( "ca.e7",        0x2000, 0x0800, CRC(43666d68) SHA1(e44492360a77d93aeaaaa0f38f4ac19732998559) )
1355   ROM_LOAD( "ii-1.e3",        0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) ) /* tms2516 */
1356   ROM_LOAD( "ii-2.e4",        0x0800, 0x0800, CRC(ed3cf8f7) SHA1(6ba1d98d82400519e844b950cb2fb1274c06d89a) ) /* tms2516; has an & stamped on the chip */
1357   ROM_LOAD( "ii-3.e5",        0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) ) /* tms2516 */
1358   ROM_LOAD( "ii-4.e6",        0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) ) /* tms2516 */
1359   ROM_LOAD( "ii-5.e7",        0x2000, 0x0800, CRC(43666d68) SHA1(e44492360a77d93aeaaaa0f38f4ac19732998559) ) /* tms2516; has an & stamped on the chip */
13501360
13511361   ROM_REGION( 0x1000, "gfx1", 0 )   /* sprites */
1352   ROM_LOAD( "ca.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) )
1353   ROM_LOAD( "ca.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) )
1362   ROM_LOAD( "ii-7.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) ) // verify marking
1363   ROM_LOAD( "ii-6.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) ) // verify marking
13541364
13551365   ROM_REGION( 0x0020, "proms", 0 )
1356   ROM_LOAD( "ca.d9",        0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) )
1366   ROM_LOAD( "u7910.d9",    0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) ) // verify marking
13571367
13581368   ROM_REGION( 0x0400, "user1", 0 ) /* color map */
1359   ROM_LOAD( "ca.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) )
1369   ROM_LOAD( "9.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) ) /* 2708 */
13601370
13611371   ROM_REGION( 0x0400, "user2", 0 ) /* starfield generator */
1362   ROM_LOAD( "ca.sub",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) )
1372   ROM_LOAD( "8.k3",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) ) // verify marking
13631373ROM_END
13641374
1365ROM_START( cosmica2 )
1375ROM_START( cosmica2 ) /* this set is strange; bootleg, or maybe a hack to make the game easier/harder/etc? */
13661376   ROM_REGION( 0x10000, "maincpu", 0 )
1367   ROM_LOAD( "ca.e3",        0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) )
1377   ROM_LOAD( "ii-1.e3",      0x0000, 0x0800, CRC(535ee0c5) SHA1(3ec3056b7fabe07ef49a9179114aa74be44a943e) ) /* tms2516 */
13681378   ROM_LOAD( "c3.bin",       0x0800, 0x0400, CRC(699c849e) SHA1(90a58ab8ede9c31eec3df1f8f251b59858f85eb6) )
13691379   ROM_LOAD( "d4.bin",       0x0c00, 0x0400, CRC(168e38da) SHA1(63c5f8346861aa7c70ad58a05977c7af413cbfaf) )
1370   ROM_LOAD( "ca.e5",        0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) )
1371   ROM_LOAD( "ca.e6",        0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) )
1380   ROM_LOAD( "ii-3.e5",      0x1000, 0x0800, CRC(6a111e5e) SHA1(593be409bc969cece2ff88623e53c166b4dc43cd) ) /* tms2516 */
1381   ROM_LOAD( "ii-4.e6",      0x1800, 0x0800, CRC(c9b5ca2a) SHA1(3384b98954b6bc9a64e753b95757f61ce1d3c52e) ) /* tms2516 */
13721382   ROM_LOAD( "i9.bin",       0x2000, 0x0400, CRC(3bb57720) SHA1(2d1edcad57767a4fa2c7713726ed0cb1203f6fbc) )
13731383   ROM_LOAD( "j0.bin",       0x2400, 0x0400, CRC(4ff70f45) SHA1(791499be62a7b91bde75e7a7ab6c546f5fb63027) )
13741384
13751385   ROM_REGION( 0x1000, "gfx1", 0 )   /* sprites */
1376   ROM_LOAD( "ca.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) )
1377   ROM_LOAD( "ca.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) )
1386   ROM_LOAD( "ii-7.n2",        0x0000, 0x0800, CRC(aa6c6079) SHA1(af4ab73e9e1c189290b26bf42adb511d5a347df9) ) // verify marking
1387   ROM_LOAD( "ii-6.n1",        0x0800, 0x0800, CRC(431e866c) SHA1(b007cd3cc856360a0247bd78bb49d173f5cef321) ) // verify marking
13781388
13791389   ROM_REGION( 0x0020, "proms", 0 )
1380   ROM_LOAD( "ca.d9",        0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) )
1390   ROM_LOAD( "u7910.d9",    0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) )
13811391
13821392   ROM_REGION( 0x0400, "user1", 0 ) /* color map */
1383   ROM_LOAD( "ca.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) )
1393   ROM_LOAD( "9.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) ) /* 2708 */
13841394
13851395   ROM_REGION( 0x0400, "user2", 0 ) /* starfield generator */
1386   ROM_LOAD( "ca.sub",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) )
1396   ROM_LOAD( "8.k3",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) ) /* 2708; located on sub pcb */
13871397ROM_END
13881398
1399ROM_START( cosmica1 ) /* earlier 7910-A pcb, had lots of rework; roms do NOT have 'II' markings stamped on them as on the cosmica set */
1400   ROM_REGION( 0x10000, "maincpu", 0 )
1401   ROM_LOAD( "1.e3",        0x0000, 0x0800, CRC(2e44f50e) SHA1(9d87c519a498c47296aa02453806fba95fc4c455) ) /* tms2516 */
1402   ROM_LOAD( "2.e4",        0x0800, 0x0800, CRC(9e5c5281) SHA1(eaf9ca2a37196df758453a73ee145c83e0e3c476) ) /* tms2516; has an & stamped on the chip */
1403   ROM_LOAD( "3.e5",        0x1000, 0x0800, CRC(9e1309db) SHA1(1afbaa8da68abc90bf6f4acd9df9e4d3610f10ce) ) /* tms2516 */
1404   ROM_LOAD( "4.e6",        0x1800, 0x0800, CRC(ba4a9295) SHA1(c7ed9daf48e01ef87253addb0a7e5c62fa1f37cd) ) /* tms2516 */
1405   ROM_LOAD( "5.e7",        0x2000, 0x0800, CRC(2106c82a) SHA1(fa807cf0321813e20dc2d2f2a8ae3778496fa97c) ) /* tms2516; has an & stamped on the chip */
1406
1407   ROM_REGION( 0x1000, "gfx1", 0 )   /* sprites */
1408   ROM_LOAD( "7.n2",        0x0000, 0x0800, CRC(ee3e86fc) SHA1(4fb5fbee06b2d590a83519761f63ec9d6b90efb3) ) /* tms2516 */
1409   ROM_LOAD( "6.n1",        0x0800, 0x0800, CRC(81c86ca0) SHA1(4cea1a61523ae1c3c681b1102b8e18ab26d0040a) ) /* tms2516 */
1410
1411   ROM_REGION( 0x0020, "proms", 0 )
1412   ROM_LOAD( "u7910.d9",    0x0000, 0x0020, CRC(dfb60f19) SHA1(d510327ff3492f098659c551f7245835f61a2959) ) /* MMI 6331 */
1413
1414   ROM_REGION( 0x0400, "user1", 0 ) /* color map */
1415   ROM_LOAD( "9.e2",        0x0000, 0x0400, CRC(ea4ee931) SHA1(d0a4afda4b493efb40286c2d67bf56a2a8b8da9d) ) /* 2708 */
1416
1417   ROM_REGION( 0x0400, "user2", 0 ) /* starfield generator */
1418   ROM_LOAD( "8.k3",       0x0000, 0x0400, CRC(acbd4e98) SHA1(d33fe8bdc77bb18a3ffb369ea692210d1b890771) ) /* 2708; located on sub pcb */
1419ROM_END
1420
13891421ROM_START( cosmicg )
13901422   ROM_REGION( 0x10000, "maincpu", 0 )  /* 8k for code */
13911423   ROM_LOAD( "cosmicg1.bin", 0x0000, 0x0400, CRC(e1b9f894) SHA1(bab7fd9b3db145a889542653191905b6efc5ce75) )
r6428r6429
15981630
15991631
16001632GAME( 1979, cosmicg,  0,       cosmicg,  cosmicg,  cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
1601GAME( 1979, cosmica,  0,       cosmica,  cosmica,  cosmica, ROT270, "Universal", "Cosmic Alien", GAME_IMPERFECT_SOUND )
1602GAME( 1979, cosmica2, cosmica, cosmica,  cosmica,  cosmica, ROT270, "Universal", "Cosmic Alien (older)", GAME_IMPERFECT_SOUND )
1633GAME( 1979, cosmica,  0,       cosmica,  cosmica,  cosmica, ROT270, "Universal", "Cosmic Alien (version II)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1634GAME( 1979, cosmica1, cosmica, cosmica,  cosmica,  cosmica, ROT270, "Universal", "Cosmic Alien (first version)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
1635GAME( 1979, cosmica2, cosmica, cosmica,  cosmica,  cosmica, ROT270, "Universal", "Cosmic Alien (bootleg or hack?)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
16031636GAME( 1980, nomnlnd,  0,       nomnlnd,  nomnlnd,  nomnlnd, ROT270, "Universal", "No Man's Land", GAME_IMPERFECT_SOUND )
16041637GAME( 1980, nomnlndg, nomnlnd, nomnlnd,  nomnlndg, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", GAME_IMPERFECT_SOUND )
16051638GAME( 1980, magspot,  0,       magspot,  magspot,  0,       ROT270, "Universal", "Magical Spot", GAME_IMPERFECT_SOUND )
src/mame/drivers/model2.c
r6428r6429
16991699   AM_RANGE(0xc50000, 0xc50001) AM_DEVWRITE( "sega1", m1_snd_mpcm_bnk_w )
17001700   AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8( "sega2", multipcm_r, multipcm_w, 0x00ff )
17011701   AM_RANGE(0xc70000, 0xc70001) AM_DEVWRITE( "sega2", m1_snd_mpcm_bnk_w )
1702   AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8( "ym", ym3438_r, ym3438_w, 0x00ff )
1702   AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8( "ymsnd", ym3438_r, ym3438_w, 0x00ff )
17031703   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM
17041704ADDRESS_MAP_END
17051705
r6428r6429
18581858
18591859   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18601860
1861   MDRV_SOUND_ADD("ym", YM3438, 8000000)
1861   MDRV_SOUND_ADD("ymsnd", YM3438, 8000000)
18621862   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
18631863   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
18641864
src/mame/drivers/ataxx.c
r6428r6429
327327   MDRV_IMPORT_FROM(ataxx)
328328
329329   /* sound hardware */
330   MDRV_SOUND_ADD("ym", YM2151, 4000000)
330   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
331331   MDRV_SOUND_ROUTE(0, "mono", 0.40)
332332   MDRV_SOUND_ROUTE(1, "mono", 0.40)
333333MACHINE_DRIVER_END
src/mame/drivers/sshangha.c
r6428r6429
210210/* Note: there's rom data after 0x8000 but the game never seem to call a rom bank, left-over? */
211211static ADDRESS_MAP_START( sshangha_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
212212   AM_RANGE(0x0000, 0x7fff) AM_ROM
213   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
213   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_r,ym2203_w)
214214   AM_RANGE(0xc200, 0xc201) AM_DEVREADWRITE("oki",okim6295_r,okim6295_w)
215215   AM_RANGE(0xf800, 0xf807) AM_READWRITE(sshangha_sound_shared_r,sshangha_sound_shared_w)
216216   AM_RANGE(0xf808, 0xffff) AM_RAM
r6428r6429
386386   /* sound hardware */
387387   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") /* sure it's stereo? */
388388
389   MDRV_SOUND_ADD("ym", YM2203, 16000000/4)
389   MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4)
390390   MDRV_SOUND_CONFIG(ym2203_config)
391391   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33)
392392   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
src/mame/drivers/popeye.c
r6428r6429
121121
122122static ADDRESS_MAP_START( popeye_io_map, ADDRESS_SPACE_IO, 8 )
123123   ADDRESS_MAP_GLOBAL_MASK(0xff)
124   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
124   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
125125   AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
126126   AM_RANGE(0x01, 0x01) AM_READ_PORT("P2")
127127   AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
128   AM_RANGE(0x03, 0x03) AM_DEVREAD("ay", ay8910_r)
128   AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_r)
129129ADDRESS_MAP_END
130130
131131
r6428r6429
466466   /* sound hardware */
467467   MDRV_SPEAKER_STANDARD_MONO("mono")
468468
469   MDRV_SOUND_ADD("ay", AY8910, XTAL_8MHz/4)
469   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4)
470470   MDRV_SOUND_CONFIG(ay8910_config)
471471   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
472472MACHINE_DRIVER_END
src/mame/drivers/4enraya.c
r6428r6429
5252#include "deprecat.h"
5353#include "cpu/z80/z80.h"
5454#include "sound/ay8910.h"
55#include "includes/4enraya.h"
5556
56VIDEO_START( 4enraya );
57VIDEO_UPDATE( 4enraya );
58
59WRITE8_HANDLER( fenraya_videoram_w );
60
61static int soundlatch;
62
6357static WRITE8_HANDLER( sound_data_w )
6458{
65   soundlatch = data;
59   _4enraya_state *state = (_4enraya_state *)space->machine->driver_data;
60   state->soundlatch = data;
6661}
6762
6863static WRITE8_DEVICE_HANDLER( sound_control_w )
6964{
70   static int last;
71   if ((last & 0x04) == 0x04 && (data & 0x4) == 0x00)
72      ay8910_data_address_w(device, last, soundlatch);
73   last=data;
65   _4enraya_state *state = (_4enraya_state *)device->machine->driver_data;
66
67   if ((state->last_snd_ctrl & 0x04) == 0x04 && (data & 0x4) == 0x00)
68      ay8910_data_address_w(device, state->last_snd_ctrl, state->soundlatch);
69
70   state->last_snd_ctrl = data;
7471}
7572
7673static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
7774   AM_RANGE(0x0000, 0xbfff) AM_ROM
7875   AM_RANGE(0xc000, 0xcfff) AM_RAM
79   AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
76   AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE_MEMBER(_4enraya_state, videoram) AM_SIZE(&videoram_size)
8077ADDRESS_MAP_END
8178
8279static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
r6428r6429
8582   AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS")
8683   AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM")
8784   AM_RANGE(0x23, 0x23) AM_WRITE(sound_data_w)
88   AM_RANGE(0x33, 0x33) AM_DEVWRITE("ay", sound_control_w)
85   AM_RANGE(0x33, 0x33) AM_DEVWRITE("aysnd", sound_control_w)
8986ADDRESS_MAP_END
9087
9188
r6428r6429
152149
153150static MACHINE_START( 4enraya )
154151{
155    state_save_register_global(machine, soundlatch);
152   _4enraya_state *state = (_4enraya_state *)machine->driver_data;
153
154   state_save_register_global(machine, state->soundlatch);
155   state_save_register_global(machine, state->last_snd_ctrl);
156156}
157157
158static MACHINE_RESET( 4enraya )
159{
160   _4enraya_state *state = (_4enraya_state *)machine->driver_data;
161
162   state->soundlatch = 0;
163   state->last_snd_ctrl = 0;
164}
165
158166static MACHINE_DRIVER_START( 4enraya )
159167
168   MDRV_DRIVER_DATA(_4enraya_state)
169
160170   /* basic machine hardware */
161171   MDRV_CPU_ADD("maincpu",Z80,8000000/2)
162172   MDRV_CPU_PROGRAM_MAP(main_map)
163173   MDRV_CPU_IO_MAP(main_portmap)
164174   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
165175
176   MDRV_MACHINE_START(4enraya)
177   MDRV_MACHINE_RESET(4enraya)
178
166179   /* video hardware */
167180   MDRV_SCREEN_ADD("screen", RASTER)
168181   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
176189   MDRV_VIDEO_START(4enraya)
177190   MDRV_VIDEO_UPDATE(4enraya)
178191
179    MDRV_MACHINE_START(4enraya)
180
181192   /* sound hardware */
182193   MDRV_SPEAKER_STANDARD_MONO("mono")
183   MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */)
194   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */)
184195   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
185196MACHINE_DRIVER_END
186197
r6428r6429
204215   ROM_LOAD( "1.bpr",   0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) )   /* not used */
205216ROM_END
206217
207GAME( 1990, 4enraya,  0,       4enraya,  4enraya,  0, ROT0, "IDSA", "4 En Raya", GAME_SUPPORTS_SAVE )
218GAME( 1990, 4enraya,  0,   4enraya,  4enraya,  0, ROT0, "IDSA", "4 En Raya", GAME_SUPPORTS_SAVE )
src/mame/drivers/compgolf.c
r6428r6429
6161   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_WRITE(compgolf_ctrl_w)
6262   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1")
6363   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2")
64   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
64   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
6565   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
6666   AM_RANGE(0x8000, 0xffff) AM_ROM
6767ADDRESS_MAP_END
r6428r6429
219219
220220   MDRV_SPEAKER_STANDARD_MONO("mono")
221221
222   MDRV_SOUND_ADD("ym", YM2203, 1500000)
222   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
223223   MDRV_SOUND_CONFIG(ym2203_config)
224224   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
225225MACHINE_DRIVER_END
src/mame/drivers/cps2.c
r6428r6429
27532753   ROM_LOAD16_WORD_SWAP( "dd2.12m",   0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
27542754ROM_END
27552755
2756ROM_START( ddsomh )
2757   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
2758   ROM_LOAD16_WORD_SWAP( "dd2h.03a", 0x000000, 0x80000, CRC(e472c9f3) SHA1(43e0767cca3ce0c151f1bd12d476cc2f0013b5e5) )
2759   ROM_LOAD16_WORD_SWAP( "dd2h.04a", 0x080000, 0x80000, CRC(315a7706) SHA1(de6ced251a483455b0d0371c60bce0c209879b43) )
2760   ROM_LOAD16_WORD_SWAP( "dd2h.05a", 0x100000, 0x80000, CRC(9b2534eb) SHA1(04a9f9b75f817dff1b94641aba399d487b57a9f7) ) /* Roms 05 through 10 are the same as the Brazil set */
2761   ROM_LOAD16_WORD_SWAP( "dd2h.06a", 0x180000, 0x80000, CRC(3b21ba59) SHA1(0b9be23253c42047ebfe3e656670ebf5e792766f) )
2762   ROM_LOAD16_WORD_SWAP( "dd2h.07a", 0x200000, 0x80000, CRC(fce2558d) SHA1(67041b550bcb357f1c76e3ab703c7db3cc071515) )
2763   ROM_LOAD16_WORD_SWAP( "dd2e.08",  0x280000, 0x80000, CRC(30970890) SHA1(fd366a9323230f6997006ab4cc216f9a97865ebe) )
2764   ROM_LOAD16_WORD_SWAP( "dd2e.09",  0x300000, 0x80000, CRC(99e2194d) SHA1(cbcecdf5beeac3eac6c2c3fa395710e1b8347531) )
2765   ROM_LOAD16_WORD_SWAP( "dd2e.10",  0x380000, 0x80000, CRC(e198805e) SHA1(37ae9d88d98c59337b657cfa6feb56e4f9cae95f) )
2766
2767   ROM_REGION( 0x1800000, "gfx", 0 )
2768   ROMX_LOAD( "dd2.13m",   0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) )
2769   ROMX_LOAD( "dd2.15m",   0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) )
2770   ROMX_LOAD( "dd2.17m",   0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) )
2771   ROMX_LOAD( "dd2.19m",   0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) )
2772   ROMX_LOAD( "dd2.14m",   0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) )
2773   ROMX_LOAD( "dd2.16m",   0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) )
2774   ROMX_LOAD( "dd2.18m",   0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) )
2775   ROMX_LOAD( "dd2.20m",   0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) )
2776
2777   ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
2778   ROM_LOAD( "dd2.01",   0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) )
2779   ROM_CONTINUE(         0x10000, 0x18000 )
2780   ROM_LOAD( "dd2.02",   0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) )
2781
2782   ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
2783   ROM_LOAD16_WORD_SWAP( "dd2.11m",   0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) )
2784   ROM_LOAD16_WORD_SWAP( "dd2.12m",   0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
2785ROM_END
2786
27562787ROM_START( dimahoo )
27572788   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
27582789   ROM_LOAD16_WORD_SWAP( "gmde.03", 0x000000, 0x80000, CRC(968fcecd) SHA1(82d6eb6488df48bc7b977fc900c24b29bd6573a9) )
r6428r6429
34303461   ROM_LOAD16_WORD_SWAP( "rm2.12m",   0x200000, 0x200000, CRC(546c1636) SHA1(f96b172ab899f2c6ee17a5dd1fb61af9432e3cd2) )
34313462ROM_END
34323463
3464ROM_START( megaman2h )
3465   ROM_REGION(CODE_SIZE, "maincpu", 0 )      /* 68000 code */
3466   ROM_LOAD16_WORD_SWAP( "rm2h.03", 0x000000, 0x80000, CRC(bb180378) SHA1(ecf5e9907500139073e3b1b4e384039957dca354) )
3467   ROM_LOAD16_WORD_SWAP( "rm2h.04", 0x080000, 0x80000, CRC(205ffcd6) SHA1(d1e3a164f4fd4f372ad2f3b4e2026d6487395503) )
3468   ROM_LOAD16_WORD_SWAP( "rm2.05",  0x100000, 0x80000, CRC(02ee9efc) SHA1(1b80c40389b51a03b930051f232630616c12e6c5) )
3469
3470   ROM_REGION( 0x1000000, "gfx", 0 )
3471   ROM_FILL(              0x000000, 0x800000, 0 )
3472   ROMX_LOAD( "rm2.14m",  0x800000, 0x200000, CRC(9b1f00b4) SHA1(c1c5c2d9d00121425ae6598444d704f420ef4eef) , ROM_GROUPWORD | ROM_SKIP(6) )
3473   ROMX_LOAD( "rm2.16m",  0x800002, 0x200000, CRC(c2bb0c24) SHA1(38724c49d9db49765a4ed9bc2dc8f57cec45ec7c) , ROM_GROUPWORD | ROM_SKIP(6) )
3474   ROMX_LOAD( "rm2.18m",  0x800004, 0x200000, CRC(12257251) SHA1(20cb58afda0e6200991277817485340a6a41ae2b) , ROM_GROUPWORD | ROM_SKIP(6) )
3475   ROMX_LOAD( "rm2.20m",  0x800006, 0x200000, CRC(f9b6e786) SHA1(aeb4acff7208e66a35198143fd2478039fdaa3a6) , ROM_GROUPWORD | ROM_SKIP(6) )
3476
3477   ROM_REGION(QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
3478   ROM_LOAD( "rm2.01a",  0x00000, 0x08000, CRC(d18e7859) SHA1(0939fac70042d0b4db5c2fdcef1f79b95febd45e) )
3479   ROM_CONTINUE(         0x10000, 0x18000 )
3480   ROM_LOAD( "rm2.02",   0x28000, 0x20000, CRC(c463ece0) SHA1(5c3e41eb61610b3f8c431206f6672907e3a0bdb0) )
3481
3482   ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
3483   ROM_LOAD16_WORD_SWAP( "rm2.11m",   0x000000, 0x200000, CRC(2106174d) SHA1(0a35d9ca8ebcad74904b20648d5320f839d6377e) )
3484   ROM_LOAD16_WORD_SWAP( "rm2.12m",   0x200000, 0x200000, CRC(546c1636) SHA1(f96b172ab899f2c6ee17a5dd1fb61af9432e3cd2) )
3485ROM_END
3486
34333487/*
34343488
34353489Gigaman 2 - 2004 Chinese rebuild Bootleg
r6428r6429
63536407   ROM_LOAD( "ssf.q08",  0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) )
63546408ROM_END
63556409
6410ROM_START( ssf2h )
6411   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
6412   ROM_LOAD16_WORD_SWAP( "ssfh.03",  0x000000, 0x80000, CRC(b086b355) SHA1(c0ee70fa44081ebf09a72910ce1b733b019aaf71) )
6413   ROM_LOAD16_WORD_SWAP( "ssfh.04",  0x080000, 0x80000, CRC(1e629b29) SHA1(1c1043610cae9ea6cb3139a1c14d53a6fcd91d02) )
6414   ROM_LOAD16_WORD_SWAP( "ssfh.05",  0x100000, 0x80000, CRC(b5997e10) SHA1(fe9502a5dfc1dfba80d0246056eae5f3b47897a7) )
6415   ROM_LOAD16_WORD_SWAP( "ssfh.06",  0x180000, 0x80000, CRC(793b8fad) SHA1(e0e30dbd7a95636e592fc58577179f12b7b4ea76) )
6416   ROM_LOAD16_WORD_SWAP( "ssfh.07",  0x200000, 0x80000, CRC(cbb92ac3) SHA1(f5dd189757b11ea39ff8ead8d7e9bd3b97934a94) )
6417
6418   ROM_REGION( 0xc00000, "gfx", 0 )
6419   ROMX_LOAD( "ssf.13m",   0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
6420   ROMX_LOAD( "ssf.15m",   0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
6421   ROMX_LOAD( "ssf.17m",   0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
6422   ROMX_LOAD( "ssf.19m",   0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
6423   ROMX_LOAD( "ssf.14m",   0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
6424   ROMX_LOAD( "ssf.16m",   0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
6425   ROMX_LOAD( "ssf.18m",   0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
6426   ROMX_LOAD( "ssf.20m",   0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
6427
6428   ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
6429   ROM_LOAD( "ssf.01",   0x00000, 0x08000, CRC(eb247e8c) SHA1(24296c18d9b1136d69712bf1c9d9d15463041e83) )
6430   ROM_CONTINUE(         0x10000, 0x18000 )
6431
6432   ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
6433   ROM_LOAD( "ssf.q01",  0x000000, 0x080000, CRC(a6f9da5c) SHA1(6d19f83a01bd25b838d5c2871f7964529d926c98) )
6434   ROM_LOAD( "ssf.q02",  0x080000, 0x080000, CRC(8c66ae26) SHA1(32a82aee6ed4480e5a990f9af161734c7c0a1403) )
6435   ROM_LOAD( "ssf.q03",  0x100000, 0x080000, CRC(695cc2ca) SHA1(c2675f0233608b76de528d2a6ef19846d1348060) )
6436   ROM_LOAD( "ssf.q04",  0x180000, 0x080000, CRC(9d9ebe32) SHA1(9b26329370041374f1a90b479a172d2bc2801c4d) )
6437   ROM_LOAD( "ssf.q05",  0x200000, 0x080000, CRC(4770e7b7) SHA1(0e764f0befb9227b0b36508d8ca8ec9be31bcb05) )
6438   ROM_LOAD( "ssf.q06",  0x280000, 0x080000, CRC(4e79c951) SHA1(1144781d7dc57ef8a6458d982f5c91548ff59e27) )
6439   ROM_LOAD( "ssf.q07",  0x300000, 0x080000, CRC(cdd14313) SHA1(ebe767a9d4b51dba4282fa0a36a546a88620dd59) )
6440   ROM_LOAD( "ssf.q08",  0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) )
6441ROM_END
6442
63566443ROM_START( ssf2tb )
63576444   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
63586445   ROM_LOAD16_WORD_SWAP( "ssfe.3tc", 0x000000, 0x80000, CRC(496a8409) SHA1(3101689e86ab78c544524e31057478fce336ddaa) )
r6428r6429
75137600GAME( 1993, ssf2j,    ssf2,     cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", 0 )
75147601GAME( 1993, ssf2jr1,  ssf2,     cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", 0 )
75157602GAME( 1993, ssf2jr2,  ssf2,     cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", 0 )
7603GAME( 1993, ssf2h,    ssf2,     cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", 0 )
75167604GAME( 1993, ssf2tb,   ssf2,     cps2, cps2_2p6b, ssf2tb,   ROT0,   "Capcom", "Super Street Fighter II: The Tournament Battle (World 931119)", 0 )   // works, but not in tournament mode
75177605GAME( 1993, ssf2tbr1, ssf2,     cps2, cps2_2p6b, ssf2tb,   ROT0,   "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", 0 )   // works, but not in tournament mode
75187606GAME( 1993, ssf2tbj,  ssf2,     cps2, cps2_2p6b, ssf2tb,   ROT0,   "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", 0 )   // works, but not in tournament mode
r6428r6429
76147702GAME( 1996, ddsomj,   ddsom,    cps2, cps2_4p4b, cps2,     ROT0,   "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", 0 )
76157703GAME( 1996, ddsomjr1, ddsom,    cps2, cps2_4p4b, cps2,     ROT0,   "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", 0 )
76167704GAME( 1996, ddsoma,   ddsom,    cps2, cps2_4p4b, cps2,     ROT0,   "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", 0 )
7705GAME( 1996, ddsomh,   ddsom,    cps2, cps2_4p4b, cps2,     ROT0,   "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", 0 )
76177706GAME( 1996, ddsomb,   ddsom,    cps2, cps2_4p4b, cps2,     ROT0,   "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", 0 )
76187707GAME( 1996, sfa2,     0,        cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Street Fighter Alpha 2 (Euro 960229)", 0 )
76197708GAME( 1996, sfa2u,    sfa2,     cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "Street Fighter Alpha 2 (USA 960306)", 0 )
r6428r6429
76337722GAME( 1996, megaman2, 0,        cps2, cps2_2p3b, cps2,     ROT0,   "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", 0 )
76347723GAME( 1996, megaman2a,megaman2, cps2, cps2_2p3b, cps2,     ROT0,   "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", 0 )
76357724GAME( 1996, rckman2j, megaman2, cps2, cps2_2p3b, cps2,     ROT0,   "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", 0 )
7636GAME( 1996, gigamn2,  megaman2, gigamn2, cps2_2p3b, gigamn2,  ROT0,   "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", GAME_NOT_WORKING ) // flash roms aren't dumped, layer offsets different, different sound system
7725GAME( 1996, megaman2h,megaman2, cps2, cps2_2p3b, cps2,     ROT0,   "Capcom", "Mega Man 2: The Power Fighters (Hispanic 960712)", 0 )
76377726GAME( 1996, qndream,  0,        cps2, qndream,   cps2,     ROT0,   "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", 0 )
76387727GAME( 1996, xmvsf,    0,        cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", 0 )
76397728GAME( 1996, xmvsfr1,  xmvsf,    cps2, cps2_2p6b, cps2,     ROT0,   "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", 0 )
r6428r6429
86958784GAME( 1996, sfz2ad,   sfa2,    dead_cps2, cps2_2p6b, cps2,   ROT0,   "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", 0 )
86968785GAME( 1996, spf2xjd,  spf2t,   dead_cps2, cps2_2p2b, cps2,   ROT0,   "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", 0 )
86978786GAME( 1996, ddsomud,  ddsom,   dead_cps2, cps2_4p4b, cps2,   ROT0,   "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", 0 )
8787GAME( 1996, gigamn2,  megaman2, gigamn2, cps2_2p3b, gigamn2,  ROT0,   "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", GAME_NOT_WORKING ) // flash roms aren't dumped, layer offsets different, different sound system
86988788GAME( 1996, megamn2d, megaman2,dead_cps2, cps2_2p3b, cps2,   ROT0,   "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", 0 )
86998789GAME( 1996, sfz2ald,  sfz2al,  dead_cps2, cps2_2p6b, cps2,   ROT0,   "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", 0 )
87008790GAME( 1996, xmvsfu1d, xmvsf,   dead_cps2, cps2_2p6b, cps2,   ROT0,   "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", 0 )
src/mame/drivers/igs017.c
r6428r6429
11/************************************************************************************************************
22
3                                          -= IGS017 Based Hardware =-
3                                        -= IGS017 / IGS031 Based Hardware =-
44
55                             driver by   Pierpaolo Prazzoli, Luca Elia (l.elia@tin.it)
66
7IGS017: 2 tilemaps, variable size sprites, protection.
7CPU:   Z180 or 68000
8Video: IGS017 or IGS031 (2 tilemaps, variable size sprites, protection)
9Other: IGS025 (8255), IGS022 (protection, MCU), IGS029 (protection)
10Sound: M6295 + [YM2413]
811
912-------------------------------------------------------------------------------------------------------------
10Year + Game                      PCB        CPU      Sound         Custom                Other
13Year + Game                     PCB        CPU    Sound         Custom                Other
1114-------------------------------------------------------------------------------------------------------------
1296 Shu Zi Le Yuan                N0-0131-4  HD64180  M6295 YM2413  IGS017 8255           Battery
1397 Mahjong Tian Jiang Shen Bing  N0-0157-2  HD64180  M6295 YM2413  IGS017 IGS025         Battery
1498 Mahjong Man Guan Cai Shen     N0-0192-1  M68000   M6295         IGS017 IGS025 IGS029  Battery
1596  Shu Zi Le Yuan              NO-0131-4  Z180   M6295 YM2413  IGS017 8255           Battery
1697  Mj Super Da Man Guan II     NO-0147-6  68000  M6295         IGS031 8255           Battery
1797  Mj Tian Jiang Shen Bing     NO-0157-2  Z180   M6295 YM2413  IGS017 IGS025         Battery
1897  Mj Man Guan Da Heng         NO-0252    68000  M6295         IGS031 IGS025         Battery
1998  Mj Long Hu Zheng Ba 2       NO-0206    68000  M6295         IGS031 IGS025 IGS022* Battery
2098  Mj Shuang Long Qiang Zhu 2  NO-0207    68000  M6295         IGS031 IGS025 IGS022  Battery
2198  Mj Man Guan Cai Shen        NO-0192-1  68000  M6295         IGS017 IGS025 IGS029  Battery
2299? Tarzan (V107)?              NO-0248-1  Z180   M6295         IGS031 IGS025         Battery
2399? Tarzan (V109C)?             NO-0228?   Z180   M6295         IGS031 IGS025 IGS029  Battery
2400? Super Tarzan (V100I)        NO-0230-1  Z180   M6295         IGS031 IGS025         Battery
1525-------------------------------------------------------------------------------------------------------------
16
26                                                                                    * not preset in one set
1727To Do:
1828
1929- Protection emulation, instead of patching the roms.
30- NVRAM.
2031- tjsb: finish sprites decryption (data lines scrambling), protection, inputs.
21- iqblocka: NVRAM.
2232- iqblockf: protection.
33- mgcs, mgdh, sdmg2: implement joystick inputs
2334
2435Notes:
2536
2637- iqblocka: keep start or test pressed during boot to enter test mode A or B.
38- mgcs: press service + stats during test mode for sound test.
39- mgdh: test mode is accessed by keeping test pressed during boot (as usual), but pressing F2+F3 in MAME
40  does not actually work. It does work if F2 is pressed in the debug window at boot, and held while closing it.
2741
2842************************************************************************************************************/
2943
r6428r6429
4155                                Video Hardware
4256***************************************************************************/
4357
58static UINT8 video_disable;
59static WRITE8_HANDLER( video_disable_w )
60{
61   video_disable = data & 1;
62   if (data & (~1))
63      logerror("PC %06X: unknown bits of video_disable written = %02x\n",cpu_get_pc(space->cpu),data);
64//  popmessage("VIDEO %02X",data);
65}
66static WRITE16_HANDLER( video_disable_lsb_w )
67{
68   if (ACCESSING_BITS_0_7)
69      video_disable_w(space,offset,data);
70}
71
72static VIDEO_RESET( igs017 )
73{
74   video_disable = 0;
75}
76
4477static UINT8 *fg_videoram, *bg_videoram;
4578static tilemap *fg_tilemap, *bg_tilemap;
4679
47#define COLOR(_X)   (((_X)>>2))
80#define COLOR(_X)   (((_X)>>2)&7)
4881
4982static TILE_GET_INFO( get_fg_tile_info )
5083{
5184   int code = fg_videoram[tile_index*4+0] + (fg_videoram[tile_index*4+1] << 8);
5285   int attr = fg_videoram[tile_index*4+2] + (fg_videoram[tile_index*4+3] << 8);
53   SET_TILE_INFO(0, code, COLOR(attr), 0);
86   SET_TILE_INFO(0, code, COLOR(attr), TILE_FLIPXY( attr >> 5 ));
5487}
5588static TILE_GET_INFO( get_bg_tile_info )
5689{
5790   int code = bg_videoram[tile_index*4+0] + (bg_videoram[tile_index*4+1] << 8);
5891   int attr = bg_videoram[tile_index*4+2] + (bg_videoram[tile_index*4+3] << 8);
59   SET_TILE_INFO(0, code, COLOR(attr)+8, 0);
92   SET_TILE_INFO(0, code, COLOR(attr)+8, TILE_FLIPXY( attr >> 5 ));
6093}
6194
6295static WRITE8_HANDLER( fg_w )
r6428r6429
104137}
105138
106139
107static VIDEO_START( igs017 )
108{
109   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,64,32);
110   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,8,8,64,32);
111
112   tilemap_set_transparent_pen(fg_tilemap,0xf);
113   tilemap_set_transparent_pen(bg_tilemap,0xf);
114
115   toggle = 0;
116   debug_addr = 0;
117   debug_width = 512;
118}
119
120
121140static UINT8 *sprites_gfx;
122141static int sprites_gfx_size;
123142
r6428r6429
142161   }
143162}
144163
164static VIDEO_START( igs017 )
165{
166   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,64,32);
167   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,8,8,64,32);
168
169   tilemap_set_transparent_pen(fg_tilemap,0xf);
170   tilemap_set_transparent_pen(bg_tilemap,0xf);
171
172   toggle = 0;
173   debug_addr = 0;
174   debug_width = 512;
175
176   expand_sprites(machine);
177}
178
145179/***************************************************************************
146180                              Sprites Format
147181
r6428r6429
283317   if (debug_viewer(screen->machine, bitmap,cliprect))
284318      return 0;
285319
286   if (layers_ctrl & 1)   tilemap_draw(bitmap,cliprect,bg_tilemap,TILEMAP_DRAW_OPAQUE,0);
287   else               bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
320   bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
288321
289   if (layers_ctrl & 4)   draw_sprites(screen->machine,bitmap,cliprect);
322   if (video_disable)
323      return 0;
290324
291   if (layers_ctrl & 2)   tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
325   if (layers_ctrl & 1)   tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_OPAQUE, 0);
292326
327   if (layers_ctrl & 4)   draw_sprites(screen->machine, bitmap, cliprect);
328
329   if (layers_ctrl & 2)   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
330
293331   return 0;
294332}
295333
r6428r6429
379417{
380418   decrypt_program_rom(machine, 0x11, 7, 6, 5, 4, 3, 2, 1, 0);
381419   iqblocka_patch_rom(machine);
382
383   expand_sprites(machine);
384420}
385421
386422// iqblockf
r6428r6429
389425{
390426   decrypt_program_rom(machine, 0x11, 7, 6, 5, 4, 3, 2, 1, 0);
391427//  iqblockf_patch_rom(machine);
392
393   expand_sprites(machine);
394428}
395429
396430// tjsb
r6428r6429
437471   tjsb_patch_rom(machine);
438472
439473   tjsb_decrypt_sprites(machine);
440   expand_sprites(machine);
441474}
442475
476
443477// mgcs
444478
445479static void mgcs_decrypt_program_rom(running_machine *machine)
r6428r6429
550584
551585   mgcs_decrypt_tiles(machine);
552586   mgcs_flip_sprites(machine);
587}
553588
554   expand_sprites(machine);
589
590// tarzan, tarzana
591
592// decryption is incomplete, the first part of code doesn't seem right.
593static DRIVER_INIT( tarzan )
594{
595   UINT16 *ROM = (UINT16 *)memory_region(machine,"maincpu");
596   int i;
597   int size = 0x40000;
598
599   for(i=0; i<size/2; i++)
600   {
601      UINT16 x = ROM[i];
602
603      if((i & 0x10c0) == 0x0000)
604         x ^= 0x0001;
605
606      if((i & 0x0010) == 0x0010 || (i & 0x0130) == 0x0020)
607         x ^= 0x0404;
608
609      if((i & 0x00d0) != 0x0010)
610         x ^= 0x1010;
611
612      if(((i & 0x0008) == 0x0008)^((i & 0x10c0) == 0x0000))
613         x ^= 0x0100;
614
615      ROM[i] = x;
616   }
555617}
618// by iq_132
619static DRIVER_INIT( tarzana )
620{
621   UINT8 *ROM = memory_region(machine,"maincpu");
622   int i;
623   int size = 0x80000;
556624
625   for (i = 0; i < size; i++)
626   {
627      UINT8 x = 0;
628      if ((i & 0x00011) == 0x00011) x ^= 0x01;
629      if ((i & 0x02180) == 0x00000) x ^= 0x01;
630      if ((i & 0x001a0) != 0x00020) x ^= 0x20;
631      if ((i & 0x00260) != 0x00200) x ^= 0x40;
632      if ((i & 0x00060) != 0x00000 && (i & 0x00260) != 0x00240)   x ^= 0x80;
633      ROM[i] ^= x;
634   }
635}
557636
637
638// starzan
639
640// decryption is incomplete, the first part of code doesn't seem right.
641static DRIVER_INIT( starzan )
642{
643   UINT8 *ROM = memory_region(machine,"maincpu");
644   int i;
645   int size = 0x040000;
646
647   for(i=0; i<size; i++)
648   {
649      UINT8 x = ROM[i];
650
651#if 1
652      if ( (i & 0x10) && (i & 0x01) )
653      {
654         if ( !(!(i & 0x2000) && !(i & 0x100) && !(i & 0x80)) )
655            x ^= 0x01;
656      }
657      else
658      {
659         if ( !(i & 0x2000) && !(i & 0x100) && !(i & 0x80) )
660            x ^= 0x01;
661      }
662
663      if ( ((i & 0xf000)<0xe000) && (!(i & 0x100) || (i & 0x80) || (i & 0x20)) )
664         x ^= 0x20;
665
666      if ( !(!(i & 0x200) && !(i & 0x40) && (i & 0x20)) )
667         x ^= 0x40;
668
669      if ( ((i & 0xf000)<0xe000) && ((!(i & 0x100) && (i & 0x80)) || (i & 0x20)) )
670         x ^= 0x80;
671
672//if ( (i & 0xffff) < 0x20 )
673//  x ^= 0x80;
674#else
675      // by iq_132
676      if ((i & 0x00011) == 0x00011) x ^= 0x01;
677      if ((i & 0x02180) == 0x00000) x ^= 0x01;
678      if ((i & 0x000a0) != 0x00000) x ^= 0x20;
679      if ((i & 0x001a0) == 0x00000) x ^= 0x20;
680      if ((i & 0x00060) != 0x00020) x ^= 0x40;
681      if ((i & 0x00260) == 0x00220) x ^= 0x40;
682      if ((i & 0x00020) == 0x00020) x ^= 0x80;
683      if ((i & 0x001a0) == 0x00080) x ^= 0x80;
684#endif
685
686      ROM[i] = x;
687   }
688
689   mgcs_flip_sprites(machine);
690}
691
692
693// sdmg2
694
695static DRIVER_INIT( sdmg2 )
696{
697   int i;
698   UINT16 *src = (UINT16 *)memory_region(machine, "maincpu");
699
700   int rom_size = 0x80000;
701
702   for (i=0; i<rom_size/2; i++)
703   {
704      UINT16 x = src[i];
705
706      /* bit 0 xor layer */
707
708      if( i & 0x20/2 )
709      {
710         if( i & 0x02/2 )
711         {
712            x ^= 0x0001;
713         }
714      }
715
716      if( !(i & 0x4000/2) )
717      {
718         if( !(i & 0x300/2) )
719         {
720            x ^= 0x0001;
721         }
722      }
723
724      /* bit 9 xor layer */
725
726      if( i & 0x20000/2 )
727      {
728         x ^= 0x0200;
729      }
730      else
731      {
732         if( !(i & 0x400/2) )
733         {
734            x ^= 0x0200;
735         }
736      }
737
738      /* bit 12 xor layer */
739
740      if( i & 0x20000/2 )
741      {
742         x ^= 0x1000;
743      }
744
745      src[i] = x;
746   }
747}
748
749
750// mgdh
751
752static DRIVER_INIT( mgdh )
753{
754   int i;
755   UINT16 *src = (UINT16 *)memory_region(machine, "maincpu");
756
757   int rom_size = 0x80000;
758
759   for (i=0; i<rom_size/2; i++)
760   {
761      UINT16 x = src[i];
762
763      if( (i & 0x20/2) && (i & 0x02/2) )
764      {
765         if( (i & 0x300/2) || (i & 0x4000/2) )
766            x ^= 0x0001;
767      }
768      else
769      {
770         if( !(i & 0x300/2) && !(i & 0x4000/2) )
771            x ^= 0x0001;
772      }
773
774      if( (i & 0x60000/2) )
775         x ^= 0x0100;
776
777      if( (i & 0x1000/2) || ((i & 0x4000/2) && (i & 0x40/2) && (i & 0x80/2)) || ((i & 0x2000/2) && (i & 0x400/2)) )
778         x ^= 0x0800;
779
780      src[i] = x;
781   }
782
783   mgcs_flip_sprites(machine);
784}
785
786
787// lhzb2
788
789static DRIVER_INIT( lhzb2 )
790{
791   int i;
792   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
793
794   int rom_size = 0x80000;
795
796   for (i=0; i<rom_size/2; i++)
797   {
798      UINT16 x = src[i];
799
800      /* bit 0 xor layer */
801
802      if( i & 0x20/2 )
803      {
804         if( i & 0x02/2 )
805         {
806            x ^= 0x0001;
807         }
808      }
809
810      if( !(i & 0x4000/2) )
811      {
812         if( !(i & 0x300/2) )
813         {
814            x ^= 0x0001;
815         }
816      }
817
818      /* bit 13 xor layer */
819
820      if( !(i & 0x1000/2) )
821      {
822         if( i & 0x2000/2 )
823         {
824            if( i & 0x8000/2 )
825            {
826               if( !(i & 0x100/2) )
827               {
828                  if( i & 0x200/2 )
829                  {
830                     if( !(i & 0x40/2) )
831                     {
832                        x ^= 0x2000;
833                     }
834                  }
835                  else
836                  {
837                     x ^= 0x2000;
838                  }
839               }
840            }
841            else
842            {
843               if( !(i & 0x100/2) )
844               {
845                  x ^= 0x2000;
846               }
847            }
848         }
849         else
850         {
851            if( i & 0x8000/2 )
852            {
853               if( i & 0x200/2 )
854               {
855                  if( !(i & 0x40/2) )
856                  {
857                     x ^= 0x2000;
858                  }
859               }
860               else
861               {
862                  x ^= 0x2000;
863               }
864            }
865            else
866            {
867               x ^= 0x2000;
868            }
869         }
870      }
871
872      src[i] = x;
873   }
874}
875
876
877//lhzb2a
878
879static DRIVER_INIT( lhzb2a )
880{
881   int i;
882   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
883
884   int rom_size = 0x80000;
885
886   for (i=0; i<rom_size/2; i++)
887   {
888      UINT16 x = src[i];
889
890      /* bit 0 xor layer */
891
892      if( i & 0x20/2 )
893      {
894         if( i & 0x02/2 )
895         {
896            x ^= 0x0001;
897         }
898      }
899
900      if( !(i & 0x4000/2) )
901      {
902         if( !(i & 0x300/2) )
903         {
904            x ^= 0x0001;
905         }
906      }
907
908      /* bit 5 xor layer */
909
910      if( i & 0x4000/2 )
911      {
912         if( i & 0x8000/2 )
913         {
914            if( i & 0x2000/2 )
915            {
916               if( i & 0x200/2 )
917               {
918                  if( !(i & 0x40/2) || (i & 0x800/2) )
919                  {
920                     x ^= 0x0020;
921                  }
922               }
923            }
924         }
925         else
926         {
927            if( !(i & 0x40/2) || (i & 0x800/2) )
928            {
929               x ^= 0x0020;
930            }
931         }
932      }
933
934      src[i] = x;
935   }
936}
937
938
939//slqz2
940
941static DRIVER_INIT( slqz2 )
942{
943   int i;
944   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
945
946   int rom_size = 0x80000;
947
948   for (i=0; i<rom_size/2; i++)
949   {
950      UINT16 x = src[i];
951
952      /* bit 0 xor layer */
953
954      if( i & 0x20/2 )
955      {
956         if( i & 0x02/2 )
957         {
958            x ^= 0x0001;
959         }
960      }
961
962      if( !(i & 0x4000/2) )
963      {
964         if( !(i & 0x300/2) )
965         {
966            x ^= 0x0001;
967         }
968      }
969
970      /* bit 14 xor layer */
971
972      if( i & 0x1000/2 )
973      {
974         if( i & 0x800/2 )
975         {
976            x ^= 0x4000;
977         }
978         else
979         {
980            if( i & 0x200/2 )
981            {
982               if( !(i & 0x100/2) )
983               {
984                  if( i & 0x40/2 )
985                  {
986                     x ^= 0x4000;
987                  }
988               }
989            }
990            else
991            {
992               x ^= 0x4000;
993            }
994         }
995      }
996      else
997      {
998         if( i & 0x800/2 )
999         {
1000            x ^= 0x4000;
1001         }
1002         else
1003         {
1004            if( !(i & 0x100/2) )
1005            {
1006               if( i & 0x40/2 )
1007               {
1008                  x ^= 0x4000;
1009               }
1010            }
1011         }
1012      }
1013
1014      src[i] = x;
1015   }
1016}
1017
5581018/***************************************************************************
5591019                                Memory Maps
5601020***************************************************************************/
r6428r6429
5821042      logerror("PC %06X: irq_enable = %02x\n",cpu_get_pc(space->cpu),data);
5831043}
5841044
585static UINT8 input_select;
1045static UINT8 input_select, hopper;
5861046static WRITE8_HANDLER( input_select_w )
5871047{
5881048   input_select = data;
r6428r6429
6351095
6361096//  AM_RANGE(0x200a, 0x200a) AM_WRITENOP
6371097
638   AM_RANGE( 0x2010, 0x2013 ) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
1098   AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", ppi8255_r)
1099   AM_RANGE( 0x2012, 0x2012 ) AM_WRITE( video_disable_w )
6391100
6401101   AM_RANGE( 0x2014, 0x2014 ) AM_WRITE( nmi_enable_w )
6411102   AM_RANGE( 0x2015, 0x2015 ) AM_WRITE( irq_enable_w )
r6428r6429
6501111
6511112   AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "BUTTONS" )
6521113
653   AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE( "ym", ym2413_w )
1114   AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE( "ymsnd", ym2413_w )
6541115ADDRESS_MAP_END
6551116
6561117
r6428r6429
6741135            input_select = data & 0xff;
6751136         }
6761137
677         if ( input_select & ~0xfc )
1138         if ( input_select & ~0xf8 )
6781139            logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(space->cpu), input_select);
6791140         break;
6801141
r6428r6429
6851146         }
6861147         break;
6871148
1149      // case 0x02: ?
1150      // case 0x03: ?
1151
6881152      default:
6891153         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
6901154   }
r6428r6429
7511215   palette_set_color_rgb(space->machine, offset/2, pal5bit(rgb >> 0), pal5bit(rgb >> 5), pal5bit(rgb >> 10));
7521216}
7531217
754static READ16_DEVICE_HANDLER ( mgcs_ppi8255_r )   {   return ppi8255_r(device, offset);   }
755static WRITE16_DEVICE_HANDLER( mgcs_ppi8255_w )   {   if (ACCESSING_BITS_0_7)   ppi8255_w(device, offset, data);   }
756
7571218static ADDRESS_MAP_START( mgcs, ADDRESS_SPACE_PROGRAM, 16 )
7581219   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
7591220   AM_RANGE( 0x300000, 0x303fff ) AM_RAM
760
7611221   AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE( mgcs_magic_w )
7621222   AM_RANGE( 0x49c002, 0x49c003 ) AM_READ ( mgcs_magic_r )
763
7641223   AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_BASE( (UINT16**)&spriteram )
7651224   AM_RANGE( 0xa03000, 0xa037ff ) AM_RAM_WRITE( mgcs_paletteram_xRRRRRGGGGGBBBBB_w ) AM_BASE( &paletteram16 )
766
767   AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREADWRITE("ppi8255", mgcs_ppi8255_r, mgcs_ppi8255_w)
768
1225   AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREAD8( "ppi8255", ppi8255_r, 0x00ff )
1226   AM_RANGE( 0xa04024, 0xa04025 ) AM_WRITE( video_disable_lsb_w )
7691227   AM_RANGE( 0xa04028, 0xa04029 ) AM_WRITE( irq2_enable_w )
7701228   AM_RANGE( 0xa0402a, 0xa0402b ) AM_WRITE( irq1_enable_w )
771
7721229   AM_RANGE( 0xa08000, 0xa0bfff ) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_BASE( (UINT16**)&fg_videoram )
7731230   AM_RANGE( 0xa0c000, 0xa0ffff ) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_BASE( (UINT16**)&bg_videoram )
774
775   // oki banking?
7761231   AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1232   // oki banking through protection (code at $1a350)?
7771233ADDRESS_MAP_END
7781234
7791235
1236// sdmg2
1237
1238static WRITE16_HANDLER( sdmg2_paletteram_xRRRRRGGGGGBBBBB_w )
1239{
1240   int rgb;
1241
1242   COMBINE_DATA(&paletteram16[offset]);
1243
1244   rgb = ((paletteram16[offset/2*2+1] & 0xff) << 8) | (paletteram16[offset/2*2+0] & 0xff);
1245
1246   palette_set_color_rgb(space->machine, offset/2, pal5bit(rgb >> 0), pal5bit(rgb >> 5), pal5bit(rgb >> 10));
1247}
1248
1249static READ8_HANDLER( sdmg2_keys_r )
1250{
1251   if (~input_select & 0x01)   return input_port_read(space->machine, "KEY0");
1252   if (~input_select & 0x02)   return input_port_read(space->machine, "KEY1");
1253   if (~input_select & 0x04)   return input_port_read(space->machine, "KEY2");
1254   if (~input_select & 0x08)   return input_port_read(space->machine, "KEY3");
1255   if (~input_select & 0x10)   return input_port_read(space->machine, "KEY4");
1256
1257   logerror("%s: warning, reading key with input_select = %02x\n", cpuexec_describe_context(space->machine), input_select);
1258   return 0xff;
1259}
1260
1261static WRITE16_HANDLER( sdmg2_magic_w )
1262{
1263   COMBINE_DATA(&igs_magic[offset]);
1264
1265   if (offset == 0)
1266      return;
1267
1268   switch(igs_magic[0])
1269   {
1270      // case 0x00: ? 0x80
1271
1272      case 0x01:
1273         if (ACCESSING_BITS_0_7)
1274         {
1275            input_select   =   data & 0x1f;
1276            coin_counter_w(0,   data & 0x20);
1277            //  coin out        data & 0x40
1278            hopper         =   data & 0x80;
1279         }
1280         break;
1281
1282      case 0x02:
1283         if (ACCESSING_BITS_0_7)
1284         {
1285            okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x80) ? 0x40000 : 0);
1286         }
1287         break;
1288
1289      default:
1290         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
1291   }
1292}
1293
1294static READ16_HANDLER( sdmg2_magic_r )
1295{
1296   switch(igs_magic[0])
1297   {
1298      case 0x00:
1299      {
1300         UINT16 hopper_bit = (hopper && ((video_screen_get_frame_number(space->machine->primary_screen)/10)&1)) ? 0x0000 : 0x0001;
1301         return input_port_read(space->machine, "COINS") | hopper_bit;
1302      }
1303
1304      case 0x02:
1305         return sdmg2_keys_r(space, 0);
1306
1307      default:
1308         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
1309         break;
1310   }
1311
1312   return 0xffff;
1313}
1314
1315static ADDRESS_MAP_START( sdmg2, ADDRESS_SPACE_PROGRAM, 16 )
1316   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1317   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
1318   AM_RANGE(0x202000, 0x202fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_BASE( (UINT16**)&spriteram )
1319   AM_RANGE(0x203000, 0x2037ff) AM_RAM_WRITE( sdmg2_paletteram_xRRRRRGGGGGBBBBB_w ) AM_BASE( &paletteram16 )
1320   AM_RANGE(0x204020, 0x204027) AM_DEVREAD8( "ppi8255", ppi8255_r, 0x00ff )
1321   AM_RANGE(0x204024, 0x204025) AM_WRITE( video_disable_lsb_w )
1322   AM_RANGE(0x204028, 0x204029) AM_WRITE( irq2_enable_w )
1323   AM_RANGE(0x20402a, 0x20402b) AM_WRITE( irq1_enable_w )
1324   AM_RANGE(0x208000, 0x20bfff) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_BASE( (UINT16**)&fg_videoram )
1325   AM_RANGE(0x20c000, 0x20ffff) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_BASE( (UINT16**)&bg_videoram )
1326   AM_RANGE(0x210000, 0x210001) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1327   AM_RANGE(0x300000, 0x300003) AM_WRITE( sdmg2_magic_w )
1328   AM_RANGE(0x300002, 0x300003) AM_READ ( sdmg2_magic_r )
1329ADDRESS_MAP_END
1330
1331
1332// mgdh
1333
1334static READ8_HANDLER( mgdh_keys_r )
1335{
1336   if (~input_select & 0x04)   return input_port_read(space->machine, "KEY0");
1337   if (~input_select & 0x08)   return input_port_read(space->machine, "KEY1");
1338   if (~input_select & 0x10)   return input_port_read(space->machine, "KEY2");
1339   if (~input_select & 0x20)   return input_port_read(space->machine, "KEY3");
1340   if (~input_select & 0x40)   return input_port_read(space->machine, "KEY4");
1341
1342   if ((input_select & 0xfc) == 0xfc)   return input_port_read(space->machine, "DSW1");
1343
1344   logerror("%s: warning, reading key with input_select = %02x\n", cpuexec_describe_context(space->machine), input_select);
1345   return 0xff;
1346}
1347
1348static WRITE16_HANDLER( mgdh_magic_w )
1349{
1350   COMBINE_DATA(&igs_magic[offset]);
1351
1352   if (offset == 0)
1353      return;
1354
1355   switch(igs_magic[0])
1356   {
1357      case 0x00:
1358         if (ACCESSING_BITS_0_7)
1359         {
1360            //  coin out     data & 0x40
1361            coin_counter_w(0, data & 0x80);
1362         }
1363
1364         if ( data & ~0xc0 )
1365            logerror("%06x: warning, unknown bits written to igs_magic 00 = %02x\n", cpu_get_pc(space->cpu), data);
1366
1367         break;
1368
1369      case 0x01:
1370         if (ACCESSING_BITS_0_7)
1371         {
1372            input_select = data & 0xff;
1373            hopper = data & 0x01;
1374         }
1375
1376         if ( input_select & ~0xfd )
1377            logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(space->cpu), input_select);
1378
1379         break;
1380
1381      case 0x03:
1382         if (ACCESSING_BITS_0_7)
1383         {
1384            // bit 7?
1385            okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x40) ? 0x40000 : 0);
1386         }
1387         break;
1388
1389      default:
1390         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
1391   }
1392}
1393
1394static READ16_HANDLER( mgdh_magic_r )
1395{
1396   switch(igs_magic[0])
1397   {
1398      case 0x00:
1399         return mgdh_keys_r(space, 0);
1400
1401      case 0x02:
1402         return BITSWAP8(input_port_read(space->machine, "DSW2"), 0,1,2,3,4,5,6,7);
1403
1404      case 0x03:
1405      {
1406         UINT16 hopper_bit = (hopper && ((video_screen_get_frame_number(space->machine->primary_screen)/10)&1)) ? 0x0000 : 0x0001;
1407         return input_port_read(space->machine, "COINS") | hopper_bit;
1408      }
1409
1410      default:
1411         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
1412         break;
1413   }
1414
1415   return 0xffff;
1416}
1417
1418static ADDRESS_MAP_START( mgdh_map, ADDRESS_SPACE_PROGRAM, 16 )
1419   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1420   AM_RANGE(0x600000, 0x603fff) AM_RAM
1421   AM_RANGE(0x876000, 0x876003) AM_WRITE( mgdh_magic_w )
1422   AM_RANGE(0x876002, 0x876003) AM_READ ( mgdh_magic_r )
1423   AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_BASE( (UINT16**)&spriteram )
1424   AM_RANGE(0xa03000, 0xa037ff) AM_RAM_WRITE( sdmg2_paletteram_xRRRRRGGGGGBBBBB_w ) AM_BASE( &paletteram16 )
1425   AM_RANGE(0xa04020, 0xa04027) AM_DEVREAD8( "ppi8255", ppi8255_r, 0x00ff )
1426   AM_RANGE(0xa04024, 0xa04025) AM_WRITE( video_disable_lsb_w )
1427   AM_RANGE(0xa04028, 0xa04029) AM_WRITE( irq2_enable_w )
1428   AM_RANGE(0xa0402a, 0xa0402b) AM_WRITE( irq1_enable_w )
1429   AM_RANGE(0xa08000, 0xa0bfff) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_BASE( (UINT16**)&fg_videoram )
1430   AM_RANGE(0xa0c000, 0xa0ffff) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_BASE( (UINT16**)&bg_videoram )
1431   AM_RANGE(0xa10000, 0xa10001) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1432ADDRESS_MAP_END
1433
1434
7801435/***************************************************************************
7811436                                Input Ports
7821437***************************************************************************/
7831438
7841439static INPUT_PORTS_START( iqblocka )
7851440
786   PORT_START("DSW0")   // IN0
1441   PORT_START("DSW1")
7871442   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
7881443   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
7891444   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r6428r6429
8081463   PORT_DIPSETTING(    0x40, "20" )
8091464   PORT_DIPSETTING(    0x00, "50" )
8101465
811   PORT_START("DSW1")   // IN1
1466   PORT_START("DSW2")
8121467   PORT_DIPNAME( 0x07, 0x07, "Key In" )
8131468   PORT_DIPSETTING(    0x07, "10" )
8141469   PORT_DIPSETTING(    0x06, "20" )
r6428r6429
8331488   PORT_DIPSETTING(    0x40, "300" )
8341489   PORT_DIPSETTING(    0x00, "400" )
8351490
836   PORT_START("DSW2")   // IN2
1491   PORT_START("DSW3")
8371492   PORT_DIPNAME( 0x03, 0x03, "Win Up Pool" )
8381493   PORT_DIPSETTING(    0x03, "300" )
8391494   PORT_DIPSETTING(    0x02, "500" )
r6428r6429
9491604   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
9501605   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
9511606
952   // the top 2 bits of COINS and KEYx are read and combined (see code at 1C83A)
1607   // the top 2 bits of COINS (port A) and KEYx (port B) are read and combined with the bottom 4 bits read from port C (see code at 1C83A)
9531608
9541609   PORT_START("COINS")
9551610   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ? (shown in service mode)
r6428r6429
10131668
10141669INPUT_PORTS_END
10151670
1671static INPUT_PORTS_START( sdmg2 )
10161672
1673   PORT_START("DSW1")
1674   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
1675   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1676   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1677   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1678   PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
1679   PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
1680   PORT_DIPSETTING(    0x0c, "10" )
1681   PORT_DIPSETTING(    0x08, "20" )
1682   PORT_DIPSETTING(    0x04, "50" )
1683   PORT_DIPSETTING(    0x00, "100" )
1684   PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
1685   PORT_DIPSETTING(    0x10, "2000" )
1686   PORT_DIPSETTING(    0x00, "29999" )
1687   PORT_DIPNAME( 0x20, 0x20, "Money Type" )
1688   PORT_DIPSETTING(    0x20, "Coins" )
1689   PORT_DIPSETTING(    0x00, "Notes" )
1690   PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
1691   PORT_DIPSETTING(    0x40, "Coins" )
1692   PORT_DIPSETTING(    0x00, "Notes" )
1693   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
1694   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1695   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1696
1697   PORT_START("DSW2")
1698   PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
1699   PORT_DIPSETTING(    0x03, "500" )
1700   PORT_DIPSETTING(    0x02, "1000" )
1701   PORT_DIPSETTING(    0x01, "1500" )
1702   PORT_DIPSETTING(    0x00, "2000" )
1703   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
1704   PORT_DIPSETTING(    0x0c, "1" )
1705   PORT_DIPSETTING(    0x08, "2" )
1706   PORT_DIPSETTING(    0x04, "3" )
1707   PORT_DIPSETTING(    0x00, "5" )
1708   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1709   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1710   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1711   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1712   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1713   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1714   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) )
1715   PORT_DIPSETTING(    0x40, "Keyboard" )
1716   PORT_DIPSETTING(    0x00, DEF_STR( Joystick ) )
1717   PORT_DIPNAME( 0x80, 0x80, "Number Type" )
1718   PORT_DIPSETTING(    0x80, "Number" )
1719   PORT_DIPSETTING(    0x00, "Tile" )
1720
1721   PORT_START("COINS")
1722   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL   )   // hopper switch
1723   PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_SERVICE2  )   // shown in test mode
1724   PORT_SERVICE_NO_TOGGLE( 0x04,   IP_ACTIVE_LOW )   // keep pressed while booting
1725   PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_SERVICE1  ) PORT_NAME("Statistics")
1726   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_COIN1     )
1727   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_OTHER     ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
1728   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_SERVICE3  )   // shown in test mode
1729   PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
1730
1731   PORT_START("KEY0")
1732   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
1733   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
1734   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
1735   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
1736   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
1737   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1738   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1739   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1740
1741   PORT_START("KEY1")
1742   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
1743   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
1744   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
1745   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
1746   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
1747   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
1748   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1749   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1750
1751   PORT_START("KEY2")
1752   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
1753   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
1754   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
1755   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
1756   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
1757   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1758   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1759   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1760
1761   PORT_START("KEY3")
1762   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
1763   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
1764   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
1765   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
1766   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1767   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1768   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1769   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1770
1771   PORT_START("KEY4")
1772   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
1773   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
1774   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
1775   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1776   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
1777   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
1778   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1779   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1780
1781INPUT_PORTS_END
1782
1783static INPUT_PORTS_START( mgdh )
1784
1785   PORT_START("DSW1")
1786   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1787   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1788   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1789   PORT_DIPNAME( 0x06, 0x06, "Credits Per Note" )
1790   PORT_DIPSETTING(    0x06, "5" )
1791   PORT_DIPSETTING(    0x04, "10" )
1792   PORT_DIPSETTING(    0x02, "50" )
1793   PORT_DIPSETTING(    0x00, "100" )
1794   PORT_DIPNAME( 0x08, 0x08, "Max Note Credits" )
1795   PORT_DIPSETTING(    0x08, "100" )
1796   PORT_DIPSETTING(    0x00, "500" )
1797   PORT_DIPNAME( 0x10, 0x10, "Money Type" )
1798   PORT_DIPSETTING(    0x10, "Coins" )
1799   PORT_DIPSETTING(    0x00, "Notes" )
1800   PORT_DIPNAME( 0x20, 0x20, "Pay Out Type" )
1801   PORT_DIPSETTING(    0x20, "Coins" )
1802   PORT_DIPSETTING(    0x00, "Notes" )
1803   PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Unknown ) )
1804   PORT_DIPSETTING(    0xc0, "1" )
1805   PORT_DIPSETTING(    0x80, "2" )
1806   PORT_DIPSETTING(    0x40, "3" )
1807   PORT_DIPSETTING(    0x00, "5" )
1808
1809   PORT_START("DSW2")   // bitswapped
1810   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
1811   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1812   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1813   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Controls ) )
1814   PORT_DIPSETTING(    0x02, "Keyboard" )
1815   PORT_DIPSETTING(    0x00, DEF_STR( Joystick ) )
1816   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1817   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1818   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1819   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) )
1820   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1821   PORT_DIPSETTING(    0x18, DEF_STR( 1C_1C ) )
1822   PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
1823   PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
1824   PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Unknown ) )
1825   PORT_DIPSETTING(    0xe0, "1" )
1826   PORT_DIPSETTING(    0xc0, "2" )
1827   PORT_DIPSETTING(    0xa0, "5" )
1828   PORT_DIPSETTING(    0x80, "6" )
1829   PORT_DIPSETTING(    0x60, "7" )
1830   PORT_DIPSETTING(    0x40, "8" )
1831   PORT_DIPSETTING(    0x20, "9" )
1832   PORT_DIPSETTING(    0x00, "10" )
1833
1834   PORT_START("COINS")
1835   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL   )   // hopper switch
1836   PORT_SERVICE_NO_TOGGLE( 0x02,   IP_ACTIVE_LOW ) // service mode (keep pressed during boot too)
1837   PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_SERVICE1  ) PORT_NAME("Statistics")   // press with the above for sound test
1838   PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_COIN1     ) PORT_IMPULSE(5)   // coin error otherwise
1839   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_OTHER     ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
1840   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_SERVICE3  ) // ? (shown in service mode)
1841   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
1842   PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
1843
1844   PORT_START("KEY0")
1845   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
1846   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
1847   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
1848   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
1849   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
1850   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1851   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1852   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1853
1854   PORT_START("KEY1")
1855   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
1856   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
1857   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
1858   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
1859   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
1860   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
1861   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1862   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1863
1864   PORT_START("KEY2")
1865   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
1866   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
1867   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
1868   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
1869   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
1870   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1871   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1872   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1873
1874   PORT_START("KEY3")
1875   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
1876   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
1877   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
1878   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
1879   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1880   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1881   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1882   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1883
1884   PORT_START("KEY4")
1885   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
1886   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
1887   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
1888   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1889   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
1890   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
1891   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1892   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1893
1894INPUT_PORTS_END
1895
1896
10171897/***************************************************************************
10181898                                Graphics Layout
10191899***************************************************************************/
r6428r6429
10291909   8*8*4
10301910};
10311911
1912static const gfx_layout layout_8x8x4_swapped =
1913{
1914   8,8,
1915   RGN_FRAC(1,1),
1916   4,
1917   { 8*2,8*3,8*0,8*1 },
1918   { STEP8(0, 1) },
1919   { STEP8(0, 8*4) },
1920   8*8*4
1921};
1922
10321923static const gfx_layout layout_8x8x4_flipped =
10331924{
10341925   8,8,
r6428r6429
10401931   8*8*4
10411932};
10421933
1934static GFXDECODE_START( igs017 )
1935   GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4, 0, 16 )
1936GFXDECODE_END
1937
1938static GFXDECODE_START( igs017_swapped )
1939   GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_swapped, 0, 16 )
1940GFXDECODE_END
1941
10431942static GFXDECODE_START( igs017_flipped )
10441943   GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_flipped, 0, 16 )
10451944GFXDECODE_END
10461945
1047static GFXDECODE_START( igs017 )
1048   GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4, 0, 16 )
1049GFXDECODE_END
10501946
1051
10521947/***************************************************************************
10531948                                Machine Drivers
10541949***************************************************************************/
r6428r6429
10701965// Dips are read through the 8255
10711966static const ppi8255_interface iqblocka_ppi8255_intf =
10721967{
1073   DEVCB_INPUT_PORT("DSW0"),   // Port A read
1074   DEVCB_INPUT_PORT("DSW1"),   // Port B read
1075   DEVCB_INPUT_PORT("DSW2"),   // Port C read
1968   DEVCB_INPUT_PORT("DSW1"),   // Port A read
1969   DEVCB_INPUT_PORT("DSW2"),   // Port B read
1970   DEVCB_INPUT_PORT("DSW3"),   // Port C read
10761971
1077   DEVCB_NULL,                  // Port A write
1078   DEVCB_NULL,                  // Port B write
1079   DEVCB_NULL,                  // Port C write
1972   DEVCB_NULL,               // Port A write
1973   DEVCB_NULL,               // Port B write
1974   DEVCB_NULL               // Port C write
10801975};
10811976
10821977static MACHINE_RESET( iqblocka )
r6428r6429
10871982}
10881983
10891984static MACHINE_DRIVER_START( iqblocka )
1090
1091   /* basic machine hardware */
10921985   MDRV_CPU_ADD("maincpu", Z180, XTAL_16MHz / 2)
10931986   MDRV_CPU_PROGRAM_MAP(iqblocka_map)
10941987   MDRV_CPU_IO_MAP(iqblocka_io)
r6428r6429
11112004
11122005   MDRV_VIDEO_START(igs017)
11132006   MDRV_VIDEO_UPDATE(igs017)
2007   MDRV_VIDEO_RESET(igs017)
11142008
11152009   /* sound hardware */
11162010   MDRV_SPEAKER_STANDARD_MONO("mono")
1117   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
2011   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
11182012   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
11192013
11202014   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz / 16)
r6428r6429
11512045
11522046static const ppi8255_interface mgcs_ppi8255_intf =
11532047{
1154   DEVCB_INPUT_PORT("COINS"),      // Port A read
1155   DEVCB_HANDLER(mgcs_keys_r),      // Port B read
1156   DEVCB_NULL,                  // Port C read (see code at 1C83A)
2048   DEVCB_INPUT_PORT("COINS"),   // Port A read
2049   DEVCB_HANDLER(mgcs_keys_r),   // Port B read
2050   DEVCB_NULL,               // Port C read (see code at 1C83A)
11572051
1158   DEVCB_NULL,                  // Port A write
1159   DEVCB_NULL,                  // Port B write
1160   DEVCB_NULL,                  // Port C write (with 0/1)
2052   DEVCB_NULL,               // Port A write
2053   DEVCB_NULL,               // Port B write
2054   DEVCB_NULL               // Port C write
11612055};
11622056
11632057static MACHINE_DRIVER_START( mgcs )
r6428r6429
11822076
11832077   MDRV_VIDEO_START(igs017)
11842078   MDRV_VIDEO_UPDATE(igs017)
2079   MDRV_VIDEO_RESET(igs017)
11852080
11862081   /* sound hardware */
11872082   MDRV_SPEAKER_STANDARD_MONO("mono")
r6428r6429
11912086MACHINE_DRIVER_END
11922087
11932088
2089
2090// sdmg2
2091
2092static const ppi8255_interface sdmg2_ppi8255_intf =
2093{
2094   DEVCB_INPUT_PORT("DSW1"),   // Port A read
2095   DEVCB_INPUT_PORT("DSW2"),   // Port B read
2096   DEVCB_NULL,               // Port C read
2097
2098   DEVCB_NULL,               // Port A write
2099   DEVCB_NULL,               // Port B write
2100   DEVCB_NULL               // Port C write
2101};
2102
2103static MACHINE_DRIVER_START( sdmg2 )
2104   MDRV_CPU_ADD("maincpu", M68000, XTAL_22MHz/2)
2105   MDRV_CPU_PROGRAM_MAP(sdmg2)
2106   MDRV_CPU_VBLANK_INT_HACK(mgcs_interrupt,2)
2107
2108   MDRV_MACHINE_RESET(mgcs)
2109
2110   MDRV_PPI8255_ADD( "ppi8255", sdmg2_ppi8255_intf )
2111
2112   /* video hardware */
2113   MDRV_SCREEN_ADD("screen", RASTER)
2114   MDRV_SCREEN_REFRESH_RATE(60)   // VSync 60Hz, HSync 15.3kHz
2115   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
2116   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
2117   MDRV_SCREEN_SIZE(512, 256)
2118   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
2119
2120   MDRV_GFXDECODE(igs017)
2121   MDRV_PALETTE_LENGTH(0x100*2)
2122
2123   MDRV_VIDEO_START(igs017)
2124   MDRV_VIDEO_UPDATE(igs017)
2125   MDRV_VIDEO_RESET(igs017)
2126
2127   /* sound hardware */
2128   MDRV_SPEAKER_STANDARD_MONO("mono")
2129   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_22MHz / 22)
2130   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
2131   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
2132MACHINE_DRIVER_END
2133
2134
2135//mgdh
2136
2137static INTERRUPT_GEN( mgdh_interrupt )
2138{
2139   if (cpu_getiloops(device) & 1)
2140   {
2141       if (irq2_enable)
2142         cpu_set_input_line(device, 3, HOLD_LINE);   // lev 3 instead of 2
2143   }
2144   else
2145   {
2146       if (irq1_enable)
2147         cpu_set_input_line(device, 1, HOLD_LINE);
2148   }
2149}
2150
2151static const ppi8255_interface mgdh_ppi8255_intf =
2152{
2153   DEVCB_INPUT_PORT("DSW1"),   // Port A read
2154   DEVCB_NULL,               // Port B read
2155   DEVCB_NULL,               // Port C read
2156
2157   DEVCB_NULL,               // Port A write
2158   DEVCB_NULL,               // Port B write
2159   DEVCB_NULL               // Port C write
2160};
2161
2162static MACHINE_DRIVER_START( mgdh )
2163   MDRV_CPU_ADD("maincpu", M68000, XTAL_22MHz / 2)
2164   MDRV_CPU_PROGRAM_MAP(mgdh_map)
2165   MDRV_CPU_VBLANK_INT_HACK(mgdh_interrupt,2)
2166
2167   MDRV_MACHINE_RESET(mgcs)
2168
2169   MDRV_PPI8255_ADD( "ppi8255", mgdh_ppi8255_intf )
2170
2171   /* video hardware */
2172   MDRV_SCREEN_ADD("screen", RASTER)
2173   MDRV_SCREEN_REFRESH_RATE(60)
2174   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
2175   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
2176   MDRV_SCREEN_SIZE(512, 256)
2177   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
2178
2179   MDRV_GFXDECODE(igs017_swapped)
2180   MDRV_PALETTE_LENGTH(0x100*2)
2181
2182   MDRV_VIDEO_START(igs017)
2183   MDRV_VIDEO_UPDATE(igs017)
2184   MDRV_VIDEO_RESET(igs017)
2185
2186   /* sound hardware */
2187   MDRV_SPEAKER_STANDARD_MONO("mono")
2188   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_22MHz / 22)
2189   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
2190   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
2191MACHINE_DRIVER_END
2192
2193
11942194/***************************************************************************
11952195                                ROMs Loading
11962196***************************************************************************/
11972197
1198/*
2198/***************************************************************************
11992199
12002200IQ Block (alt hardware)
12012201IGS, 1996
r6428r6429
12372237      VSync   - 60Hz
12382238      HSync   - 15.31kHz
12392239
1240*/
2240***************************************************************************/
12412241
12422242ROM_START( iqblocka )
12432243   ROM_REGION( 0x40000, "maincpu", 0 )
r6428r6429
12672267   ROM_LOAD( "sp.u17", 0x00000, 0x40000, CRC(71357845) SHA1(25f4f7aebdcc0706018f041d3696322df569b0a3) )
12682268ROM_END
12692269
1270/*
2270/***************************************************************************
12712271
12722272Mahjong Tian Jiang Shen Bing
12732273IGS, 1997
r6428r6429
13132313      VSync   - 60Hz
13142314      HSync   - 15.30kHz
13152315
1316*/
2316***************************************************************************/
13172317
13182318ROM_START( tjsb )
13192319   ROM_REGION( 0x40000, "maincpu", 0 )
r6428r6429
13232323   ROM_LOAD( "a0701.u3", 0x000000, 0x200000, CRC(aa182140) SHA1(37c2053386c183ff726ba417d13f2063cf9a22df) )   // FIXED BITS (xxxxxxxx0xxxxxxx)
13242324
13252325   ROM_REGION( 0x80000, "tilemaps", 0 )
1326   ROM_LOAD( "text.u6", 0x00000, 0x80000,  CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) )   // BADADDR     --xxxxxxxxxxxxxxxxx
2326   ROM_LOAD( "text.u6", 0x00000, 0x80000,  CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) )   // BADADDR --xxxxxxxxxxxxxxxxx
13272327
13282328   ROM_REGION( 0x80000, "oki", 0 )
13292329   ROM_LOAD( "s0703.u15", 0x00000, 0x80000,  CRC(c6f94d29) SHA1(ec413580240711fc4977dd3c96c288501aa7ef6c) )
13302330ROM_END
13312331
1332/*
2332/***************************************************************************
13332333
13342334Mahjong Man Guan Cai Shen
13352335IGS, 1998
r6428r6429
13712371      VSync - 60Hz
13722372      HSync - 15.3kHz
13732373
1374*/
2374***************************************************************************/
13752375
13762376ROM_START( mgcs )
13772377   ROM_REGION( 0x80000, "maincpu", 0 )
r6428r6429
13872387   ROM_LOAD( "s1502.u10", 0x00000, 0x80000, CRC(a8a6ba58) SHA1(59276a8ab4a31812600816c2a43b74bd71394419) )
13882388ROM_END
13892389
1390GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, iqblocka, ROT0, "IGS", "Shu Zi Le Yuan (V127M)",             GAME_NOT_WORKING )
1391GAME( 1996, iqblockf, iqblock, iqblocka, iqblocka, iqblockf, ROT0, "IGS", "Shu Zi Le Yuan (V113FR)",            GAME_NOT_WORKING )
1392GAME( 1997, tjsb,     0,       iqblocka, iqblocka, tjsb,     ROT0, "IGS", "Mahjong Tian Jiang Shen Bing",       GAME_NOT_WORKING )
1393GAME( 1998, mgcs,     0,       mgcs,     mgcs,     mgcs,     ROT0, "IGS", "Mahjong Man Guan Cai Shen (V103CS)", GAME_NOT_WORKING )
2390/***************************************************************************
2391
2392Mahjong Super Da Man Guan 2
2393IGS, 1997
2394
2395
2396PCB Layout
2397----------
2398
2399IGS PCB NO-0147-6
2400|---------------------------------------|
2401| UPC1242H          S0903.U15   BATTERY |
2402|          VOL               SPDT_SW    |
2403|                                       |
2404|        K668                    6264   |
2405|                                       |
2406|                                6264   |
2407|                   PAL                 |
2408|1   8255                               |
2409|8                            P0900.U25 |
2410|W                                      |
2411|A                                      |
2412|Y                                      |
2413|                                68000  |
2414|                                       |
2415|    M0902.U4       PAL                 |
2416|                                       |
2417|                                 PAL   |
2418|1   M0901.U5       |-------|           |
2419|0                  |       |     PAL   |
2420|W                  |IGS031 |           |
2421|A   TEXT.U6        |       |           |
2422|Y                  |-------|     62256 |
2423|T         22MHz  DSW1 DSW2             |
2424|---------------------------------------|
2425Notes:
2426      Uses common 10-way/18-way Mahjong pinout
2427      68000 clock 11.000MHz [22/2]
2428      K668 = M6295. clock 1.000MHz [22/22]. pin7 = High
2429      VSync - 60Hz
2430      HSync - 15.3kHz
2431
2432***************************************************************************/
2433
2434ROM_START( sdmg2 )
2435   ROM_REGION( 0x80000, "maincpu", 0 )
2436   ROM_LOAD16_WORD_SWAP( "p0900.u25", 0x00000, 0x80000,CRC(43366f51) SHA1(48dd965dceff7de15b43c2140226a8b17a792dbc) )
2437
2438   ROM_REGION( 0x280000, "sprites", 0 )
2439   ROM_LOAD( "m0901.u5", 0x000000, 0x200000, CRC(9699db24) SHA1(50fc2f173c20b48d10595f01f1e9545f1b13a61b) )
2440   ROM_LOAD( "m0902.u4", 0x200000, 0x080000, CRC(3298b13b) SHA1(13b21ddeed368b7f4fea1408c8fc511244342faf) )
2441
2442   ROM_REGION( 0x20000, "tilemaps", 0 )
2443   ROM_LOAD( "text.u6", 0x000000, 0x020000, CRC(cb34cbc0) SHA1(ceedbdda085fd1acc9a575502bdf7cf998f54f05) )
2444
2445   ROM_REGION( 0x80000, "oki", 0 )
2446   ROM_LOAD( "s0903.u15", 0x00000, 0x80000, CRC(ae5a441c) SHA1(923774ef73ab0f70e0db1738a4292dcbd70d2384) )
2447ROM_END
2448
2449/***************************************************************************
2450
2451Mahjong Long Hu Zheng Ba 2
2452IGS, 1998
2453
2454PCB Layout
2455----------
2456
2457IGS PCB NO-0206
2458|---------------------------------------|
2459|    6264             |-------|         |
2460|    6264      |----| |       |         |
2461|              |IGS | |IGS025 |         |
2462|              |022 | |       |  PAL    |
2463|              |----| |-------|         |
2464|                       PAL             |
2465|    M1104.U11          PAL    68000    |
2466|1                                      |
2467|8                                      |
2468|W                                      |
2469|A   M1101.U6  8MHz          P1100.U30  |
2470|Y                                      |
2471|                                  6264 |
2472|                                       |
2473|              |-------|                |
2474|              |       |                |
2475|              |IGS031 |           61256|
2476|1             |       |                |
2477|0   M1103.U8  |-------|                |
2478|W      22MHz                           |
2479|A             DSW1   DSW2              |
2480|Y            K668     BATTERY          |
2481|TDA1020 VOL          S1102.U23  SPDT_SW|
2482|---------------------------------------|
2483Notes:
2484      Uses common 10-way/18-way Mahjong pinout
2485      68000 clock 11.000MHz [22/2]
2486      K668  == Oki M6295 (QFP44). Clock 1MHz [8/8]. pin7 = High
2487      VSync - 60Hz
2488      HSync - 15.3kHz
2489
2490***************************************************************************/
2491
2492ROM_START( lhzb2 )
2493   ROM_REGION( 0x80000, "maincpu", 0 )
2494   ROM_LOAD16_WORD_SWAP( "p1100.u30", 0x00000, 0x80000, CRC(68102b25) SHA1(6c1e8d204be0efda0e9b6c2f49b5c6760712475f) )
2495
2496   ROM_REGION( 0x10000, "igs022", 0 )   // INTERNATIONAL GAMES SYSTEM CO.,LTD
2497   ROM_LOAD( "m1104.u11",0x0000, 0x10000, CRC(794d0276) SHA1(ac903d2faa3fb315438dc8da22c5337611a8790d) )
2498
2499   ROM_REGION( 0x200000, "sprites", 0 )   // adddress scrambling
2500   ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x200000, CRC(fed09cd6) SHA1(0658a97983f8ba408126e79889cc58323f2d99ba) )
2501
2502   ROM_REGION( 0x40000, "tilemaps", 0 )   // adddress scrambling
2503   ROM_LOAD( "m1103.u8", 0x00000, 0x40000, CRC(89d0b81c) SHA1(b8d294a143e5cc9466b544cb70e43a7ce3450ace) )
2504
2505   ROM_REGION( 0x80000, "oki", 0 )
2506   ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
2507ROM_END
2508
2509/* alt hardware, no IGS022 (protection) chip */
2510
2511ROM_START( lhzb2a )
2512   ROM_REGION( 0x80000, "maincpu", 0 )
2513   ROM_LOAD16_WORD_SWAP( "p-4096", 0x00000, 0x80000, CRC(41293f32) SHA1(df4e993f4a458729ade13981e58f32d8116c0082) )
2514
2515   ROM_REGION( 0x200000, "sprites", 0 )   // adddress scrambling
2516   ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x200000, CRC(fed09cd6) SHA1(0658a97983f8ba408126e79889cc58323f2d99ba) )
2517
2518   ROM_REGION( 0x80000, "tilemaps", 0 )   // adddress scrambling
2519   ROM_LOAD( "m1103", 0x000000, 0x080000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
2520
2521   ROM_REGION( 0x80000, "oki", 0 )
2522   ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
2523ROM_END
2524
2525/***************************************************************************
2526
2527Mahjong Shuang Long Qiang Zhu 2
2528IGS, 1998
2529
2530PCB Layout
2531----------
2532
2533IGS PCB NO-0207
2534|---------------------------------------|
2535|                   K668  S1102.U20     |
2536|     PAL                               |
2537| 8MHz                     6264         |
2538|                                       |
2539|    |----|                6264         |
2540|    |IGS |                             |
2541|    |022 |  M1103.U12       PAL        |
2542|J   |----|                    PAL      |
2543|A                                      |
2544|M                                      |
2545|M      |-------|                       |
2546|A      |       |                       |
2547|       |IGS025 |   68000               |
2548|       |       |                       |
2549|       |-------|                       |
2550|                            P1100.U28  |
2551|                 PAL                   |
2552|  M1101.U4       |-------|             |
2553|                 |       |             |
2554|                 |IGS031 |      6264   |
2555|  TEXT.U6        |       |             |
2556|                 |-------|      62256  |
2557|SPDT_SW   22MHz   DSW1  DSW2  BATTERY  |
2558|---------------------------------------|
2559Notes:
2560      68000 clock 11.000MHz [22/2]
2561      K668  == Oki M6295 (QFP44). Clock 1.000MHz [8/8]. pin7 = High
2562      VSync - 60Hz
2563      HSync - 15.3kHz
2564
2565***************************************************************************/
2566
2567ROM_START( slqz2 )
2568   ROM_REGION( 0x80000, "maincpu", 0 )
2569   ROM_LOAD16_WORD_SWAP( "p1100.u28", 0x00000, 0x80000, CRC(0b8e5c9e) SHA1(16572bd1163bba4da8a76b10649d2f71e50ad369) )
2570
2571   ROM_REGION( 0x10000, "igs022", 0 )   // INTERNATIONAL GAMES SYSTEM CO.,LTD
2572   ROM_LOAD( "m1103.u12", 0x00000, 0x10000, CRC(9f3b8d65) SHA1(5ee1ad025474399c2826f21d970e76f25d0fa1fd) )
2573
2574   ROM_REGION( 0x200000, "sprites", 0 )   // adddress scrambling
2575   ROM_LOAD16_WORD_SWAP( "m1101.u4", 0x000000, 0x200000, CRC(fed09cd6) SHA1(0658a97983f8ba408126e79889cc58323f2d99ba) ) // = m1101.u6 Mahjong Long Hu Zheng Ba 2
2576
2577   ROM_REGION( 0x80000, "tilemaps", 0 )   // light adddress scrambling
2578   ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(40d21adf) SHA1(18b202d6330ac89026bec2c9c8224b52540dd48d) )
2579
2580   ROM_REGION( 0x80000, "oki", 0 )
2581   ROM_LOAD( "s1102.u20", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) ) // = s1102.u23 Mahjong Long Hu Zheng Ba 2
2582ROM_END
2583
2584/***************************************************************************
2585
2586Mahjong Man Guan Da Heng (V123T1)
2587IGS
2588
2589PCB Layout
2590----------
2591
2592IGS PCB NO- 0252
2593|----------------------------------|
2594|    S1002.U22   6264   62256  SW  |
2595|TDA1020  FLASH.U19     PAL    BATT|
2596|  LM7805 M6295                    |
2597|   VOL                            |
2598|ULN2004                           |
2599|J             68000      IGS031   |
2600|A    DSW2                         |
2601|M                                 |
2602|M                                 |
2603|A           PAL PAL               |
2604|     IGS025                       |
2605|                                  |
2606|               M1001.U4      22MHz|
2607|                       TEXT.U6    |
2608|                              DSW1|
2609|    18WAY               10WAY     |
2610|----------------------------------|
2611Notes:
2612      68000     - Clock 11.000MHz [22/2]
2613      M6295     - Clock 1.000MHz [22/22]. Pin 7 HIGH
2614      DSW1/2    - 8-position Dip Switches
2615      SW        - Backup RAM Clear and Reset Switch
2616      FLASH.U19 - MX29F400 4M TSOP48 mounted onto a DIP adapter and plugged into a
2617                  socket. Under the socket is written '27C4096'
2618      M1001.U4  - 32M DIP42 Mask ROM
2619      S1002.U22 - 4M DIP32 Mask ROM
2620      TEXT.U6   - 27C1024 EPROM
2621
2622***************************************************************************/
2623
2624ROM_START( mgdh )
2625   ROM_REGION( 0x80000, "maincpu", 0 )
2626   ROM_LOAD16_WORD_SWAP( "flash.u19", 0x00000, 0x80000, CRC(ff3aed2c) SHA1(829140e6fc7e4dfc039b0e7b647ce26d59b23b3d) )
2627
2628   ROM_REGION( 0x400000, "sprites", 0 )
2629   ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) )   // FIXED BITS (xxxxxxx0xxxxxxxx)
2630
2631   ROM_REGION( 0x20000, "tilemaps", 0 )
2632   ROM_LOAD( "text.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) )
2633
2634   ROM_REGION( 0x80000, "oki", 0 )
2635   ROM_LOAD( "s1002.u22", 0x00000, 0x80000, CRC(ac6b55f2) SHA1(7ff91fd1107272ad6bce071dc9ae2f374ebf5e3e) )
2636ROM_END
2637
2638/***************************************************************************
2639
2640Tarzan
2641
2642***************************************************************************/
2643
2644// IGS NO-0248-1? Mislabeled?
2645ROM_START( tarzan )
2646   ROM_REGION( 0x40000, "maincpu", 0 )   // V109C TARZAN C
2647   ROM_LOAD( "0228-u16.bin", 0x00000, 0x40000, CRC(e6c552a5) SHA1(f156de9459833474c85a1f5b35917881b390d34c) )
2648
2649   ROM_REGION( 0x80000, "sprites", 0 )
2650   ROM_LOAD( "a2104_cg_v110.u15", 0x00000, 0x80000, NO_DUMP )
2651
2652   ROM_REGION( 0x80000, "tilemaps", 0 )
2653   ROM_LOAD( "0228-u6.bin", 0x00000, 0x80000, CRC(55e94832) SHA1(b15409f4f1264b6d1218d5dc51c5bd1de2e40284) )
2654
2655   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
2656   ROM_LOAD( "sound.u14", 0x00000, 0x40000, NO_DUMP )
2657
2658   ROM_REGION( 0x2dd * 2, "plds", 0 )
2659   ROM_LOAD( "eg.u20", 0x000, 0x2dd, NO_DUMP )
2660   ROM_LOAD( "eg.u21", 0x2dd, 0x2dd, NO_DUMP )
2661ROM_END
2662
2663// IGS NO-0228?
2664ROM_START( tarzana )
2665   ROM_REGION( 0x80000, "maincpu", 0 )   // V107 TAISAN
2666   ROM_LOAD( "0228-u21.bin", 0x00000, 0x80000, CRC(80aaece4) SHA1(07cad92492c5de36c3915867ed4c6544b1a30c07) )
2667
2668   ROM_REGION( 0x80000, "sprites", 0 )
2669   ROM_LOAD( "sprites.u17", 0x00000, 0x80000, NO_DUMP )
2670
2671   ROM_REGION( 0x80000, "tilemaps", 0 )
2672   ROM_LOAD( "text.u6", 0x00000, 0x80000, NO_DUMP )
2673
2674   ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
2675   ROM_LOAD( "sound.u16", 0x00000, 0x40000, NO_DUMP )
2676
2677   ROM_REGION( 0x2dd * 2, "plds", 0 )
2678   ROM_LOAD( "pal1", 0x000, 0x2dd, NO_DUMP )
2679   ROM_LOAD( "pal2", 0x2dd, 0x2dd, NO_DUMP )
2680ROM_END
2681
2682/***************************************************************************
2683
2684Super Tarzan (Italy, V100I)
2685IGS PCB NO-0230-1
2686
2687      ----|     10/WAY CONN     |--------------------------------|
2688      |   |---------------------|                       |------| |
2689     _|                                                 | U23  | |
2690    |_|  [  U1  ][  U5  ] |--------------|   |-----|    | TDA  | |
2691    |_|                   | U8 IGS S2102 |   | U17 |    | 1020 | |
2692    |_|          [  U6  ] |--------------|   |-----|    |------| |
2693    |_|                   |--------------|                       |
2694    |_|                   | U9 SP V100I  | [   U15   ]   LM7805  |
2695 3  |_|                   |--------------| |-------------------| |
2696 6  |_|       |----------|                 |  U16 Z8018008PSC  | |
2697 W  |_|       | U4       | [ TAR97 U10-1 ] |-------------------| |
2698 A  |_|       | IGS025   |                    OSC                |
2699 Y  |_|       | S_TARZAN |     [   U13   ] 16.0Mhz [ TAR97 U20 ] |
2700    |_|       |          |                                       |
2701 C  |_|       |----------|                      [ U18 ]  [ U20 ] |
2702 O  |_|                    |-----------|                         |
2703 N  |_|                    | U12       |                   SW1   |
2704 N  |_|                    | IGS 031   |                         |
2705    |_|                    | F00030142 |                   SW2   |
2706    |_|                    |           |        [ U19 ]          |
2707    |_|                    |-----------|                   SW3   |
2708    |_| |----------------|                22.00 Mhz              |
2709    |_| | U2  TBM27C4096 |                                       |
2710    |_| |----------------|   [ R20 Ohm 5W ]        Battery       |
2711    |_| |----------------| |----------------------| (---)  Reset |
2712      | | U3  C0057209   | | U11 IGST2105 CG V110 | (3.6)  SW4   |
2713      | |----------------| |----------------------| (---)    \   |
2714      |----------------------------------------------------------|
2715
2716      U1,U5,U6  ULN2004A               SW4 1pos switch for reset
2717            U2  TBM TB27C4096          Sw1-2-3  8x2 DSW
2718            U4  IGS025 (protection?)
2719            U8  IGS S2102 SP V102 1P1327A6 C000538
2720           U11  IGS T2105 CG V110 1P1379C1 S000938
2721           U12  IGS031 F00030142 (graphic array?)
2722           U17  K668 = Oki M6295 (QFP44). Clock 1.000MHz [8/8]. pin7 = High
2723           U16  Zilog Z8018008PSC Z180 MPU
2724           U18  DN74LS14N
2725           U19  SN74HC132N
2726           U20  HD74LS161AP
2727   U10-1,U20-1  PALCE22V10H (read protected)
2728
2729***************************************************************************/
2730
2731ROM_START( starzan )
2732   ROM_REGION( 0x40000, "maincpu", 0 )
2733   ROM_LOAD( "v100i.u9", 0x00000, 0x40000, CRC(64180bff) SHA1(b08dbe8a17ca33024442ebee41f111c8f98a2109) )
2734
2735   ROM_REGION( 0x100000, "sprites", 0 )
2736   ROM_LOAD( "cg.u2",             0x00000, 0x80000, CRC(884f95f5) SHA1(2e526aa966e90dc696a8b392a5a99e14f03c4bd4) )   // FIXED BITS (xxxxxxx0xxxxxxxx)
2737   ROM_LOAD( "t2105_cg_v110.u11", 0x80000, 0x80000, NO_DUMP )
2738
2739   ROM_REGION( 0x80000, "tilemaps", 0 )
2740   ROM_LOAD( "c0057209.u3", 0x00000, 0x80000, NO_DUMP )
2741
2742   ROM_REGION( 0x80000, "oki", ROMREGION_ERASE )
2743   ROM_LOAD( "s2102_sp_v102.u8", 0x00000, 0x80000, NO_DUMP )
2744
2745   ROM_REGION( 0x2dd * 2, "plds", 0 )
2746   ROM_LOAD( "palce22v10h_tar97_u10-1.u10", 0x000, 0x2dd, NO_DUMP )
2747   ROM_LOAD( "palce22v10h_tar97_u20.u20",   0x2dd, 0x2dd, NO_DUMP )
2748ROM_END
2749
2750
2751GAME( 1996,  iqblocka, iqblock, iqblocka, iqblocka, iqblocka, ROT0, "IGS",              "Shu Zi Le Yuan (V127M)",                      GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2752GAME( 1996,  iqblockf, iqblock, iqblocka, iqblocka, iqblockf, ROT0, "IGS",              "Shu Zi Le Yuan (V113FR)",                     GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2753GAME( 1997,  tjsb,     0,       iqblocka, iqblocka, tjsb,     ROT0, "IGS",              "Mahjong Tian Jiang Shen Bing",                GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2754GAME( 1997,  sdmg2,    0,       sdmg2,    sdmg2,    sdmg2,    ROT0, "IGS",              "Mahjong Super Da Man Guan II (China, V754C)", 0 )
2755GAME( 1997,  mgdh,     0,       mgdh,     mgdh ,    mgdh,     ROT0, "IGS",              "Mahjong Man Guan Da Heng (Taiwan, V123T1)",   0 )
2756GAME( 1998,  mgcs,     0,       mgcs,     mgcs,     mgcs,     ROT0, "IGS",              "Mahjong Man Guan Cai Shen (V103CS)",          GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2757GAME( 1998,  lhzb2,    0,       sdmg2,    sdmg2,    lhzb2,    ROT0, "IGS",              "Mahjong Long Hu Zheng Ba 2 (set 1)",          GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2758GAME( 1998,  lhzb2a,   lhzb2,   sdmg2,    sdmg2,    lhzb2a,   ROT0, "IGS",              "Mahjong Long Hu Zheng Ba 2 (set 2)",          GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2759GAME( 1998,  slqz2,    0,       sdmg2,    sdmg2,    slqz2,    ROT0, "IGS",              "Mahjong Shuang Long Qiang Zhu 2",             GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
2760GAME( 1999?, tarzan,   0,       iqblocka, iqblocka, tarzan,   ROT0, "IGS",              "Tarzan (V109C)",                              GAME_NOT_WORKING )
2761GAME( 1999?, tarzana,  tarzan,  iqblocka, iqblocka, tarzana,  ROT0, "IGS",              "Tarzan (V107)",                               GAME_NOT_WORKING )
2762GAME( 2000?, starzan,  0,       iqblocka, iqblocka, starzan,  ROT0, "IGS / G.F. Gioca", "Super Tarzan (Italy, V100I)",                 GAME_NOT_WORKING )
src/mame/drivers/hyperspt.c
r6428r6429
103103   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w)     /* speech and output control */
104104   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
105105   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
106   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("sn", konami_SN76496_w)     /* This address triggers the SN chip to read the data port. */
106   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("snsnd", konami_SN76496_w)     /* This address triggers the SN chip to read the data port. */
107107ADDRESS_MAP_END
108108
109109static ADDRESS_MAP_START( soundb_map, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
115115   AM_RANGE(0xc000, 0xdfff) AM_WRITE(hyprolyb_adpcm_w)     /* speech and output control */
116116   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
117117   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
118   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("sn", konami_SN76496_w)     /* This address triggers the SN chip to read the data port. */
118   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("snsnd", konami_SN76496_w)     /* This address triggers the SN chip to read the data port. */
119119ADDRESS_MAP_END
120120
121121static INPUT_PORTS_START( hyperspt )
r6428r6429
327327   MDRV_SOUND_ADD("dac", DAC, 0)
328328   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
329329
330   MDRV_SOUND_ADD("sn", SN76496, XTAL_14_31818MHz/8) /* verified on pcb */
330   MDRV_SOUND_ADD("snsnd", SN76496, XTAL_14_31818MHz/8) /* verified on pcb */
331331   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
332332
333333   MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */
src/mame/drivers/hnayayoi.c
r6428r6429
111111
112112static ADDRESS_MAP_START( hnayayoi_io_map, ADDRESS_SPACE_IO, 8 )
113113   ADDRESS_MAP_GLOBAL_MASK(0xff)
114   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym2203_w)
115   AM_RANGE(0x02, 0x03) AM_DEVREAD("ym", ym2203_r)
114   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym2203_w)
115   AM_RANGE(0x02, 0x03) AM_DEVREAD("ymsnd", ym2203_r)
116116   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW3")
117117   AM_RANGE(0x06, 0x06) AM_DEVWRITE("msm", adpcm_data_w)
118118//  AM_RANGE(0x08, 0x08) AM_WRITENOP // CRT Controller
r6428r6429
133133   AM_RANGE(0x0000, 0x77ff) AM_ROM
134134   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
135135   AM_RANGE(0x8000, 0xfeff) AM_ROM
136   AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ym", ym2203_w)
137   AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ym", ym2203_r)
136   AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ymsnd", ym2203_w)
137   AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ymsnd", ym2203_r)
138138   AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW3")
139139   AM_RANGE(0xff06, 0xff06) AM_DEVWRITE("msm", adpcm_data_w)
140140//  AM_RANGE(0xff08, 0xff08) AM_WRITENOP // CRT Controller
r6428r6429
159159
160160static ADDRESS_MAP_START( untoucha_io_map, ADDRESS_SPACE_IO, 8 )
161161   ADDRESS_MAP_GLOBAL_MASK(0xff)
162   AM_RANGE(0x10, 0x10) AM_DEVWRITE("ym", ym2203_control_port_w)
163   AM_RANGE(0x11, 0x11) AM_DEVREAD("ym", ym2203_status_port_r)
162   AM_RANGE(0x10, 0x10) AM_DEVWRITE("ymsnd", ym2203_control_port_w)
163   AM_RANGE(0x11, 0x11) AM_DEVREAD("ymsnd", ym2203_status_port_r)
164164//  AM_RANGE(0x12, 0x12) AM_WRITENOP // CRT Controller
165165   AM_RANGE(0x13, 0x13) AM_DEVWRITE("msm", adpcm_data_w)
166166   AM_RANGE(0x14, 0x14) AM_READ_PORT("COIN")
r6428r6429
173173   AM_RANGE(0x28, 0x28) AM_WRITE(dynax_blitter_rev1_start_w)
174174   AM_RANGE(0x31, 0x31) AM_DEVWRITE("msm", adpcm_vclk_w)
175175   AM_RANGE(0x32, 0x32) AM_DEVWRITE("msm", adpcm_reset_inv_w)
176   AM_RANGE(0x50, 0x50) AM_DEVWRITE("ym", ym2203_write_port_w)
177   AM_RANGE(0x51, 0x51) AM_DEVREAD("ym", ym2203_read_port_r)
176   AM_RANGE(0x50, 0x50) AM_DEVWRITE("ymsnd", ym2203_write_port_w)
177   AM_RANGE(0x51, 0x51) AM_DEVREAD("ymsnd", ym2203_read_port_r)
178178//  AM_RANGE(0x52, 0x52) AM_WRITENOP // CRT Controller
179179ADDRESS_MAP_END
180180
r6428r6429
570570   /* sound hardware */
571571   MDRV_SPEAKER_STANDARD_MONO("mono")
572572
573   MDRV_SOUND_ADD("ym", YM2203, 20000000/8)
573   MDRV_SOUND_ADD("ymsnd", YM2203, 20000000/8)
574574   MDRV_SOUND_CONFIG(ym2203_config)
575575   MDRV_SOUND_ROUTE(0, "mono", 0.25)
576576   MDRV_SOUND_ROUTE(1, "mono", 0.25)
src/mame/drivers/amaticmg.c
r6428r6429
431431//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
432432//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
433433//  AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w)
434//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("ym", ym3812_w)
434//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("ymsnd", ym3812_w)
435435//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_signed_w)
436436//  AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac2", dac_signed_w)
437437
r6428r6429
644644   /* sound hardware */
645645//  MDRV_SPEAKER_STANDARD_MONO("mono")
646646
647//  MDRV_SOUND_ADD("ym", YM3812, SND_CLOCK)
647//  MDRV_SOUND_ADD("ymsnd", YM3812, SND_CLOCK)
648648//  MDRV_SOUND_CONFIG(ym3812_config)
649649//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
650650
src/mame/drivers/shanghai.c
r6428r6429
136136static ADDRESS_MAP_START( shanghai_portmap, ADDRESS_SPACE_IO, 16 )
137137   AM_RANGE(0x00, 0x01) AM_READWRITE(HD63484_status_r, HD63484_address_w)
138138   AM_RANGE(0x02, 0x03) AM_READWRITE(HD63484_data_r, HD63484_data_w)
139   AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("ym", ym2203_r, ym2203_w, 0x00ff)
139   AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
140140   AM_RANGE(0x40, 0x41) AM_READ_PORT("P1")
141141   AM_RANGE(0x44, 0x45) AM_READ_PORT("P2")
142142   AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM")
r6428r6429
150150   AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM")
151151   AM_RANGE(0x30, 0x31) AM_READWRITE(HD63484_status_r, HD63484_address_w)
152152   AM_RANGE(0x32, 0x33) AM_READWRITE(HD63484_data_r, HD63484_data_w)
153   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("ym", ym2203_r, ym2203_w, 0x00ff)
153   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
154154   AM_RANGE(0x50, 0x51) AM_WRITE(shanghai_coin_w)
155155ADDRESS_MAP_END
156156
r6428r6429
445445   /* sound hardware */
446446   MDRV_SPEAKER_STANDARD_MONO("mono")
447447
448   MDRV_SOUND_ADD("ym", YM2203, 16000000/4)
448   MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4)
449449   MDRV_SOUND_CONFIG(sh_ym2203_interface)
450450   MDRV_SOUND_ROUTE(0, "mono", 0.15)
451451   MDRV_SOUND_ROUTE(1, "mono", 0.15)
r6428r6429
477477   /* sound hardware */
478478   MDRV_SPEAKER_STANDARD_MONO("mono")
479479
480   MDRV_SOUND_ADD("ym", YM2203, 16000000/4)
480   MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4)
481481   MDRV_SOUND_CONFIG(sh_ym2203_interface)
482482   MDRV_SOUND_ROUTE(0, "mono", 0.15)
483483   MDRV_SOUND_ROUTE(1, "mono", 0.15)
src/mame/drivers/mole.c
r6428r6429
1//  MOLE ATTACK    YACHIYO  1982
2//  known clones: "Holy Moly"
3//
4//  emulated by Jason Nelson, Phil Stroffolino
5//  known issues:
6//      some dips not mapped
7//      protection isn't fully understood, but game seems to be
8//      ok.
9//
10//  buttons are laid out as follows:
11//  7   8   9
12//  4   5   6
13//  1   2   3
14//
15// Working RAM notes:
16// 0x2e0                    number of credits
17// 0x2F1                    coin up trigger
18// 0x2F2                    round counter
19// 0x2F3                    flag value
20// 0x2FD                    hammer aim for attract mode
21// 0x2E1-E2                 high score
22// 0x2ED-EE                 score
23// 0x301-309                presence and height of mole in each hole, from bottom left
24// 0x30a
25// 0x32E-336                if a hammer is above a mole. (Not the same as collision)
26// 0x337                    dip switch related
27// 0x338                    dip switch related
28// 0x340                    hammer control: manual=0; auto=1
29// 0x34C                    round point 10s.
30// 0x34D                    which bonus round pattern to use for moles.
31// 0x349                    button pressed (0..8 / 0xff)
32// 0x350                    number of players
33// 0x351                    irq-related
34// 0x361
35// 0x362
36// 0x363
37// 0x364
38// 0x366                    mirrors tile bank
39// 0x36B                    controls which player is playing. (1 == player 2);
40// 0x3DC                    affects mole popmessage
41// 0x3E5                    round point/passing point control?
42// 0x3E7                    round point/passing point control?
1/* MOLE ATTACK by Yachiyo Electronics Co.,LTD. 1982
432
3   Known Clones:
4   "Holey Moley", from tai (Thomas Automatics, Inc.)
5
6   emulated by Jason Nelson, Phil Stroffolino
7
8   Known Issues:
9   - some dips not mapped
10   - protection isn't fully understood, but game seems to be ok.
11   - cpu speeds unverified
12
13   Buttons are laid out as follows:
14   7   8   9
15   4   5   6
16   1   2   3
17
18   Working RAM notes:
19   0x2e0                    number of credits
20   0x2F1                    coin up trigger
21   0x2F2                    round counter
22   0x2F3                    flag value
23   0x2FD                    hammer aim for attract mode
24   0x2E1-E2                 high score
25   0x2ED-EE                 score
26   0x301-309                presence and height of mole in each hole, from bottom left
27   0x30a
28   0x32E-336                if a hammer is above a mole. (Not the same as collision)
29   0x337                    dip switch related
30   0x338                    dip switch related
31   0x340                    hammer control: manual=0; auto=1
32   0x34C                    round point 10s.
33   0x34D                    which bonus round pattern to use for moles.
34   0x349                    button pressed (0..8 / 0xff)
35   0x350                    number of players
36   0x351                    irq-related
37   0x361
38   0x362
39   0x363
40   0x364
41   0x366                    mirrors tile bank
42   0x36B                    controls which player is playing. (1 == player 2);
43   0x3DC                    affects mole popmessage
44   0x3E5                    round point/passing point control?
45   0x3E7                    round point/passing point control?
46*/
47
48
4449#include "driver.h"
4550#include "cpu/m6502/m6502.h"
4651#include "sound/ay8910.h"
4752
48
4953WRITE8_HANDLER(mole_videoram_w);
5054WRITE8_HANDLER(mole_tilebank_w);
5155WRITE8_HANDLER(mole_flipscreen_w);
r6428r6429
5761
5862static READ8_HANDLER( mole_protection_r )
5963{
60   /*  Following are all known examples of Mole Attack
64
65    /*  Following are all known examples of Mole Attack
6166    **  code reading from the protection circuitry:
6267    **
6368    **  5b0b:
r6428r6429
9499   case 0xae: return 0x32; /* coinage */
95100   }
96101
97   /*  The above are critical protection reads.
102    /*  The above are critical protection reads.
98103    **  It isn't clear what effect (if any) the
99104    **  remaining reads have; for now we simply
100105    **  return 0x00
101106    */
107
102108   return 0x00;
103109}
104110
r6428r6429
111117   AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
112118   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(mole_videoram_w) AM_BASE(&videoram)
113119   AM_RANGE(0x8400, 0x8400) AM_WRITE(mole_tilebank_w)
114   AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE("ay", ay8910_data_address_w)
120   AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE("aysnd", ay8910_data_address_w)
115121   AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ???
116122   AM_RANGE(0x8c80, 0x8c80) AM_WRITENOP // ???
117123   AM_RANGE(0x8c81, 0x8c81) AM_WRITENOP // ???
r6428r6429
143149   PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
144150
145151   PORT_START("IN0")   /* 0x8d40 */
146   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
147   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
148   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
149   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 )
150   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 )
151   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 )
152   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 )
153   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 )
152   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 1") PORT_CODE(KEYCODE_1_PAD)
153   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 2") PORT_CODE(KEYCODE_2_PAD)
154   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 3") PORT_CODE(KEYCODE_3_PAD)
155   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 4") PORT_CODE(KEYCODE_4_PAD)
156   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 5") PORT_CODE(KEYCODE_5_PAD)
157   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 6") PORT_CODE(KEYCODE_6_PAD)
158   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 7") PORT_CODE(KEYCODE_7_PAD)
159   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 8") PORT_CODE(KEYCODE_8_PAD)
154160
155161   PORT_START("IN1")   /* 0x8d80 */
156   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON9 )
157   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
158   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
159   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL
162   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Pad 9") PORT_CODE(KEYCODE_9_PAD)
163   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 1") PORT_CODE(KEYCODE_Q) PORT_COCKTAIL
164   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 2") PORT_CODE(KEYCODE_W) PORT_COCKTAIL
165   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 3") PORT_CODE(KEYCODE_E) PORT_COCKTAIL
160166   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
161   PORT_DIPSETTING(   0x00, DEF_STR( Upright ) )
162   PORT_DIPSETTING(   0x10, DEF_STR( Cocktail ) )
167   PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
168   PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
163169   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
164170   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
165171   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
166172
167173   PORT_START("IN2")   /* 0x8dc0 */
168   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_COCKTAIL
169   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_COCKTAIL
170   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL
171   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_COCKTAIL
172   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_COCKTAIL
173   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_COCKTAIL
174   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 8") PORT_CODE(KEYCODE_X) PORT_COCKTAIL
175   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 7") PORT_CODE(KEYCODE_Z) PORT_COCKTAIL
176   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 4") PORT_CODE(KEYCODE_A) PORT_COCKTAIL
177   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 9") PORT_CODE(KEYCODE_C) PORT_COCKTAIL
178   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 6") PORT_CODE(KEYCODE_D) PORT_COCKTAIL
179   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Pad 5") PORT_CODE(KEYCODE_S) PORT_COCKTAIL
174180   PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
175181INPUT_PORTS_END
176182
r6428r6429
218224   // sound hardware
219225   MDRV_SPEAKER_STANDARD_MONO("mono")
220226
221   MDRV_SOUND_ADD("ay", AY8910, 2000000)
227   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
222228   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
223229MACHINE_DRIVER_END
224230
src/mame/drivers/missb2.c
r6428r6429
181181   AM_RANGE(0x0000, 0x7fff) AM_ROM
182182   AM_RANGE(0x8000, 0x8fff) AM_RAM
183183   AM_RANGE(0x9000, 0x9000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
184   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3526_r, ym3526_w)
184   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_r, ym3526_w)
185185   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r) AM_WRITENOP // message for main cpu
186186   AM_RANGE(0xb001, 0xb001) AM_READNOP AM_WRITE(bublbobl_sh_nmi_enable_w)   // bit 0: message pending for main cpu, bit 1: message pending for sound cpu
187187   AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
r6428r6429
385385   // sound hardware
386386   MDRV_SPEAKER_STANDARD_MONO("mono")
387387
388   MDRV_SOUND_ADD("ym", YM3526, MAIN_XTAL/8)
388   MDRV_SOUND_ADD("ymsnd", YM3526, MAIN_XTAL/8)
389389   MDRV_SOUND_CONFIG(ym3526_config)
390390   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
391391
src/mame/drivers/bionicc.c
r6428r6429
1/********************************************************************
1/******************************************************************************************
22
3              Bionic Commando
3    Bionic Commando
44
55
6PCB is a 3 board stack:
7    Main CPU board: 86612-A-2
8Graphics ROM board: 86612-B-2
9 Program ROM board: 86612-C-2
6    PCB is a 3 board stack:
7        Main CPU board: 86612-A-2
8    Graphics ROM board: 86612-B-2
9     Program ROM board: 86612-C-2
1010
11  Main CPU: 68000CP10
12 Sound CPU: Z80A
13       MCU: Intel C8751H-88
14Sound Chip: YM2151 & YM3012
15       OSC: 24.000 MHz (on the 86612-B-2 PCB)
16    Custom: CAPCOM DL-010D-103 (on the 86612-B-2 PCB)
11      Main CPU: 68000CP10
12     Sound CPU: Z80A
13           MCU: Intel C8751H-88
14    Sound Chip: YM2151 & YM3012
15           OSC: 24.000 MHz (on the 86612-B-2 PCB)
16        Custom: CAPCOM DL-010D-103 (on the 86612-B-2 PCB)
1717
1818
19Note: Euro rom labels (IE: "TSE") had a blue stripe, while those labeled
20      as USA (TSU) had an red stripe on the sticker.  The intermixing
21      of TSE and TSU roms in the parent set is correct and verified.
22Note: Euro set simply states the game cannot be operated in Japan....
23Note: These issues have been verified on a real PCB and are not emulation bugs:
24      - misplaced sprites ( see beginning of level 1 or 2 for example )
25      - sprite / sprite priority ( see level 2 the reflectors )
26      - sprite / background priority ( see level 1: birds walk through
27        branches of different trees )
28      - see the beginning of level 3: background screwed
29      - gray tiles around the title in Top Secret
19    Note: Euro rom labels (IE: "TSE") had a blue stripe, while those labeled
20          as USA (TSU) had an red stripe on the sticker.  The intermixing
21          of TSE and TSU roms in the parent set is correct and verified.
22    Note: Euro set simply states the game cannot be operated in Japan....
23    Note: These issues have been verified on a real PCB and are not emulation bugs:
24          - misplaced sprites ( see beginning of level 1 or 2 for example )
25          - sprite / sprite priority ( see level 2 the reflectors )
26          - sprite / background priority ( see level 1: birds walk through
27            branches of different trees )
28          - see the beginning of level 3: background screwed
29          - gray tiles around the title in Top Secret
3030
31ToDo:
32- get rid of input port hack
31    ToDo:
32    - get rid of input port hack
3333
34    Controls appear to be mapped at 0xFE4000, alongside dip switches, but there
35    is something strange going on that I can't (yet) figure out.
36    Player controls and coin inputs are supposed to magically appear at
37    0xFFFFFB (coin/start)
38    0xFFFFFD (player 2)
39    0xFFFFFF (player 1)
34        Controls appear to be mapped at 0xFE4000, alongside dip switches, but there
35        is something strange going on that I can't (yet) figure out.
36        Player controls and coin inputs are supposed to magically appear at
37        0xFFFFFB (coin/start)
38        0xFFFFFD (player 2)
39        0xFFFFFF (player 1)
4040
41    This is probably done by the Intel C8751H MCU on the board (whose interal ROM
42    is not yet available).
41        This is probably done by the Intel C8751H MCU on the board (whose interal ROM
42        is not yet available).
4343
44    The MCU also takes care of the commands for the sound CPU, which are stored
45    at FFFFF9.
44        The MCU also takes care of the commands for the sound CPU, which are stored
45        at FFFFF9.
4646
47    IRQ4 seems to be control related.
48    On each interrupt, it reads 0xFE4000 (coin/start), shift the bits around
49    and move the resulting byte into a dword RAM location. The dword RAM location
50    is rotated by 8 bits each time this happens.
51    This is probably done to be pedantic about coin insertions (might be protection
52    related). In fact, currently coin insertions are not consistently recognized.
47        IRQ4 seems to be control related.
48        On each interrupt, it reads 0xFE4000 (coin/start), shift the bits around
49        and move the resulting byte into a dword RAM location. The dword RAM location
50        is rotated by 8 bits each time this happens.
51        This is probably done to be pedantic about coin insertions (might be protection
52        related). In fact, currently coin insertions are not consistently recognized.
5353
5454
55********************************************************************/
55******************************************************************************************/
5656
5757#include "driver.h"
5858#include "cpu/z80/z80.h"
5959#include "cpu/m68000/m68000.h"
6060#include "deprecat.h"
6161#include "sound/2151intf.h"
62#include "bionicc.h"
6263
63#define MASTER_CLOCK      XTAL_24MHz
64#define EXO3_F0_CLK         XTAL_14_31818MHz
64#define MASTER_CLOCK       XTAL_24MHz
65#define EXO3_F0_CLK        XTAL_14_31818MHz
6566
66WRITE16_HANDLER( bionicc_fgvideoram_w );
67WRITE16_HANDLER( bionicc_bgvideoram_w );
68WRITE16_HANDLER( bionicc_txvideoram_w );
69WRITE16_HANDLER( bionicc_paletteram_w );
70WRITE16_HANDLER( bionicc_scroll_w );
71WRITE16_HANDLER( bionicc_gfxctrl_w );
7267
73extern UINT16 *bionicc_bgvideoram;
74extern UINT16 *bionicc_fgvideoram;
75extern UINT16 *bionicc_txvideoram;
68/*************************************
69 *
70 *  Memory handlers
71 *
72 *************************************/
7673
77VIDEO_START( bionicc );
78VIDEO_UPDATE( bionicc );
79VIDEO_EOF( bionicc );
80
81
82
83static UINT16 bionicc_inp[3];
84
8574static WRITE16_HANDLER( hacked_controls_w )
8675{
87logerror("%06x: hacked_controls_w %04x %02x\n",cpu_get_pc(space->cpu),offset,data);
88   COMBINE_DATA(&bionicc_inp[offset]);
76   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
77
78   logerror("%06x: hacked_controls_w %04x %02x\n", cpu_get_pc(space->cpu), offset, data);
79   COMBINE_DATA(&state->inp[offset]);
8980}
9081
9182static READ16_HANDLER( hacked_controls_r )
9283{
93logerror("%06x: hacked_controls_r %04x %04x\n",cpu_get_pc(space->cpu),offset,bionicc_inp[offset]);
94   return bionicc_inp[offset];
84   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
85
86   logerror("%06x: hacked_controls_r %04x %04x\n", cpu_get_pc(space->cpu), offset, state->inp[offset]);
87   return state->inp[offset];
9588}
9689
9790static WRITE16_HANDLER( bionicc_mpu_trigger_w )
9891{
92   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
93
9994   data = input_port_read(space->machine, "SYSTEM") >> 12;
100   bionicc_inp[0] = data ^ 0x0f;
95   state->inp[0] = data ^ 0x0f;
10196
10297   data = input_port_read(space->machine, "P2");
103   bionicc_inp[1] = data ^ 0xff;
98   state->inp[1] = data ^ 0xff;
10499
105100   data = input_port_read(space->machine, "P1");
106   bionicc_inp[2] = data ^ 0xff;
101   state->inp[2] = data ^ 0xff;
107102}
108103
109104
110static UINT16 soundcommand;
111
112105static WRITE16_HANDLER( hacked_soundcommand_w )
113106{
114   COMBINE_DATA(&soundcommand);
115   soundlatch_w(space,0,soundcommand & 0xff);
107   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
108
109   COMBINE_DATA(&state->soundcommand);
110   soundlatch_w(space, 0, state->soundcommand & 0xff);
116111}
117112
118113static READ16_HANDLER( hacked_soundcommand_r )
119114{
120   return soundcommand;
115   bionicc_state *state = (bionicc_state *)space->machine->driver_data;
116
117   return state->soundcommand;
121118}
122119
123120
124121/********************************************************************
125122
126  INTERRUPT
123  Interrupt
127124
128125  The game runs on 2 interrupts.
129126
r6428r6429
143140      cpu_set_input_line(device, 4, HOLD_LINE);
144141}
145142
143/*************************************
144 *
145 *  Address maps
146 *
147 *************************************/
148
146149static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
147150   AM_RANGE(0x000000, 0x03ffff) AM_ROM
148151   AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM   /* RAM? */
r6428r6429
153156   AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("DSW")
154157   AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(bionicc_scroll_w)
155158   AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(bionicc_mpu_trigger_w)   /* ??? not sure, but looks like it */
156   AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_BASE(&bionicc_txvideoram)
157   AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_BASE(&bionicc_fgvideoram)
158   AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_BASE(&bionicc_bgvideoram)
159   AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_BASE(&paletteram16)
159   AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_BASE_MEMBER(bionicc_state, txvideoram)
160   AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_BASE_MEMBER(bionicc_state, fgvideoram)
161   AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_BASE_MEMBER(bionicc_state, bgvideoram)
162   AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_BASE_MEMBER(bionicc_state, paletteram16)
160163   AM_RANGE(0xffc000, 0xfffff7) AM_RAM   /* working RAM */
161164   AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w)      /* hack */
162165   AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w)   /* hack */
r6428r6429
165168
166169static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
167170   AM_RANGE(0x0000, 0x7fff) AM_ROM
168   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
171   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
169172   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
170173   AM_RANGE(0xc000, 0xc7ff) AM_RAM
171174ADDRESS_MAP_END
172175
173176
177/*************************************
178 *
179 *  Input ports
180 *
181 *************************************/
174182
175183static INPUT_PORTS_START( bionicc )
176184   PORT_START("SYSTEM")
r6428r6429
247255INPUT_PORTS_END
248256
249257
258/*************************************
259 *
260 *  Graphics definitions
261 *
262 *************************************/
250263
251/********************************************************************
252
253  GRAPHICS
254
255********************************************************************/
256
257
258264static const gfx_layout spritelayout_bionicc=
259265{
260266   16,16,  /* 16*16 sprites */
r6428r6429
321327GFXDECODE_END
322328
323329
330/*************************************
331 *
332 *  Machine driver
333 *
334 *************************************/
335
336static MACHINE_START( bionicc )
337{
338   bionicc_state *state = (bionicc_state *)machine->driver_data;
339
340   state_save_register_global(machine, state->soundcommand);
341   state_save_register_global_array(machine, state->inp);
342   state_save_register_global_array(machine, state->scroll);
343}
344
345static MACHINE_RESET( bionicc )
346{
347   bionicc_state *state = (bionicc_state *)machine->driver_data;
348
349   state->inp[0] = 0;
350   state->inp[1] = 0;
351   state->inp[2] = 0;
352   state->scroll[0] = 0;
353   state->scroll[1] = 0;
354   state->scroll[2] = 0;
355   state->scroll[3] = 0;
356   state->soundcommand = 0;
357}
358
324359static MACHINE_DRIVER_START( bionicc )
325360
361   /* driver data */
362   MDRV_DRIVER_DATA(bionicc_state)
363
326364   /* basic machine hardware */
327365   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2) /* 12 MHz - verified in schematics */
328366   MDRV_CPU_PROGRAM_MAP(main_map)
r6428r6429
336374     */
337375   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4)
338376
377   MDRV_MACHINE_START(bionicc)
378   MDRV_MACHINE_RESET(bionicc)
379
339380   /* video hardware */
340381   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
341382
r6428r6429
354395
355396   MDRV_SPEAKER_STANDARD_MONO("mono")
356397
357   MDRV_SOUND_ADD("ym", YM2151, 3579545)
398   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
358399   MDRV_SOUND_ROUTE(0, "mono", 0.60)
359400   MDRV_SOUND_ROUTE(1, "mono", 0.60)
360401MACHINE_DRIVER_END
361402
362403
363404
405/*************************************
406 *
407 *  ROM definition(s)
408 *
409 *************************************/
410
364411ROM_START( bionicc ) /* "Not for use in Japan" */
365412   ROM_REGION( 0x40000, "maincpu", 0 )      /* 68000 code */
366413   ROM_LOAD16_BYTE( "tse_02.1a",  0x00000, 0x10000, CRC(e4aeefaa) SHA1(77b6a2d4337bf350239abb50013d030d7c5c8640) ) /* 68000 code */
r6428r6429
538585ROM_END
539586
540587
588/*************************************
589 *
590 *  Game driver(s)
591 *
592 *************************************/
541593
542GAME( 1987, bionicc,  0,       bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (Euro)", 0 )
543GAME( 1987, bionicc1, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", 0 )
544GAME( 1987, bionicc2, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", 0 )
545GAME( 1987, topsecrt, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Top Secret (Japan)", 0 )
594GAME( 1987, bionicc,  0,       bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (Euro)", GAME_SUPPORTS_SAVE )
595GAME( 1987, bionicc1, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", GAME_SUPPORTS_SAVE )
596GAME( 1987, bionicc2, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", GAME_SUPPORTS_SAVE )
597GAME( 1987, topsecrt, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Top Secret (Japan)", GAME_SUPPORTS_SAVE )
src/mame/drivers/citycon.c
r6428r6429
5353
5454static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
5555   AM_RANGE(0x0000, 0x0fff) AM_RAM
56   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay", ay8910_address_data_w)
57//  AM_RANGE(0x4002, 0x4002) AM_DEVREAD("ay", ay8910_r)  /* ?? */
58   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
56   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
57//  AM_RANGE(0x4002, 0x4002) AM_DEVREAD("aysnd", ay8910_r)  /* ?? */
58   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
5959   AM_RANGE(0x8000, 0xffff) AM_ROM
6060ADDRESS_MAP_END
6161
r6428r6429
225225   /* sound hardware */
226226   MDRV_SPEAKER_STANDARD_MONO("mono")
227227
228   MDRV_SOUND_ADD("ay", AY8910, 1250000)
228   MDRV_SOUND_ADD("aysnd", AY8910, 1250000)
229229   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
230230
231   MDRV_SOUND_ADD("ym", YM2203, 1250000)
231   MDRV_SOUND_ADD("ymsnd", YM2203, 1250000)
232232   MDRV_SOUND_CONFIG(ym2203_config)
233233   MDRV_SOUND_ROUTE(0, "mono", 0.40)
234234   MDRV_SOUND_ROUTE(1, "mono", 0.40)
src/mame/drivers/dynadice.c
r6428r6429
9292   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
9393   AM_RANGE(0x01, 0x01) AM_WRITE(soundlatch_clear_w)
9494   AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w)
95   AM_RANGE(0x03, 0x03) AM_DEVWRITE("ay", sound_control_w)
95   AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd", sound_control_w)
9696ADDRESS_MAP_END
9797
9898static INPUT_PORTS_START( dynadice )
r6428r6429
222222
223223   MDRV_SPEAKER_STANDARD_MONO("mono")
224224
225   MDRV_SOUND_ADD("ay", AY8910, 2000000)
225   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
226226   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
227227MACHINE_DRIVER_END
228228
src/mame/drivers/ampoker2.c
r6428r6429
607607   AM_RANGE(0x35, 0x35) AM_WRITE (ampoker2_port35_w)   /* see write handlers */
608608   AM_RANGE(0x36, 0x36) AM_WRITE (ampoker2_port36_w)   /* see write handlers */
609609   AM_RANGE(0x37, 0x37) AM_WRITE(ampoker2_watchdog_reset_w)
610   AM_RANGE(0x38, 0x39) AM_DEVWRITE("ay", ay8910_address_data_w)
611   AM_RANGE(0x3A, 0x3A) AM_DEVREAD("ay", ay8910_r)
610   AM_RANGE(0x38, 0x39) AM_DEVWRITE("aysnd", ay8910_address_data_w)
611   AM_RANGE(0x3A, 0x3A) AM_DEVREAD("aysnd", ay8910_r)
612612ADDRESS_MAP_END
613613
614614/*
r6428r6429
10841084
10851085   /* sound hardware */
10861086   MDRV_SPEAKER_STANDARD_MONO("mono")
1087   MDRV_SOUND_ADD("ay", AY8910,MASTER_CLOCK/4)   /* 1.5 MHz, measured */
1087   MDRV_SOUND_ADD("aysnd", AY8910,MASTER_CLOCK/4)   /* 1.5 MHz, measured */
10881088   MDRV_SOUND_CONFIG(ay8910_config)
10891089   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
10901090MACHINE_DRIVER_END
src/mame/drivers/jangou.c
r6428r6429
360360
361361static ADDRESS_MAP_START( cpu0_io, ADDRESS_SPACE_IO, 8 )
362362   ADDRESS_MAP_GLOBAL_MASK(0xff)
363   AM_RANGE(0x01,0x01) AM_DEVREAD("ay", ay8910_r)
364   AM_RANGE(0x02,0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
363   AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_r)
364   AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
365365   AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag
366366   AM_RANGE(0x10,0x10) AM_WRITE(output_w)
367367   AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
r6428r6429
431431
432432static ADDRESS_MAP_START( cntrygrl_cpu0_io, ADDRESS_SPACE_IO, 8 )
433433   ADDRESS_MAP_GLOBAL_MASK(0xff)
434   AM_RANGE(0x01,0x01) AM_DEVREAD("ay", ay8910_r)
435   AM_RANGE(0x02,0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
434   AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_r)
435   AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
436436   AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag
437437   AM_RANGE(0x10,0x10) AM_WRITE(output_w)
438438   AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
r6428r6429
788788
789789   MDRV_SPEAKER_STANDARD_MONO("mono")
790790
791   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK / 16)
791   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK / 16)
792792   MDRV_SOUND_CONFIG(ay8910_config)
793793   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
794794
src/mame/drivers/namcos21.c
r6428r6429
14081408static ADDRESS_MAP_START( am_sound_winrun, ADDRESS_SPACE_PROGRAM, 8 )
14091409   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(6) /* banked */
14101410   AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */
1411   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
1411   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
14121412   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w)
14131413   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM)
14141414   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */
r6428r6429
15821582   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
15831583   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
15841584
1585   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1585   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
15861586   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
15871587   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
15881588MACHINE_DRIVER_END
r6428r6429
15971597   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
15981598   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
15991599
1600   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1600   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
16011601   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
16021602   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
16031603MACHINE_DRIVER_END
r6428r6429
16521652   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
16531653   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
16541654
1655   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1655   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
16561656   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
16571657   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
16581658MACHINE_DRIVER_END
r6428r6429
17101710   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
17111711   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
17121712
1713   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1713   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
17141714   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
17151715   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
17161716MACHINE_DRIVER_END
src/mame/drivers/gameplan.c
r6428r6429
261261static ADDRESS_MAP_START( gameplan_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
262262   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM  /* 6532 internal RAM */
263263   AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_r, riot6532_w)
264   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_address_w)
265   AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("ay", ay8910_r)
266   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_data_w)
264   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_address_w)
265   AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_r)
266   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_data_w)
267267   AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_ROM
268268ADDRESS_MAP_END
269269
r6428r6429
272272static ADDRESS_MAP_START( leprechn_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
273273   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM  /* 6532 internal RAM */
274274   AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_r, riot6532_w)
275   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_address_w)
276   AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("ay", ay8910_r)
277   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_data_w)
275   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_address_w)
276   AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_r)
277   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_data_w)
278278   AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM
279279ADDRESS_MAP_END
280280
r6428r6429
10281028   /* audio hardware */
10291029   MDRV_SPEAKER_STANDARD_MONO("mono")
10301030
1031   MDRV_SOUND_ADD("ay", AY8910, GAMEPLAN_AY8910_CLOCK)
1031   MDRV_SOUND_ADD("aysnd", AY8910, GAMEPLAN_AY8910_CLOCK)
10321032   MDRV_SOUND_CONFIG(ay8910_config)
10331033   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
10341034
src/mame/drivers/capbowl.c
r6428r6429
276276
277277static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
278278   AM_RANGE(0x0000, 0x07ff) AM_RAM
279   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
279   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
280280   AM_RANGE(0x2000, 0x2000) AM_WRITENOP              /* Not hooked up according to the schematics */
281281   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("dac", dac_w)
282282   AM_RANGE(0x7000, 0x7000) AM_READ(soundlatch_r)
r6428r6429
375375   /* sound hardware */
376376   MDRV_SPEAKER_STANDARD_MONO("mono")
377377
378   MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK/2)
378   MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/2)
379379   MDRV_SOUND_CONFIG(ym2203_config)
380380   MDRV_SOUND_ROUTE(0, "mono", 0.07)
381381   MDRV_SOUND_ROUTE(1, "mono", 0.07)
src/mame/drivers/cbasebal.c
r6428r6429
146146   AM_RANGE(0x02, 0x02) AM_WRITE(eeprom_clock_w)
147147   AM_RANGE(0x03, 0x03) AM_WRITE(eeprom_serial_w)
148148   AM_RANGE(0x05, 0x05) AM_DEVWRITE("oki", okim6295_w)
149   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ym", ym2413_w)
149   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ymsnd", ym2413_w)
150150   AM_RANGE(0x08, 0x09) AM_WRITE(cbasebal_scrollx_w)
151151   AM_RANGE(0x0a, 0x0b) AM_WRITE(cbasebal_scrolly_w)
152152   AM_RANGE(0x10, 0x10) AM_READ_PORT("P1")
r6428r6429
270270   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
271271   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
272272
273   MDRV_SOUND_ADD("ym", YM2413, 3579545)
273   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
274274   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
275275MACHINE_DRIVER_END
276276
src/mame/drivers/st0016.c
r6428r6429
3434   AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
3535   AM_RANGE(0xe000, 0xe7ff) AM_RAM
3636   AM_RANGE(0xe800, 0xe87f) AM_RAM /* common ram */
37   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w) /* sound regs 8 x $20 bytes, see notes */
37   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_snd_r, st0016_snd_w) /* sound regs 8 x $20 bytes, see notes */
3838   AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
3939   AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
4040   AM_RANGE(0xf000, 0xffff) AM_RAM /* work ram */
r6428r6429
456456
457457   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
458458
459   MDRV_SOUND_ADD("st", ST0016, 0)
459   MDRV_SOUND_ADD("stsnd", ST0016, 0)
460460   MDRV_SOUND_CONFIG(st0016_config)
461461   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
462462   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/sbasketb.c
r6428r6429
106106   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w)     /* speech and output controll */
107107   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
108108   AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w)  /* Loads the snd command into the snd latch */
109   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("sn", konami_SN76496_w)      /* This address triggers the SN chip to read the data port. */
109   AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("snsnd", konami_SN76496_w)      /* This address triggers the SN chip to read the data port. */
110110ADDRESS_MAP_END
111111
112112
r6428r6429
214214   MDRV_SOUND_ADD("dac", DAC, 0)
215215   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
216216
217   MDRV_SOUND_ADD("sn", SN76489, XTAL_14_31818MHz / 8)
217   MDRV_SOUND_ADD("snsnd", SN76489, XTAL_14_31818MHz / 8)
218218   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
219219
220220   MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */
src/mame/drivers/skyarmy.c
r6428r6429
160160
161161static ADDRESS_MAP_START( skyarmy_io_map, ADDRESS_SPACE_IO, 8 )
162162   ADDRESS_MAP_GLOBAL_MASK(0xff)
163   AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay", ay8910_address_data_w)
164   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
163   AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_address_data_w)
164   AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r)
165165ADDRESS_MAP_END
166166
167167static INPUT_PORTS_START( skyarmy )
r6428r6429
258258
259259   /* sound hardware */
260260   MDRV_SPEAKER_STANDARD_MONO("mono")
261   MDRV_SOUND_ADD("ay", AY8910, 2500000)
261   MDRV_SOUND_ADD("aysnd", AY8910, 2500000)
262262   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
263263MACHINE_DRIVER_END
264264
src/mame/drivers/suprgolf.c
r6428r6429
285285   AM_RANGE(0x05, 0x05) AM_READ(rom_bank_select_r) AM_WRITE(rom_bank_select_w)
286286   AM_RANGE(0x06, 0x06) AM_READWRITE( suprgolf_vregs_r,suprgolf_vregs_w )
287287//  AM_RANGE(0x07, 0x07)
288   AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
288   AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
289289   AM_RANGE(0x0c, 0x0c) AM_WRITE(adpcm_data_w)
290290 ADDRESS_MAP_END
291291
r6428r6429
473473   /* sound hardware */
474474   MDRV_SPEAKER_STANDARD_MONO("mono")
475475
476   MDRV_SOUND_ADD("ym", YM2203, 3000000) /* guess */
476   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* guess */
477477   MDRV_SOUND_CONFIG(ym2203_config)
478478   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
479479
src/mame/drivers/himesiki.c
r6428r6429
270270};
271271
272272static GFXDECODE_START( himesiki )
273   GFXDECODE_ENTRY( "bg",        0, layout1, 0x000, 16 )
273   GFXDECODE_ENTRY( "bgtiles",   0, layout1, 0x000, 16 )
274274   GFXDECODE_ENTRY( "sprites_1", 0, layout2, 0x200, 16 )
275275   GFXDECODE_ENTRY( "sprites_2", 0, layout3, 0x200, 16 )
276276GFXDECODE_END
r6428r6429
321321   ROM_REGION( 0x010000, "sub", 0 ) /* z80 */
322322   ROM_LOAD( "5.6n",  0x00000,  0x08000, CRC(b1214ac7) SHA1(ee5459c28d9c3c2eb3467261716b1259ec486534) )
323323
324   ROM_REGION( 0x020000, "bg", 0 ) /* bg */
324   ROM_REGION( 0x020000, "bgtiles", 0 ) /* bg */
325325   ROM_LOAD( "3.5f",  0x000000,  0x010000, CRC(73843e60) SHA1(0d8a397d8798e15f3fa7bf7a83e4c2ee44f6fa86) )
326326   ROM_LOAD( "4.5d",  0x010000,  0x010000, CRC(443a3164) SHA1(08aa002214251a870581a01d775f497dd390957c) )
327327
src/mame/drivers/battlex.c
r6428r6429
1/* battlex.c - by David Haywood
1/***************************************************************************
22
3Stephh's notes :
3    Omori Battle Cross
44
5  - I don't know exactly how to call the "Free Play" Dip Switch 8(
6    It's effect is the following :
7      * you need to insert at least one credit and start a game
8      * when the game is over, you can start another games WITHOUT
9        inserting another coins
10    Note that the number of credits is decremented though.
11    Credits are BCD coded on 3 bytes (0x000000-0x999999) at addresses
12    0xa039 (LSB), 0xa03a and 0xa03b (MSB), but only the LSB is displayed.
5    driver by David Haywood
136
14   - Setting the flipscreen dip to ON also hides the copyright message (?)
7    Stephh's notes :
158
16TO DO :
9    - I don't know exactly how to call the "Free Play" Dip Switch 8(
10      It's effect is the following :
11        * you need to insert at least one credit and start a game
12        * when the game is over, you can start another games WITHOUT
13          inserting another coins
14      Note that the number of credits is decremented though.
15      Credits are BCD coded on 3 bytes (0x000000-0x999999) at addresses
16      0xa039 (LSB), 0xa03a and 0xa03b (MSB), but only the LSB is displayed.
1717
18  - missing starfield
18     - Setting the flipscreen dip to ON also hides the copyright message (?)
1919
20  - game speed, its seems to be controlled by the IRQ's, how fast should it
21    be? firing seems frustratingly inconsistant
20    TO DO :
2221
23  - colors match Tim's screen shots, but there's no guarantee RGB are in the
24    correct order.
25*/
22    - missing starfield
2623
27/*
24    - game speed, its seems to be controlled by the IRQ's, how fast should it
25      be? firing seems frustratingly inconsistant
2826
29Battle Cross (c)1982 Omori
27    - colors match Tim's screen shots, but there's no guarantee RGB are in the
28      correct order.
3029
31CPU: Z80A
32Sound: AY-3-8910
33Other: 93419 (in socket marked 93219)
30****************************************************************************
3431
35RAM: 4116(x12), 2114(x2), 2114(x6)
36PROMS: none
32    Battle Cross (c)1982 Omori
3733
38XTAL: 10.0 MHz
34    CPU: Z80A
35    Sound: AY-3-8910
36    Other: 93419 (in socket marked 93219)
3937
40*/
38    RAM: 4116(x12), 2114(x2), 2114(x6)
39    PROMS: none
4140
41    XTAL: 10.0 MHz
4242
43***************************************************************************/
44
45
4346#include "driver.h"
4447#include "cpu/z80/z80.h"
4548#include "deprecat.h"
4649#include "sound/ay8910.h"
50#include "battlex.h"
4751
4852
49extern WRITE8_HANDLER( battlex_palette_w );
50extern WRITE8_HANDLER( battlex_videoram_w );
51extern WRITE8_HANDLER( battlex_scroll_x_lsb_w );
52extern WRITE8_HANDLER( battlex_scroll_x_msb_w );
53extern WRITE8_HANDLER( battlex_flipscreen_w );
53/*************************************
54 *
55 *  Memory maps
56 *
57 *************************************/
5458
55extern PALETTE_INIT( battlex );
56extern VIDEO_START( battlex );
57extern VIDEO_UPDATE( battlex );
58
59
60/*** MEMORY & PORT READ / WRITE **********************************************/
61
6259static ADDRESS_MAP_START( battlex_map, ADDRESS_SPACE_PROGRAM, 8 )
6360   AM_RANGE(0x0000, 0x5fff) AM_ROM
64   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(battlex_videoram_w) AM_BASE(&videoram)
65   AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE(&spriteram)
61   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(battlex_videoram_w) AM_BASE_MEMBER(battlex_state, videoram)
62   AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE_MEMBER(battlex_state, spriteram)
6663   AM_RANGE(0xa000, 0xa3ff) AM_RAM
6764   AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(battlex_palette_w)
6865ADDRESS_MAP_END
r6428r6429
7774   AM_RANGE(0x10, 0x10) AM_WRITE(battlex_flipscreen_w)
7875
7976   /* verify all of these */
80   AM_RANGE(0x22, 0x23) AM_DEVWRITE("ay", ay8910_data_address_w)
77   AM_RANGE(0x22, 0x23) AM_DEVWRITE("aysnd", ay8910_data_address_w)
8178
8279   /* 0x30 looks like scroll, but can't be ? changes (increases or decreases)
8380        depending on the direction your ship is facing on lev 2. at least */
r6428r6429
8784   AM_RANGE(0x33, 0x33) AM_WRITE(battlex_scroll_x_msb_w)
8885ADDRESS_MAP_END
8986
90/*** INPUT PORTS *************************************************************/
87/*************************************
88 *
89 *  Input ports
90 *
91 *************************************/
9192
9293static INPUT_PORTS_START( battlex )
9394   PORT_START("DSW1")   /* IN0 */
r6428r6429
158159   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
159160INPUT_PORTS_END
160161
161/*** GFX DECODE **************************************************************/
162162
163163
164/*************************************
165 *
166 *  Graphics definitions
167 *
168 *************************************/
169
164170static const gfx_layout battlex_charlayout =
165171{
166172   8,8,
r6428r6429
192198   GFXDECODE_ENTRY( "gfx2", 0, battlex_spritelayout, 16*8, 8 )
193199GFXDECODE_END
194200
195/*** MACHINE DRIVERS *********************************************************/
196201
202/*************************************
203 *
204 *  Machine driver
205 *
206 *************************************/
207
208static MACHINE_RESET( battlex )
209{
210   battlex_state *state = (battlex_state *)machine->driver_data;
211
212   state->scroll_lsb = 0;
213   state->scroll_msb = 0;
214}
215
197216static MACHINE_DRIVER_START( battlex )
198217
218   /* driver data */
219   MDRV_DRIVER_DATA(battlex_state)
220
199221   /* basic machine hardware */
200222   MDRV_CPU_ADD("maincpu", Z80,10000000/2 )       /* 10 MHz, divided ? (Z80A CPU) */
201223   MDRV_CPU_PROGRAM_MAP(battlex_map)
202224   MDRV_CPU_IO_MAP(io_map)
203225   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,8) /* controls game speed? */
204226
227   MDRV_MACHINE_RESET(battlex)
228
205229   /* video hardware */
206230   MDRV_SCREEN_ADD("screen", RASTER)
207231   MDRV_SCREEN_REFRESH_RATE(56) /* The video syncs at 15.8k H and 56 V (www.klov.com) */
r6428r6429
218242
219243   /* sound hardware */
220244   MDRV_SPEAKER_STANDARD_MONO("mono")
221   MDRV_SOUND_ADD("ay", AY8910, 10000000/8)
245   MDRV_SOUND_ADD("aysnd", AY8910, 10000000/8)
222246   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
223247MACHINE_DRIVER_END
224248
225249
226/*** ROM LOADING *************************************************************/
250/*************************************
251 *
252 *  ROM definition
253 *
254 *************************************/
227255
228256ROM_START( battlex )
229257   ROM_REGION( 0x10000, "maincpu", 0 )
r6428r6429
250278   ROM_LOAD( "2732.e",    0x0000, 0x1000, CRC(126842b7) SHA1(2da4f64e077232c1dd0853d07d801f9781517850) )
251279ROM_END
252280
281
282/*************************************
283 *
284 *  Driver initialization
285 *
286 *************************************/
287
253288static DRIVER_INIT( battlex )
254289{
255   UINT8 *cold    = memory_region       ( machine, "user1" );
256   UINT8 *mskd    = memory_region       ( machine, "user2" );
257   UINT8 *dest    = memory_region       ( machine, "gfx1" );
290   UINT8 *cold = memory_region(machine, "user1");
291   UINT8 *mskd = memory_region(machine, "user2");
292   UINT8 *dest = memory_region(machine, "gfx1");
258293
259294   int outcount;
260295
r6428r6429
267302         int bitmask = 0x01;
268303         int bitcount;
269304
270         for (bitcount = 0;bitcount < 8 ; bitcount ++)
305         for (bitcount = 0; bitcount < 8 ; bitcount ++)
271306         {
272307            int bit, col;
273            bit = (mskd[outcount*8+linecount] & bitmask) >> bitcount;
308            bit = (mskd[outcount * 8 + linecount] & bitmask) >> bitcount;
274309
275            if (bit) col = (cold[outcount*8+(linecount&~1)+(bitcount/4)] & 0x0f) << 4;
276            else col = (cold[outcount*8+(linecount&~1)+(bitcount/4)] & 0xf0);
310            if (bit)
311               col = (cold[outcount * 8 + (linecount & ~1) + (bitcount / 4)] & 0x0f) << 4;
312            else
313               col = (cold[outcount * 8 + (linecount & ~1) + (bitcount / 4)] & 0xf0);
277314
278            dest[outcount*32 + linecount*4 + bitcount /2] |= (col >> (4*(bitcount & 1)));
315            dest[outcount * 32 + linecount * 4 + bitcount /2] |= (col >> (4 * (bitcount & 1)));
279316            bitmask = bitmask << 1;
280317         }
281318      }
282319   }
283320}
284321
285/*** GAME DRIVERS ************************************************************/
286322
287GAME( 1982, battlex, 0, battlex, battlex, battlex, ROT180, "Omori Electric", "Battle Cross", GAME_IMPERFECT_GRAPHICS )
323/*************************************
324 *
325 *  Game driver
326 *
327 *************************************/
288328
329GAME( 1982, battlex, 0, battlex, battlex, battlex, ROT180, "Omori Electric", "Battle Cross", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
src/mame/drivers/adp.c
r6428r6429
150150#include "machine/microtch.h"
151151#include "machine/68681.h"
152152
153static UINT8 register_active;
154static UINT8 mux_data;
155
156static struct
153typedef struct _adp_state adp_state;
154struct _adp_state
157155{
158   const device_config *duart68681;
159} skattv_devices;
156   /* misc */
157   UINT8 mux_data;
158   UINT8 register_active;
160159
160   /* devices */
161   const device_config *duart;
162};
163
164
161165/***************************************************************************
162166
163167    68681 DUART <-> Microtouch touch screen controller communication
164168
165169***************************************************************************/
166170
167static void duart_irq_handler(const device_config *device, UINT8 vector)
171static void duart_irq_handler( const device_config *device, UINT8 vector )
168172{
169173   cputag_set_input_line_and_vector(device->machine, "maincpu", 4, HOLD_LINE, vector);
170174};
171175
172static void duart_tx(const device_config *device, int channel, UINT8 data)
176static void duart_tx( const device_config *device, int channel, UINT8 data )
173177{
174   if ( channel == 0 )
178   if (channel == 0)
175179   {
176180      microtouch_rx(1, &data);
177181   }
178182};
179183
180static void microtouch_tx(running_machine *machine, UINT8 data)
184static void microtouch_tx( running_machine *machine, UINT8 data )
181185{
182   duart68681_rx_data(skattv_devices.duart68681, 0, data);
186   adp_state *state = (adp_state *)machine->driver_data;
187   duart68681_rx_data(state->duart, 0, data);
183188}
184189
185static UINT8 duart_input(const device_config *device)
190static UINT8 duart_input( const device_config *device )
186191{
187192   return input_port_read(device->machine, "DSW1");
188193}
189194
190195static MACHINE_START( skattv )
191196{
197   adp_state *state = (adp_state *)machine->driver_data;
192198   microtouch_init(machine, microtouch_tx, 0);
199
200   state->duart = devtag_get_device(machine, "duart68681");
201
202   state_save_register_global(machine, state->mux_data);
203   state_save_register_global(machine, state->register_active);
193204}
194205
195206static MACHINE_RESET( skattv )
196207{
197   skattv_devices.duart68681 = devtag_get_device( machine, "duart68681" );
198   mux_data = 0;
208   adp_state *state = (adp_state *)machine->driver_data;
209
210   state->mux_data = 0;
211   state->register_active = 0;
199212}
200213
201214static const duart68681_config skattv_duart68681_config =
r6428r6429
210223{
211224    int i;
212225
213
214    for (i = 0;i < machine->config->total_colors;i++)
226    for (i = 0; i < machine->config->total_colors; i++)
215227    {
216        int bit0,bit1,bit2,r,g,b;
228        int bit0, bit1, bit2, r, g, b;
217229
218230
219231        // red component
r6428r6429
232244        bit2 = (i >> 2) & 0x01;
233245        b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
234246
235        palette_set_color(machine,i,MAKE_RGB(r,g,b));
247        palette_set_color(machine, i, MAKE_RGB(r,g,b));
236248    }
237249}
238250
r6428r6429
250262
251263static VIDEO_UPDATE(adp)
252264{
253   int x,y,b;
265   int x, y, b;
254266
255267   b = ((HD63484_reg[0xcc/2] & 0x000f) << 16) + HD63484_reg[0xce/2];
256268#if 0
r6428r6429
321333   return 0;
322334}
323335
324static READ16_HANDLER(test_r)
336static READ16_HANDLER( test_r )
325337{
338   adp_state *state = (adp_state *)space->machine->driver_data;
326339   int value = 0xffff;
327340
328   switch(mux_data)
341   switch (state->mux_data)
329342   {
330343      case 0x00: value = input_port_read(space->machine, "x0"); break;
331      case 0x01: value = input_port_read(space->machine, "x1"); break;
344      case 0x01: value = input_port_read(space->machine, "x1snd"); break;
332345      case 0x02: value = input_port_read(space->machine, "x2"); break;
333346      case 0x03: value = input_port_read(space->machine, "1P_UP"); break;
334347      case 0x04: value = input_port_read(space->machine, "1P_B1"); break;
r6428r6429
344357      case 0x0e: value = input_port_read(space->machine, "x14"); break;
345358      case 0x0f: value = input_port_read(space->machine, "x15"); break;
346359   }
347   mux_data++;
348   mux_data&=0xf;
349360
361   state->mux_data++;
362   state->mux_data &= 0xf;
363
350364   return value;
351365}
352366
353367/*???*/
354368static WRITE16_HANDLER(wh2_w)
355369{
356   register_active = data;
370   adp_state *state = (adp_state *)space->machine->driver_data;
371   state->register_active = data;
357372}
358373
359374static READ16_HANDLER(t2_r)
360375{
361 static UINT16 vblank = 0,hblank = 0;
376   static UINT16 vblank = 0, hblank = 0;
362377
363 vblank ^=0x40;
364 hblank ^=0x20;
378   vblank ^=0x40;
379   hblank ^=0x20;
365380
366 return mame_rand(space->machine) & 0x00f0;
381   return mame_rand(space->machine) & 0x00f0;
367382
368383// FIXME: this code is never executed
369384// popmessage("%08x",cpu_get_pc(space->cpu));
370385// return 0x0000;
371 return 0xff9f | vblank | hblank;
386   return 0xff9f | vblank | hblank;
372387}
373388
374389static ADDRESS_MAP_START( skattv_mem, ADDRESS_SPACE_PROGRAM, 16 )
r6428r6429
377392   AM_RANGE(0x800082, 0x800083) AM_READWRITE(HD63484_data_r, HD63484_data_w)
378393   AM_RANGE(0x800100, 0x800101) AM_READWRITE(test_r,wh2_w) //related to input
379394   AM_RANGE(0x800140, 0x800141) AM_READ(t2_r)
380   AM_RANGE(0x800140, 0x800143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff) //18b too
381   AM_RANGE(0x800142, 0x800143) AM_DEVREAD8("ay", ay8910_r, 0x00ff) //18b too
395   AM_RANGE(0x800140, 0x800143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff) //18b too
396   AM_RANGE(0x800142, 0x800143) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff) //18b too
382397   AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8( "duart68681", duart68681_r, duart68681_w, 0xff )
383398//  AM_RANGE(0xffd246, 0xffd247) AM_READ(handler3_r)
384399//  AM_RANGE(0xffd248, 0xffd249) AM_READ(handler3_r)
r6428r6429
410425   AM_RANGE(0x800082, 0x800083) AM_READWRITE(HD63484_data_r, HD63484_data_w)
411426//  AM_RANGE(0x800100, 0x8001ff) AM_READ(test_r) //18b too
412427   AM_RANGE(0x800140, 0x800141) AM_READ(t2_r)
413   AM_RANGE(0x800140, 0x800143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff) //18b too
414   AM_RANGE(0x800142, 0x800143) AM_DEVREAD8("ay", ay8910_r, 0x00ff) //18b too
428   AM_RANGE(0x800140, 0x800143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff) //18b too
429   AM_RANGE(0x800142, 0x800143) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff) //18b too
415430   AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8( "duart68681", duart68681_r, duart68681_w, 0xff )
416431   AM_RANGE(0xfc0000, 0xffffff) AM_RAM
417432ADDRESS_MAP_END
r6428r6429
440455   PORT_DIPSETTING(     0x0000, DEF_STR( On ) )
441456   PORT_BIT( 0xfffb, IP_ACTIVE_LOW,  IPT_UNUSED  )
442457
443   PORT_START("x1")
458   PORT_START("x1snd")
444459   PORT_DIPNAME( 0x0004,0x0004, "SW1" ) //another up button
445460   PORT_DIPSETTING(     0x0004, DEF_STR( Off ) )
446461   PORT_DIPSETTING(     0x0000, DEF_STR( On ) )
r6428r6429
514529}
515530*/
516531static MACHINE_DRIVER_START( quickjac )
532
533   /* driver data */
534   MDRV_DRIVER_DATA(adp_state)
535
517536   MDRV_CPU_ADD("maincpu", M68000, 8000000)
518537   MDRV_CPU_PROGRAM_MAP(quickjac_mem)
519538//  MDRV_CPU_VBLANK_INT("screen", adp_int)
r6428r6429
536555   MDRV_VIDEO_UPDATE(adp)
537556
538557   MDRV_SPEAKER_STANDARD_MONO("mono")
539   MDRV_SOUND_ADD("ay", AY8910, 3686400/2)
558   MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2)
540559   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
541560
542561MACHINE_DRIVER_END
543562
544563static MACHINE_DRIVER_START( skattv )
564
565   /* driver data */
566   MDRV_DRIVER_DATA(adp_state)
567
545568   MDRV_CPU_ADD("maincpu", M68000, 8000000)
546569   MDRV_CPU_PROGRAM_MAP(skattv_mem)
547570//  MDRV_CPU_VBLANK_INT("screen", adp_int)
r6428r6429
564587   MDRV_VIDEO_UPDATE(adp)
565588
566589   MDRV_SPEAKER_STANDARD_MONO("mono")
567   MDRV_SOUND_ADD("ay", AY8910, 3686400/2)
590   MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2)
568591   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
569592
570593MACHINE_DRIVER_END
571594
572595static MACHINE_DRIVER_START( backgamn )
596
597   /* driver data */
598   MDRV_DRIVER_DATA(adp_state)
599
573600   MDRV_CPU_ADD("maincpu", M68000, 8000000)
574601   MDRV_CPU_PROGRAM_MAP(backgamn_mem)
575602
r6428r6429
586613   MDRV_VIDEO_UPDATE(adp)
587614
588615   MDRV_SPEAKER_STANDARD_MONO("mono")
589   MDRV_SOUND_ADD("ay", AY8910, 3686400/2)
616   MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2)
590617   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
591618
592619MACHINE_DRIVER_END
r6428r6429
662689   ROM_LOAD16_BYTE( "flv_f1_ii.bin", 0x00001, 0x80000, CRC(2aa904e6) SHA1(864530b136dd488d619cc95f48e7dce8d93d88e0) )
663690ROM_END
664691
665GAME( 1990, backgamn,        0, backgamn,    adp,    0, ROT0,  "ADP", "Backgammon", GAME_NOT_WORKING )
666GAME( 1993, quickjac,        0, quickjac,    skattv,    0, ROT0,  "ADP", "Quick Jack", GAME_NOT_WORKING )
667GAME( 1994, skattv,          0, skattv,      skattv,    0, ROT0,  "ADP", "Skat TV", GAME_NOT_WORKING )
668GAME( 1995, skattva,    skattv, skattv,      skattv,    0, ROT0,  "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING )
669GAME( 1997, fashiong,        0, skattv,      skattv,    0, ROT0,  "ADP", "Fashion Gambler", GAME_NOT_WORKING )
670GAME( 1999, funlddlx,        0, funland,     skattv,    0, ROT0,  "Stella", "Funny Land de Luxe", GAME_NOT_WORKING )
671
692GAME( 1990, backgamn,        0, backgamn,    adp,       0, ROT0,  "ADP",     "Backgammon", GAME_NOT_WORKING )
693GAME( 1993, quickjac,        0, quickjac,    skattv,    0, ROT0,  "ADP",     "Quick Jack", GAME_NOT_WORKING )
694GAME( 1994, skattv,          0, skattv,      skattv,    0, ROT0,  "ADP",     "Skat TV", GAME_NOT_WORKING )
695GAME( 1995, skattva,    skattv, skattv,      skattv,    0, ROT0,  "ADP",     "Skat TV (version TS3)", GAME_NOT_WORKING )
696GAME( 1997, fashiong,        0, skattv,      skattv,    0, ROT0,  "ADP",     "Fashion Gambler", GAME_NOT_WORKING )
697GAME( 1999, funlddlx,        0, funland,     skattv,    0, ROT0,  "Stella",  "Funny Land de Luxe", GAME_NOT_WORKING )
src/mame/drivers/konamigq.c
r6428r6429
4949#include "cpu/m68000/m68000.h"
5050#include "cpu/mips/psx.h"
5151#include "includes/psx.h"
52#include "machine/konamigx.h"
52#include "konamigx.h"
5353#include "machine/eeprom.h"
5454#include "machine/am53cf96.h"
5555#include "harddisk.h"
r6428r6429
330330
331331static void scsi_irq(running_machine *machine)
332332{
333   psx_irq_set(machine, PSX_IRQ_EXTCD);
333   psx_irq_set(machine, 0x400);
334334}
335335
336336static const SCSIConfigTable dev_table =
src/mame/drivers/pcxt.c
r6428r6429
548548DMA8237 Controller
549549******************/
550550
551static int dma_channel;
551552static UINT8 dma_offset[2][4];
552553static UINT8 at_pages[0x10];
553554
554static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
555static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
555556{
556557   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
557558
558559   /* Assert HLDA */
559   dma8237_set_hlda( device, state );
560   i8237_hlda_w( device, state );
560561}
561562
562563
563static DMA8237_MEM_READ( pc_dma_read_byte )
564static READ8_HANDLER( pc_dma_read_byte )
564565{
565   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
566   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
566   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
567567      & 0xFF0000;
568568
569569   return memory_read_byte(space, page_offset + offset);
570570}
571571
572572
573static DMA8237_MEM_WRITE( pc_dma_write_byte )
573static WRITE8_HANDLER( pc_dma_write_byte )
574574{
575   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
576   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
575   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
577576      & 0xFF0000;
578577
579578   memory_write_byte(space, page_offset + offset, data);
r6428r6429
621620   }
622621}
623622
624
625static const struct dma8237_interface dma8237_1_config =
623static void set_dma_channel(const device_config *device, int channel, int state)
626624{
627   XTAL_14_31818MHz/3,
625   if (!state) dma_channel = channel;
626}
628627
629   pc_dma_hrq_changed,
630   pc_dma_read_byte,
631   pc_dma_write_byte,
628static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
629static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
630static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
631static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
632632
633   { NULL, NULL, NULL, NULL },
634   { NULL, NULL, NULL, NULL },
635   NULL
633static I8237_INTERFACE( dma8237_1_config )
634{
635   DEVCB_LINE(pc_dma_hrq_changed),
636   DEVCB_NULL,
637   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
638   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
639   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
640   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
641   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
636642};
637643
638644/******************
r6428r6429
677683
678684static ADDRESS_MAP_START( filetto_io, ADDRESS_SPACE_IO, 8 )
679685   ADDRESS_MAP_GLOBAL_MASK(0x3ff)
680   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", dma8237_r, dma8237_w ) //8237 DMA Controller
686   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", i8237_r, i8237_w ) //8237 DMA Controller
681687   AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
682688   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_r, pit8253_w)    //8253 PIT
683689   AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)  //PPI 8255
r6428r6429
706712
707713static ADDRESS_MAP_START( tetriskr_io, ADDRESS_SPACE_IO, 8 )
708714   ADDRESS_MAP_GLOBAL_MASK(0x3ff)
709   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", dma8237_r, dma8237_w ) //8237 DMA Controller
715   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", i8237_r, i8237_w ) //8237 DMA Controller
710716   AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
711717   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_r, pit8253_w)    //8253 PIT
712718   AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)  //PPI 8255
r6428r6429
927933   MDRV_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] )
928934   MDRV_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] )
929935
930   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
936   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
931937
932938   MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
933939
r6428r6429
972978   MDRV_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] )
973979   MDRV_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] )
974980
975   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
981   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
976982
977983   MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
978984
src/mame/drivers/mcatadv.c
r6428r6429
219219   AM_RANGE(0x0000, 0x3fff) AM_ROM                  // ROM
220220   AM_RANGE(0x4000, 0xbfff) AM_ROMBANK(1)            // ROM
221221   AM_RANGE(0xc000, 0xdfff) AM_RAM                  // RAM
222   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
222   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r,ym2610_w)
223223   AM_RANGE(0xf000, 0xf000) AM_WRITE(mcatadv_sound_bw_w)
224224ADDRESS_MAP_END
225225
r6428r6429
237237
238238static ADDRESS_MAP_START( nost_sound_io_map, ADDRESS_SPACE_IO, 8 )
239239   ADDRESS_MAP_GLOBAL_MASK(0xff)
240   AM_RANGE(0x00, 0x03) AM_DEVWRITE("ym", ym2610_w)
241   AM_RANGE(0x04, 0x07) AM_DEVREAD("ym", ym2610_r)
240   AM_RANGE(0x00, 0x03) AM_DEVWRITE("ymsnd", ym2610_w)
241   AM_RANGE(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_r)
242242   AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w)
243243   AM_RANGE(0x80, 0x80) AM_READWRITE(soundlatch_r, soundlatch2_w)
244244ADDRESS_MAP_END
r6428r6429
459459   /* sound hardware */
460460   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
461461
462   MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2) /* verified on pcb */
462   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */
463463   MDRV_SOUND_CONFIG(mcatadv_ym2610_interface)
464464   MDRV_SOUND_ROUTE(0, "lspeaker",  0.32)
465465   MDRV_SOUND_ROUTE(0, "rspeaker", 0.32)
r6428r6429
509509   ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) )
510510   ROM_LOAD( "mca-u100",    0x200000, 0x080000, CRC(b273f1b0) SHA1(39318fe2aaf2792b85426ec6791b3360ac964de3) )
511511
512   ROM_REGION( 0x80000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
512   ROM_REGION( 0x80000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
513513   ROM_LOAD( "mca-u53.bin", 0x00000, 0x80000, CRC(64c76e05) SHA1(379cef5e0cba78d0e886c9cede41985850a3afb7) )
514514ROM_END
515515
r6428r6429
538538   ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) )
539539   ROM_LOAD( "u100.bin",    0x200000, 0x080000, CRC(e2c311da) SHA1(cc3217484524de94704869eaa9ce1b90393039d8) )
540540
541   ROM_REGION( 0x80000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
541   ROM_REGION( 0x80000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
542542   ROM_LOAD( "mca-u53.bin", 0x00000, 0x80000, CRC(64c76e05) SHA1(379cef5e0cba78d0e886c9cede41985850a3afb7) )
543543ROM_END
544544
r6428r6429
567567   ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) )
568568   ROM_LOAD( "mca-u100",    0x200000, 0x080000, CRC(b273f1b0) SHA1(39318fe2aaf2792b85426ec6791b3360ac964de3) )
569569
570   ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
570   ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
571571   ROM_LOAD( "u53.bin",     0x00000, 0x100000, CRC(99f2a624) SHA1(799e8e40e8bdcc8fa4cd763a366cc32473038a49) )
572572
573573   ROM_REGION( 0x0400, "plds", 0 )
r6428r6429
600600   ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) )
601601   ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) )
602602
603   ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
603   ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
604604   ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) )
605605ROM_END
606606
r6428r6429
629629   ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) )
630630   ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) )
631631
632   ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
632   ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
633633   ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) )
634634ROM_END
635635
r6428r6429
658658   ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) )
659659   ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) )
660660
661   ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */
661   ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */
662662   ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) )
663663ROM_END
664664
src/mame/drivers/toaplan2.c
r6428r6429
265265
266266
267267/**************** Machine stuff ******************/
268#define USE_HD64x180   0      /* Define if CPU support is available */
269#define USE_V25      0
268//#define USE_HD64x180          /* Define if CPU support is available */
269//#define USE_ENCRYPTED_V25S    /* Define to enable V25 even on games where it is encrypted */
270270
271271#define CPU_2_NONE      0x00
272272#define CPU_2_Z80      0x5a
r6428r6429
277277static UINT8 *toaplan2_shared_ram;
278278static UINT8 *raizing_shared_ram;      /* Shared ram used in Shippumd and Mahoudai */
279279static UINT16 *toaplan2_shared_ram16;   /* Really 8bit RAM connected to Z180 */
280#ifndef USE_ENCRYPTED_V25S
280281static UINT16 *V25_shared_ram;         /* Really 8bit RAM connected to Z180 */
282#endif
281283static UINT16 *fixeight_sec_cpu_mem;
282284
283285/********** Status related values **********/
r6428r6429
292294static int bbakraid_unlimited_ver;
293295
294296static MACHINE_RESET(batsugun);
295#if USE_V25
296297static READ16_HANDLER( batsugun_share_r );
298static WRITE16_HANDLER( batsugun_share_w );
299#ifdef USE_ENCRYPTED_V25S
297300static READ16_HANDLER( batsugun_share2_r );
298static WRITE16_HANDLER( batsugun_share_w );
299301static WRITE16_HANDLER( batsugun_share2_w );
300302#endif
301303
r6428r6429
400402
401403static DRIVER_INIT( fixeight )
402404{
403   #if USE_V25
404405   sub_cpu = cputag_get_cpu(machine, "audiocpu");
405   #else
406   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2) );
407   memory_set_bankptr(machine, 2, fixeight_sec_cpu_mem);
408   #endif
409406
407   if (fixeight_sec_cpu_mem)
408   {
409      memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2) );
410      memory_set_bankptr(machine, 2, fixeight_sec_cpu_mem);
411   }
412
410413   toaplan2_sub_cpu = CPU_2_V25;
411414   register_state_save(machine);
412415}
r6428r6429
628631   {
629632      toaplan2_coin_w(space, offset, data & 0x0f);
630633
631      #if USE_V25
634      #ifdef USE_ENCRYPTED_V25S
632635      /* only the ram-based V25 based games access the following bits */
633636      //cpu_set_input_line(sub_cpu, INPUT_LINE_RESET, (data & 0x0020) ? CLEAR_LINE : ASSERT_LINE );
634637      cpu_set_input_line(sub_cpu, INPUT_LINE_HALT,  (data & 0x0010) ? CLEAR_LINE : ASSERT_LINE);
r6428r6429
641644   }
642645}
643646
647static WRITE16_HANDLER( toaplan2_v25_batsugun_coin_word_w )
648{
649   // logerror("toaplan2_v25_coin_word_w %04x\n",data);
644650
651   if (ACCESSING_BITS_0_7)
652   {
653      toaplan2_coin_w(space, offset, data & 0x0f);
654      /* only the ram-based V25 based games access the following bits */
655      //cpu_set_input_line(sub_cpu, INPUT_LINE_RESET, (data & 0x0020) ? CLEAR_LINE : ASSERT_LINE );
656      cpu_set_input_line(sub_cpu, INPUT_LINE_HALT,  (data & 0x0010) ? CLEAR_LINE : ASSERT_LINE);
657   }
658   if (ACCESSING_BITS_8_15 && (data & 0xff00) )
659   {
660      logerror("Writing unknown upper MSB command (%04x) to coin control\n",data & 0xff00);
661   }
662}
663
645664static WRITE16_HANDLER( shippumd_coin_word_w )
646665{
647666   if (ACCESSING_BITS_0_7)
r6428r6429
809828   }
810829}
811830
831#ifndef USE_ENCRYPTED_V25S
812832static READ16_HANDLER( shared_ram_r )
813833{
814834/*  Other games using a NEC V25+ secondary CPU, have shared memory between
r6428r6429
869889   logerror("PC:%06x Writing command (%04x) to the NEC V25+ secondary CPU port\n",cpu_get_previouspc(space->cpu),mcu_data);
870890}
871891
872static READ16_HANDLER( kbash_snd_cpu_r )
873{
874/*  Knuckle Bash's  68000 reads secondary CPU status via an I/O port.
875    If a value of 2 is read, then secondary CPU is busy.
876    Secondary CPU must report 0xff when no longer busy, to signify that it
877    has passed POST.
878*/
879   return 0xff;
880}
881892
882static WRITE16_HANDLER( kbash_snd_cpu_w )
883{
884   if (ACCESSING_BITS_0_7)
885   {
886      kbash_okisnd_w(devtag_get_device(space->machine, "oki"), data);
887   }
888   logerror("PC:%06x Writing Sound command (%04x) to the NEC V25+ secondary CPU\n",cpu_get_previouspc(space->cpu),data);
889}
890
891893static READ16_HANDLER( fixeight_sec_cpu_r )
892894{
893895/*** Status port includes NEC V25+ CPU POST codes. ************
r6428r6429
934936         /* game keeping service mode. It writes/reads the settings to/from */
935937         /* these shared RAM locations. The secondary CPU reads/writes them */
936938         /* from/to nvram to store the settings (a 93C45 EEPROM) */
937         memory_install_readwrite16_handler(space, 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2));
938         memory_set_bankptr(space->machine, 2, fixeight_sec_cpu_mem);
939         //memory_install_readwrite16_handler(space, 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2));
940         //memory_set_bankptr(space->machine, 2, fixeight_sec_cpu_mem);
939941         memory_install_read_port_handler(space, 0x28f004, 0x28f005, 0, 0, "DSWA");   /* Dip Switch A - Wrong !!! */
940942         memory_install_read_port_handler(space, 0x28f006, 0x28f007, 0, 0, "DSWB");   /* Dip Switch B - Wrong !!! */
941943         memory_install_read_port_handler(space, 0x28f008, 0x28f009, 0, 0, "JMPR");   /* Territory Jumper block - Wrong !!! */
r6428r6429
981983      V25_shared_ram[offset] = data & 0xff;
982984   }
983985}
986#endif
984987
988static READ16_HANDLER( kbash_snd_cpu_r )
989{
990/*  Knuckle Bash's  68000 reads secondary CPU status via an I/O port.
991    If a value of 2 is read, then secondary CPU is busy.
992    Secondary CPU must report 0xff when no longer busy, to signify that it
993    has passed POST.
994*/
995   return 0xff;
996}
997
998static WRITE16_HANDLER( kbash_snd_cpu_w )
999{
1000   if (ACCESSING_BITS_0_7)
1001   {
1002      kbash_okisnd_w(devtag_get_device(space->machine, "oki"), data);
1003   }
1004   logerror("PC:%06x Writing Sound command (%04x) to the NEC V25+ secondary CPU\n",cpu_get_previouspc(space->cpu),data);
1005}
1006
1007
9851008static WRITE16_DEVICE_HANDLER( oki_bankswitch_w )
9861009{
9871010   if (ACCESSING_BITS_0_7)
r6428r6429
13631386   AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
13641387   AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
13651388   AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w)
1366#if USE_V25
1389#ifdef USE_ENCRYPTED_V25S
13671390//  AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)   /* $21f000 status port */
13681391//  AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram)    /* 16-bit on 68000 side, 8-bit on V25+ side */
13691392   AM_RANGE(0x210000, 0x21efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
r6428r6429
14581481   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2")
14591482   AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS")
14601483   AM_RANGE(0x700010, 0x700011) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
1461   AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
1484   AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
14621485   AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w)      /* Coin count/lock */
14631486ADDRESS_MAP_END
14641487
r6428r6429
15031526   AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2")
15041527ADDRESS_MAP_END
15051528
1506#if USE_V25
1529#ifdef USE_ENCRYPTED_V25S
15071530// guess, could be wrong
15081531WRITE16_HANDLER( fixeight_subcpu_ctrl )
15091532{
r6428r6429
15211544   AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3")
15221545   AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS")
15231546   AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w)   /* Coin count/lock */
1524#if USE_V25
1547#ifdef USE_ENCRYPTED_V25S
15251548//  AM_RANGE(0x28e000, 0x28fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)   /* $28f000 status port */
15261549//  AM_RANGE(0x28fc00, 0x28ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram)    /* 16-bit on 68000 side, 8-bit on V25+ side */
15271550   AM_RANGE(0x280000, 0x28efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
r6428r6429
15831606   AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
15841607   AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
15851608   AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w)   /* Coin count/lock */
1586#if USE_V25
1609#ifdef USE_ENCRYPTED_V25S
15871610//  AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)   /* $21f000 status port */
15881611//  AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram)    /* 16-bit on 68000 side, 8-bit on V25+ side */
15891612   AM_RANGE(0x210000, 0x21efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
r6428r6429
16051628ADDRESS_MAP_END
16061629
16071630
1608#if USE_V25
16091631static UINT8* batsugun_share;
1632#ifdef USE_ENCRYPTED_V25S
16101633static UINT8* batsugun_share2;
1634#endif
16111635
16121636static READ16_HANDLER( batsugun_share_r )
16131637{
r6428r6429
16291653   }
16301654}
16311655
1632
1656#ifdef USE_ENCRYPTED_V25S
1657/* To be removed... */
16331658static READ16_HANDLER( batsugun_share2_r )
16341659{
16351660   return batsugun_share2[offset] | batsugun_share2[offset]<<8;
r6428r6429
16571682   AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
16581683   AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
16591684   AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
1660   AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w)   /* Coin count/lock + v25 reset/hold control lines? */
1661#if USE_V25
1662//  AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)   /* $21f000 status port */
1663//  AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram)    /* 16-bit on 68000 side, 8-bit on V25+ side */
1664   AM_RANGE(0x210000, 0x21efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
1665   AM_RANGE(0x21f000, 0x21ffff) AM_READWRITE( batsugun_share_r, batsugun_share_w )
1666#else
1667   AM_RANGE(0x210000, 0x21bbff) AM_RAM
1668   AM_RANGE(0x21e000, 0x21efff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)
1685   AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_batsugun_coin_word_w)   /* Coin count/lock + v25 reset/hold control lines? */
1686
1687   /* override the shared region with some hacks because we're not emulating the V25+ well enough to provide these */
1688#ifndef USE_ENCRYPTED_V25S
16691689   AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, batsugun_snd_cpu_w)   /* V25+ Command/Status port */
16701690   AM_RANGE(0x21f004, 0x21f005) AM_READ_PORT("DSWA")
16711691   AM_RANGE(0x21f006, 0x21f007) AM_READ_PORT("DSWB")
16721692   AM_RANGE(0x21f008, 0x21f009) AM_READ_PORT("JMPR")
1673   AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram)   /* 16-bit on 68000 side, 8-bit on V25+ side */
16741693#endif
1694   /* this ram is shared with the V25+, once it's emulated properly only these should be needed */
1695   AM_RANGE(0x210000, 0x21ffff) AM_READWRITE( batsugun_share_r, batsugun_share_w )
1696
16751697   /***** The following in 0x30000x are for video controller 1 ******/
16761698   AM_RANGE(0x300000, 0x300001) AM_WRITE(toaplan2_0_voffs_w)   /* VideoRAM selector/offset */
16771699   AM_RANGE(0x300004, 0x300007) AM_READWRITE(toaplan2_0_videoram16_r, toaplan2_0_videoram16_w)   /* Tile/Sprite VideoRAM */
r6428r6429
16951717   AM_RANGE(0x300008, 0x300009) AM_WRITE(toaplan2_0_scroll_reg_select_w)
16961718   AM_RANGE(0x30000c, 0x30000d) AM_READWRITE(toaplan2_inputport_0_word_r, toaplan2_0_scroll_reg_data_w)   /* VBlank */
16971719   AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
1698   AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
1720   AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
16991721   AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
17001722   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR")
17011723   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
r6428r6429
18551877static ADDRESS_MAP_START( sound_z80_mem, ADDRESS_SPACE_PROGRAM, 8 )
18561878   AM_RANGE(0x0000, 0x7fff) AM_ROM
18571879   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&toaplan2_shared_ram)
1858   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
1880   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
18591881ADDRESS_MAP_END
18601882
18611883
18621884static ADDRESS_MAP_START( raizing_sound_z80_mem, ADDRESS_SPACE_PROGRAM, 8 )
18631885   AM_RANGE(0x0000, 0xbfff) AM_ROM
18641886   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&raizing_shared_ram)
1865   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1887   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
18661888   AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
18671889   AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w)
18681890ADDRESS_MAP_END
r6428r6429
18721894   AM_RANGE(0x0000, 0x7fff) AM_ROM
18731895   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
18741896   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&raizing_shared_ram)
1875   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1897   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
18761898   AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
18771899   AM_RANGE(0xe006, 0xe006) AM_WRITE(raizing_okim6295_bankselect_0)
18781900   AM_RANGE(0xe008, 0xe008) AM_WRITE(raizing_okim6295_bankselect_1)
r6428r6429
18981920   AM_RANGE(0x46, 0x46) AM_WRITE(raizing_clear_nmi_w)
18991921   AM_RANGE(0x48, 0x48) AM_READ(soundlatch_r)
19001922   AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_r)
1901   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1923   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
19021924   AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
19031925   AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
19041926   AM_RANGE(0x88, 0x88) AM_WRITE(batrider_bankswitch_w)
r6428r6429
19301952
19311953
19321954
1933#if USE_HD64x180
1955#ifdef USE_HD64x180
19341956static ADDRESS_MAP_START( hd647180_mem, ADDRESS_SPACE_PROGRAM, 8 )
19351957   AM_RANGE(0x0000, 0x7fff) AM_ROM
19361958   AM_RANGE(0xfe00, 0xffff) AM_RAM         /* Internal 512 bytes of RAM */
r6428r6429
19381960#endif
19391961
19401962
1941#if USE_V25
1942
19431963/* this seems to be the map for the ROM based game, Knuckle Bash */
1944static ADDRESS_MAP_START( V25_mem, ADDRESS_SPACE_PROGRAM, 8 )
1945   AM_RANGE(0x00000, 0x03fff) AM_ROM
1964static ADDRESS_MAP_START( V25_kbash_mem, ADDRESS_SPACE_PROGRAM, 8 )
1965//  AM_RANGE(0x00000, 0x03fff) AM_ROM
19461966//  AM_RANGE(0x00000, 0x007ff) AM_RAM                           /* External shared RAM (Banked) */
1947   AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1967   AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
19481968   AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
19491969//  AM_RANGE(0x04004, 0x04004) AM_DEVWRITE("oki", oki_bankswitch_w)
19501970   AM_RANGE(0x04008, 0x04008) AM_READ_PORT("IN1")
r6428r6429
19531973   AM_RANGE(0x0400e, 0x0400e) AM_WRITE(toaplan2_coin_w)
19541974   AM_RANGE(0x0fe00, 0x0ffff) AM_RAM                     /* Internal 512 bytes of RAM */
19551975//  AM_RANGE(0x80000, 0x87fff) AM_RAM AM_BASE(&V25_sharedram)   /* External shared RAM (ROM for KBASH) */
1976
1977    AM_RANGE(0xa0000, 0xa7fff) AM_ROM AM_SHARE(10)
1978   AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_SHARE(10) AM_REGION("mcu", 0)
19561979ADDRESS_MAP_END
19571980
1958
1959static ADDRESS_MAP_START( V25_port, ADDRESS_SPACE_IO, 8 )
1981static ADDRESS_MAP_START( V25_kbash_port, ADDRESS_SPACE_IO, 8 )
19601982   AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSWA")   /* Directly mapped I/O ports */
19611983   AM_RANGE(0x0061, 0x0061) AM_READ_PORT("DSWA")   /* Directly mapped I/O ports */
19621984   AM_RANGE(0x0062, 0x0062) AM_READ_PORT("JMPR")   /* Directly mapped I/O ports */
r6428r6429
19691991
19701992  Others are encrypted
19711993*/
1994#ifdef USE_ENCRYPTED_V25S
1995/*
1996    AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, batsugun_snd_cpu_w)   ;V25+ Command/Status port
1997    AM_RANGE(0x21f004, 0x21f005) AM_READ_PORT("DSWA")
1998    AM_RANGE(0x21f006, 0x21f007) AM_READ_PORT("DSWB")
1999    AM_RANGE(0x21f008, 0x21f009) AM_READ_PORT("JMPR")
2000*/
19722001
2002/* FIXME: These should be moved into the CPU core files, putted here for simplicity. */
2003static READ8_HANDLER( v25s_internal_io_r )
2004{
2005   switch(offset+0xf00)
2006   {
2007      case 0xf00: return input_port_read(space->machine, "DSWB"); //port 0
2008      case 0xf08: return input_port_read(space->machine, "JMPR"); //port 1
2009//      case 0xf10: //port 2
2010      case 0xf38: return input_port_read(space->machine, "DSWA"); //port T
2011   }
19732012
2013   printf("(PC=%05x) V25S internal I/O read [%04x]\n",cpu_get_pc(space->cpu),offset+0xf00);
19742014
2015   return 0xff;
2016}
19752017
1976static ADDRESS_MAP_START( V25_rambased_mem, ADDRESS_SPACE_PROGRAM, 8 )
1977   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
2018static WRITE8_HANDLER( v25s_internal_io_w )
2019{
2020   printf("(PC=%05x) V25S internal I/O write %02x at [%04x]\n",cpu_get_pc(space->cpu),data,offset+0xf00);
2021}
19782022
1979   AM_RANGE(0x07800, 0x07fff) AM_RAM AM_SHARE(6)
2023/* FIXME: needs an irq to remove this, I've seen two irq routines that have encrypted opcodes... -AS */
2024static READ8_HANDLER( kludge_r )
2025{
2026   return 0xff;
2027}
2028#endif
19802029
1981   AM_RANGE(0x40000, 0x477ff) AM_RAM AM_SHARE(7)
2030static ADDRESS_MAP_START( V25_rambased_mem, ADDRESS_SPACE_PROGRAM, 8 )
2031   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
2032   AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE(6) AM_BASE(&batsugun_share)
19822033
1983   AM_RANGE(0x87800, 0x87fff) AM_RAM AM_SHARE(6)
2034//  AM_RANGE(0x40000, 0x477ff) AM_RAM AM_SHARE(7)
2035   AM_RANGE(0x40e00, 0x40eff) AM_RAM //internal V25 RAM
2036   #ifdef USE_ENCRYPTED_V25S
2037   AM_RANGE(0x40f00, 0x40fff) AM_READWRITE(v25s_internal_io_r,v25s_internal_io_w)
2038   AM_RANGE(0x87ff9, 0x87ff9) AM_READ(kludge_r)
2039   #endif
19842040
1985   AM_RANGE(0xa0000, 0xa77ff) AM_RAM AM_SHARE(7) AM_BASE(&batsugun_share2)
1986   AM_RANGE(0xa7800, 0xa7fff) AM_RAM AM_SHARE(6)
2041   AM_RANGE(0x80000, 0x87fff) AM_RAM AM_SHARE(6)
2042   AM_RANGE(0xa0000, 0xa7fff) AM_RAM AM_SHARE(6)
19872043
1988   AM_RANGE(0xff800, 0xfffff) AM_RAM AM_SHARE(6) AM_BASE(&batsugun_share)
2044   AM_RANGE(0xf8000, 0xfffff) AM_RAM AM_SHARE(6)
19892045ADDRESS_MAP_END
19902046
1991
1992
1993
1994
1995
1996#endif
1997
1998
1999
20002047/*****************************************************************************
20012048    Input Port definitions
20022049    Service input of the TOAPLAN2_SYSTEM_INPUTS is used as a Pause type input.
r6428r6429
26522699   PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
26532700
26542701   PORT_MODIFY("JMPR")
2702   #ifdef USE_ENCRYPTED_V25S
2703   /* FIXME: jumper setting are differently mapped there, V25S executes a ror al,4h instruction before putting it on the RAM shared memory */
2704   PORT_BIT( 0x00fe, IP_ACTIVE_LOW, IPT_UNKNOWN )
2705   #else
26552706   PORT_DIPNAME( 0x000f,   0x0009, "Territory" )
26562707   PORT_DIPSETTING(      0x0009, DEF_STR( Europe ) )
26572708   PORT_DIPSETTING(      0x0008, "Europe (Taito Corp license)" )
r6428r6429
26702721   PORT_DIPSETTING(      0x0005, "Taiwan" )
26712722   PORT_DIPSETTING(      0x0004, "Taiwan (Taito Corp license)" )
26722723   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN )   /* bit 0x10 sound ready */
2724   #endif
26732725INPUT_PORTS_END
26742726
26752727
r6428r6429
31053157   PORT_DIPSETTING(      0x1000, DEF_STR( On ) )
31063158   /* These Dips are showed only when Coin_A is set to Free_Play, but they work in normal play mode too. */
31073159   PORT_DIPNAME( 0x2000,   0x0000, "Guest Player" )         PORT_DIPLOCATION("SW3:6")
3160   PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
3161   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3162   PORT_DIPNAME( 0x4000,   0x0000, "Player Select" )         PORT_DIPLOCATION("SW3:7")
3163   PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
3164   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3165   PORT_DIPNAME( 0x8000,   0x0000, "Special Course" )         PORT_DIPLOCATION("SW3:8")
3166   PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
3167   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3168INPUT_PORTS_END
3169
3170
3171static INPUT_PORTS_START( batridrj )
3172   PORT_INCLUDE( batrider )
3173
3174   PORT_MODIFY("SYS-DSW")   /* Coin/System and DSWC */
3175   /* These Dips are showed only when Coin_A is set to Free_Play, but they work in normal play mode too. */
3176   PORT_DIPNAME( 0x2000,   0x0000, "Guest Player" )         PORT_DIPLOCATION("SW3:6")
31083177   PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
31093178   PORT_DIPSETTING(      0x2000, DEF_STR( On ) )
31103179   PORT_DIPNAME( 0x4000,   0x0000, "Player Select" )         PORT_DIPLOCATION("SW3:7")
r6428r6429
33683437   MDRV_CPU_PROGRAM_MAP(tekipaki_68k_mem)
33693438   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
33703439
3371#if USE_HD64x180
3440#ifdef USE_HD64x180
33723441   MDRV_CPU_ADD("mcu", Z180, XTAL_10MHz)         /* HD647180 CPU actually */
33733442   MDRV_CPU_PROGRAM_MAP(hd647180_mem)
33743443#endif
r6428r6429
33943463   /* sound hardware */
33953464   MDRV_SPEAKER_STANDARD_MONO("mono")
33963465
3397   MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8)
3466   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)
33983467   MDRV_SOUND_CONFIG(ym3812_config)
33993468   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
34003469MACHINE_DRIVER_END
r6428r6429
34073476   MDRV_CPU_PROGRAM_MAP(ghox_68k_mem)
34083477   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
34093478
3410#if USE_HD64x180
3479#ifdef USE_HD64x180
34113480   MDRV_CPU_ADD("mcu", Z180, XTAL_10MHz)         /* HD647180 CPU actually */
34123481   MDRV_CPU_PROGRAM_MAP(hd647180_mem)
34133482#endif
r6428r6429
34333502   /* sound hardware */
34343503   MDRV_SPEAKER_STANDARD_MONO("mono")
34353504
3436   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */
3505   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
34373506   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
34383507MACHINE_DRIVER_END
34393508
3509/* x = modified to match batsugun 'unencrypted' code */
34403510
3511const UINT8 ts002mach_decryption_table[256] = {
3512   0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, /* 00 */
3513   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, /* 10 */
3514   0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, /* 20 */
3515   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, /* 30 */
3516   0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, /* 40 */
3517   0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, /* 50 */
3518   0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, /* 60 */
3519   0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, /* 70 */
3520   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x48,0x8d,0x8e,0x8f, /* 80 */
3521                                                                /*x*/
3522   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /* 90 */
3523   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, /* a0 */
3524   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, /* b0 */
3525   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xea,0xcc,0xcd,0xce,0xcf, /* c0 */
3526                                                           /*x*/
3527   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, /* d0 */
3528   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, 0xe8,0xe9,0xea,0xeb,0xec,0xed,0x33,0xef, /* e0 */
3529                                                                          /*x*/
3530   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, /* f0 */
3531};
3532
3533static const nec_config ts002mach_config ={ ts002mach_decryption_table, };
3534
34413535static MACHINE_DRIVER_START( dogyuun )
34423536
34433537   /* basic machine hardware */
r6428r6429
34453539   MDRV_CPU_PROGRAM_MAP(dogyuun_68k_mem)
34463540   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
34473541
3448#if USE_V25
34493542   MDRV_CPU_ADD("audiocpu", V25, XTAL_25MHz/2)         /* NEC V25+ type Toaplan marked CPU ??? */
34503543   MDRV_CPU_PROGRAM_MAP(V25_rambased_mem)
3451   //MDRV_CPU_IO_MAP(V25_port)
3452#endif
3544   MDRV_CPU_CONFIG(ts002mach_config)
34533545
34543546   MDRV_MACHINE_RESET(dogyuun)
34553547
r6428r6429
34723564   /* sound hardware */
34733565   MDRV_SPEAKER_STANDARD_MONO("mono")
34743566
3475   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */
3567   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
34763568   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
34773569
34783570   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_25MHz/24) /* verified on pcb */
r6428r6429
34803572   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
34813573MACHINE_DRIVER_END
34823574
3575/* x = modified to match batsugun 'unencrypted' code - '?' likewise, but not so sure about them
3576  '!' = code stops being the same as batsugun at this point, might be wrong
3577  - they seem to have mostly mapped extra opcodes for common ones, eg. mov
3578*/
3579const UINT8 ts004dash_decryption_table[256] = {
3580   0x00,0x01,0x02,0x03,0x8c,0x05,0x06,0x07, 0x08,0x09,0x36,0x0b,0x0c,0x0d,0x8c,0x0f, /* 00 */
3581                       /*?*/                          /*?*/               /*?*/
3582   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x8e,0x1f, /* 10 */
3583                                                                          /*x*/
3584   0x20,0x21,0x22,0x23,0x36,0x25,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, /* 20 */
3585                       /*?*/
3586   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, /* 30 */
3587   0x40,0x41,0x42,0x43,0x44,0xb8,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, /* 40 */
3588                             /*x*/
3589   0x50,0x51,0x52,0xfc,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, /* 50 */
3590                  /*!*/
3591   0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, /* 60 */
3592   0x70,0x71,0x8c,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, /* 70 */
3593             /*?*/
3594   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x48,0x8d,0x8e,0x8f, /* 80 */
3595                                                                /*x*/
3596   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0xbc, 0x98,0x99,0x9a,0x9b,0x9c,0xc6,0x9e,0x9f, /* 90 */
3597                                      /*x*/
3598   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, /* a0 */
3599   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0x33, /* b0 */
3600                                                                               /*x*/
3601   0xc0,0xc1,0xc2,0xc3,0xc4,0x36,0xc6,0xc7, 0xc8,0xc9,0xc6,0xea,0xcc,0xcd,0xce,0xcf, /* c0 */
3602                             /*x*/                     /*x*//*x*/
3603   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xbb,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, /* d0 */
3604                                            /*x*/
3605   0xe0,0xe1,0xe2,0xbd,0xe4,0xe5,0xe6,0xe7, 0xe8,0xc7,0xea,0x36,0xec,0xed,0xee,0xef, /* e0 */
3606                  /*?*/                          /*?*/     /*?*/
3607   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0x8e, 0xf8,0xf9,0x36,0xfb,0xfc,0xfd,0xfe,0xff, /* f0 */
3608                                       /*x*/           /*?*/
3609};
34833610
3611static const nec_config ts004dash_config ={ ts004dash_decryption_table, };
3612
3613static MACHINE_RESET(kbash)
3614{
3615#ifndef USE_ENCRYPTED_V25S
3616   cpu_set_input_line(sub_cpu, INPUT_LINE_HALT, ASSERT_LINE);
3617#endif
3618}
3619
3620
3621
34843622static MACHINE_DRIVER_START( kbash )
34853623
34863624   /* basic machine hardware */
r6428r6429
34893627   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
34903628
34913629   /* ROM based v25 */
3492#if USE_V25
34933630   MDRV_CPU_ADD("mcu", V25, XTAL_16MHz)         /* NEC V25+ type Toaplan marked CPU ??? */
3494   MDRV_CPU_PROGRAM_MAP(V25_mem)
3495   MDRV_CPU_IO_MAP(V25_port)
3496#endif
3631   MDRV_CPU_PROGRAM_MAP(V25_kbash_mem)
3632   MDRV_CPU_IO_MAP(V25_kbash_port)
3633   MDRV_CPU_CONFIG(ts004dash_config)
34973634
3498   MDRV_MACHINE_RESET(toaplan2)
34993635
3636   MDRV_MACHINE_RESET(kbash)
3637
35003638   /* video hardware */
35013639   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
35023640
r6428r6429
35163654   /* sound hardware */
35173655   MDRV_SPEAKER_STANDARD_MONO("mono")
35183656
3519   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8)
3657   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
35203658   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
35213659
35223660   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32)
r6428r6429
35903728   /* sound hardware */
35913729   MDRV_SPEAKER_STANDARD_MONO("mono")
35923730
3593   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */
3731   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
35943732   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
35953733
35963734   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz/4) /* verified on pcb */
r6428r6429
36323770   /* sound hardware */
36333771   MDRV_SPEAKER_STANDARD_MONO("mono")
36343772
3635   MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8)         /* verified on pcb */
3773   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)         /* verified on pcb */
36363774   MDRV_SOUND_CONFIG(ym3812_config)
36373775   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
36383776MACHINE_DRIVER_END
r6428r6429
36723810   /* sound hardware */
36733811   MDRV_SPEAKER_STANDARD_MONO("mono")
36743812
3675   MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8)
3813   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)
36763814   MDRV_SOUND_CONFIG(ym3812_config)
36773815   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
36783816MACHINE_DRIVER_END
r6428r6429
37113849   /* sound hardware */
37123850   MDRV_SPEAKER_STANDARD_MONO("mono")
37133851
3714   MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8)
3852   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)
37153853   MDRV_SOUND_CONFIG(ym3812_config)
37163854   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
37173855MACHINE_DRIVER_END
37183856
3857/* x = modified to match batsugun 'unencrypted' code - '?' likewise, but not so sure about them */
3858/* this one seems more different to the other tables */
3859const UINT8 ts001turbo_decryption_table[256] = {
3860   0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, /* 00 */
3861   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, /* 10 */
3862   0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, /* 20 */
3863   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, /* 30 */
3864   0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, /* 40 */
3865   0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, /* 50 */
3866   0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, /* 60 */
3867   0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, /* 70 */
3868   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, /* 80 */
3869   0x33,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /* 90 */
3870   /*x*/
3871   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, /* a0 */
3872   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, /* b0 */
3873   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xea,0xc7, 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, /* c0 */
3874                                 /*x*/
3875   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, /* d0 */
3876   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, 0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, /* e0 */
3877   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0x48,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, /* f0 */
3878                                                 /*x*/
3879};
37193880
3881static const nec_config ts001turbo_config ={ ts001turbo_decryption_table, };
3882
3883
37203884static MACHINE_DRIVER_START( fixeight )
37213885
37223886   /* basic machine hardware */
r6428r6429
37243888   MDRV_CPU_PROGRAM_MAP(fixeight_68k_mem)
37253889   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
37263890
3727#if USE_V25
37283891   MDRV_CPU_ADD("audiocpu", V25, XTAL_16MHz)         /* NEC V25+ type Toaplan marked CPU ??? */
37293892   MDRV_CPU_PROGRAM_MAP(V25_rambased_mem)
3893   MDRV_CPU_CONFIG(ts001turbo_config)
37303894   //MDRV_CPU_IO_MAP(V25_port)
3731#endif
37323895
37333896   MDRV_MACHINE_RESET(batsugun)
3734//  MDRV_NVRAM_HANDLER(fixeight)        /* See 37B6 code */
3897//  MDRV_MACHINE_RESET(toaplan2)
37353898
3899   //  MDRV_NVRAM_HANDLER(fixeight)        /* See 37B6 code */
3900
37363901   /* video hardware */
37373902   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
37383903
r6428r6429
37523917   /* sound hardware */
37533918   MDRV_SPEAKER_STANDARD_MONO("mono")
37543919
3755   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */
3920   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
37563921   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
37573922
37583923   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz/16) /* verified on pcb */
r6428r6429
37933958   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
37943959MACHINE_DRIVER_END
37953960
3961/* according to the comments this chip has the same markings as the Batsugun chip,
3962   maybe they double map some opcodes on it and recycled the chips using unencrypted ones
3963   for Batsugun??
37963964
3965    - note, the basic startup code remapping seems identical between all games, so they
3966      probably use a common remap with some per-game changes which supports the above theory
3967   */
3968const UINT8 ts007spy_vfive_decryption_table[256] = {
3969   0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, /* 00 */
3970   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, /* 10 */
3971   0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, /* 20 */
3972   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, /* 30 */
3973   0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, /* 40 */
3974   0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, /* 50 */
3975   0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, /* 60 */
3976   0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, /* 70 */
3977   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x48,0x8d,0x8e,0x8f, /* 80 */
3978                                                                /*x*/
3979   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /* 90 */
3980   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, /* a0 */
3981   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, /* b0 */
3982   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xea,0xcc,0xcd,0xce,0xcf, /* c0 */
3983                                                           /*x*/
3984   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, /* d0 */
3985   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, 0xe8,0xe9,0xea,0xeb,0xec,0xed,0x33,0xef, /* e0 */
3986                                                                          /*x*/
3987   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, /* f0 */
3988};
3989
3990static const nec_config ts007spy_vfive_config ={ ts007spy_vfive_decryption_table, };
3991
3992
37973993static MACHINE_DRIVER_START( vfive )
37983994
37993995   /* basic machine hardware */
r6428r6429
38013997   MDRV_CPU_PROGRAM_MAP(vfive_68k_mem)
38023998   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
38033999
3804#if USE_V25
38054000   MDRV_CPU_ADD("audiocpu", V25, XTAL_20MHz/2)   /* Verified on pcb, NEC V25+ type Toaplan mark scratched out */
38064001   MDRV_CPU_PROGRAM_MAP(V25_rambased_mem)
3807   //MDRV_CPU_IO_MAP(V25_port)
3808#endif
4002   MDRV_CPU_CONFIG(ts007spy_vfive_config)
38094003
38104004   MDRV_MACHINE_RESET(vfive)
38114005
r6428r6429
38284022   /* sound hardware */
38294023   MDRV_SPEAKER_STANDARD_MONO("mono")
38304024
3831   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */
4025   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
38324026   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
38334027MACHINE_DRIVER_END
38344028
38354029static MACHINE_RESET(batsugun)
38364030{
3837   #if USE_V25
38384031   cpu_set_input_line(sub_cpu, INPUT_LINE_HALT, ASSERT_LINE);
3839   #endif
38404032}
38414033
4034
4035
38424036static void batsugun_ym2151_irqhandler(const device_config *device, int linestate)
38434037{
38444038   logerror("batsugun_ym2151_irqhandler %02x\n",linestate);
r6428r6429
38504044   batsugun_ym2151_irqhandler
38514045};
38524046
4047/* the batsugun cpu is mostly non-encrypted, from a glance over the code it seems they
4048   only encrypted a few opcodes used in the interrupt routine, the rest is a 1:1 mapping */
4049const UINT8 ts007spy_decryption_table[256] = {
4050   0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, /* 00 */
4051   0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, /* 10 */
4052   0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, /* 20 */
4053   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, /* 30 */
4054   0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, /* 40 */
4055   0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, /* 50 */
4056   0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, /* 60 */
4057   0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, /* 70 */
4058   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, /* 80 */
4059   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /* 90 */
4060   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, /* a0 */
4061   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, /* b0 */
4062   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, /* c0 */
4063   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, /* d0 */
4064   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, 0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, /* e0 */
4065   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, /* f0 */
4066};
4067
4068static const nec_config ts007spy_config ={ ts007spy_decryption_table, };
4069
38534070static MACHINE_DRIVER_START( batsugun )
38544071
38554072   /* basic machine hardware */
r6428r6429
38574074   MDRV_CPU_PROGRAM_MAP(batsugun_68k_mem)
38584075   MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4)
38594076
3860#if USE_V25
38614077   MDRV_CPU_ADD("audiocpu", V25, XTAL_32MHz/2)         /* NEC V25+ type Toaplan marked CPU ??? */
38624078   MDRV_CPU_PROGRAM_MAP(V25_rambased_mem)
4079   MDRV_CPU_CONFIG(ts007spy_config)
4080
38634081   //MDRV_CPU_IO_MAP(V25_port)
3864#endif
38654082
38664083   MDRV_MACHINE_RESET(batsugun)
38674084
r6428r6429
38844101   /* sound hardware */
38854102   MDRV_SPEAKER_STANDARD_MONO("mono")
38864103
3887   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8)
4104   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
38884105   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
38894106   MDRV_SOUND_CONFIG(batsugun_ym2151_interface)
38904107
r6428r6429
39224139   /* sound hardware */
39234140   MDRV_SPEAKER_STANDARD_MONO("mono")
39244141
3925   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8)
4142   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
39264143   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
39274144
39284145   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_27MHz/10)
r6428r6429
39644181   /* sound hardware */
39654182   MDRV_SPEAKER_STANDARD_MONO("mono")
39664183
3967   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8)
4184   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
39684185   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
39694186
39704187   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32)
r6428r6429
40064223   /* sound hardware */
40074224   MDRV_SPEAKER_STANDARD_MONO("mono")
40084225
4009   MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8)
4226   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
40104227   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono",1.0)
40114228
40124229   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32)
r6428r6429
40484265   /* sound hardware */
40494266   MDRV_SPEAKER_STANDARD_MONO("mono")
40504267
4051   MDRV_SOUND_ADD("ym", YM2151, XTAL_32MHz/8)
4268   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8)
40524269   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
40534270
40544271   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/16)
r6428r6429
40904307   /* sound hardware */
40914308   MDRV_SPEAKER_STANDARD_MONO("mono")
40924309
4093   MDRV_SOUND_ADD("ym", YM2151, XTAL_32MHz/8)
4310   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8)
40944311   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
40954312
40964313   MDRV_SOUND_ADD("oki1", OKIM6295, XTAL_32MHz/10)
r6428r6429
41574374   ROM_LOAD16_BYTE( "tp020-1.bin", 0x000000, 0x010000, CRC(d8420bd5) SHA1(30c1ad9e053cd7e79adb42aa428ebee28e144755) )
41584375   ROM_LOAD16_BYTE( "tp020-2.bin", 0x000001, 0x010000, CRC(7222de8e) SHA1(8352ae23efc24a2e20cc24b6d37cb8fc6b1a730c) )
41594376
4160#if USE_HD64x180
41614377   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound HD647180 code */
41624378   /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
41634379   ROM_LOAD( "hd647180.020", 0x00000, 0x08000, NO_DUMP )
4164#endif
41654380
41664381   ROM_REGION( 0x100000, "gfx1", 0 )
41674382   ROM_LOAD( "tp020-4.bin", 0x000000, 0x080000, CRC(3ebbe41e) SHA1(cea196c5f83e1a23d5b538a0db9bbbffa7af5118) )
r6428r6429
41744389   ROM_LOAD16_BYTE( "tp021-01.u10", 0x000000, 0x020000, CRC(9e56ac67) SHA1(daf241d9e55a6e60fc004ed61f787641595b1e62) )
41754390   ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) )
41764391
4177#if USE_HD64x180
41784392   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound HD647180 code */
41794393   /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
41804394   ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
4181#endif
41824395
41834396   ROM_REGION( 0x100000, "gfx1", 0 )
41844397   ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
r6428r6429
41914404   ROM_LOAD16_BYTE( "tp021-01a.u10", 0x000000, 0x020000, CRC(c11b13c8) SHA1(da7defc1d3b6ddded910ba56c31fbbdb5ed57b09) )
41924405   ROM_LOAD16_BYTE( "tp021-02a.u11", 0x000001, 0x020000, CRC(8d426767) SHA1(1ed4a8bcbf4352257e7d58cb5c2c91eb48c2f047) )
41934406
4194#if USE_HD64x180
41954407   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound HD647180 code */
41964408   /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
41974409   ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
4198#endif
41994410
42004411   ROM_REGION( 0x100000, "gfx1", 0 )
42014412   ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
r6428r6429
42084419   ROM_LOAD16_WORD_SWAP( "tp022_01.r16", 0x000000, 0x080000, CRC(79eb2429) SHA1(088c5ed0ed77557ab71f52cafe35028e3648ae1e) )
42094420
42104421   /* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4211   /* Its likely to be a NEC V25+ (PLCC94). */
4212#if USE_V25
4213   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4214//  ROM_LOAD( "tp022.mcu", 0x00000, 0x08000, NO_DUMP )
4215#endif
4422   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
42164423
42174424   ROM_REGION( 0x200000, "gfx1", 0 )
42184425   ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
r6428r6429
42324439   ROM_LOAD16_WORD_SWAP( "01.u64", 0x000000, 0x080000, CRC(fe5bd7f4) SHA1(9c725466112a514c9ed0fb074422d291c175c3f4) )
42334440
42344441   /* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4235   /* Its likely to be a NEC V25+ (PLCC94). */
4236#if USE_V25
4237   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4238//  ROM_LOAD( "tp022.mcu", 0x00000, 0x08000, NO_DUMP )
4239#endif
4442   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
42404443
42414444   ROM_REGION( 0x200000, "gfx1", 0 )
42424445   ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
r6428r6429
42574460
42584461   /* Secondary CPU is a Toaplan marked chip, (TS-004-Dash  TOA PLAN) */
42594462   /* Its likely to be a NEC V25+ (PLCC94). */
4260#if USE_V25
4261   ROM_REGION( 0x88000, "cpu1", 0 )         /* Sound CPU code */
4262   ROM_LOAD( "kbash02.bin", 0x80000, 0x08000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4263#else
4264   ROM_REGION( 0x08000, "user1", 0 )
4265   ROM_LOAD( "kbash02.bin", 0x00200, 0x07e00, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4266   ROM_CONTINUE(          0x00000, 0x00200 )
4267#endif
4463   ROM_REGION( 0x8000, "mcu", 0 )         /* Sound CPU code */
4464   ROM_LOAD( "kbash02.bin", 0x0000, 0x8000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
42684465
42694466   ROM_REGION( 0x800000, "gfx1", 0 )
42704467   ROM_LOAD( "kbash03.bin", 0x000000, 0x200000, CRC(32ad508b) SHA1(e473489beaf649d3e5236770eb043327e309850c) )
r6428r6429
44034600   ROM_LOAD16_WORD_SWAP( "tp-026-1", 0x000000, 0x080000, CRC(f7b1746a) SHA1(0bbea6f111b818bc9b9b2060af4fe900f37cf7f9) )
44044601
44054602   /* Secondary CPU is a Toaplan marked chip, (TS-001-Turbo  TOA PLAN) */
4406   /* Its likely to be a NEC V25+ (PLCC94). */
4407#if USE_V25
4408   ROM_REGION( 0x10000, "cpu1", 0 )         /* Secondary CPU code */
4409//  ROM_LOAD( "tp-026.mcu", 0x0000, 0x8000, NO_DUMP )
4410#endif
4603   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
44114604
44124605   ROM_REGION( 0x400000, "gfx1", 0 )
44134606   ROM_LOAD( "tp-026-3", 0x000000, 0x200000, CRC(e5578d98) SHA1(280d2b716d955e767d311fc9596823852435b6d7) )
r6428r6429
44844677   ROM_LOAD16_WORD_SWAP( "01.bin", 0x000000, 0x080000, CRC(4923f790) SHA1(1c2d66b432d190d0fb6ac7ca0ec0687aea3ccbf4) )
44854678
44864679   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4487   /* Its likely to be a NEC V25+ (PLCC94). */
4488#if USE_V25
4489   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4490//  ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4491#endif
4680   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
44924681
44934682   ROM_REGION( 0x200000, "gfx1", 0 )
44944683   ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
r6428r6429
45014690   ROM_LOAD16_WORD_SWAP( "tp027-01.rom", 0x000000, 0x080000, CRC(8d8c0392) SHA1(824dde274c8bef8a87c54d8ccdda7f0feb8d11e1) )
45024691
45034692   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4504   /* Its likely to be a NEC V25+ (PLCC94). */
4505#if USE_V25
4506   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4507//  ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4508#endif
4693   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
45094694
45104695   ROM_REGION( 0x200000, "gfx1", 0 )
45114696   ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
r6428r6429
45184703   ROM_LOAD16_WORD_SWAP( "tp027_01.bin", 0x000000, 0x080000, CRC(731d50f4) SHA1(794255d0a809cda9170f5bac473df9d7f0efdac8) )
45194704
45204705   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4521   /* Its likely to be a NEC V25+ (PLCC94). */
4522#if USE_V25
4523   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4524//  ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
4525#endif
4706   /* It's some kind of NEC V25+ (PLCC94). - (encrypted program uploaded by main CPU) */
45264707
45274708   ROM_REGION( 0x200000, "gfx1", 0 )
45284709   ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
r6428r6429
45354716   ROM_LOAD16_WORD_SWAP( "tp030_01.bin", 0x000000, 0x080000, CRC(3873d7dd) SHA1(baf6187d7d554cfcf4a86b63f07fc30df7ef84c9) )
45364717
45374718   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4538   /* Its likely to be a NEC V25+ (PLCC94). */
4539#if USE_V25
4540   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4541//  ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
4542#endif
4719   /* It's some kind of NEC V25+ (PLCC94). - (mostly unencrypted program uploaded by main CPU) */
45434720
45444721   ROM_REGION( 0x400000, "gfx1", 0 )
45454722   ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
r6428r6429
45614738   ROM_LOAD16_WORD_SWAP( "tp030_1a.bin", 0x000000, 0x080000,  CRC(cb1d4554) SHA1(ef31f24d77e1c13bdf5558a04a6253e2e3e6a790) )
45624739
45634740   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4564   /* Its likely to be a NEC V25+ (PLCC94). */
4565#if USE_V25
4566   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4567//  ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
4568#endif
4741   /* It's some kind of NEC V25+ (PLCC94). - (unencrypted(?) program uploaded by main CPU) */
45694742
45704743   ROM_REGION( 0x400000, "gfx1", 0 )
45714744   ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
r6428r6429
45874760   ROM_LOAD16_WORD_SWAP( "tp030-sp.u69", 0x000000, 0x080000, CRC(8072a0cd) SHA1(3a0a9cdf894926a16800c4882a2b00383d981367) )
45884761
45894762   /* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4590   /* Its likely to be a NEC V25+ (PLCC94). */
4591#if USE_V25
4592   ROM_REGION( 0x10000, "cpu1", 0 )         /* Sound CPU code */
4593//  ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
4594#endif
4763   /* It's some kind of NEC V25+ (PLCC94). - (unencrypted(?) program uploaded by main CPU) */
45954764
45964765   ROM_REGION( 0x400000, "gfx1", 0 )
45974766   ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
r6428r6429
52795448GAME( 1998, batrid,   0,        batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
52805449GAME( 1998, batridu,  batrid,   batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (U.S.A.) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
52815450GAME( 1998, batridc,  batrid,   batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (China) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
5282GAME( 1998, batridj,  batrid,   batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
5451GAME( 1998, batridj,  batrid,   batrider, batridrj, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
52835452GAME( 1998, batridk,  batrid,   batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
52845453// version A is older code
5285GAME( 1998, batridja, batrid,   batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan) (Mon Dec 22 1997)", GAME_SUPPORTS_SAVE )
5454GAME( 1998, batridja, batrid,   batrider, batridrj, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan) (Mon Dec 22 1997)", GAME_SUPPORTS_SAVE )
52865455
52875456// Battle Bakraid
52885457// the 'unlimited' version is a newer revision of the code.
src/mame/drivers/jailbrek.c
r6428r6429
153153    AM_RANGE(0x2043, 0x2043) AM_WRITENOP /* ??? */
154154    AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) /* irq, nmi enable, screen flip */
155155   AM_RANGE(0x3000, 0x307f) AM_RAM /* related to sprites? */
156   AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") AM_DEVWRITE("sn", sn76496_w)
156   AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") AM_DEVWRITE("snsnd", sn76496_w)
157157   AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") AM_WRITENOP /* mirror of the previous? */
158158   AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM") AM_WRITE(watchdog_reset_w)
159159   AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1")
r6428r6429
278278   /* sound hardware */
279279   MDRV_SPEAKER_STANDARD_MONO("mono")
280280
281   MDRV_SOUND_ADD("sn", SN76489, MASTER_CLOCK/12)
281   MDRV_SOUND_ADD("snsnd", SN76489, MASTER_CLOCK/12)
282282   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
283283
284284   MDRV_SOUND_ADD("vlm", VLM5030, VOICE_CLOCK)
src/mame/drivers/gaelco.c
r6428r6429
161161   AM_RANGE(0x0000, 0x07ff) AM_RAM                                 /* RAM */
162162   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   /* OKI6295 */
163163//  AM_RANGE(0x0900, 0x0900) AM_WRITENOP                                    /* enable sound output? */
164   AM_RANGE(0x0a00, 0x0a01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)      /* YM3812 */
164   AM_RANGE(0x0a00, 0x0a01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)      /* YM3812 */
165165   AM_RANGE(0x0b00, 0x0b00) AM_READ(soundlatch_r)                     /* Sound latch */
166166   AM_RANGE(0x0c00, 0xffff) AM_ROM                                 /* ROM */
167167ADDRESS_MAP_END
r6428r6429
236236   /* sound hardware */
237237   MDRV_SPEAKER_STANDARD_MONO("mono")
238238
239   MDRV_SOUND_ADD("ym", YM3812, 3580000)
239   MDRV_SOUND_ADD("ymsnd", YM3812, 3580000)
240240   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
241241
242242   MDRV_SOUND_ADD("oki", OKIM6295, 1056000)
src/mame/drivers/wecleman.c
r6428r6429
700700   AM_RANGE(0x9006, 0x9006) AM_WRITENOP   // ?
701701   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)   // From main CPU
702702   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)   // K007232 (Reading offset 5/b triggers the sample)
703   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
703   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
704704   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", wecleman_K00723216_bank_w)   // Samples banking
705705ADDRESS_MAP_END
706706
r6428r6429
11161116   /* sound hardware */
11171117   MDRV_SPEAKER_STANDARD_MONO("mono")
11181118
1119   MDRV_SOUND_ADD("ym", YM2151, 3579545)
1119   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
11201120   MDRV_SOUND_ROUTE(0, "mono", 0.85)
11211121   MDRV_SOUND_ROUTE(1, "mono", 0.85)
11221122
src/mame/drivers/crbaloon.c
r6428r6429
160160static WRITE8_HANDLER( port_sound_w )
161161{
162162   const device_config *discrete = devtag_get_device(space->machine, "discrete");
163   const device_config *sn = devtag_get_device(space->machine, "sn");
163   const device_config *sn = devtag_get_device(space->machine, "snsnd");
164164
165165   /* D0 - interrupt enable - also goes to PC3259 as /HTCTRL */
166166   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), (data & 0x01) ? TRUE : FALSE);
src/mame/drivers/funkybee.c
r6428r6429
115115
116116static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
117117   ADDRESS_MAP_GLOBAL_MASK(0xff)
118   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
119   AM_RANGE(0x02, 0x02) AM_DEVREAD("ay", ay8910_r)
118   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
119   AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_r)
120120ADDRESS_MAP_END
121121
122122
r6428r6429
314314   /* sound hardware */
315315   MDRV_SPEAKER_STANDARD_MONO("mono")
316316
317   MDRV_SOUND_ADD("ay", AY8910, 1500000)
317   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
318318   MDRV_SOUND_CONFIG(ay8910_config)
319319   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
320320MACHINE_DRIVER_END
src/mame/drivers/lastduel.c
r6428r6429
604604
605605ROM_START( lastduelo )
606606   ROM_REGION( 0x60000, "maincpu", 0 )   /* 68000 code */
607   ROM_LOAD16_BYTE( "ldu-06.13k",  0x00000, 0x20000, CRC(4228a00b) SHA1(8c23f74f682ba2074da9f3306600c881ce41e50f) )
608   ROM_LOAD16_BYTE( "ldu-05.12k",  0x00001, 0x20000, CRC(7260434f) SHA1(55eeb12977efb3c6afd86d68612782ba526c9055) )
609   ROM_LOAD16_BYTE( "ldu-04.11k",  0x40000, 0x10000, CRC(429fb964) SHA1(78769b05e62c190d846dd08214427d1abbbe2bba) )
610   ROM_LOAD16_BYTE( "ldu-03.9k",   0x40001, 0x10000, CRC(5aa4df72) SHA1(9e7315b793f09c8b422bad1ce776588e3a48d80c) )
607   ROM_LOAD16_BYTE( "ldu_06.13k",  0x00000, 0x20000, CRC(4228a00b) SHA1(8c23f74f682ba2074da9f3306600c881ce41e50f) )
608   ROM_LOAD16_BYTE( "ldu_05.12k",  0x00001, 0x20000, CRC(7260434f) SHA1(55eeb12977efb3c6afd86d68612782ba526c9055) )
609   ROM_LOAD16_BYTE( "ldu_04.11k",  0x40000, 0x10000, CRC(429fb964) SHA1(78769b05e62c190d846dd08214427d1abbbe2bba) )
610   ROM_LOAD16_BYTE( "ldu_03.9k",   0x40001, 0x10000, CRC(5aa4df72) SHA1(9e7315b793f09c8b422bad1ce776588e3a48d80c) )
611611
612612   ROM_REGION( 0x10000 , "audiocpu", 0 ) /* audio CPU */
613613   ROM_LOAD( "ld_02.16h",    0x0000, 0x10000, CRC(91834d0c) SHA1(aaa63b8470fc19b82c25028ab27675a7837ab9a1) )
r6428r6429
632632   ROM_LOAD( "ld.3d",        0x0000, 0x0100, CRC(729a1ddc) SHA1(eb1d48785a0f187a4cb9c164e6c82481268b3174) ) /* priority (not used) BPROM type 63S141 or compatible like 82S129A */
633633ROM_END
634634
635ROM_START( lastduelj )
636   ROM_REGION( 0x60000, "maincpu", 0 )   /* 68000 code */
637   ROM_LOAD16_BYTE( "ld_06.13k",  0x00000, 0x20000, CRC(58a9e12b) SHA1(bd0b8226271ef0aaff381604455866e0d42fd791) )
638   ROM_LOAD16_BYTE( "ld_05.12k",  0x00001, 0x20000, CRC(14685d78) SHA1(6f6c2431366868df268857d65f6f1325f6c91b89) )
639   ROM_LOAD16_BYTE( "ld_04.11k",  0x40000, 0x10000, CRC(aa4bf001) SHA1(3f14b174016c6fa4c82011d3d0f1c957096d6d93) )
640   ROM_LOAD16_BYTE( "ld_03.9k",   0x40001, 0x10000, CRC(bbaac8ab) SHA1(3c5773e39e7a96ef62da7b846ce4099222b3e66b) )
641
642   ROM_REGION( 0x10000 , "audiocpu", 0 ) /* audio CPU */
643   ROM_LOAD( "ld_02.16h",    0x0000, 0x10000, CRC(91834d0c) SHA1(aaa63b8470fc19b82c25028ab27675a7837ab9a1) )
644
645   ROM_REGION( 0x80000, "gfx1", 0 )
646   ROM_LOAD( "ld-11.12b",    0x000000, 0x20000, CRC(49d4dbbd) SHA1(e58ebda9e9ad37a6990f2aca2a312d55cdaca979) ) /* sprites */
647   ROM_LOAD( "ld-09.12a",    0x020000, 0x20000, CRC(6efadb74) SHA1(b00ddd33c08557940610570b1fd8c9a84dcaf063) )
648   ROM_LOAD( "ld-12.17b",    0x040000, 0x20000, CRC(313e5338) SHA1(beceeb5ae9de6a41d3fde06767b8a23fc9f42259) )
649   ROM_LOAD( "ld-10.17a",    0x060000, 0x20000, CRC(b8d3b2e3) SHA1(a08ef780c798b59bb1e1582d82317421a3353887) )
650
651   ROM_REGION( 0x08000, "gfx2", 0 )
652   ROM_LOAD( "ld_01.12f",    0x000000, 0x08000, CRC(ad3c6f87) SHA1(1a5ef003c0eb641484921dc0c11450c53ee315f5) ) /* 8x8 text */
653
654   ROM_REGION( 0x40000, "gfx3", 0 )
655   ROM_LOAD16_BYTE( "ld-15.6p",     0x000001, 0x20000, CRC(d977a175) SHA1(e3cb482ede10d2204f8352b10623e442a4ae99d2) ) /* tiles */
656   ROM_LOAD16_BYTE( "ld-13.6m",     0x000000, 0x20000, CRC(bc25729f) SHA1(7a6e8a4158bf4c804e87b11c15deb6d0f09fa538) )
657
658   ROM_REGION( 0x80000, "gfx4", 0 )
659   ROM_LOAD( "ld-14.15n",    0x000000, 0x80000, CRC(d0653739) SHA1(8278e8601e82470d785a8ffef48a1b5f70bc2a9b) ) /* tiles */
660
661   ROM_REGION( 0x0100, "proms", 0 )
662   ROM_LOAD( "ld.3d",        0x0000, 0x0100, CRC(729a1ddc) SHA1(eb1d48785a0f187a4cb9c164e6c82481268b3174) ) /* priority (not used) BPROM type 63S141 or compatible like 82S129A */
663ROM_END
664
635665ROM_START( lastduelb )
636666   ROM_REGION( 0x60000, "maincpu", 0 )   /* 68000 code */
637667   ROM_LOAD16_BYTE( "ld_08.bin",    0x00000, 0x10000, CRC(43811a96) SHA1(79db50c941d8845f1642f2257c610768172923a3) )
r6428r6429
827857
828858GAME( 1988, lastduel,  0,        lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (US New Ver.)", 0 )
829859GAME( 1988, lastduelo, lastduel, lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (US Old Ver.)", 0 )
860GAME( 1988, lastduelj, lastduel, lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (Japan)", 0 )
830861GAME( 1988, lastduelb, lastduel, lastduel, lastduel, 0, ROT270, "bootleg", "Last Duel (bootleg)", 0 )
831862GAME( 1989, madgear,   0,        madgear,  madgear,  0, ROT270, "Capcom", "Mad Gear (US)", 0 )
832863GAME( 1989, madgearj,  madgear,  madgear,  madgear,  0, ROT270, "Capcom", "Mad Gear (Japan)", 0 )
src/mame/drivers/cmmb.c
r6428r6429
294294
295295   /* sound hardware */
296296//  MDRV_SPEAKER_STANDARD_MONO("mono")
297//  MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
297//  MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
298298//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
299299MACHINE_DRIVER_END
300300
src/mame/drivers/boxer.c
r6428r6429
11/***************************************************************************
22
3Atari Boxer (prototype) driver
3    Atari Boxer (prototype) driver
44
5  AKA Boxing, both game titles appear in the schematics
5    AKA Boxing, both game titles appear in the schematics
66
7  This game had some weird controls that don't work well in MAME.
7    This game had some weird controls that don't work well in MAME.
88
99***************************************************************************/
1010
1111#include "driver.h"
1212#include "cpu/m6502/m6502.h"
1313
14
1415#define MASTER_CLOCK XTAL_12_096MHz
1516
16extern UINT8* boxer_tile_ram;
17extern UINT8* boxer_sprite_ram;
17/*************************************
18 *
19 *  Driver data
20 *
21 *************************************/
1822
19extern VIDEO_UPDATE( boxer );
23typedef struct _boxer_state boxer_state;
24struct _boxer_state
25{
26   /* memory pointers */
27   UINT8 * tile_ram;
28   UINT8 * sprite_ram;
2029
21static UINT8 pot_state;
22static UINT8 pot_latch;
30   /* misc */
31   UINT8 pot_state;
32   UINT8 pot_latch;
33};
2334
35/*************************************
36 *
37 *  Interrupts / Timers
38 *
39 *************************************/
2440
2541static TIMER_CALLBACK( pot_interrupt )
2642{
43   boxer_state *state = (boxer_state *)machine->driver_data;
2744   int mask = param;
2845
29   if (pot_latch & mask)
46   if (state->pot_latch & mask)
3047      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
3148
32   pot_state |= mask;
49   state->pot_state |= mask;
3350}
3451
3552
3653static TIMER_CALLBACK( periodic_callback )
3754{
55   boxer_state *state = (boxer_state *)machine->driver_data;
3856   int scanline = param;
3957
4058   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
r6428r6429
5876         if (mask[i] != 0)
5977            timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, i, 0), NULL, mask[i], pot_interrupt);
6078
61      pot_state = 0;
79      state->pot_state = 0;
6280   }
6381
6482   scanline += 64;
r6428r6429
7088}
7189
7290
91/*************************************
92 *
93 *  Video system
94 *
95 *************************************/
96
7397static PALETTE_INIT( boxer )
7498{
7599   palette_set_color(machine,0, MAKE_RGB(0x00,0x00,0x00));
r6428r6429
79103   palette_set_color(machine,3, MAKE_RGB(0x00,0x00,0x00));
80104}
81105
106static void draw_boxer( running_machine *machine, bitmap_t* bitmap, const rectangle* cliprect )
107{
108   boxer_state *state = (boxer_state *)machine->driver_data;
109   int n;
82110
83static MACHINE_RESET( boxer )
111   for (n = 0; n < 2; n++)
112   {
113      const UINT8* p = memory_region(machine, n == 0 ? "user1" : "user2");
114
115      int i, j;
116
117      int x = 196 - state->sprite_ram[0 + 2 * n];
118      int y = 192 - state->sprite_ram[1 + 2 * n];
119
120      int l = state->sprite_ram[4 + 2 * n] & 15;
121      int r = state->sprite_ram[5 + 2 * n] & 15;
122
123      for (i = 0; i < 8; i++)
124      {
125         for (j = 0; j < 4; j++)
126         {
127            UINT8 code;
128
129            code = p[32 * l + 4 * i + j];
130
131            drawgfx_transpen(bitmap, cliprect,
132               machine->gfx[n],
133               code,
134               0,
135               code & 0x80, 0,
136               x + 8 * j,
137               y + 8 * i, 1);
138
139            code = p[32 * r + 4 * i - j + 3];
140
141            drawgfx_transpen(bitmap, cliprect,
142               machine->gfx[n],
143               code,
144               0,
145               !(code & 0x80), 0,
146               x + 8 * j + 32,
147               y + 8 * i, 1);
148         }
149      }
150   }
151}
152
153
154VIDEO_UPDATE( boxer )
84155{
85   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), NULL, 0, periodic_callback);
156   boxer_state *state = (boxer_state *)screen->machine->driver_data;
157   int i, j;
86158
87   pot_latch = 0;
159   bitmap_fill(bitmap, cliprect, 1);
160
161   for (i = 0; i < 16; i++)
162   {
163      for (j = 0; j < 32; j++)
164      {
165         UINT8 code = state->tile_ram[32 * i + j];
166
167         drawgfx_transpen(bitmap, cliprect,
168            screen->machine->gfx[2],
169            code,
170            0,
171            code & 0x40, code & 0x40,
172            8 * j + 4,
173            8 * (i % 2) + 32 * (i / 2), 0);
174      }
175   }
176
177   draw_boxer(screen->machine, bitmap, cliprect);
178   return 0;
88179}
89180
90181
182/*************************************
183 *
184 *  Memory handlers
185 *
186 *************************************/
187
91188static READ8_HANDLER( boxer_input_r )
92189{
93190   UINT8 val = input_port_read(space->machine, "IN0");
r6428r6429
101198
102199static READ8_HANDLER( boxer_misc_r )
103200{
201   boxer_state *state = (boxer_state *)space->machine->driver_data;
104202   UINT8 val = 0;
105203
106204   switch (offset & 3)
107205   {
108206   case 0:
109      val = pot_state & pot_latch;
207      val = state->pot_state & state->pot_latch;
110208      break;
111209
112210   case 1:
r6428r6429
140238
141239static WRITE8_HANDLER( boxer_pot_w )
142240{
241   boxer_state *state = (boxer_state *)space->machine->driver_data;
143242   /* BIT0 => HPOT1 */
144243   /* BIT1 => VPOT1 */
145244   /* BIT2 => RPOT1 */
r6428r6429
147246   /* BIT4 => VPOT2 */
148247   /* BIT5 => RPOT2 */
149248
150   pot_latch = data & 0x3f;
249   state->pot_latch = data & 0x3f;
151250
152251   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
153252}
r6428r6429
177276}
178277
179278
279/*************************************
280 *
281 *  Address maps
282 *
283 *************************************/
180284
181
182285static ADDRESS_MAP_START( boxer_map, ADDRESS_SPACE_PROGRAM, 8 )
183286   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
184287   AM_RANGE(0x0000, 0x01ff) AM_RAM
185   AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE(&boxer_tile_ram)
288   AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE_MEMBER(boxer_state, tile_ram)
186289   AM_RANGE(0x0800, 0x08ff) AM_READ(boxer_input_r)
187290   AM_RANGE(0x1000, 0x17ff) AM_READ(boxer_misc_r)
188291   AM_RANGE(0x1800, 0x1800) AM_WRITE(boxer_pot_w)
r6428r6429
191294   AM_RANGE(0x1b00, 0x1bff) AM_WRITE(boxer_crowd_w)
192295   AM_RANGE(0x1c00, 0x1cff) AM_WRITE(boxer_irq_reset_w)
193296   AM_RANGE(0x1d00, 0x1dff) AM_WRITE(boxer_bell_w)
194   AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_BASE(&boxer_sprite_ram)
297   AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_BASE_MEMBER(boxer_state, sprite_ram)
195298   AM_RANGE(0x1f00, 0x1fff) AM_WRITE(watchdog_reset_w)
196299   AM_RANGE(0x3000, 0x3fff) AM_ROM
197300ADDRESS_MAP_END
198301
199302
303/*************************************
304 *
305 *  Input ports
306 *
307 *************************************/
308
200309static INPUT_PORTS_START( boxer )
201
202310   PORT_START("IN0")
203311   PORT_BIT ( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
204312   PORT_BIT ( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) /* TIMER */
r6428r6429
242350   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(30) PORT_KEYDELTA(16) PORT_CODE_DEC(KEYCODE_Q) PORT_CODE_INC(KEYCODE_W) PORT_CENTERDELTA(0) PORT_PLAYER(2)
243351
244352   PORT_START("IN3")
245   PORT_DIPNAME( 0xff, 0x5C, "Round Time" ) /* actually a potentiometer */
246   PORT_DIPSETTING(    0x3C, "15 seconds" )
247   PORT_DIPSETTING(    0x5C, "30 seconds" )
248   PORT_DIPSETTING(    0x7C, "45 seconds" )
249
353   PORT_DIPNAME( 0xff, 0x5c, "Round Time" ) /* actually a potentiometer */
354   PORT_DIPSETTING(    0x3c, "15 seconds" )
355   PORT_DIPSETTING(    0x5c, "30 seconds" )
356   PORT_DIPSETTING(    0x7c, "45 seconds" )
250357INPUT_PORTS_END
251358
252359
360/*************************************
361 *
362 *  Graphics definitions
363 *
364 *************************************/
365
253366static const gfx_layout tile_layout =
254367{
255368   8, 8,
r6428r6429
289402GFXDECODE_END
290403
291404
405/*************************************
406 *
407 *  Machine driver
408 *
409 *************************************/
410
411static MACHINE_START( boxer )
412{
413   boxer_state *state = (boxer_state *)machine->driver_data;
414
415   state_save_register_global(machine, state->pot_state);
416   state_save_register_global(machine, state->pot_latch);
417}
418
419static MACHINE_RESET( boxer )
420{
421   boxer_state *state = (boxer_state *)machine->driver_data;
422   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), NULL, 0, periodic_callback);
423
424   state->pot_state = 0;
425   state->pot_latch = 0;
426}
427
428
292429static MACHINE_DRIVER_START(boxer)
293430
431   /* driver data */
432   MDRV_DRIVER_DATA(boxer_state)
433
294434   /* basic machine hardware */
295435   MDRV_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16)
296436   MDRV_CPU_PROGRAM_MAP(boxer_map)
297437
298   /* video hardware */
438   MDRV_MACHINE_START(boxer)
299439   MDRV_MACHINE_RESET(boxer)
300440
301
441   /* video hardware */
302442   MDRV_SCREEN_ADD("screen", RASTER)
303443   MDRV_SCREEN_REFRESH_RATE(60)
304444   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
r6428r6429
314454MACHINE_DRIVER_END
315455
316456
457/*************************************
458 *
459 *  ROM definition
460 *
461 *************************************/
462
317463ROM_START( boxer )
318
319464   ROM_REGION( 0x4000, "maincpu", 0 )
320465   ROM_LOAD_NIB_LOW ( "3400l.e1", 0x3400, 0x0400, CRC(df85afa4) SHA1(5a74a08f1e0b0bbec02999d5e46513d8afd333ac) )
321466   ROM_LOAD_NIB_HIGH( "3400m.a1", 0x3400, 0x0400, CRC(23fe06aa) SHA1(03a4eedbf60f07d1dd8d7af576828df5f032146e) )
r6428r6429
344489ROM_END
345490
346491
492/*************************************
493 *
494 *  Game driver
495 *
496 *************************************/
497
347498GAME( 1978, boxer, 0, boxer, boxer, 0, 0, "Atari", "Boxer (prototype)", GAME_NO_SOUND )
src/mame/drivers/roul.c
r6428r6429
175175static ADDRESS_MAP_START( sound_cpu_io_map, ADDRESS_SPACE_IO, 8 )
176176   ADDRESS_MAP_GLOBAL_MASK(0xff)
177177   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
178   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
178   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
179179ADDRESS_MAP_END
180180
181181static VIDEO_START(roul)
r6428r6429
269269   MDRV_VIDEO_UPDATE(roul)
270270
271271   MDRV_SPEAKER_STANDARD_MONO("mono")
272   MDRV_SOUND_ADD("ay", AY8910, 1000000)
272   MDRV_SOUND_ADD("aysnd", AY8910, 1000000)
273273   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
274274MACHINE_DRIVER_END
275275
src/mame/drivers/cischeat.c
r6428r6429
702702   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
703703   AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r, bigrun_soundbank_w)   // From Main CPU
704704   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
705   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
705   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
706706   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
707707   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
708708   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
r6428r6429
724724   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki2", cischeat_soundbank_w)            // Sample Banking
725725   AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
726726   AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r)                        // From Main CPU
727   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
727   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
728728   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
729729   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
730730   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
r6428r6429
740740   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w)            // Sample Banking   (cischeat: 40002)
741741   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w)            // Sample Banking   (cischeat: 40004)
742742   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)   // From Main CPU    (cischeat: 60004)
743   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
743   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
744744   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
745745   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
746746   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                       // RAM              (cischeat: f0000-fffff)
r6428r6429
757757   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w)               // Sample Banking
758758   AM_RANGE(0x04000e, 0x04000f) AM_WRITE(SMH_NOP)                                 // ? 0              (f1gpstar: no)
759759   AM_RANGE(0x060004, 0x060005) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)      // From Main CPU    (f1gpstar: 60000)
760   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
760   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
761761   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
762762   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
763763   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                          // RAM
r6428r6429
16001600   /* sound hardware */
16011601   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
16021602
1603   MDRV_SOUND_ADD("ym", YM2151, STD_FM_CLOCK)
1603   MDRV_SOUND_ADD("ymsnd", YM2151, STD_FM_CLOCK)
16041604   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
16051605   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
16061606
src/mame/drivers/speglsht.c
r6428r6429
122122   AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
123123   AM_RANGE(0xe000, 0xe7ff) AM_RAM
124124   AM_RANGE(0xe800, 0xe87f) AM_RAM
125   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w)
125   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_snd_r, st0016_snd_w)
126126   AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
127127   AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
128128   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&shared)
r6428r6429
350350
351351   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
352352
353   MDRV_SOUND_ADD("st", ST0016, 0)
353   MDRV_SOUND_ADD("stsnd", ST0016, 0)
354354   MDRV_SOUND_CONFIG(st0016_config)
355355   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
356356   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/centiped.c
r6428r6429
848848static ADDRESS_MAP_START( bullsdrt_port_map, ADDRESS_SPACE_IO, 8 )
849849   AM_RANGE(0x00, 0x00) AM_WRITE(bullsdrt_sprites_bank_w)
850850   AM_RANGE(0x20, 0x3f) AM_WRITE(bullsdrt_tilesbank_w) AM_BASE(&bullsdrt_tiles_bankram)
851   AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrt_data_port_r) AM_DEVWRITE("sn", sn76496_w)
851   AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrt_data_port_r) AM_DEVWRITE("snsnd", sn76496_w)
852852ADDRESS_MAP_END
853853
854854
r6428r6429
17411741   /* sound hardware */
17421742   MDRV_SPEAKER_STANDARD_MONO("mono")
17431743
1744   MDRV_SOUND_ADD("sn", SN76496, 12096000/8)
1744   MDRV_SOUND_ADD("snsnd", SN76496, 12096000/8)
17451745   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
17461746MACHINE_DRIVER_END
17471747
src/mame/drivers/wgp.c
r6428r6429
691691   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10))   /* Fallthrough */
692692   AM_RANGE(0x0000, 0x7fff) AM_ROM
693693   AM_RANGE(0xc000, 0xdfff) AM_RAM
694   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
694   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
695695   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP,taitosound_slave_port_w)
696696   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
697697   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
986986   /* sound hardware */
987987   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
988988
989   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
989   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
990990   MDRV_SOUND_CONFIG(ym2610_config)
991991   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
992992   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
10371037   ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) )
10381038   ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) )
10391039
1040   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1040   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
10411041   ROM_LOAD( "c32-11.8",  0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) )
10421042
10431043   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
10901090   ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) )
10911091   ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) )
10921092
1093   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1093   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
10941094   ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) )
10951095
10961096   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
11261126   ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) )
11271127   ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) )
11281128
1129   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1129   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
11301130   ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) )
11311131
11321132   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* delta-t samples */
r6428r6429
11621162   ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) )
11631163   ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) )
11641164
1165   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1165   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
11661166   ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) )
11671167
11681168   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* delta-t samples */
r6428r6429
11981198   ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) )
11991199   ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) )
12001200
1201   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1201   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
12021202   ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) )
12031203
12041204   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* delta-t samples */
src/mame/drivers/welltris.c
r6428r6429
397397static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
398398   ADDRESS_MAP_GLOBAL_MASK(0xff)
399399   AM_RANGE(0x00, 0x00) AM_WRITE(welltris_sh_bankswitch_w)
400   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
400   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
401401   AM_RANGE(0x10, 0x10) AM_READ(soundlatch_r)
402402   AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w)
403403ADDRESS_MAP_END
r6428r6429
743743   /* sound hardware */
744744   MDRV_SPEAKER_STANDARD_MONO("mono")
745745
746   MDRV_SOUND_ADD("ym", YM2610, 8000000)
746   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
747747   MDRV_SOUND_CONFIG(ym2610_config)
748748   MDRV_SOUND_ROUTE(0, "mono", 0.25)
749749   MDRV_SOUND_ROUTE(1, "mono", 0.75)
r6428r6429
783783   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
784784   ROM_LOAD( "lh534j11.126", 0x00000, 0x80000, CRC(bf85fb0d) SHA1(358f91bbff2d3260f83b5a0422c0d985d1735cef) )
785785
786   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
786   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
787787   ROM_LOAD( "lh534j09.123", 0x00000, 0x80000, CRC(6c2ce9a5) SHA1(a4011ecfb505191c9934ba374933cd11b331d55a) )
788788   ROM_LOAD( "lh534j10.124", 0x80000, 0x80000, CRC(e3682221) SHA1(3e1cda07cf451955dc473eabe007854e5148ae27) )
789789ROM_END
r6428r6429
810810   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
811811   ROM_LOAD( "lh534j11.126", 0x00000, 0x80000, CRC(bf85fb0d) SHA1(358f91bbff2d3260f83b5a0422c0d985d1735cef) )
812812
813   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
813   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
814814   ROM_LOAD( "lh534j09.123", 0x00000, 0x80000, CRC(6c2ce9a5) SHA1(a4011ecfb505191c9934ba374933cd11b331d55a) )
815815   ROM_LOAD( "lh534j10.124", 0x80000, 0x80000, CRC(e3682221) SHA1(3e1cda07cf451955dc473eabe007854e5148ae27) )
816816ROM_END
r6428r6429
839839   ROM_REGION( 0x040000, "ym.deltat", 0 ) /* sound samples */
840840   ROM_LOAD( "ic126.bin", 0x00000, 0x40000, CRC(7a92fbc9) SHA1(c13be1e84fc8e74c85d25d3357e078bc9e264682) )
841841
842   ROM_REGION( 0x140000, "ym", 0 ) /* sound samples */
842   ROM_REGION( 0x140000, "ymsnd", 0 ) /* sound samples */
843843   ROM_LOAD( "ic123.bin", 0x00000, 0x80000, CRC(ee4995cf) SHA1(1b47938ddc87709f8d118b86fe62602972c77ced) )
844844   ROM_LOAD( "ic124.bin", 0x80000, 0x40000, CRC(076f58c3) SHA1(bd78f39b85b2697e733896705355e21b8d2a141d) )
845845ROM_END
src/mame/drivers/taitoair.c
r6428r6429
399399   AM_RANGE(0x0000, 0x3fff) AM_ROM
400400   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
401401   AM_RANGE(0xc000, 0xdfff) AM_RAM
402   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
402   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
403403   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
404404   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
405405   AM_RANGE(0xe400, 0xe403) AM_WRITENOP      /* pan control */
r6428r6429
631631   /* sound hardware */
632632   MDRV_SPEAKER_STANDARD_MONO("mono")
633633
634   MDRV_SOUND_ADD("ym", YM2610, 8000000)
634   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
635635   MDRV_SOUND_CONFIG(airsys_ym2610_interface)
636636   MDRV_SOUND_ROUTE(0, "mono", 0.30)
637637   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
673673   ROM_LOAD16_BYTE( "b62-31.29",  0x0c0000, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) )
674674   ROM_LOAD16_BYTE( "b62-32.30",  0x0c0001, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) )
675675
676   ROM_REGION( 0xa0000, "ym", 0 )   /* ADPCM samples */
676   ROM_REGION( 0xa0000, "ymsnd", 0 )   /* ADPCM samples */
677677   ROM_LOAD( "b62-17.5",  0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) )
678678   ROM_LOAD( "b62-16.4",  0x20000, 0x20000, CRC(203a5c27) SHA1(f6fc9322dea8d82bfec3be3fdc8616dc6adf666e) )
679679   ROM_LOAD( "b62-15.3",  0x40000, 0x20000, CRC(e35ffe81) SHA1(f35afdd7cfd4c09907fb062beb5ae46c2286a381) )
r6428r6429
720720   ROM_LOAD16_BYTE( "c45-14.31", 0x0c0000, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) )
721721   ROM_LOAD16_BYTE( "c45-18.43", 0x0c0001, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) )
722722
723   ROM_REGION( 0xa0000, "ym", 0 )   /* ADPCM samples */
723   ROM_REGION( 0xa0000, "ymsnd", 0 )   /* ADPCM samples */
724724   ROM_LOAD( "c45-01.5",  0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) )
725725   ROM_LOAD( "c45-02.4",  0x20000, 0x20000, CRC(2fc0a88e) SHA1(6a635671fa2518f74015429ce580d7b7f00299ad) )
726726   ROM_LOAD( "c45-03.3",  0x40000, 0x20000, CRC(0e1e5b5f) SHA1(a53d5ba01825f825e31a014cb4808f59ef86f0c9) )
src/mame/drivers/tceptor.c
r6428r6429
200200   AM_RANGE(0x0100, 0x01ff) AM_RAM
201201   AM_RANGE(0x0200, 0x02ff) AM_RAM
202202   AM_RANGE(0x0300, 0x030f) AM_RAM
203   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
203   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
204204   AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE(3)
205205   AM_RANGE(0x3c01, 0x3c01) AM_WRITE(SMH_RAM)
206206   AM_RANGE(0x8000, 0xffff) AM_ROM
r6428r6429
382382   /* basic machine hardware */
383383   MDRV_CPU_ADD("maincpu", M6809, 49152000/32)
384384   MDRV_CPU_PROGRAM_MAP(m6809_map)
385   MDRV_CPU_VBLANK_INT("2d", m6809_vb_interrupt)
385   MDRV_CPU_VBLANK_INT("2dscreen", m6809_vb_interrupt)
386386
387387   MDRV_CPU_ADD("audiocpu", M65C02, 49152000/24)
388388   MDRV_CPU_PROGRAM_MAP(m6502_a_map)
r6428r6429
392392
393393   MDRV_CPU_ADD("sub", M68000, 49152000/4)
394394   MDRV_CPU_PROGRAM_MAP(m68k_map)
395   MDRV_CPU_VBLANK_INT("2d", m68k_vb_interrupt)
395   MDRV_CPU_VBLANK_INT("2dscreen", m68k_vb_interrupt)
396396
397397   MDRV_CPU_ADD("mcu", HD63701, 49152000/8)   /* or compatible 6808 with extra instructions */
398398   MDRV_CPU_PROGRAM_MAP(mcu_map)
399399   MDRV_CPU_IO_MAP(mcu_io_map)
400   MDRV_CPU_VBLANK_INT("2d", mcu_vb_interrupt)
400   MDRV_CPU_VBLANK_INT("2dscreen", mcu_vb_interrupt)
401401
402402   MDRV_QUANTUM_TIME(HZ(6000))
403403
r6428r6429
411411   MDRV_PALETTE_LENGTH(4096)
412412   MDRV_DEFAULT_LAYOUT(layout_horizont)
413413
414   MDRV_SCREEN_ADD("2d", RASTER)
414   MDRV_SCREEN_ADD("2dscreen", RASTER)
415415   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
416416   MDRV_SCREEN_REFRESH_RATE(60.606060)
417417   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
r6428r6429
441441   /* sound hardware */
442442   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
443443
444   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
444   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
445445   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
446446   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
447447
src/mame/drivers/aquarium.c
r6428r6429
165165
166166static ADDRESS_MAP_START( snd_portmap, ADDRESS_SPACE_IO, 8 )
167167   ADDRESS_MAP_GLOBAL_MASK(0xff)
168   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
168   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
169169   AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", aquarium_oki_r, aquarium_oki_w)
170170   AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r)
171171   AM_RANGE(0x06, 0x06) AM_WRITE(aquarium_snd_ack_w)
r6428r6429
377377   /* sound hardware */
378378   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
379379
380   MDRV_SOUND_ADD("ym", YM2151, 3579545)
380   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
381381   MDRV_SOUND_CONFIG(ym2151_config)
382382   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
383383   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/metro.c
r6428r6429
441441   {
442442      if (!BIT(data,2))
443443      {
444         const device_config *ym = devtag_get_device(space->machine, "ym");
444         const device_config *ym = devtag_get_device(space->machine, "ymsnd");
445445         ym2413_w(ym,BIT(data,1),porta);
446446      }
447447      portb = data;
r6428r6429
480480
481481   if (BIT(portb,6) && !BIT(data,6))   /* clock 1->0 */
482482   {
483      const device_config *ym = devtag_get_device(space->machine, "ym");
483      const device_config *ym = devtag_get_device(space->machine, "ymsnd");
484484      if (!BIT(data,2))
485485      {
486486         /* write */
r6428r6429
13151315   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
13161316   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                 // ? 5
13171317   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound
1318   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1318   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
13191319   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
13201320   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)      // EEPROM
13211321   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)
r6428r6429
13551355   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound bank
13561356   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)
13571357   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
1358   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1358   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
13591359   AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)      // EEPROM
13601360ADDRESS_MAP_END
13611361
r6428r6429
14211421   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
14221422   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                 // ? 5
14231423   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound
1424   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1424   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
14251425   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
14261426   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w)                  // EEPROM
14271427   AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r,dokyusp_eeprom_bit_w)   // EEPROM
r6428r6429
14631463   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)            // Samples Bank?
14641464   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                                 // ? 4
14651465   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Samples Bank
1466   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)               //
1466   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)               //
14671467   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
14681468ADDRESS_MAP_END
14691469
r6428r6429
16801680   ADDRESS_MAP_GLOBAL_MASK(0xff)
16811681   AM_RANGE(0x00, 0x00) AM_WRITE(blzntrnd_sh_bankswitch_w)
16821682   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_r) AM_WRITENOP
1683   AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
1683   AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym2610_r,ym2610_w)
16841684ADDRESS_MAP_END
16851685
16861686static ADDRESS_MAP_START( blzntrnd_map, ADDRESS_SPACE_PROGRAM, 16 )
r6428r6429
17511751   AM_RANGE(0x478888, 0x478889) AM_WRITENOP                                 // ??
17521752   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
17531753   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", mouja_sound_rombank_w)
1754   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1754   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
17551755   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0xffff)
17561756#if 0
17571757   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
r6428r6429
17791779   AM_RANGE( 0x470000, 0x47dfff ) AM_RAM
17801780
17811781   AM_RANGE( 0x500000, 0x500001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0xff00 )
1782   AM_RANGE( 0x580000, 0x580003 ) AM_DEVWRITE8( "ym", ym2413_w, 0xff00 )
1782   AM_RANGE( 0x580000, 0x580003 ) AM_DEVWRITE8( "ymsnd", ym2413_w, 0xff00 )
17831783
17841784   AM_RANGE( 0x700000, 0x71ffff ) AM_READWRITE( SMH_RAM, metro_vram_0_w ) AM_BASE( &metro_vram_0 )   // Layer 0
17851785   AM_RANGE( 0x720000, 0x73ffff ) AM_READWRITE( SMH_RAM, metro_vram_1_w ) AM_BASE( &metro_vram_1 )   // Layer 1
r6428r6429
35913591   /* sound hardware */
35923592   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
35933593
3594   MDRV_SOUND_ADD("ym", YM2151, 4000000)
3594   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
35953595   MDRV_SOUND_CONFIG(ym2151_config)
35963596   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
35973597   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
36393639   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
36403640   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
36413641
3642   MDRV_SOUND_ADD("ym", YM2413, 3579545)
3642   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
36433643   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
36443644   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
36453645MACHINE_DRIVER_END
r6428r6429
36813681   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
36823682   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
36833683
3684   MDRV_SOUND_ADD("ym", YM2413, 3579545)
3684   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
36853685   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
36863686   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
36873687MACHINE_DRIVER_END
r6428r6429
37233723   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
37243724   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
37253725
3726   MDRV_SOUND_ADD("ym", YM2413, 3579545)
3726   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
37273727   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
37283728   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
37293729MACHINE_DRIVER_END
r6428r6429
37653765   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
37663766   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
37673767
3768   MDRV_SOUND_ADD("ym", YM2413, 3579545)
3768   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
37693769   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
37703770   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
37713771MACHINE_DRIVER_END
r6428r6429
38063806   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
38073807   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
38083808
3809   MDRV_SOUND_ADD("ym", YM2413, 3579545)
3809   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
38103810   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
38113811   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
38123812MACHINE_DRIVER_END
r6428r6429
38423842   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
38433843   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
38443844
3845   MDRV_SOUND_ADD("ym", YM2413, 8000000)
3845   MDRV_SOUND_ADD("ymsnd", YM2413, 8000000)
38463846   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
38473847   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
38483848MACHINE_DRIVER_END
r6428r6429
38933893   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
38943894   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
38953895
3896   MDRV_SOUND_ADD("ym", YM2413, 8000000)
3896   MDRV_SOUND_ADD("ymsnd", YM2413, 8000000)
38973897   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
38983898   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
38993899MACHINE_DRIVER_END
r6428r6429
39313931   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
39323932   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
39333933
3934   MDRV_SOUND_ADD("ym", YM2413, 8000000)
3934   MDRV_SOUND_ADD("ymsnd", YM2413, 8000000)
39353935   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
39363936   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
39373937MACHINE_DRIVER_END
r6428r6429
39693969   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
39703970   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
39713971
3972   MDRV_SOUND_ADD("ym", YM2413, 8000000)
3972   MDRV_SOUND_ADD("ymsnd", YM2413, 8000000)
39733973   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
39743974   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
39753975MACHINE_DRIVER_END
r6428r6429
40114011   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
40124012   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
40134013
4014   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4014   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
40154015   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
40164016   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
40174017MACHINE_DRIVER_END
r6428r6429
40534053   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
40544054   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
40554055
4056   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4056   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
40574057   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
40584058   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
40594059MACHINE_DRIVER_END
r6428r6429
40904090   /* sound hardware */
40914091   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
40924092
4093   MDRV_SOUND_ADD("ym", YM2151, 4000000)
4093   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
40944094   MDRV_SOUND_CONFIG(ym2151_config)
40954095   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
40964096   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
41384138   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
41394139   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
41404140
4141   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4141   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
41424142   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
41434143   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
41444144MACHINE_DRIVER_END
r6428r6429
41804180   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
41814181   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
41824182
4183   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4183   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
41844184   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
41854185   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
41864186MACHINE_DRIVER_END
r6428r6429
42164216   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
42174217   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
42184218
4219   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4219   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
42204220   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
42214221   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
42224222MACHINE_DRIVER_END
r6428r6429
42524252   /* sound hardware */
42534253   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
42544254
4255   MDRV_SOUND_ADD("ym", YM2610, 8000000)
4255   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
42564256   MDRV_SOUND_CONFIG(blzntrnd_ym2610_interface)
42574257   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
42584258   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
42914291   /* sound hardware */
42924292   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
42934293
4294   MDRV_SOUND_ADD("ym", YM2610, 8000000)
4294   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
42954295   MDRV_SOUND_CONFIG(blzntrnd_ym2610_interface)
42964296   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
42974297   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
43624362   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
43634363   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
43644364
4365   MDRV_SOUND_ADD("ym", YM2413, XTAL_20MHz/5)
4365   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_20MHz/5)
43664366   MDRV_SOUND_ROUTE(0, "lspeaker", 0.90)
43674367   MDRV_SOUND_ROUTE(1, "rspeaker", 0.90)
43684368MACHINE_DRIVER_END
r6428r6429
46924692   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Samples */
46934693   ROM_LOAD( "rom8.bin", 0x000000, 0x080000, CRC(565a4086) SHA1(bd5780acfa5affa8705acbfccb0af16bac8ed298) )
46944694
4695   ROM_REGION( 0x400000, "ym", 0 )   /* ? YRW801-M ? */
4695   ROM_REGION( 0x400000, "ymsnd", 0 )   /* ? YRW801-M ? */
46964696   ROM_LOAD( "rom6.bin", 0x000000, 0x200000, CRC(8b8819fc) SHA1(5fd9d2b5088cb676c11d32cac7ba8c5c18e31b64) )
46974697   ROM_LOAD( "rom7.bin", 0x200000, 0x200000, CRC(0089a52b) SHA1(d643ac122d62557de27f06ba1413ef757a45a927) )
46984698ROM_END
r6428r6429
47764776   ROM_REGION( 0x200000, "ym.deltat", 0 )   /* Samples */
47774777   ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) )
47784778
4779   ROM_REGION( 0x400000, "ym", 0 )   /* ? YRW801-M ? */
4779   ROM_REGION( 0x400000, "ymsnd", 0 )   /* ? YRW801-M ? */
47804780   ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) )
47814781   /* ROM7.27 not populated?  */
47824782ROM_END
r6428r6429
48164816   ROM_REGION( 0x200000, "ym.deltat", 0 )   /* Samples */
48174817   ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, BAD_DUMP CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) )
48184818
4819   ROM_REGION( 0x400000, "ym", 0 )   /* ? YRW801-M ? */
4819   ROM_REGION( 0x400000, "ymsnd", 0 )   /* ? YRW801-M ? */
48204820   ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, BAD_DUMP CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) )
48214821   /* ROM7.27 not populated?  */
48224822ROM_END
src/mame/drivers/angelkds.c
r6428r6429
130130#include "cpu/z80/z80.h"
131131#include "machine/segacrpt.h"
132132#include "sound/2203intf.h"
133#include "angelkds.h"
133134
134135static READ8_HANDLER( angelkds_main_sound_r );
135136static WRITE8_HANDLER( angelkds_main_sound_w );
136137static READ8_HANDLER( angelkds_sub_sound_r );
137138static WRITE8_HANDLER( angelkds_sub_sound_w );
138139
139extern UINT8 *angelkds_txvideoram, *angelkds_bgtopvideoram, *angelkds_bgbotvideoram;
140
141WRITE8_HANDLER( angelkds_bgtopvideoram_w );
142WRITE8_HANDLER( angelkds_bgbotvideoram_w );
143WRITE8_HANDLER( angelkds_txvideoram_w );
144
145WRITE8_HANDLER( angelkds_bgtopbank_write );
146WRITE8_HANDLER( angelkds_bgtopscroll_write );
147WRITE8_HANDLER( angelkds_bgbotbank_write );
148WRITE8_HANDLER( angelkds_bgbotscroll_write );
149WRITE8_HANDLER( angelkds_txbank_write );
150
151WRITE8_HANDLER( angelkds_paletteram_w );
152WRITE8_HANDLER( angelkds_layer_ctrl_write );
153
154VIDEO_START( angelkds );
155VIDEO_UPDATE( angelkds );
156
157140/*** CPU Banking
158141
159142*/
r6428r6429
164147   UINT8 *RAM = memory_region(space->machine, "user1");
165148
166149   bankaddress = data & 0x0f;
167   memory_set_bankptr(space->machine, 1,&RAM[bankaddress*0x4000]);
150   memory_set_bankptr(space->machine, 1, &RAM[bankaddress * 0x4000]);
168151}
169152
170153
r6428r6429
214197Interesting note, each Bank in the 0x8000 - 0xbfff appears to
215198contain a level.
216199
217
218
219200*/
220201
221202static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
222203   AM_RANGE(0x0000, 0x7fff) AM_ROM
223204   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
224205   AM_RANGE(0xc000, 0xdfff) AM_RAM
225   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(angelkds_bgtopvideoram_w) AM_BASE(&angelkds_bgtopvideoram) /* Top Half of Screen */
226   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(angelkds_bgbotvideoram_w) AM_BASE(&angelkds_bgbotvideoram) /* Bottom Half of Screen */
227   AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(angelkds_txvideoram_w) AM_BASE(&angelkds_txvideoram)
228   AM_RANGE(0xec00, 0xecff) AM_RAM AM_BASE(&spriteram)
229   AM_RANGE(0xed00, 0xeeff) AM_RAM_WRITE(angelkds_paletteram_w) AM_BASE(&paletteram)
206   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(angelkds_bgtopvideoram_w) AM_BASE_MEMBER(angelkds_state, bgtopvideoram) /* Top Half of Screen */
207   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(angelkds_bgbotvideoram_w) AM_BASE_MEMBER(angelkds_state, bgbotvideoram) /* Bottom Half of Screen */
208   AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(angelkds_txvideoram_w) AM_BASE_MEMBER(angelkds_state, txvideoram)
209   AM_RANGE(0xec00, 0xecff) AM_RAM AM_BASE_MEMBER(angelkds_state, spriteram)
210   AM_RANGE(0xed00, 0xeeff) AM_RAM_WRITE(angelkds_paletteram_w) AM_BASE_MEMBER(angelkds_state, paletteram)
230211   AM_RANGE(0xef00, 0xefff) AM_RAM
231212   AM_RANGE(0xf000, 0xf000) AM_WRITE(angelkds_bgtopbank_write)
232213   AM_RANGE(0xf001, 0xf001) AM_WRITE(angelkds_bgtopscroll_write)
r6428r6429
512493
513494*/
514495
515static UINT8 angelkds_sound[4];
516static UINT8 angelkds_sound2[4];
517
518496static WRITE8_HANDLER( angelkds_main_sound_w )
519497{
520   angelkds_sound[offset]=data;
498   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
499   state->sound[offset] = data;
521500}
522501
523502static READ8_HANDLER( angelkds_main_sound_r )
524503{
525   return angelkds_sound2[offset];
504   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
505   return state->sound2[offset];
526506}
527507
528508static WRITE8_HANDLER( angelkds_sub_sound_w )
529509{
530   angelkds_sound2[offset]=data;
510   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
511   state->sound2[offset] = data;
531512}
532513
533514static READ8_HANDLER( angelkds_sub_sound_r )
534515{
535   return angelkds_sound[offset];
516   angelkds_state *state = (angelkds_state *)space->machine->driver_data;
517   return state->sound[offset];
536518}
537519
538520
r6428r6429
598580
599581static MACHINE_START( angelkds )
600582{
601    state_save_register_global_array(machine, angelkds_sound);
602    state_save_register_global_array(machine, angelkds_sound2);
583   angelkds_state *state = (angelkds_state *)machine->driver_data;
584
585   state_save_register_global(machine, state->layer_ctrl);
586   state_save_register_global(machine, state->txbank);
587   state_save_register_global(machine, state->bgbotbank);
588   state_save_register_global(machine, state->bgtopbank);
589   state_save_register_global_array(machine, state->sound);
590   state_save_register_global_array(machine, state->sound2);
603591}
604592
593static MACHINE_RESET( angelkds )
594{
595   angelkds_state *state = (angelkds_state *)machine->driver_data;
596   int i;
597
598   for (i = 0; i < 4; i++)
599   {
600      state->sound[i] = 0;
601      state->sound2[i] = 0;
602   }
603
604   state->layer_ctrl = 0;
605   state->txbank = 0;
606   state->bgbotbank = 0;
607   state->bgtopbank = 0;
608}
609
605610static MACHINE_DRIVER_START( angelkds )
611
612   /* driver data */
613   MDRV_DRIVER_DATA(angelkds_state)
614
606615   MDRV_CPU_ADD("maincpu", Z80, 8000000) /* 8MHz? 6 seems too slow? */
607616   MDRV_CPU_PROGRAM_MAP(main_map)
608617   MDRV_CPU_IO_MAP(main_portmap)
r6428r6429
612621   MDRV_CPU_PROGRAM_MAP(sub_map)
613622   MDRV_CPU_IO_MAP(sub_portmap)
614623
615    MDRV_MACHINE_START(angelkds)
624   MDRV_MACHINE_START(angelkds)
625   MDRV_MACHINE_RESET(angelkds)
616626
617627   MDRV_QUANTUM_TIME(HZ(6000))
618628
r6428r6429
743753ROM_END
744754
745755
746static DRIVER_INIT( spcpostn )   { spcpostn_decode(machine, "maincpu"); }
756static DRIVER_INIT( spcpostn )
757{
758   spcpostn_decode(machine, "maincpu");
759}
747760
748761
749GAME( 1988, angelkds, 0, angelkds, angelkds,        0,  ROT90,  "Sega / Nasco?", "Angel Kids (Japan)" , GAME_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */
750GAME( 1986, spcpostn, 0, angelkds, spcpostn, spcpostn,  ROT90,  "Sega / Nasco", "Space Position (Japan)" , GAME_SUPPORTS_SAVE) /* encrypted */
762GAME( 1988, angelkds, 0, angelkds, angelkds,        0,  ROT90,  "Sega / Nasco?", "Angel Kids (Japan)" ,     GAME_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */
763GAME( 1986, spcpostn, 0, angelkds, spcpostn, spcpostn,  ROT90,  "Sega / Nasco",  "Space Position (Japan)" , GAME_SUPPORTS_SAVE) /* encrypted */
src/mame/drivers/nightgal.c
r6428r6429
393393
394394static ADDRESS_MAP_START( nightgal_io, ADDRESS_SPACE_IO, 8 )
395395   ADDRESS_MAP_GLOBAL_MASK(0xff)
396   AM_RANGE(0x01,0x01) AM_DEVREAD("ay", ay8910_r) //ay read port
397   AM_RANGE(0x02,0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
396   AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_r) //ay read port
397   AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
398398//  AM_RANGE(0x10,0x10) AM_WRITE(output_w)
399399   AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
400400   AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA")
r6428r6429
433433
434434static ADDRESS_MAP_START( sexygal_io, ADDRESS_SPACE_IO, 8 )
435435   ADDRESS_MAP_GLOBAL_MASK(0xff)
436   AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
436   AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
437437//  AM_RANGE(0x10,0x10) AM_WRITE(output_w)
438438   AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
439439   AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA")
r6428r6429
722722   /* sound hardware */
723723   MDRV_SPEAKER_STANDARD_MONO("mono")
724724
725   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK / 8)
725   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK / 8)
726726   MDRV_SOUND_CONFIG(ay8910_config)
727727   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
728728MACHINE_DRIVER_END
r6428r6429
739739   MDRV_CPU_PROGRAM_MAP(sexygal_nsc_map)
740740   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
741741
742   MDRV_DEVICE_REMOVE("ay")
742   MDRV_DEVICE_REMOVE("aysnd")
743743
744   MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK / 8)
744   MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK / 8)
745745   MDRV_SOUND_CONFIG(ay8910_config)
746746   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
747747MACHINE_DRIVER_END
src/mame/drivers/maygayv1.c
r6428r6429
645645   AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
646646   AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000)
647647   AM_RANGE(0x820000, 0x820003) AM_READWRITE(maygay_8279_r, maygay_8279_w)
648   AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8( "ym", ym2413_w, 0xff00 )
648   AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8( "ymsnd", ym2413_w, 0xff00 )
649649   AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd)
650650   AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl)
651651   AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w)
r6428r6429
10251025
10261026   MDRV_SPEAKER_STANDARD_MONO("mono")
10271027
1028   MDRV_SOUND_ADD("ym",YM2413, MASTER_CLOCK / 4)
1028   MDRV_SOUND_ADD("ymsnd",YM2413, MASTER_CLOCK / 4)
10291029   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8)
10301030
10311031   MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK)
src/mame/drivers/surpratk.c
r6428r6429
9797   AM_RANGE(0x5fa0, 0x5faf) AM_READWRITE(K053244_r, K053244_w)
9898   AM_RANGE(0x5fb0, 0x5fbf) AM_WRITE(K053251_w)
9999   AM_RANGE(0x5fc0, 0x5fc0) AM_READWRITE(watchdog_reset_r, surpratk_5fc0_w)
100   AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ym", ym2151_w)
100   AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_w)
101101   AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w)
102102   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(K052109_r, K052109_w)
103103   AM_RANGE(0x8000, 0xffff) AM_ROM               /* ROM */
r6428r6429
202202   /* sound hardware */
203203   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
204204
205   MDRV_SOUND_ADD("ym", YM2151, 3579545)
205   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
206206   MDRV_SOUND_CONFIG(ym2151_config)
207207   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
208208   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/speedbal.c
r6428r6429
101101
102102static ADDRESS_MAP_START( sound_cpu_io_map, ADDRESS_SPACE_IO, 8 )
103103   ADDRESS_MAP_GLOBAL_MASK(0xff)
104   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
104   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
105105   AM_RANGE(0x40, 0x40) AM_WRITENOP
106106   AM_RANGE(0x80, 0x80) AM_WRITENOP
107107   AM_RANGE(0x82, 0x82) AM_WRITENOP
r6428r6429
257257   /* sound hardware */
258258   MDRV_SPEAKER_STANDARD_MONO("mono")
259259
260   MDRV_SOUND_ADD("ym", YM3812, 3600000)
260   MDRV_SOUND_ADD("ymsnd", YM3812, 3600000)
261261   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
262262MACHINE_DRIVER_END
263263
src/mame/drivers/jongkyo.c
r6428r6429
204204static ADDRESS_MAP_START( jongkyo_portmap, ADDRESS_SPACE_IO, 8 )
205205   ADDRESS_MAP_GLOBAL_MASK(0xff)
206206   // R 01 keyboard
207   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
208   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
207   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
208   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
209209
210210   AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE(jongkyo_coin_counter_w)
211211   AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE(mux_w)
r6428r6429
437437   MDRV_VIDEO_UPDATE(jongkyo)
438438
439439   MDRV_SPEAKER_STANDARD_MONO("mono")
440   MDRV_SOUND_ADD("ay", AY8910, JONGKYO_CLOCK/8)
440   MDRV_SOUND_ADD("aysnd", AY8910, JONGKYO_CLOCK/8)
441441   MDRV_SOUND_CONFIG(ay8910_config)
442442   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
443443MACHINE_DRIVER_END
src/mame/drivers/atarisy2.c
r6428r6429
631631
632632   /* a large number of signals are reset when this happens */
633633   atarigen_sound_io_reset(cputag_get_cpu(space->machine, "soundcpu"));
634   devtag_reset(space->machine, "ym");
634   devtag_reset(space->machine, "ymsnd");
635635   mixer_w(space, 0, 0);
636636   tms5220_data = 0;
637637   tms5220_data_strobe = 0;
r6428r6429
755755   AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r)
756756   AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w)
757757   AM_RANGE(0x1840, 0x1840) AM_MIRROR(0x278f) AM_READ(switch_6502_r)
758   AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
758   AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
759759   AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r)
760760   AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w)
761761   AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w)
r6428r6429
11701170
11711171   /* sound hardware */
11721172   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
1173   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4)
1173   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
11741174   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
11751175   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
11761176
src/mame/drivers/mjsister.c
r6428r6429
160160static ADDRESS_MAP_START( mjsister_io_map, ADDRESS_SPACE_IO, 8 )
161161   ADDRESS_MAP_GLOBAL_MASK(0xff)
162162   AM_RANGE(0x00, 0x01) AM_WRITENOP /* HD46505? */
163   AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay", ay8910_address_w)
164   AM_RANGE(0x11, 0x11) AM_DEVREAD("ay", ay8910_r)
165   AM_RANGE(0x12, 0x12) AM_DEVWRITE("ay", ay8910_data_w)
163   AM_RANGE(0x10, 0x10) AM_DEVWRITE("aysnd", ay8910_address_w)
164   AM_RANGE(0x11, 0x11) AM_DEVREAD("aysnd", ay8910_r)
165   AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_data_w)
166166   AM_RANGE(0x20, 0x20) AM_READ(mjsister_keys_r)
167167   AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0")
168168   AM_RANGE(0x30, 0x30) AM_WRITE(mjsister_banksel1_w)
r6428r6429
327327   /* sound hardware */
328328   MDRV_SPEAKER_STANDARD_MONO("mono")
329329
330   MDRV_SOUND_ADD("ay", AY8910, MCLK/8)
330   MDRV_SOUND_ADD("aysnd", AY8910, MCLK/8)
331331   MDRV_SOUND_CONFIG(ay8910_config)
332332   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
333333
src/mame/drivers/yunsung8.c
r6428r6429
158158   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(2),SMH_ROM      )   // Banked ROM
159159   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", yunsung8_sound_bankswitch_w   )   // ROM Bank
160160   AM_RANGE(0xe400, 0xe400) AM_WRITE(yunsung8_adpcm_w            )
161   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym3812_w      )
161   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_w      )
162162   AM_RANGE(0xf000, 0xf7ff) AM_RAM
163163   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r               )   // From Main CPU
164164ADDRESS_MAP_END
r6428r6429
534534   /* sound hardware */
535535   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
536536
537   MDRV_SOUND_ADD("ym", YM3812, 4000000)
537   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
538538   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
539539   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
540540
src/mame/drivers/m52.c
r6428r6429
4444
4545#include "driver.h"
4646#include "iremipt.h"
47#include "m52.h"
48#include "audio/irem.h"
47#include "includes/iremz80.h"
4948#include "cpu/z80/z80.h"
5049
5150
r6428r6429
6059
6160static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
6261   AM_RANGE(0x0000, 0x3fff) AM_ROM
63   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE(&videoram)
64   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE(&colorram)
62   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
63   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE_MEMBER(irem_z80_state, colorram)
6564   AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r)
66   AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
65   AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
6766   AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_WRITE(irem_sound_cmd_w)
6867   AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w)   /* + coin counters */
6968   AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0")
r6428r6429
7776
7877static ADDRESS_MAP_START( alpha1v_map, ADDRESS_SPACE_PROGRAM, 8 )
7978   AM_RANGE(0x0000, 0x6fff) AM_ROM
80   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE(&videoram)
81   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE(&colorram)
82   AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_SHARE(1) // bigger or mirrored?
79   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
80   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE_MEMBER(irem_z80_state, colorram)
81   AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size) AM_SHARE(1) // bigger or mirrored?
8382   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_WRITE(irem_sound_cmd_w)
8483   AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w)
8584   AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")
r6428r6429
380379 *
381380 *************************************/
382381
382static MACHINE_RESET( m52 )
383{
384   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
385
386   state->bg1xpos = 0;
387   state->bg1ypos = 0;
388   state->bg2xpos = 0;
389   state->bg2ypos = 0;
390   state->bgcontrol = 0;
391}
392
383393static MACHINE_DRIVER_START( m52 )
384394
395   /* driver data */
396   MDRV_DRIVER_DATA(irem_z80_state)
397
385398   /* basic machine hardware */
386399   MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6)
387400   MDRV_CPU_PROGRAM_MAP(main_map)
388401   MDRV_CPU_IO_MAP(main_portmap)
389402   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
390403
404   MDRV_MACHINE_RESET(m52)
405
391406   /* video hardware */
392407   MDRV_GFXDECODE(m52)
393408   MDRV_PALETTE_LENGTH(128*4+16*4+3*4)
r6428r6429
540555
541556GAME( 1982, mpatrol,  0,        m52,      mpatrol,  0, ROT0, "Irem", "Moon Patrol", GAME_SUPPORTS_SAVE )
542557GAME( 1982, mpatrolw, mpatrol,  m52,      mpatrolw, 0, ROT0, "Irem (Williams license)", "Moon Patrol (Williams)", GAME_SUPPORTS_SAVE )
543GAME( 1988, alpha1v,  0,        alpha1v,  alpha1v,  0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics / Kyle Hodgetts)", GAME_NOT_WORKING|GAME_NO_SOUND )
558GAME( 1988, alpha1v,  0,        alpha1v,  alpha1v,  0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics / Kyle Hodgetts)", GAME_NOT_WORKING|GAME_NO_SOUND|GAME_SUPPORTS_SAVE )
src/mame/drivers/onetwo.c
r6428r6429
136136
137137static ADDRESS_MAP_START( sound_cpu_io, ADDRESS_SPACE_IO, 8 )
138138   ADDRESS_MAP_GLOBAL_MASK(0xff)
139   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ym", ym3812_status_port_r, ym3812_control_port_w)
140   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ym", ym3812_write_port_w)
139   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_status_port_r, ym3812_control_port_w)
140   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_write_port_w)
141141   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
142142   AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_w)
143143ADDRESS_MAP_END
r6428r6429
304304   /* sound hardware */
305305   MDRV_SPEAKER_STANDARD_MONO("mono")
306306
307   MDRV_SOUND_ADD("ym", YM3812, MASTER_CLOCK)
307   MDRV_SOUND_ADD("ymsnd", YM3812, MASTER_CLOCK)
308308   MDRV_SOUND_CONFIG(ym3812_config)
309309   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
310310
src/mame/drivers/nbmj8891.c
r6428r6429
445445   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
446446   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
447447   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
448   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
448   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
449449   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
450450   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
451451   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
464464   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
465465   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
466466   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
467   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
467   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
468468   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
469469   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
470470   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
485485   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
486486//  AM_RANGE(0x50, 0x50) AM_WRITE(nb1413m3_nmi_clock_w)
487487   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
488   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
489   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
488   AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_r)
489   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_data_address_w)
490490   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) AM_WRITENOP
491491   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
492492   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
505505   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
506506   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
507507   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
508   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
508   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
509509   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
510510   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
511511   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
524524   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
525525   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
526526   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
527   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
527   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
528528   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
529529   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
530530   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
543543   AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w)
544544   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w)
545545   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
546   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
546   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
547547   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
548548   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
549549   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
562562   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w)
563563   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
564564   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
565   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
566   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
565   AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_r)
566   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_data_address_w)
567567   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
568568   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
569569   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
583583   AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w)
584584   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
585585   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
586   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
586   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
587587   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
588588   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
589589   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
602602   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
603603   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
604604   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
605   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
605   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
606606   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP
607607   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
608608   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
621621   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
622622   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
623623   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
624   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
624   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
625625   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
626626   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
627627   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
635635static ADDRESS_MAP_START( taiwanmb_io_map, ADDRESS_SPACE_IO, 8 )
636636   ADDRESS_MAP_GLOBAL_MASK(0xff)
637637   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
638   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
639   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
638   AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_r)
639   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_data_address_w)
640640   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP   // ?
641641   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
642642   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
26322632   /* sound hardware */
26332633   MDRV_SPEAKER_STANDARD_MONO("mono")
26342634
2635   MDRV_SOUND_ADD("fm", YM3812, 2500000)
2635   MDRV_SOUND_ADD("fmsnd", YM3812, 2500000)
26362636   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
26372637
26382638   MDRV_SOUND_ADD("dac", DAC, 0)
r6428r6429
26632663   MDRV_NVRAM_HANDLER(nb1413m3)
26642664
26652665   /* sound hardware */
2666   MDRV_SOUND_REPLACE("fm", AY8910, 1250000)
2666   MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000)
26672667   MDRV_SOUND_CONFIG(ay8910_config)
26682668   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
26692669MACHINE_DRIVER_END
r6428r6429
28742874   MDRV_VIDEO_START(nbmj8891_1layer)
28752875
28762876   /* sound hardware */
2877   MDRV_SOUND_REPLACE("fm", AY8910, 1250000)
2877   MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000)
28782878   MDRV_SOUND_CONFIG(ay8910_config)
28792879   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
28802880MACHINE_DRIVER_END
r6428r6429
28972897   MDRV_VIDEO_START(nbmj8891_1layer)
28982898
28992899   /* sound hardware */
2900   MDRV_SOUND_REPLACE("fm", AY8910, 1250000)
2900   MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000)
29012901   MDRV_SOUND_CONFIG(ay8910_config)
29022902   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
29032903MACHINE_DRIVER_END
src/mame/drivers/wc90b.c
r6428r6429
193193   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(3)
194194   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", adpcm_control_w)
195195   AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w)
196   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
196   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
197197   AM_RANGE(0xf000, 0xf7ff) AM_RAM
198198   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
199199ADDRESS_MAP_END
r6428r6429
408408   /* sound hardware */
409409   MDRV_SPEAKER_STANDARD_MONO("mono")
410410
411   MDRV_SOUND_ADD("ym", YM2203, YM2203_CLOCK)
411   MDRV_SOUND_ADD("ymsnd", YM2203, YM2203_CLOCK)
412412   MDRV_SOUND_CONFIG(ym2203_config)
413413   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
414414
src/mame/drivers/seta.c
r6428r6429
16011601
16021602static ADDRESS_MAP_START( downtown_map, ADDRESS_SPACE_PROGRAM, 16 )
16031603   AM_RANGE(0x000000, 0x09ffff) AM_ROM                        // ROM
1604   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1604   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
16051605   AM_RANGE(0x200000, 0x200001) AM_NOP                        // watchdog? (twineagl)
16061606   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // IRQ enable/acknowledge?
16071607   AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w)      // special tile banking to animate water in twineagl
r6428r6429
17651765static ADDRESS_MAP_START( atehate_map, ADDRESS_SPACE_PROGRAM, 16 )
17661766   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
17671767   AM_RANGE(0x900000, 0x9fffff) AM_RAM                        // RAM
1768   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1768   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
17691769   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ? watchdog ?
17701770   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? 0 (irq ack lev 2?)
17711771   AM_RANGE(0x500000, 0x500001) AM_WRITENOP                  // ? (end of lev 1: bit 4 goes 1,0,1)
r6428r6429
18061806   AM_RANGE(0xb04000, 0xb0ffff) AM_RAM                        // (jjsquawk)
18071807   AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
18081808   AM_RANGE(0xb84000, 0xb8ffff) AM_RAM                        // (jjsquawk)
1809   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1809   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
18101810   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
18111811   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
18121812   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
r6428r6429
18401840/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
18411841/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
18421842   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1843   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1843   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
18441844   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
18451845   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
18461846   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
r6428r6429
19181918/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
19191919/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
19201920   AM_RANGE(0xb00000, 0xb03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1921   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1921   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
19221922#if __uPD71054_TIMER
19231923   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)            // ?
19241924#else
r6428r6429
19501950   AM_RANGE(0xa0a000, 0xa0a607) AM_RAM AM_BASE(&spriteram16)      // RZ: Sprites Y
19511951// AM_RANGE(0xa80000, 0xa80001) AM_RAM                              // ? 0x4000
19521952   AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_BASE(&spriteram16_2)      // RZ: Sprites Code + X + Attr
1953   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1953   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
19541954#if __uPD71054_TIMER
19551955   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)            // ?
19561956#else
r6428r6429
19771977   //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r     )   // P1
19781978   AM_RANGE(0x8000f0, 0x8000f1) AM_RAM                        // NVRAM
19791979   AM_RANGE(0x800100, 0x8001ff) AM_RAM                        // NVRAM
1980   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1980   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
19811981   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
19821982   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
19831983/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
r6428r6429
20592059   AM_RANGE(0x800100, 0x8001ff) AM_RAM                        // NVRAM
20602060   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                  // ?
20612061   AM_RANGE(0x900002, 0x900003) AM_WRITE(keroppi_prize_w)         //
2062   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2062   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
20632063   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
20642064   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
20652065/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
r6428r6429
20892089   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
20902090   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
20912091   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
2092   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2092   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
20932093   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
20942094   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)   // Sprites Code + X + Attr
20952095/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM   // ? 0x4000
r6428r6429
21232123   AM_RANGE(0xa80000, 0xa80001) AM_RAM   // ? 0x4000
21242124   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
21252125   AM_RANGE(0xb04000, 0xb13fff) AM_RAM
2126   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2126   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
21272127   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP   //
21282128ADDRESS_MAP_END
21292129
r6428r6429
21362136   AM_RANGE(0x000000, 0x0bffff) AM_ROM                        // ROM
21372137   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                        // RAM (qzkklogy)
21382138   AM_RANGE(0xffc000, 0xffffff) AM_RAM                        // RAM (drgnunit,stg)
2139   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2139   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
21402140   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // Watchdog
21412141   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? IRQ Ack
21422142   AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
r6428r6429
22652265/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
22662266   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
22672267   AM_RANGE(0xb04000, 0xb13fff) AM_RAM                        //
2268   AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2268   AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
22692269ADDRESS_MAP_END
22702270
22712271
r6428r6429
23012301#else
23022302   AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP                  // ?
23032303#endif
2304   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2304   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
23052305ADDRESS_MAP_END
23062306
23072307/* almost identical to kamenrid */
r6428r6429
23292329#else
23302330   AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP                  // ?
23312331#endif
2332   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2332   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
23332333ADDRESS_MAP_END
23342334
23352335
r6428r6429
23742374   AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r)         // P1
23752375   AM_RANGE(0x8000f0, 0x8000f1) AM_RAM                        // NVRAM
23762376   AM_RANGE(0x800100, 0x8001ff) AM_RAM                        // NVRAM
2377   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2377   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
23782378   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
23792379   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
23802380/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
r6428r6429
24182418   AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
24192419   AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
24202420   AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2421   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2421   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
24222422#if __uPD71054_TIMER
24232423   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)   // ?
24242424#else
r6428r6429
24422442   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
24432443   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ? IRQ Ack
24442444   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2445   AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2445   AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
24462446   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
24472447   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
24482448/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
r6428r6429
25292529/**/AM_RANGE(0x900000, 0x900001) AM_RAM                        // ? 0x4000
25302530/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
25312531   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2532   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2532   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
25332533   AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r)         // mahjong panel
25342534   AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r)            // DSW
25352535ADDRESS_MAP_END
r6428r6429
25542554static ADDRESS_MAP_START( thunderl_map, ADDRESS_SPACE_PROGRAM, 16 )
25552555   AM_RANGE(0x000000, 0x00ffff) AM_ROM                        // ROM
25562556   AM_RANGE(0xffc000, 0xffffff) AM_RAM                        // RAM
2557   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2557   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
25582558   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ?
25592559   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ?
25602560   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w)   // Protection (not in wits)
r6428r6429
26402640   AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
26412641/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
26422642   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2643   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2643   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
26442644ADDRESS_MAP_END
26452645
26462646
r6428r6429
27092709   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
27102710   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
27112711   AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w)
2712   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2712   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)   // Sound
27132713   AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
27142714   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
27152715   AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
r6428r6429
27322732   AM_RANGE(0x620000, 0x620003) AM_WRITENOP   // protection
27332733   AM_RANGE(0x630000, 0x630003) AM_READ(seta_dsw_r)
27342734   AM_RANGE(0x640400, 0x640fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2735   AM_RANGE(0x650000, 0x650003) AM_DEVWRITE8("ym", ym3812_w, 0x00ff)
2735   AM_RANGE(0x650000, 0x650003) AM_DEVWRITE8("ymsnd", ym3812_w, 0x00ff)
27362736   AM_RANGE(0x658000, 0x658001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
27372737   AM_RANGE(0x670000, 0x670001) AM_READNOP      // watchdog?
27382738   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2) // VRAM 2
r6428r6429
27982798
27992799   AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
28002800
2801   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE( "x1", seta_sound_word_r, seta_sound_word_w      )   // Sound
2801   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE( "x1snd", seta_sound_word_r, seta_sound_word_w      )   // Sound
28022802
28032803   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
28042804   AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(SMH_RAM,seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0&1
r6428r6429
28602860
28612861   AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
28622862
2863   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE( "x1", seta_sound_word_r, seta_sound_word_w)   // Sound
2863   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE( "x1snd", seta_sound_word_r, seta_sound_word_w)   // Sound
28642864
28652865   AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_BASE(&seta_vctrl_0)   // VRAM 0&1 Ctrl
28662866   AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
r6428r6429
29972997}
29982998
29992999static ADDRESS_MAP_START( calibr50_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
3000   AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1", seta_sound_r,seta_sound_w)   // Sound
3000   AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", seta_sound_r,seta_sound_w)   // Sound
30013001   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r)            // From Main CPU
30023002   AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w)         // Bankswitching
30033003   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  // Banked ROM
r6428r6429
30333033static ADDRESS_MAP_START( utoukond_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
30343034   AM_RANGE(0x0000, 0xdfff) AM_ROM
30353035   AM_RANGE(0xe000, 0xefff) AM_RAM
3036   AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1", seta_sound_r,seta_sound_w)
3036   AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1snd", seta_sound_r,seta_sound_w)
30373037ADDRESS_MAP_END
30383038
30393039static ADDRESS_MAP_START( utoukond_sound_io_map, ADDRESS_SPACE_IO, 8 )
30403040   ADDRESS_MAP_GLOBAL_MASK(0xff)
3041   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
3041   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_r, ym3438_w)
30423042   AM_RANGE(0x80, 0x80) AM_WRITENOP //?
30433043   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
30443044ADDRESS_MAP_END
r6428r6429
50905090
50915091static INPUT_PORTS_START( stg )
50925092   PORT_START("P1") //Player 1 - $b00001.b
5093   JOY_TYPE1_2BUTTONS(1)
5093   JOY_TYPE1_3BUTTONS(1)
50945094
50955095   PORT_START("P2") //Player 2 - $b00003.b
5096   JOY_TYPE1_2BUTTONS(2)
5096   JOY_TYPE1_3BUTTONS(2)
50975097
50985098   PORT_START("COINS") //Coins - $b00005.b
50995099   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
r6428r6429
68726872   /* sound hardware */
68736873   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
68746874
6875   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
6875   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
68766876   MDRV_SOUND_CONFIG(seta_sound_intf)
68776877   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
68786878   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
69126912
69136913   /* sound hardware */
69146914   MDRV_SPEAKER_STANDARD_MONO("mono")
6915   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
6915   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
69166916   MDRV_SOUND_CONFIG(seta_sound_intf)
69176917   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
69186918MACHINE_DRIVER_END
r6428r6429
69736973   /* sound hardware */
69746974   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
69756975
6976   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
6976   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
69776977   MDRV_SOUND_CONFIG(seta_sound_intf2)
69786978   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
69796979   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
70197019
70207020   /* sound hardware */
70217021   MDRV_SPEAKER_STANDARD_MONO("mono")
7022   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7022   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
70237023   MDRV_SOUND_CONFIG(seta_sound_intf2)
70247024   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
70257025MACHINE_DRIVER_END
r6428r6429
70597059   /* sound hardware */
70607060   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
70617061
7062   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7062   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
70637063   MDRV_SOUND_CONFIG(seta_sound_intf)
70647064   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
70657065   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
70947094   /* sound hardware */
70957095   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
70967096
7097   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7097   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
70987098   MDRV_SOUND_CONFIG(seta_sound_intf)
70997099   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
71007100   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
71377137   /* sound hardware */
71387138   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
71397139
7140   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7140   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
71417141   MDRV_SOUND_CONFIG(seta_sound_intf)
71427142   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
71437143   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
71697169   /* sound hardware */
71707170   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
71717171
7172   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7172   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
71737173   MDRV_SOUND_CONFIG(seta_sound_intf)
71747174   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
71757175   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
72047204   /* sound hardware */
72057205   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
72067206
7207   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7207   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
72087208   MDRV_SOUND_CONFIG(seta_sound_intf)
72097209   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
72107210   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
72397239   /* sound hardware */
72407240   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
72417241
7242   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7242   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
72437243   MDRV_SOUND_CONFIG(seta_sound_intf)
72447244   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
72457245   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
72807280   /* sound hardware */
72817281   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
72827282
7283   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7283   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
72847284   MDRV_SOUND_CONFIG(seta_sound_intf)
72857285   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
72867286   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
73147314   /* sound hardware */
73157315   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
73167316
7317   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7317   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
73187318   MDRV_SOUND_CONFIG(seta_sound_intf)
73197319   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
73207320   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
73617361   /* sound hardware */
73627362   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
73637363
7364   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7364   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
73657365   MDRV_SOUND_CONFIG(seta_sound_intf)
73667366   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
73677367   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
73967396   /* sound hardware */
73977397   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
73987398
7399   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7399   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
74007400   MDRV_SOUND_CONFIG(seta_sound_intf)
74017401   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
74027402   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
74377437   /* sound hardware */
74387438   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
74397439
7440   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7440   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
74417441   MDRV_SOUND_CONFIG(seta_sound_intf)
74427442   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
74437443   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
74987498   /* sound hardware */
74997499   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
75007500
7501   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7501   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
75027502   MDRV_SOUND_CONFIG(seta_sound_intf)
75037503   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
75047504   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
75387538   /* sound hardware */
75397539   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
75407540
7541   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7541   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
75427542   MDRV_SOUND_CONFIG(seta_sound_intf)
75437543   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
75447544   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
75697569   /* sound hardware */
75707570   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
75717571
7572   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7572   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
75737573   MDRV_SOUND_CONFIG(seta_sound_intf)
75747574   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
75757575   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
76087608   /* sound hardware */
76097609   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
76107610
7611   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7611   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
76127612   MDRV_SOUND_CONFIG(seta_sound_intf)
76137613   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
76147614   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
76447644   /* sound hardware */
76457645   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
76467646
7647   MDRV_SOUND_ADD("x1", X1_010, 14318180)   /* 14.318180 MHz */
7647   MDRV_SOUND_ADD("x1snd", X1_010, 14318180)   /* 14.318180 MHz */
76487648   MDRV_SOUND_CONFIG(seta_sound_intf)
76497649   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
76507650   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
76817681   /* sound hardware */
76827682   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
76837683
7684   MDRV_SOUND_ADD("x1", X1_010, 14318180)   /* 14.318180 MHz */
7684   MDRV_SOUND_ADD("x1snd", X1_010, 14318180)   /* 14.318180 MHz */
76857685   MDRV_SOUND_CONFIG(seta_sound_intf)
76867686   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
76877687   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
77167716   /* sound hardware */
77177717   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
77187718
7719   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7719   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
77207720   MDRV_SOUND_CONFIG(seta_sound_intf)
77217721   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
77227722   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
77587758   /* sound hardware */
77597759   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
77607760
7761   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7761   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
77627762   MDRV_SOUND_CONFIG(seta_sound_intf)
77637763   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
77647764   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
78037803   /* sound hardware */
78047804   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
78057805
7806   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7806   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
78077807   MDRV_SOUND_CONFIG(seta_sound_intf)
78087808   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
78097809   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
78397839   /* sound hardware */
78407840   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
78417841
7842   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7842   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
78437843   MDRV_SOUND_CONFIG(seta_sound_intf)
78447844   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
78457845   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
79107910   /* sound hardware */
79117911   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
79127912
7913   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7913   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
79147914   MDRV_SOUND_CONFIG(seta_sound_intf)
79157915   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
79167916   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
79487948   /* sound hardware */
79497949   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
79507950
7951   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7951   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
79527952   MDRV_SOUND_CONFIG(seta_sound_intf)
79537953   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
79547954   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
79867986   /* sound hardware */
79877987   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
79887988
7989   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
7989   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
79907990   MDRV_SOUND_CONFIG(seta_sound_intf)
79917991   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
79927992   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
80508050   /* sound hardware */
80518051   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
80528052
8053   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
8053   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
80548054   MDRV_SOUND_CONFIG(seta_sound_intf)
80558055   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
80568056   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
80858085   /* sound hardware */
80868086   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
80878087
8088   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
8088   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
80898089   MDRV_SOUND_CONFIG(seta_sound_intf)
80908090   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
80918091   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
81248124   /* sound hardware */
81258125   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
81268126
8127   MDRV_SOUND_ADD("x1", X1_010, 16000000)
8127   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)
81288128   MDRV_SOUND_CONFIG(seta_sound_intf)
81298129   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
81308130   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
81318131
8132   MDRV_SOUND_ADD("ym", YM3438, 16000000/4)   /* 4 MHz */
8132   MDRV_SOUND_ADD("ymsnd", YM3438, 16000000/4)   /* 4 MHz */
81338133   MDRV_SOUND_CONFIG(utoukond_ym3438_intf)
81348134   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
81358135   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
r6428r6429
81728172   /* sound hardware */
81738173   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
81748174
8175   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
8175   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
81768176   MDRV_SOUND_CONFIG(seta_sound_intf)
81778177   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
81788178   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
82158215   /* sound hardware */
82168216   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
82178217
8218   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
8218   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
82198219   MDRV_SOUND_CONFIG(seta_sound_intf)
82208220   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
82218221   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
82498249   /* sound hardware */
82508250   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
82518251
8252   MDRV_SOUND_ADD("x1", X1_010, 16000000)   /* 16 MHz */
8252   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)   /* 16 MHz */
82538253   MDRV_SOUND_CONFIG(seta_sound_intf)
82548254   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
82558255   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
82948294   /* sound hardware */
82958295   MDRV_SPEAKER_STANDARD_MONO("mono")
82968296
8297   MDRV_SOUND_ADD("ym", YM3812, 16000000/4)   /* 4 MHz */
8297   MDRV_SOUND_ADD("ymsnd", YM3812, 16000000/4)   /* 4 MHz */
82988298   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
82998299
83008300   MDRV_SOUND_ADD("oki", OKIM6295, 1000000)   // clock?
r6428r6429
83888388   /* sound hardware */
83898389   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
83908390
8391   MDRV_SOUND_ADD("x1", X1_010, 16000000)
8391   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)
83928392   MDRV_SOUND_CONFIG(seta_sound_intf)
83938393   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
83948394   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
84788478   ROM_LOAD( "ua2-7",  0x100000, 0x080000, CRC(fce56907) SHA1(5d0d2d6dfdbadb21f1d61d84b8992ec0e527e18d) )
84798479   ROM_LOAD( "ua2-9",  0x180000, 0x080000, CRC(a451eae9) SHA1(c236c92d9ecf56f8d8f4a5ee493e3791be0d3db4) )
84808480
8481   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8481   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
84828482   ROM_LOAD( "ua2-11", 0x000000, 0x080000, CRC(624e6057) SHA1(0e8e4d4b6bc5febf5ca83eea92e3ed06f16e7df0) )
84838483   ROM_LOAD( "ua2-12", 0x080000, 0x080000, CRC(3068ff64) SHA1(7c06a48a99ebb9e7f3709f25bd0caa4c9d7a2688) )
84848484ROM_END
r6428r6429
85048504   ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) )
85058505   ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) )
85068506
8507   ROM_REGION( 0x080000, "x1", 0 )   /* Samples */
8507   ROM_REGION( 0x080000, "x1snd", 0 )   /* Samples */
85088508   ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) )
85098509ROM_END
85108510
r6428r6429
85298529   ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) )
85308530   ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) )
85318531
8532   ROM_REGION( 0x080000, "x1", 0 )   /* Samples */
8532   ROM_REGION( 0x080000, "x1snd", 0 )   /* Samples */
85338533   ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) )
85348534ROM_END
85358535
r6428r6429
85548554   ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) )
85558555   ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) )
85568556
8557   ROM_REGION( 0x080000, "x1", 0 )   /* Samples */
8557   ROM_REGION( 0x080000, "x1snd", 0 )   /* Samples */
85588558   ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) )
85598559ROM_END
85608560
r6428r6429
85798579   ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) )
85808580   ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) )
85818581
8582   ROM_REGION( 0x080000, "x1", 0 )   /* Samples */
8582   ROM_REGION( 0x080000, "x1snd", 0 )   /* Samples */
85838583   ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) )
85848584ROM_END
85858585
r6428r6429
86208620   ROM_LOAD16_BYTE( "ue1-022.prm", 0x000, 0x200, CRC(1a23129e) SHA1(110eb54ab83ecb8375164a5c96f522b2737c379c) )
86218621   ROM_LOAD16_BYTE( "ue1-023.prm", 0x001, 0x200, CRC(a13192a4) SHA1(86e312e0f7400b7fa08fbe8fced1eb95a32502ca) )
86228622
8623   ROM_REGION( 0x080000, "x1", 0 )   /* Samples */
8623   ROM_REGION( 0x080000, "x1snd", 0 )   /* Samples */
86248624   ROM_LOAD( "ue001005.132", 0x000000, 0x080000, CRC(c5fea37c) SHA1(af4f09dd36af06e50262f607ff14eedc33beffd2) )
86258625ROM_END
86268626
r6428r6429
86458645   ROM_LOAD( "uh001010.u3x", 0x000000, 0x080000, CRC(f986577a) SHA1(8f6c2fca271fed21a1c04e93c3f50dc41348ae30) )
86468646   ROM_LOAD( "uh001011.u50", 0x080000, 0x080000, CRC(08620052) SHA1(e2ab49dbabc139e6b276401340085ccab1ae3892) )
86478647
8648   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8648   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
86498649   ROM_LOAD( "uh001013.u60", 0x000000, 0x080000, CRC(09ec0df6) SHA1(57c68d05074ea4a1e133be2ce6e25c594f04a712) )
86508650   ROM_LOAD( "uh001012.u46", 0x080000, 0x080000, CRC(bb996547) SHA1(0c8f570ef4454b10a023e0c463001c22a8cf99cd) )
86518651ROM_END
r6428r6429
86748674   ROM_LOAD( "uk001.12", 0x100000, 0x080000, CRC(818a4085) SHA1(fd8b5658fc7f5fa6d3daebb4be17aeabd60c9028) )
86758675   ROM_LOAD( "uk001.13", 0x180000, 0x080000, CRC(771fa164) SHA1(a91214318808f991846a828f0e309c0ff430245e) )
86768676
8677   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8677   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
86788678   ROM_LOAD( "uk001.15", 0x000000, 0x080000, CRC(ce9df5dd) SHA1(91d879b774b5b367adb5bd511fda827bc0bae0a9) )
86798679   ROM_LOAD( "uk001.14", 0x080000, 0x080000, CRC(016b844a) SHA1(1fe091233746ced358292014393896af730f5940) )
86808680ROM_END
r6428r6429
87058705   ROM_LOAD( "up001012", 0x100000, 0x080000, CRC(fed2c5f9) SHA1(81f0f19a500b665c937f5431000ebde7abd97c30) )
87068706   ROM_LOAD( "up001013", 0x180000, 0x080000, CRC(adabf9ea) SHA1(db28e4e565e567a97a6b05a4803a55a403e24a0e) )
87078707
8708   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8708   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
87098709   ROM_LOAD( "up001015", 0x000000, 0x080000, CRC(2e20e39f) SHA1(6f8bd4a76ed5c2150015698e7a98044d060157be) )
87108710   ROM_LOAD( "up001014", 0x080000, 0x080000, CRC(fca6315e) SHA1(cef2385ec43f8b7a2d655b42c18ef44e46ff7364) )
87118711ROM_END
r6428r6429
87368736   ROM_LOAD( "scr-3e.bin",  0x0c0000, 0x020000, CRC(1592b8c2) SHA1(d337de280c5ea3704dec9baa04c45e1c837924a9) )
87378737   ROM_LOAD( "scr-4e.bin",  0x0e0000, 0x020000, CRC(8201681c) SHA1(7784a68828d728107b0228bb3568129c543cbf40) )
87388738
8739   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8739   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
87408740   ROM_LOAD( "snd-1.bin", 0x000000, 0x020000, CRC(8f47bd0d) SHA1(c55e22ac4294931cfb72ac88a2128891d9f8ee93) )
87418741   ROM_LOAD( "snd-2.bin", 0x020000, 0x020000, CRC(65c40ef5) SHA1(726b46144e2216d17b0828abad2f5e7c2305c174) )
87428742   ROM_LOAD( "snd-3.bin", 0x040000, 0x020000, CRC(71fbd54e) SHA1(bdaf7ecf1c79c6c8fc82d959186ca2f3304729c8) )
r6428r6429
87588758   ROM_LOAD16_BYTE( "un001006.4l", 0x040000, 0x020000, CRC(98a980d4) SHA1(ab2c1ed83bccffabfacc8a185d1fbc3e8aaf210d) )
87598759   ROM_LOAD16_BYTE( "un001005.2l", 0x040001, 0x020000, CRC(6f2ce3c0) SHA1(8086b44c7025bc0bffff75cc6c6c7846cc56e8d0) )
87608760
8761   ROM_REGION( 0x40000, "x1", 0 )   /* Samples */
8761   ROM_REGION( 0x40000, "x1snd", 0 )   /* Samples */
87628762   ROM_LOAD( "un001004.12a", 0x000000, 0x020000, CRC(a15ff938) SHA1(fdfdf73e85d89a39cfc5b3c3048a64178200f942) )
87638763   ROM_LOAD( "un001003.10a", 0x020000, 0x020000, CRC(3f4b9e55) SHA1(3cecf89ae6a056622affcddec9e10be08761e56d) )
87648764ROM_END
r6428r6429
87748774   ROM_LOAD16_BYTE( "t15", 0x040000, 0x020000, CRC(b97a7b56) SHA1(c08d3586d489947af21f3493356e3a88d79746e8) )
87758775   ROM_LOAD16_BYTE( "t14", 0x040001, 0x020000, CRC(79c707be) SHA1(f67fa40c8f6ab0fbce44997fdfbf699fea1f0df6) )
87768776
8777   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8777   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
87788778   ROM_LOAD( "r28", 0x000000, 0x080000, CRC(a043615d) SHA1(e483fa9fd8e922578a9d7b6ced0750643089ca78) )
87798779   ROM_LOAD( "r27", 0x080000, 0x080000, CRC(cb8425a3) SHA1(655afa295fbe99acc79c4004f03ed832560cff5b) )
87808780ROM_END
r6428r6429
88188818   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
88198819   ROM_LOAD( "us001008.u68",  0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
88208820
8821   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8821   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
88228822   ROM_LOAD16_WORD_SWAP( "us001009.u70",  0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) )
88238823ROM_END
88248824
r6428r6429
88438843   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
88448844   ROM_LOAD( "us001008.u68",  0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
88458845
8846   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8846   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
88478847   ROM_LOAD16_WORD_SWAP( "us001009.u70",  0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) )
88488848ROM_END
88498849
r6428r6429
88628862   ROM_LOAD( "att01008.u39", 0x000000, 0x080000, CRC(20c47457) SHA1(53ddf8c076aa35fb87edc739bc9e9612a5a1526b) ) // FIRST AND SECOND HALF IDENTICAL
88638863   ROM_LOAD( "att01007.u42", 0x080000, 0x080000, CRC(ac975544) SHA1(5cdd2c7aada7179d4bdaf8578134c0ef672a2704) ) // FIRST AND SECOND HALF IDENTICAL
88648864
8865   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8865   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
88668866   ROM_LOAD( "att01009.u47", 0x000000, 0x080000, CRC(4276b58d) SHA1(a2e77dc3295791520c6cb25dea4e910b5a7bc137) )
88678867   ROM_LOAD( "att01010.u55", 0x080000, 0x080000, CRC(fffb2f53) SHA1(0aacb24437e9a6874850313163922d834da27611) )
88688868ROM_END
r6428r6429
88888888   ROM_LOAD( "ux001012.068",  0x040000, 0x080000, CRC(f29959f6) SHA1(edccea3d0bf972a07edd6339e18792d089033bff) )
88898889
88908890   /* The c0000-fffff region is bankswitched */
8891   ROM_REGION( 0x240000, "x1", 0 )   /* Samples */
8891   ROM_REGION( 0x240000, "x1snd", 0 )   /* Samples */
88928892   ROM_LOAD( "ux001013.069",  0x000000, 0x0c0000, CRC(5cd273cd) SHA1(602e1f10454e2b1c941f2e6983872bb9ca77a542) )
88938893   // skip c0000-fffff (banked region)
88948894   ROM_CONTINUE(              0x100000, 0x040000  )
r6428r6429
89298929   ROM_LOAD( "v2-3.bin",  0x0a0000, 0x020000, CRC(80ad0c3b) SHA1(00fcbcf7805784d7298b92136e7f256d65029c44) )
89308930
89318931   /* The c0000-fffff region is bankswitched */
8932   ROM_REGION( 0x240000, "x1", 0 )   /* Samples */
8932   ROM_REGION( 0x240000, "x1snd", 0 )   /* Samples */
89338933   ROM_LOAD( "s-0.bin",  0x000000, 0x020000, CRC(a5fde408) SHA1(89efcd37ef6c5b313169d74a962a7c074a09b12a) )
89348934   ROM_CONTINUE(         0x140000, 0x020000  )
89358935   ROM_LOAD( "s-1.bin",  0x020000, 0x020000, CRC(3083f9c4) SHA1(f5d2297c3d680eb1f128fa42a3a7f61badb9853a) )
r6428r6429
89578957   ROM_LOAD( "bl-chr-0.j3",  0x000000, 0x080000, CRC(a33300ca) SHA1(b0a7ccb77c3e8e33c12b83e254924f30209a4c2c) )
89588958   ROM_LOAD( "bl-chr-1.l3",  0x080000, 0x080000, CRC(563de808) SHA1(40b2f9f4a4cb1a019f6419572ee21d66dda7d4af) )
89598959
8960   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8960   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
89618961   ROM_LOAD( "bl-snd-0.a13",  0x000000, 0x080000, CRC(a92dabaf) SHA1(610c1dc0467753dfddaa4b27bc40cb118b0bc7a3) )
89628962   ROM_RELOAD(                0x080000, 0x080000  )
89638963ROM_END
r6428r6429
89778977   ROM_LOAD( "t2709u42.u39", 0x000000, 0x080000, CRC(194d5704) SHA1(ab2833f7427d0608850c158b813bc49935ac7d6d) )
89788978   ROM_LOAD( "t2709u39.u42", 0x080000, 0x080000, CRC(6f95a76d) SHA1(925f5880fb5153c1215d1f5ee1eff5b53a84abea) )
89798979
8980   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8980   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
89818981   ROM_LOAD( "t2709u47.u47", 0x000000, 0x080000, CRC(0ebdad40) SHA1(6558eeaac76d98d91b0be6faa78f531f1e3b9f84) )
89828982   ROM_LOAD( "t2709u55.u55", 0x080000, 0x080000, CRC(43960c68) SHA1(9a1901b65f989aa57ab8736ef0be3bac492c081c) )
89838983ROM_END
r6428r6429
89918991   ROM_LOAD( "bp-u-002.u2", 0x000000, 0x080000, CRC(936cbaaa) SHA1(f7932ee310eb792b2776ae8a9d29e1a492761b11) )
89928992   ROM_LOAD( "bp-u-001.u1", 0x080000, 0x080000, CRC(87813c48) SHA1(7ec9b08fe0490d277c531e2b6394862df4d5678d) )
89938993
8994   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
8994   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
89958995   ROM_LOAD( "uw003.u13", 0x000000, 0x100000, CRC(e2f718eb) SHA1(fd085b68f76c8778816a1b7d47783b9dc20bff12) )
89968996ROM_END
89978997
r6428r6429
90119011   ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
90129012   ROM_LOAD( "uy001010.68",  0x000000, 0x100000, CRC(bdbcdf03) SHA1(857f541697f76086ac6c761a3505678a3d3499df) ) // FIRST AND SECOND HALF IDENTICAL
90139013
9014   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9014   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
90159015   ROM_LOAD( "uy001011.70",  0x000000, 0x100000, CRC(bd845f55) SHA1(345b79cfcd8c924d6ba365814286e518438f10bc) ) // uy001017 + uy001018
90169016ROM_END
90179017
r6428r6429
90239023   ROM_REGION( 0x200000, "gfx1", 0 )   /* Sprites */
90249024   ROM_LOAD( "fs001003.gfx", 0x000000, 0x200000, CRC(8b17e431) SHA1(643fc62d5bad9941630ab621ecb3c69ded9d4536) )
90259025
9026   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9026   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
90279027   ROM_LOAD( "fs001004.pcm", 0x000000, 0x100000, CRC(f9344ce5) SHA1(cffbc235f3a8e9a5004e671d924affd321ec9eed) )
90289028ROM_END
90299029
r6428r6429
90429042   ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */
90439043   ROM_LOAD( "fg1-006",  0x000000, 0x200000, CRC(2052c39a) SHA1(83a444a76e68aa711b0e25a5aa963ca876a6357e) )
90449044
9045   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9045   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
90469046   ROM_LOAD( "fg1-007",  0x000000, 0x100000, CRC(4a2fe9e0) SHA1(e55b6f301f842ff5d3c7a0041856695ac1d8a78f) )
90479047ROM_END
90489048
r6428r6429
90619061   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
90629062   ROM_LOAD( "fa001005.u24",  0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) )
90639063
9064   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9064   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
90659065   ROM_LOAD( "fa001004.u26",  0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
90669066ROM_END
90679067
r6428r6429
90809080   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
90819081   ROM_LOAD( "fa001005.u24",  0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) )
90829082
9083   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9083   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
90849084   ROM_LOAD( "fa001004.u26",  0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
90859085ROM_END
90869086
r6428r6429
91039103   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
91049104   ROM_LOAD( "ss1u25.v10",  0x000000, 0x080000, CRC(56840728) SHA1(db61539fd84f0de35ee2077238ba3646c4960cc6) )
91059105
9106   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9106   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
91079107   ROM_LOAD( "ss1u26.v10", 0x000000, 0x080000, CRC(d452336b) SHA1(d3bf3cb383c40911758a60546f121c48087868e3) )
91089108   ROM_LOAD( "ss1u27.v10", 0x080000, 0x080000, CRC(17fe921d) SHA1(7fc176b8eefad4f2b8532bfe62e7852d2be185ca) )
91099109ROM_END
r6428r6429
91469146   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 1 */
91479147   ROM_LOAD( "fn001005.104", 0x000000, 0x200000, CRC(95726a63) SHA1(e53ffc2815c4858bbfb5ff452c581bccb41854c9) )
91489148
9149   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9149   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
91509150   ROM_LOAD( "fn001006.105", 0x000000, 0x100000, CRC(83f201e6) SHA1(536e74788ad0e07451300a1ad3b127bc9d2d9063) )
91519151ROM_END
91529152
r6428r6429
91659165   ROM_REGION( 0x080000, "gfx3", 0 )   /* Layer 2 */
91669166   ROM_LOAD( "u68.bin",  0x000000, 0x080000, CRC(25c0c483) SHA1(2e705e7f0c66c3bc73e78ffb526606ab8be61d99) )
91679167
9168   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9168   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
91699169   ROM_LOAD( "u69.bin",  0x000000, 0x080000, CRC(957ecd41) SHA1(3b37ba44b8b8f0f0de41c8c26c3dfdb391ba572c) )
91709170   ROM_LOAD( "u70.bin",  0x080000, 0x080000, CRC(8d756fdf) SHA1(d66712a6aa19252f2c915ac66fc27df031fa9512) )
91719171ROM_END
r6428r6429
91939193   ROM_LOAD       ( "jj-rom13",    0x080000, 0x080000, CRC(51e29871) SHA1(9d33283bd9a3f57602a55cfc9fafa49edd0be8c5) )
91949194   ROM_LOAD16_BYTE( "jj-rom4.040", 0x100000, 0x080000, CRC(a235488e) SHA1(a45d02a4451defbef7fbdab15671955fab8ed76b) )
91959195
9196   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9196   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
91979197   ROM_LOAD( "jj-rom5.040", 0x000000, 0x080000, CRC(d99f2879) SHA1(66e83a6bc9093d19c72bd8ef1ec0523cfe218250) )
91989198   ROM_LOAD( "jj-rom6.040", 0x080000, 0x080000, CRC(9df1e478) SHA1(f41b55821187b417ad09e4a1f439c01a107d2674) )
91999199ROM_END
r6428r6429
92219221   ROM_COPY( "gfxtemp", 0x300000, 0x100000, 0x100000 )
92229222
92239223
9224   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9224   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
92259225   ROM_LOAD( "1", 0x000000, 0x100000, CRC(181a55b8) SHA1(6fa404f85bad93cc15e80feb61d19bed84602b82) ) /* jj-rom5.040 + jj-rom6.040 from jjsquawk */
92269226ROM_END
92279227
r6428r6429
92429242   ROM_REGION( 0x40000, "gfx3", 0 )   /* Layer 2 */
92439243   ROM_COPY( "user1", 0x040000, 0x000000, 0x040000 )
92449244
9245   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9245   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
92469246   ROM_LOAD( "fj001008.26", 0x000000, 0x100000, CRC(45e2b329) SHA1(8526afae1aa9178570c906eb96438f174d174f4d) )
92479247ROM_END
92489248
r6428r6429
92619261   ROM_REGION( 0x100000, "gfx3", 0 )   /* Layer 2 */
92629262   ROM_LOAD( "u68.bin",  0x000000, 0x100000, CRC(c17aad22) SHA1(eabbae2142cad3eef6a94d542ea03221c8228e94) )
92639263
9264   ROM_REGION( 0x240000, "x1", 0 )   /* Samples */
9264   ROM_REGION( 0x240000, "x1snd", 0 )   /* Samples */
92659265   ROM_LOAD( "u70.bin",  0x000000, 0x0c0000, CRC(dfdb67a3) SHA1(0fed6fb498dcfc1276facd0ecd2dfde45ff671f2) )
92669266   // skip c0000-fffff (banked region)
92679267   ROM_CONTINUE(         0x100000, 0x040000  )
r6428r6429
92769276   ROM_REGION( 0x080000, "gfx1", 0 )   /* Sprites */
92779277   ROM_LOAD( "fp001003.bin", 0x000000, 0x080000, CRC(0f904421) SHA1(de5810746cfab1a4a7d1b055b1a97bc7fbc173dd) )
92789278
9279   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9279   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
92809280   ROM_LOAD( "fp001006.bin", 0x000000, 0x080000, CRC(96cf395d) SHA1(877b291598e3a42e5003b2f50a16d162348ce72d) )
92819281   ROM_LOAD( "fp001005.bin", 0x080000, 0x080000, CRC(65b5fe9a) SHA1(35605be00c7c455551d18386fcb5ad013aa2907e) )
92829282ROM_END
r6428r6429
92909290   ROM_LOAD( "fv001.003", 0x000000, 0x080000, CRC(7de22749) SHA1(933a11f2d45667348b136d72806fc2e2f6f8d944) )
92919291   ROM_LOAD( "fv001.004", 0x080000, 0x080000, CRC(c7d2fe32) SHA1(37291fa78c28be274e1240e081ea253ebe487e5c) )
92929292
9293   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9293   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
92949294   ROM_LOAD( "fv001.005", 0x000000, 0x080000, CRC(5e206062) SHA1(e47cfb6947df178f3547dfe61907571bcb84e4ac) )
92959295   ROM_LOAD( "fv001.006", 0x080000, 0x080000, CRC(572a15e7) SHA1(b6a3e99e14a473b78ff48d1a46b20a0862d128e9) )
92969296ROM_END
r6428r6429
93089308   ROM_LOAD( "orbs.u12",  0x100000, 0x080000, CRC(b8c352c2) SHA1(7d6fd1425d9d5cf6a14a1ddceba0ad10e472dfa5) )
93099309   ROM_LOAD( "orbs.u11",  0x180000, 0x080000, CRC(58cb38ba) SHA1(1c6c5f7ccb9c81b71bc1cbad080799b97962f262) )
93109310
9311   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9311   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
93129312   ROM_LOAD( "orbs.u15",  0x000000, 0x080000, CRC(bc0e9fe3) SHA1(758a44d07d59af8bbc87602df25dfcdc6cb8d9b3) )
93139313   ROM_LOAD( "orbs.u16",  0x080000, 0x080000, CRC(aecd8373) SHA1(5620bcb281a9ea4920cfe81d163827013289c5bf) )
93149314ROM_END
r6428r6429
93249324   ROM_LOAD( "ft-001-005.u12",  0x100000, 0x080000, CRC(de6432a8) SHA1(afee9b29e0b3db4815fc29456044532aee03597e) )
93259325   ROM_LOAD( "ft-001-006.u11",  0x180000, 0x080000, CRC(9c500eae) SHA1(3448adef04c9ad2e0b39a283e4eb9c9bac7d4967) )
93269326
9327   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9327   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
93289328   ROM_LOAD( "ft-001-007.u15",  0x000000, 0x080000, CRC(c98dacf0) SHA1(b508433e2383af1e8bd5fda253c9925c48443490) )
93299329   ROM_LOAD( "ft-001-008.u16",  0x080000, 0x080000, CRC(b9c4b637) SHA1(82977d10de1048f71525bab5431b031cca510114) )
93309330ROM_END
r6428r6429
93449344   ROM_REGION( 0x200000, "gfx3", 0 )   /* Layer 2 */
93459345   ROM_LOAD( "fw001006.152",  0x000000, 0x200000, CRC(d00e8ddd) SHA1(e13692034afec1a0e86d19abfb9efa518b374147) )   // FIRST AND SECOND HALF IDENTICAL
93469346
9347   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9347   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
93489348   ROM_LOAD( "fw001007.026",  0x080000, 0x080000, CRC(16d84d7a) SHA1(fdc13776ba1ec9c48a33a9f2dfe8a0e55c54d89e) )   // swapped halves
93499349   ROM_CONTINUE(              0x000000, 0x080000  )
93509350ROM_END
r6428r6429
93709370   ROM_LOAD       ( "bpgh-012.u68", 0x000000, 0x200000, CRC(edfda595) SHA1(5942181430d59c0c303cd1cbe753910c26c109a2) )
93719371   ROM_LOAD16_BYTE( "bpgh-011.u67", 0x200000, 0x100000, CRC(49aff270) SHA1(de25209e520cd8747042078440ee20866097d0cb) )
93729372
9373   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9373   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
93749374   ROM_LOAD( "bpgh-013.u70",  0x080000, 0x080000, CRC(0fa5d503) SHA1(fd7a80cd25c23e737cc2c3d11de2291e22313b58) )   // swapped halves
93759375   ROM_CONTINUE(              0x000000, 0x080000  )
93769376ROM_END
r6428r6429
93909390   ROM_REGION( 0x100, "gfx3", ROMREGION_ERASE )   /* Layer 2 */
93919391   /* Unused */
93929392
9393   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9393   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
93949394   ROM_LOAD( "001-006.bin",   0x080000, 0x080000, CRC(ecfac767) SHA1(3d05bdb2c2a8c7eb5fa77b0c4482f98d3947c6d6) )
93959395   ROM_CONTINUE(              0x000000, 0x080000  )
93969396ROM_END
r6428r6429
94139413   ROM_LOAD       ( "fy001010.68", 0x000000, 0x200000, CRC(8b40ed7a) SHA1(05fcd7947a8419cab5ed2305fba9a671911e4850) )
94149414   ROM_LOAD16_BYTE( "fy001009.67", 0x200000, 0x100000, CRC(6bcca641) SHA1(49c9106e6f23e25e5b5917af11fc48d34457c61a) )
94159415
9416   ROM_REGION( 0x480000, "x1", 0 )   /* Samples */
9416   ROM_REGION( 0x480000, "x1snd", 0 )   /* Samples */
94179417   ROM_LOAD( "fy001012.b",  0x000000, 0x080000, CRC(fd30e102) SHA1(ae02f94f69aa301b0c37921ca1117e3ad20467b5) )
94189418   // skip 80000-fffff (banked region)
94199419   ROM_CONTINUE(            0x100000, 0x180000  )
r6428r6429
94419441   ROM_COPY( "user1", 0x100000, 0x000000, 0x100000 )
94429442   ROM_COPY( "user1", 0x300000, 0x100000, 0x100000 )
94439443
9444   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9444   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
94459445   ROM_LOAD( "fq001007.26", 0x000000, 0x100000, CRC(e4b33c13) SHA1(c4f9532de7a09c80f5a74c3a386e99a0f546846f) )
94469446ROM_END
94479447
r6428r6429
94669466   ROM_LOAD( "93uta07.68",  0x000000, 0x100000, CRC(67bdd036) SHA1(527b6a67e7a62263bee738dc82d6ff289ab54853) )
94679467   ROM_LOAD( "93uta06.67",  0x100000, 0x100000, CRC(294c26e4) SHA1(459ec7f8c8db4f1e3906d5db240298405bda991c) )
94689468
9469   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9469   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
94709470   ROM_LOAD( "93uta08.69", 0x000000, 0x100000, CRC(3d50bbcd) SHA1(e9b78d08466e1f9b42f11999bb53b6deceb81a12) )
94719471ROM_END
94729472
r6428r6429
94799479   ROM_LOAD( "bp923003.u15", 0x00000, 0x80000, CRC(91ca98a1) SHA1(b02b362e3a6118f52d9e1a262ca11aecef887b00) )
94809480   ROM_LOAD( "bp923004.u9",  0x80000, 0x80000, CRC(15c678e3) SHA1(8c0fa41a1f4e7b4e1c90faaeec7f6c910cc3ad0b) )
94819481
9482   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9482   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
94839483   ROM_LOAD( "bp923005.u4", 0x000000, 0x100000, CRC(7c0e37be) SHA1(5d5779de948f986971a82db2a5a4302044c3257a) )
94849484ROM_END
94859485
r6428r6429
94929492   ROM_LOAD( "ut2-001-004.5j",  0x000000, 0x080000, CRC(fdc47b26) SHA1(0de51bcf67b909ac9578f0d1b14af8a4c758aacf) )
94939493   ROM_LOAD( "ut2-001-005.5l",  0x080000, 0x080000, CRC(076f94a2) SHA1(94b4b41a497dea1b6db5396bd7cd81ebcb217735) )
94949494
9495   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9495   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
94969496   ROM_LOAD( "ut2-001-003.12a",  0x000000, 0x080000, CRC(900219a9) SHA1(3260a900df25beba597bf947a9fbb6f7392827d7) )
94979497   ROM_RELOAD(                   0x080000, 0x080000  )
94989498ROM_END
r6428r6429
95529552   ROM_LOAD16_BYTE( "ya-010.prom",  0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
95539553   ROM_LOAD16_BYTE( "ya-011.prom",  0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
95549554
9555   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9555   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
95569556   ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
95579557   ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
95589558ROM_END
r6428r6429
95899589   ROM_LOAD16_BYTE( "ya-010.prom",  0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
95909590   ROM_LOAD16_BYTE( "ya-011.prom",  0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
95919591
9592   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9592   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
95939593   ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
95949594   ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
95959595ROM_END
r6428r6429
96279627   ROM_LOAD16_BYTE( "ya-010.prom",  0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) )
96289628   ROM_LOAD16_BYTE( "ya-011.prom",  0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) )
96299629
9630   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9630   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
96319631   ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) )
96329632   ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) )
96339633ROM_END
r6428r6429
96699669   ROM_LOAD( "uf0015.u40",  0x300000, 0x080000, CRC(11dc19fa) SHA1(e7084f61d075a61249d924a523c32e7993d9ae46) )
96709670   ROM_LOAD( "uf0016.u48",  0x380000, 0x080000, CRC(10f99fa8) SHA1(7ef9a3f71dd071483cf3513ef57e2fcfe8702994) )
96719671
9672   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
9672   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
96739673   ROM_LOAD( "uf1004.u52", 0x000000, 0x020000, CRC(d63ea334) SHA1(93aaf58c90c4f704caae19b63785e471b2c1281a) )
96749674
96759675   ROM_REGION( 0x400, "proms", 0 )
src/mame/drivers/laserbat.c
r6428r6429
708708   /* sound hardware */
709709   MDRV_SPEAKER_STANDARD_MONO("mono")
710710
711   MDRV_SOUND_ADD("sn", SN76477, 0) // output not connected
711   MDRV_SOUND_ADD("snsnd", SN76477, 0) // output not connected
712712   MDRV_SOUND_CONFIG(laserbat_sn76477_interface)
713713
714714   MDRV_SOUND_ADD("tms1", TMS3615, 4000000/8/2) // 250 kHz, from second chip's clock out
src/mame/drivers/vball.c
r6428r6429
232232static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
233233   AM_RANGE(0x0000, 0x7fff) AM_ROM
234234   AM_RANGE(0x8000, 0x87ff) AM_RAM
235   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
235   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
236236   AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
237237   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r)
238238ADDRESS_MAP_END
r6428r6429
441441   /* sound hardware */
442442   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
443443
444   MDRV_SOUND_ADD("ym", YM2151, 3579545)
444   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
445445   MDRV_SOUND_CONFIG(ym2151_config)
446446   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
447447   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/drivers/naomi.c
r6428r6429
54085408GAME( 2006, kurucham,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Able",                   "Kurukuru Chameleon (GDL-0034)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54095409GAME( 2005, undefeat,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "G-Rev",                  "Under Defeat (GDL-0035)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54105410//GDL-0036 Trigger Heart Exelica
5411//GAME( 2005, trgheart,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "Warashi",                "Trigger Heart Exelica (Rev A) (GDL-0036A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
5412//GAME( 2005, jingystm,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Atrativa Japan",         "Jingi Storm - The Arcade (GDL-0037)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
5411GAME( 2005, trgheart,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "Warashi",                "Trigger Heart Exelica (Rev A) (GDL-0036A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
5412GAME( 2005, jingystm,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Atrativa Japan",         "Jingi Storm - The Arcade (GDL-0037)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54135413//GDL-0038 Senko No Ronde Special
54145414//GAME( 2006, meltyb,    naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Melty Blood Act Cadenza Ver B (GDL-0039)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54155415//GAME( 2006, meltyba,   meltyb,   naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Melty Blood Act Cadenza Ver B (Rev A) (GDL-0039A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
5416//GAME( 2006, karous,    naomigd,  naomigd,  naomi,    naomi,   ROT270, "Milestone",              "Karous (GDL-0040)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
5416GAME( 2006, karous,    naomigd,  naomigd,  naomi,    naomi,   ROT270, "Milestone",              "Karous (GDL-0040)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54175417//GDL-0041 Guilty Gear XX Accent Core
54185418//GAME( 2006, takoron,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Compile",                "Noukone Puzzle Takoron (GDL-0042)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
54195419
src/mame/drivers/stv.c
r6428r6429
37683768   ROM_LOAD16_WORD_SWAP( "ic36",    0x1200000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // OK
37693769ROM_END
37703770
3771ROM_START( pclub2 ) // set to 1p / runs with the USA bios
3772   STV_BIOS
3773
3774   ROM_REGION32_BE( 0x3000000, "user1", ROMREGION_ERASE00 ) /* SH2 code */
3775
3776   ROM_LOAD16_WORD_SWAP( "ic22",    0x0200000, 0x0200000, CRC(d2ceade7) SHA1(a4300322e582f403d9207290f3900e1a72fcb9b9) ) // OK
3777   ROM_LOAD16_WORD_SWAP( "ic24",    0x0400000, 0x0200000, CRC(0e968c2d) SHA1(fbcc7533fcb6b87cd8255fc2d307ae618301ea64) ) // OK
3778   ROM_LOAD16_WORD_SWAP( "ic26",    0x0600000, 0x0200000, CRC(ab51da70) SHA1(85214aa805ffc9de59900dc0cd4e19e5ab756bf7) ) // OK
3779   ROM_LOAD16_WORD_SWAP( "ic28",    0x0800000, 0x0200000, CRC(3a654b2a) SHA1(7398e25836bfbdeab6350759f25c420c3b496172) ) // OK
3780   ROM_LOAD16_WORD_SWAP( "ic30",    0x0a00000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // OK
3781ROM_END
3782
3783ROM_START( pclub2v3 ) // set to 1p / runs with the USA bios
3784   STV_BIOS
3785
3786   ROM_REGION32_BE( 0x3000000, "user1", ROMREGION_ERASE00 ) /* SH2 code */
3787
3788   ROM_LOAD16_WORD_SWAP( "ic22",    0x0200000, 0x0200000, BAD_DUMP CRC(f88347aa) SHA1(3e9ca105edbd6ce11ea4194eb1733785e87f92b2) ) // BAD
3789   ROM_LOAD16_WORD_SWAP( "ic24",    0x0400000, 0x0200000, CRC(b5871198) SHA1(10d187eebcca5d70c5ae10d1a144685a96491126) ) // OK
3790   ROM_LOAD16_WORD_SWAP( "ic26",    0x0600000, 0x0200000, CRC(d97034ed) SHA1(a7a0f659eefd539b2a1fd70ef394eed30ea54c0c) ) // OK
3791   ROM_LOAD16_WORD_SWAP( "ic28",    0x0800000, 0x0200000, CRC(f1421506) SHA1(c384b695338144e5f051134bda73b059b678a7df) ) // OK
3792   ROM_LOAD16_WORD_SWAP( "ic30",    0x0a00000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // OK
3793ROM_END
3794
37713795/*
37723796country codes:
37733797J = Japan
r6428r6429
38663890/* Unemulated printer device */
38673891GAME( 1998, stress,    stvbios, stv, stv,        stv,          ROT0,   "Sega",                       "Stress Busters (J 981020 V1.000)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
38683892GAME( 1997, nclubv3,   stvbios, stv, stv,        nameclv3,     ROT0,   "Sega",                       "Name Club Ver.3 (J 970723 V1.000)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
3893GAME( 1997, pclub2,    stvbios, stv, stv,        stv,         ROT0,   "Atlus",                       "Print Club 2 (U 970921 V1.000)", GAME_NOT_WORKING )
3894GAME( 1999, pclub2v3,  pclub2,  stv, stv,        stv,         ROT0,   "Atlus",                       "Print Club 2 Vol. 3 (U 990310 V1.000)", GAME_NOT_WORKING )
38693895
38703896/* Doing something.. but not enough yet */
38713897GAME( 1995, vfremix,   stvbios, stv, stv,        vfremix,      ROT0,   "Sega",                       "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
r6428r6429
38933919    Aroma Club
38943920    Movie Club
38953921    Name Club (other versions)
3896    Print Club 2
3922    Print Club 2 (other versions)
38973923    Youen Denshi Mahjong Yuugi Gal Jan
38983924    Danchi de Quiz: Okusan 4taku Desu yo!
38993925    NBA Action (?)
src/mame/drivers/megatech.c
r6428r6429
272272   cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE);
273273   cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
274274   cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
275   devtag_reset(machine, "ym");
275   devtag_reset(machine, "ymsnd");
276276
277277   sprintf(tempname, "game%d", gameno);
278278   game_region = memory_region(machine, tempname);
src/mame/drivers/champbwl.c
r6428r6429
195195   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
196196   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
197197   AM_RANGE(0xa000, 0xbfff) AM_RAM AM_BASE(&tnzs_objram)
198   AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1", seta_sound_r, seta_sound_w)
198   AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1snd", seta_sound_r, seta_sound_w)
199199   AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_BASE(&tnzs_vdcram)
200200   AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE(&tnzs_scrollram) /* scrolling info */
201201   AM_RANGE(0xe300, 0xe303) AM_MIRROR(0xfc) AM_WRITE(champbwl_objctrl_w) AM_BASE(&tnzs_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
r6428r6429
356356   /* sound hardware */
357357   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
358358
359   MDRV_SOUND_ADD("x1", X1_010, 16000000)
359   MDRV_SOUND_ADD("x1snd", X1_010, 16000000)
360360   MDRV_SOUND_CONFIG(champbwl_sound_intf)
361361   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
362362   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
376376   ROM_LOAD( "ab001008.u26", 0x0000, 0x0200, CRC(30ac8d48) SHA1(af034de3f3b8548534effdf4e3717fe3838b7754) )
377377   ROM_LOAD( "ab001009.u27", 0x0200, 0x0200, CRC(3bbd4bcd) SHA1(8c87ccc42ece2432b8ad25f8679cdf886e12a43c) )
378378
379   ROM_REGION( 0x100000, "x1", 0 )   /* Samples */
379   ROM_REGION( 0x100000, "x1snd", 0 )   /* Samples */
380380   ROM_LOAD( "ab003003.3-3", 0x00000, 0x40000, CRC(ad40ad10) SHA1(db0e5744ea3fcda87345b545031f82fcb3fec175) )
381381   ROM_LOAD( "ab003002.3-2", 0x40000, 0x40000, CRC(7ede8f28) SHA1(b5519c09b4f0019dc76cadca725da1d581912540) )
382382   ROM_LOAD( "ab002003.2-3", 0x80000, 0x40000, CRC(3051b8c3) SHA1(5f53596d7af1c79db1dde4bdca3878e07c67b5d1) )
src/mame/drivers/vamphalf.c
r6428r6429
224224
225225static ADDRESS_MAP_START( vamphalf_io, ADDRESS_SPACE_IO, 16 )
226226   AM_RANGE(0x0c0, 0x0c3) AM_DEVREADWRITE("oki", oki_r, oki_w)
227   AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ym", ym2151_register_port_w, 0x00ff)
228   AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ym", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
227   AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ymsnd", ym2151_register_port_w, 0x00ff)
228   AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
229229   AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r)
230230   AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w)
231231   AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM")
r6428r6429
247247   AM_RANGE(0x304, 0x307) AM_READ_PORT("P1_P2")
248248   AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w)
249249   AM_RANGE(0x4c0, 0x4c3) AM_DEVREADWRITE("oki", oki_r, oki_w)
250   AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ym", ym2151_register_port_w, 0x00ff)
251   AM_RANGE(0x546, 0x547) AM_DEVREADWRITE8("ym", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
250   AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ymsnd", ym2151_register_port_w, 0x00ff)
251   AM_RANGE(0x546, 0x547) AM_DEVREADWRITE8("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
252252   AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r)
253253ADDRESS_MAP_END
254254
r6428r6429
257257   AM_RANGE(0x040, 0x043) AM_READ_PORT("P1_P2")
258258   AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM")
259259   AM_RANGE(0x080, 0x083) AM_DEVREADWRITE("oki", oki_r, oki_w)
260   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ym", ym2151_register_port_w, 0x00ff)
261   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ym", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
260   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_register_port_w, 0x00ff)
261   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
262262   AM_RANGE(0x100, 0x103) AM_READ(eeprom_r)
263263ADDRESS_MAP_END
264264
r6428r6429
276276   AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r)
277277   AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w)
278278   AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(finalgdr_backupram_r, finalgdr_backupram_w)
279   AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x0000ff00)
279   AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x0000ff00)
280280   AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2")
281281   AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x0000ff00)
282282   AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM")
r6428r6429
297297   AM_RANGE(0x2c0, 0x2c3) AM_READ(eeprom_r)
298298   AM_RANGE(0x440, 0x443) AM_DEVREADWRITE("oki", oki_r, oki_w)
299299   AM_RANGE(0x540, 0x543) AM_READ_PORT("SYSTEM")
300   AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ym", ym2151_register_port_w, 0x00ff)
301   AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ym", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
300   AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ymsnd", ym2151_register_port_w, 0x00ff)
301   AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
302302ADDRESS_MAP_END
303303
304304
r6428r6429
315315   AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w)
316316   AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki_2", okim6295_r, okim6295_w, 0x0000ff00)
317317   AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_r, okim6295_w, 0x0000ff00)
318   AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x0000ff00)
318   AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x0000ff00)
319319   AM_RANGE(0x0680, 0x0683) AM_DEVWRITE("oki_2", aoh_oki_bank_w)
320320ADDRESS_MAP_END
321321
r6428r6429
691691static MACHINE_DRIVER_START( sound_ym_oki )
692692   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
693693
694   MDRV_SOUND_ADD("ym", YM2151, 28000000/8)
694   MDRV_SOUND_ADD("ymsnd", YM2151, 28000000/8)
695695   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
696696   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
697697
r6428r6429
704704static MACHINE_DRIVER_START( sound_suplup )
705705   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
706706
707   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
707   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
708708   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
709709   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
710710
r6428r6429
805805   /* sound hardware */
806806   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
807807
808   MDRV_SOUND_ADD("ym", YM2151, 3579545)
808   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
809809   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
810810   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
811811
r6428r6429
12071207*/
12081208
12091209ROM_START( wyvernwg )
1210   ROM_REGION32_BE( 0x100000, "user1", 0 ) /* Hyperstone CPU Code */
1210   ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
12111211   ROM_LOAD( "rom1.bin", 0x000000, 0x080000, CRC(66bf3a5c) SHA1(037d5e7a6ef6f5b4ac08a9c811498c668a9d2522) )
12121212   ROM_LOAD( "rom2.bin", 0x080000, 0x080000, CRC(fd9b5911) SHA1(a01e8c6e5a9009024af385268ba3ba90e1ebec50) )
12131213
r6428r6429
13461346*/
13471347
13481348ROM_START( finalgdr ) /* version 2.20.5915, Korea only */
1349   ROM_REGION32_BE( 0x100000, "user1", 0 ) /* Hyperstone CPU Code */
1349   ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */
13501350   /* rom0 empty */
13511351   ROM_LOAD( "rom1", 0x080000, 0x080000, CRC(45815931) SHA1(80ba7a366994e40a1f520ea18fad82e6b068b279) )
13521352
src/mame/drivers/1942.c
r6428r6429
5757     at the sound CPU.
5858
5959
60SAVE STATE (lee@lmservers.com):
611942 uses the Z80 and AY8910 which both support save state.
62
63The global variables in drivers/1942.c are extern and defined in video/1942.c
64The rationale for saving/not saving are as follows:
65UINT8 *c1942_fgvideoram;        Saved via reference to AM_BASE
66UINT8 *c1942_bgvideoram;        Saved via reference to AM_BASE
67
68static int c1942_palette_bank;  Explicitly saved
69static tilemap *fg_tilemap, *bg_tilemap;    Saved due to tilemap supporting save
70
71There are no static local variables.
72
7360***************************************************************************/
7461
7562#define MAIN_CPU_CLOCK      (XTAL_12MHz/3) /* 12MHz is the only OSC on the PCB */
r6428r6429
8067#include "cpu/z80/z80.h"
8168#include "deprecat.h"
8269#include "sound/ay8910.h"
70#include "1942.h"
8371
8472
85extern UINT8 *c1942_fgvideoram;
86extern UINT8 *c1942_bgvideoram;
87
88
89extern WRITE8_HANDLER( c1942_fgvideoram_w );
90extern WRITE8_HANDLER( c1942_bgvideoram_w );
91extern WRITE8_HANDLER( c1942_scroll_w );
92extern WRITE8_HANDLER( c1942_c804_w );
93extern WRITE8_HANDLER( c1942_palette_bank_w );
94
95extern PALETTE_INIT( 1942 );
96extern VIDEO_START( 1942 );
97extern VIDEO_UPDATE( 1942 );
98
99
100
10173static WRITE8_HANDLER( c1942_bankswitch_w )
10274{
10375   memory_set_bank(space->machine, 1, data & 0x03);
10476}
10577
106
107
10878static INTERRUPT_GEN( c1942_interrupt )
10979{
11080   if (cpu_getiloops(device) != 0)
111      cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf);/* RST 08h */
81      cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf);   /* RST 08h */
11282   else
11383      cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xd7);   /* RST 10h - vblank */
11484}
11585
11686
117
11887static ADDRESS_MAP_START( c1942_map, ADDRESS_SPACE_PROGRAM, 8 )
11988   AM_RANGE(0x0000, 0x7fff) AM_ROM
12089   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
r6428r6429
12897   AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w)
12998   AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w)
13099   AM_RANGE(0xc806, 0xc806) AM_WRITE(c1942_bankswitch_w)
131   AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
132   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_BASE(&c1942_fgvideoram)
133   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_BASE(&c1942_bgvideoram)
100   AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_BASE_MEMBER(_1942_state, spriteram) AM_SIZE(&spriteram_size)
101   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_BASE_MEMBER(_1942_state, fg_videoram)
102   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_BASE_MEMBER(_1942_state, bg_videoram)
134103   AM_RANGE(0xe000, 0xefff) AM_RAM
135104ADDRESS_MAP_END
136105
r6428r6429
265234GFXDECODE_END
266235
267236
237static MACHINE_RESET( 1942 )
238{
239   _1942_state *state = (_1942_state *)machine->driver_data;
268240
241   state->palette_bank = 0;
242   state->scroll[0] = 0;
243   state->scroll[1] = 0;
244}
245
269246static MACHINE_DRIVER_START( 1942 )
270247
248   MDRV_DRIVER_DATA(_1942_state)
249
271250   /* basic machine hardware */
272251   MDRV_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK)   /* 4 MHz ??? */
273252   MDRV_CPU_PROGRAM_MAP(c1942_map)
r6428r6429
277256   MDRV_CPU_PROGRAM_MAP(sound_map)
278257   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
279258
259   MDRV_MACHINE_RESET(1942)
260
280261   /* video hardware */
281262   MDRV_GFXDECODE(1942)
282263   MDRV_PALETTE_LENGTH(64*4+4*32*8+16*16)
src/mame/drivers/mayumi.c
r6428r6429
8888   AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w)
8989   AM_RANGE(0xc1, 0xc2) AM_READ(key_matrix_r)   // 0xc0-c3 8255ppi
9090   AM_RANGE(0xc3, 0xc3) AM_WRITENOP      // 0xc0-c3 8255ppi
91   AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
91   AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
9292ADDRESS_MAP_END
9393
9494/****************************************************************************/
r6428r6429
296296   /* sound hardware */
297297   MDRV_SPEAKER_STANDARD_MONO("mono")
298298
299   MDRV_SOUND_ADD("ym", YM2203, MCLK/4)
299   MDRV_SOUND_ADD("ymsnd", YM2203, MCLK/4)
300300   MDRV_SOUND_CONFIG(ym2203_config)
301301   MDRV_SOUND_ROUTE(0, "mono", 0.15)
302302   MDRV_SOUND_ROUTE(1, "mono", 0.15)
src/mame/drivers/fromanc2.c
r6428r6429
389389   ADDRESS_MAP_GLOBAL_MASK(0xff)
390390   AM_RANGE(0x00, 0x00) AM_READWRITE(soundlatch_r, SMH_NOP)         // snd cmd (1P) / ?
391391   AM_RANGE(0x04, 0x04) AM_READ(soundlatch2_r)                     // snd cmd (2P)
392   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
392   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
393393   AM_RANGE(0x0c, 0x0c) AM_READ(fromanc2_sndcpu_nmi_clr)
394394ADDRESS_MAP_END
395395
r6428r6429
610610   /* sound hardware */
611611   MDRV_SPEAKER_STANDARD_MONO("mono")
612612
613   MDRV_SOUND_ADD("ym", YM2610, 8000000)
613   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
614614   MDRV_SOUND_CONFIG(ym2610_config)
615615   MDRV_SOUND_ROUTE(0, "mono", 0.50)
616616   MDRV_SOUND_ROUTE(1, "mono", 0.75)
r6428r6429
661661   /* sound hardware */
662662   MDRV_SPEAKER_STANDARD_MONO("mono")
663663
664   MDRV_SOUND_ADD("ym", YM2610, 8000000)
664   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
665665   MDRV_SOUND_CONFIG(ym2610_config)
666666   MDRV_SOUND_ROUTE(0, "mono", 0.50)
667667   MDRV_SOUND_ROUTE(1, "mono", 0.75)
r6428r6429
709709   /* sound hardware */
710710   MDRV_SPEAKER_STANDARD_MONO("mono")
711711
712   MDRV_SOUND_ADD("ym", YM2610, 8000000)
712   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
713713   MDRV_SOUND_CONFIG(ym2610_config)
714714   MDRV_SOUND_ROUTE(0, "mono", 0.50)
715715   MDRV_SOUND_ROUTE(1, "mono", 0.75)
r6428r6429
747747   ROM_REGION( 0x0100000, "gfx4", 0 )   // LAYER1 DATA
748748   ROM_LOAD( "40-52.bin",   0x000000, 0x100000, CRC(dbb5062d) SHA1(d1be4d675b36ea6ebd602d5c990adcf3c029485e) )
749749
750   ROM_REGION( 0x0400000, "ym", 0 )   // SOUND DATA
750   ROM_REGION( 0x0400000, "ymsnd", 0 )   // SOUND DATA
751751   ROM_LOAD( "ic96.bin",    0x000000, 0x200000, CRC(2f1b394c) SHA1(d95dd8231d7873328f2253eaa27374c79d87e21b) )
752752   ROM_LOAD( "ic97.bin",    0x200000, 0x200000, CRC(1d1377fc) SHA1(0dae5dfcbcf4ed6662522e9404fcac0236dce04d) )
753753ROM_END
r6428r6429
780780   ROM_REGION( 0x0200000, "gfx3", 0 )   // TEXT DATA
781781   ROM_LOAD( "ic28-29.bin", 0x0000000, 0x200000, CRC(f5e262aa) SHA1(35464d059f4814832bf5cb3bede4b8a600bc8a84) )
782782
783   ROM_REGION( 0x0400000, "ym", 0 )   // SOUND DATA
783   ROM_REGION( 0x0400000, "ymsnd", 0 )   // SOUND DATA
784784   ROM_LOAD( "ic81.bin",    0x0000000, 0x200000, CRC(8ab6e343) SHA1(5ae28e6944edb0a4b8d0071ce48e348b6e927ca9) )
785785   ROM_LOAD( "ic82.bin",    0x0200000, 0x200000, CRC(f57daaf8) SHA1(720eadf771c89d8749317b632bbc5e8ff1f6f520) )
786786ROM_END
r6428r6429
816816   ROM_REGION( 0x0400000, "gfx3", 0 )   // TEXT DATA
817817   ROM_LOAD16_WORD_SWAP( "em33-a00.37", 0x0000000, 0x400000, CRC(a3bd4a34) SHA1(78bd5298e83f89c738c18105c8bc809fa6a35206) )
818818
819   ROM_REGION( 0x0800000, "ym", 0 )   // SOUND DATA
819   ROM_REGION( 0x0800000, "ymsnd", 0 )   // SOUND DATA
820820   ROM_LOAD16_WORD_SWAP( "em33-p00.88", 0x0000000, 0x400000, CRC(1c6418d2) SHA1(c66d6b35f342fcbeca5414dbb2ac038d8a2ec2c4) )
821821   ROM_LOAD16_WORD_SWAP( "em33-p01.89", 0x0400000, 0x400000, CRC(615b4e6e) SHA1(a031773ed27de2263e32422a3d11118bdcb2c197) )
822822ROM_END
src/mame/drivers/realbrk.c
r6428r6429
172172/*realbrk specific memory map*/
173173static ADDRESS_MAP_START( realbrk_mem, ADDRESS_SPACE_PROGRAM, 16 )
174174   AM_IMPORT_FROM(base_mem)
175   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)   //
175   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)   //
176176   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")                     // P1 & P2 (Inputs)
177177   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                     // Coins
178178   AM_RANGE(0xc00004, 0xc00005) AM_READWRITE(realbrk_dsw_r,SMH_RAM) AM_BASE(&realbrk_dsw_select)   // DSW select
r6428r6429
182182
183183/*pkgnsh specific memory map*/
184184static ADDRESS_MAP_START( pkgnsh_mem, ADDRESS_SPACE_PROGRAM, 16 )
185   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ym", ym2413_w, 0xff00   )   // YM2413
185   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_w, 0xff00   )   // YM2413
186186   AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnsh_input_r              )   // P1 & P2 (Inputs)
187187   AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_r,backup_ram_w) AM_BASE(&backup_ram)   // RAM
188188   AM_IMPORT_FROM(base_mem)
r6428r6429
190190
191191/*pkgnshdx specific memory map*/
192192static ADDRESS_MAP_START( pkgnshdx_mem, ADDRESS_SPACE_PROGRAM, 16)
193   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)   //
193   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)   //
194194   AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnshdx_input_r              )   // P1 & P2 (Inputs)
195195   AM_RANGE(0xc00004, 0xc00005) AM_WRITE(SMH_RAM) AM_BASE(&realbrk_dsw_select) // DSW select
196196   AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_dx_r,backup_ram_w) AM_BASE(&backup_ram)   // RAM
r6428r6429
201201static ADDRESS_MAP_START( dai2kaku_mem, ADDRESS_SPACE_PROGRAM, 16 )
202202   AM_RANGE(0x605000, 0x6053ff) AM_READWRITE(SMH_RAM,SMH_RAM) AM_BASE(&realbrk_vram_0ras)   // rasterinfo   (0)
203203   AM_RANGE(0x605400, 0x6057ff) AM_READWRITE(SMH_RAM,SMH_RAM) AM_BASE(&realbrk_vram_1ras)   // rasterinfo   (1)
204   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)   //
204   AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)   //
205205   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")                     // P1 & P2 (Inputs)
206206   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                     // Coins
207207   AM_RANGE(0xc00004, 0xc00005) AM_READWRITE(realbrk_dsw_r,SMH_RAM) AM_BASE(&realbrk_dsw_select)   // DSW select
r6428r6429
703703   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
704704   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
705705
706   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
706   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
707707   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
708708   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
709709MACHINE_DRIVER_END
src/mame/drivers/carjmbre.c
r6428r6429
1/*
2Car Jamboree
3Omori Electric CAD (OEC) 1981
1/***************************************************************************
42
5c14                c.d19
6c13                c.d18           c10
7c12                                c9
8c11         2125   2125
9            2125   2125
10            2125   2125  2114 2114
11            2125   2125  2114 2114
12            2125   2125            c8
13            2125   2125            c7
14                                   c6
15                                   c5
16                                   c4
17                                   c3
185101                               c2
195101                               c1
20                                   6116
2118.432MHz
22          6116
23Z80A      c15
24                                   Z80A
25       8910         SW
26       8910
3    Car Jamboree
4    Omori Electric CAD (OEC) 1981
275
6    c14                c.d19
7    c13                c.d18           c10
8    c12                                c9
9    c11         2125   2125
10                2125   2125
11                2125   2125  2114 2114
12                2125   2125  2114 2114
13                2125   2125            c8
14                2125   2125            c7
15                                       c6
16                                       c5
17                                       c4
18                                       c3
19    5101                               c2
20    5101                               c1
21                                       6116
22    18.432MHz
23              6116
24    Z80A      c15
25                                       Z80A
26           8910         SW
27           8910
28
2829Notes:
2930
3031- sound cpu speed chosen from coin error countdown, 1.536 MHz is too fast
r6428r6429
3839- colours are wrong, sprites and characters only using one of the proms
3940
4041- background colour calculation is a guess
41*/
4242
43***************************************************************************/
44
4345#include "driver.h"
4446#include "cpu/z80/z80.h"
4547#include "sound/ay8910.h"
48#include "carjmbre.h"
4649
47WRITE8_HANDLER( carjmbre_flipscreen_w );
48WRITE8_HANDLER( carjmbre_bgcolor_w );
49WRITE8_HANDLER( carjmbre_videoram_w );
50/*************************************
51 *
52 *  Memory maps
53 *
54 *************************************/
5055
51PALETTE_INIT( carjmbre );
52VIDEO_START( carjmbre );
53VIDEO_UPDATE( carjmbre );
54
55
5656static ADDRESS_MAP_START( carjmbre_map, ADDRESS_SPACE_PROGRAM, 8 )
5757   AM_RANGE(0x0000, 0x7fff) AM_ROM
5858   AM_RANGE(0x8000, 0x87ff) AM_RAM
r6428r6429
6262   AM_RANGE(0x8807, 0x8807) AM_WRITE(carjmbre_flipscreen_w)
6363   AM_RANGE(0x8fc1, 0x8fc1) AM_WRITENOP         //overrun during initial screen clear
6464   AM_RANGE(0x8fe1, 0x8fe1) AM_WRITENOP         //overrun during initial screen clear
65   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(carjmbre_videoram_w) AM_BASE(&videoram)
66   AM_RANGE(0x9800, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
65   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(carjmbre_videoram_w) AM_BASE_MEMBER(carjmbre_state, videoram)
66   AM_RANGE(0x9800, 0x985f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(carjmbre_state, spriteram) AM_SIZE(&spriteram_size)
6767   AM_RANGE(0x9880, 0x98df) AM_WRITE(SMH_RAM)         //spriteram mirror
6868   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
6969   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")
r6428r6429
9292   AM_RANGE(0x32, 0x32) AM_WRITENOP            //?? written before and after 0x31 with same value
9393ADDRESS_MAP_END
9494
95/*************************************
96 *
97 *  Input ports
98 *
99 *************************************/
100
95101static INPUT_PORTS_START( carjmbre )
96102   PORT_START("P1")
97103   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )      //coin error if held high for 1s
r6428r6429
138144   PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
139145INPUT_PORTS_END
140146
147/*************************************
148 *
149 *  Graphics definitions
150 *
151 *************************************/
152
141153static const gfx_layout carjmbre_charlayout =
142154{
143155   8,8,
r6428r6429
165177   GFXDECODE_ENTRY( "gfx2", 0, carjmbre_spritelayout, 0, 16 )
166178GFXDECODE_END
167179
180
181/*************************************
182 *
183 *  Machine driver
184 *
185 *************************************/
186
187static MACHINE_RESET( carjmbre )
188{
189   carjmbre_state *state = (carjmbre_state *)machine->driver_data;
190
191   state->flipscreen = 0;
192   state->bgcolor = 0;
193}
194
168195static MACHINE_DRIVER_START( carjmbre )
169196
197   /* driver data */
198   MDRV_DRIVER_DATA(carjmbre_state)
199
170200   /* basic machine hardware */
171201   MDRV_CPU_ADD("maincpu", Z80,18432000/6)
172202   MDRV_CPU_PROGRAM_MAP(carjmbre_map)
173203   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
174204
205   MDRV_MACHINE_RESET(carjmbre)
206
175207   MDRV_CPU_ADD("audiocpu", Z80, 1500000)
176208   MDRV_CPU_PROGRAM_MAP(carjmbre_sound_map)
177209   MDRV_CPU_IO_MAP(carjmbre_sound_io_map)
r6428r6429
180212   /* video hardware */
181213   MDRV_SCREEN_ADD("screen", RASTER)
182214   MDRV_SCREEN_REFRESH_RATE(60)
183   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
215   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
184216   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
185217   MDRV_SCREEN_SIZE(32*8, 32*8)
186218   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
r6428r6429
202234   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12)
203235MACHINE_DRIVER_END
204236
237/*************************************
238 *
239 *  ROM definition
240 *
241 *************************************/
242
205243ROM_START( carjmbre )
206244   ROM_REGION( 0x10000, "maincpu", 0 )
207245   ROM_LOAD( "c1",      0x0000, 0x1000, CRC(62b21739) SHA1(710e5c52f27603aa8f864f6f28d7272f21271d60) )
r6428r6429
231269   ROM_LOAD( "c.d18",  0x0020, 0x0020, CRC(7b9ed1b0) SHA1(ec5e1f56e5a2fc726083866c08ac0e1de0ed6ace) )
232270ROM_END
233271
234GAME( 1983, carjmbre, 0, carjmbre, carjmbre, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", GAME_IMPERFECT_COLORS )
272/*************************************
273 *
274 *  Game driver
275 *
276 *************************************/
235277
278GAME( 1983, carjmbre, 0, carjmbre, carjmbre, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
src/mame/drivers/vmetal.c
r6428r6429
228228   AM_RANGE(0x178800, 0x1796ff) AM_RAM AM_BASE(&vmetal_videoregs)
229229   AM_RANGE(0x179700, 0x179713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
230230
231   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2") AM_DEVWRITE8("es", vmetal_control_w, 0x00ff)
231   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2") AM_DEVWRITE8("essnd", vmetal_control_w, 0x00ff)
232232   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
233233
234234   /* i have no idea whats meant to be going on here .. it seems to read one bit of the dips from some of them, protection ??? */
r6428r6429
252252
253253   AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff )
254254   AM_RANGE(0x400002, 0x400003) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)   // Volume/channel info
255   AM_RANGE(0x500000, 0x50000d) AM_DEVWRITE8("es", vmetal_es8712_w, 0x00ff)
255   AM_RANGE(0x500000, 0x50000d) AM_DEVWRITE8("essnd", vmetal_es8712_w, 0x00ff)
256256
257257   AM_RANGE(0xff0000, 0xffffff) AM_RAM
258258ADDRESS_MAP_END
r6428r6429
450450   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
451451   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
452452
453   MDRV_SOUND_ADD("es", ES8712, 12000)
453   MDRV_SOUND_ADD("essnd", ES8712, 12000)
454454   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
455455   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
456456MACHINE_DRIVER_END
r6428r6429
471471   /* Second half is junk */
472472   ROM_LOAD( "8.u9", 0x00000, 0x80000, CRC(c14c001c) SHA1(bad96b5cd40d1c34ef8b702262168ecab8192fb6) )
473473
474   ROM_REGION( 0x200000, "es", 0 ) /* Samples */
474   ROM_REGION( 0x200000, "essnd", 0 ) /* Samples */
475475   ROM_LOAD( "7.u12", 0x00000, 0x200000, CRC(a88c52f1) SHA1(d74a5a11f84ba6b1042b33a2c156a1071b6fbfe1) )
476476ROM_END
477477
r6428r6429
490490   /* Second half is junk */
491491   ROM_LOAD( "8.u9", 0x00000, 0x80000, CRC(c14c001c) SHA1(bad96b5cd40d1c34ef8b702262168ecab8192fb6) )
492492
493   ROM_REGION( 0x200000, "es", 0 ) /* Samples */
493   ROM_REGION( 0x200000, "essnd", 0 ) /* Samples */
494494   ROM_LOAD( "7.u12", 0x00000, 0x200000, CRC(a88c52f1) SHA1(d74a5a11f84ba6b1042b33a2c156a1071b6fbfe1) )
495495ROM_END
496496
497GAME( 1995, vmetal,  0,      varia, varia, 0, ROT270, "Excellent Systems",                        "Varia Metal",                        GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
498GAME( 1995, vmetaln, vmetal, varia, varia, 0, ROT270, "[Excellent Systems] New Ways Trading Co.", "Varia Metal (New Ways Trading Co.)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
497GAME( 1995, vmetal,  0,      varia, varia, 0, ROT270, "Excellent System",                        "Varia Metal",                        GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
498GAME( 1995, vmetaln, vmetal, varia, varia, 0, ROT270, "[Excellent System] New Ways Trading Co.", "Varia Metal (New Ways Trading Co.)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/battlera.c
r6428r6429
121121
122122static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
123123    AM_RANGE(0x000000, 0x00ffff) AM_ROM
124   AM_RANGE(0x040000, 0x040001) AM_DEVWRITE("ym", ym2203_w)
124   AM_RANGE(0x040000, 0x040001) AM_DEVWRITE("ymsnd", ym2203_w)
125125   AM_RANGE(0x080000, 0x080001) AM_WRITE(battlera_adpcm_data_w)
126126   AM_RANGE(0x1fe800, 0x1fe80f) AM_DEVWRITE("c6280", c6280_w)
127127   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(7) /* Main ram */
r6428r6429
268268   /* sound hardware */
269269   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
270270
271   MDRV_SOUND_ADD("ym", YM2203, 12000000 / 8)
271   MDRV_SOUND_ADD("ymsnd", YM2203, 12000000 / 8)
272272   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
273273   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
274274
src/mame/drivers/namcos1.c
r6428r6429
464464
465465static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
466466   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(17)   /* Banked ROMs */
467   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ym", ym2151_status_port_r)
468   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
467   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ymsnd", ym2151_status_port_r)
468   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
469469   AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) AM_BASE(&namco_wavedata) /* PSG ( Shared ) */
470470   AM_RANGE(0x7000, 0x77ff) AM_RAMBANK(18)   /* TRIRAM (shared) */
471471   AM_RANGE(0x8000, 0x9fff) AM_RAM   /* Sound RAM 3 */
r6428r6429
11231123   /* sound hardware */
11241124   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11251125
1126   MDRV_SOUND_ADD("ym", YM2151, 3579580)
1126   MDRV_SOUND_ADD("ymsnd", YM2151, 3579580)
11271127   MDRV_SOUND_CONFIG(ym2151_config)
11281128   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
11291129   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
src/mame/drivers/galdrvr.c
r6428r6429
40824082   ROM_LOAD( "prom_6331.10f", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) /* Compatible with 82s123 prom */
40834083ROM_END
40844084
4085ROM_START( stera )
4086   ROM_REGION( 0x8000, "maincpu", 0 )
4087   ROM_LOAD( "stera.1",      0x0000, 0x0800, CRC(cd04fea8) SHA1(f3ba58f276c784f4ad4a53f9f961c269faa8fa87) )
4088   ROM_LOAD( "stera.2",      0x0800, 0x0800, CRC(ccd1878e) SHA1(cfa4913a3cd3e58998bd983c9078af58560cfbd6) )
4089   ROM_LOAD( "stera.3",      0x1000, 0x0800, CRC(29a2b0ab) SHA1(e9fc7161d0566e36307c45b7132e2262c0af4845) )
4090   ROM_LOAD( "stera.4",      0x1800, 0x0800, CRC(4c6a5a6d) SHA1(366516f63c9b5239e703e4dfb672659049ddbf44) )
4091   ROM_LOAD( "stera.5",      0x2000, 0x0800, CRC(06d378a6) SHA1(99dbe9fc7f95f8fdce86eb5c32bd1ca1bea0ca3c) )
4092   ROM_LOAD( "stera.6",      0x2800, 0x0800, CRC(6e84a927) SHA1(82e8e825d157c3c947a3a222bca059a735169c7d) )
4093   ROM_LOAD( "stera.7",      0x3000, 0x0800, CRC(b45af1e8) SHA1(d7020774707234acdaef5c655f667d5ee9e54a13) )
4094   ROM_LOAD( "stera.8",      0x3800, 0x0800, CRC(37f19956) SHA1(cb59ae3bb06f56baa0898baeae8b3810263e046b) )
4095
4096   ROM_REGION( 0x2000, "gfx1", 0 )
4097   ROM_LOAD( "stera.10",  0x0000, 0x0800, CRC(528da705) SHA1(d726ee18b79774c982f88afb2a508eb5d5783193) )
4098   ROM_LOAD( "stera.12",  0x0800, 0x0800, CRC(13932a15) SHA1(b8885c555c6ad7021be55c6925a0a0872c1b6abd) )
4099   ROM_LOAD( "stera.11",  0x1000, 0x0800, CRC(4e79ff6b) SHA1(f72386a3766a7fcc7b4b8cedfa58b8d57f911f6f) )
4100   ROM_LOAD( "stera.9",   0x1800, 0x0800, CRC(24cfd145) SHA1(08c6599db170dd6ee364c44f70a0f5c0f881b6ef) )
4101
4102   ROM_REGION( 0x0020, "proms", 0 )
4103   ROM_LOAD( "stera.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
4104ROM_END
4105
40854106ROM_START( mooncrgx )
40864107   ROM_REGION( 0x8000, "maincpu", 0 )
40874108   ROM_LOAD( "1",            0x0000, 0x0800, CRC(84cf420b) SHA1(82c979467c51df699337d5878340d05bee606480) )
r6428r6429
56685689// The boards were marked 'Space Dragon' although this doesn't appear in the games.
56695690GAME( 1980, spcdrag,  mooncrst, mooncrst, smooncrs, mooncrsu, ROT90,  "bootleg", "Space Dragon (Moon Cresta bootleg, set 1)", GAME_SUPPORTS_SAVE )
56705691GAME( 1980, spcdraga, mooncrst, mooncrst, smooncrs, mooncrsu, ROT90,  "bootleg", "Space Dragon (Moon Cresta bootleg, set 2)", GAME_SUPPORTS_SAVE )
5692GAME( 1980, stera,    mooncrst, mooncrst, smooncrs, mooncrsu, ROT90,  "bootleg", "Steraranger (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
56715693GAME( 1980, mooncrgx, mooncrst, galaxian, mooncrgx, mooncrgx, ROT270, "bootleg", "Moon Cresta (Galaxian hardware)", GAME_SUPPORTS_SAVE )
56725694GAME( 1980, moonqsr,  0,        mooncrst, moonqsr,  moonqsr,  ROT90,  "Nichibutsu", "Moon Quasar", GAME_SUPPORTS_SAVE )
56735695GAME( 1980, moonal2,  galaxian, mooncrst, moonal2,  galaxian, ROT90,  "Nichibutsu", "Moon Alien Part 2", GAME_SUPPORTS_SAVE )
src/mame/drivers/gundealr.c
r6428r6429
176176
177177static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
178178   ADDRESS_MAP_GLOBAL_MASK(0xff)
179   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
179   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
180180ADDRESS_MAP_END
181181
182182
r6428r6429
484484   /* sound hardware */
485485   MDRV_SPEAKER_STANDARD_MONO("mono")
486486
487   MDRV_SOUND_ADD("ym", YM2203, 1500000)
487   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
488488   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
489489MACHINE_DRIVER_END
490490
src/mame/drivers/mainevt.c
r6428r6429
205205   AM_RANGE(0x8000, 0x83ff) AM_RAM
206206   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
207207   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r,k007232_w)
208   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
208   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
209209   AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w)
210210   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", dv_sh_bankswitch_w)
211211ADDRESS_MAP_END
r6428r6429
441441   /* sound hardware */
442442   MDRV_SPEAKER_STANDARD_MONO("mono")
443443
444   MDRV_SOUND_ADD("ym", YM2151, 3579545)
444   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
445445   MDRV_SOUND_ROUTE(0, "mono", 0.30)
446446   MDRV_SOUND_ROUTE(1, "mono", 0.30)
447447
src/mame/drivers/toki.c
r6428r6429
150150   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
151151   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", toki_adpcm_control_w)   /* MSM5205 + ROM bank */
152152   AM_RANGE(0xe400, 0xe400) AM_WRITE(toki_adpcm_data_w)
153   AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
153   AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
154154   AM_RANGE(0xf000, 0xf7ff) AM_RAM
155155   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
156156ADDRESS_MAP_END
r6428r6429
489489   /* sound hardware */
490490   MDRV_SPEAKER_STANDARD_MONO("mono")
491491
492   MDRV_SOUND_ADD("ym", YM3812, 3579545)
492   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
493493   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
494494
495495   MDRV_SOUND_ADD("msm", MSM5205, 384000)
src/mame/drivers/dwarfd.c
r6428r6429
365365
366366static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
367367   ADDRESS_MAP_GLOBAL_MASK(0xff)
368   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
369   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
368   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
369   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
370370
371371   AM_RANGE(0x20, 0x20) AM_READWRITE(i8275_preg_r, i8275_preg_w)
372372   AM_RANGE(0x21, 0x21) AM_READWRITE(i8275_sreg_r, i8275_creg_w)
r6428r6429
715715   MDRV_VIDEO_UPDATE(dwarfd)
716716
717717   MDRV_SPEAKER_STANDARD_MONO("mono")
718   MDRV_SOUND_ADD("ay", AY8910, 1500000)
718   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
719719   MDRV_SOUND_CONFIG(ay8910_config)
720720   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
721721MACHINE_DRIVER_END
src/mame/drivers/renegade.c
r6428r6429
559559   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
560560   AM_RANGE(0x1800, 0x1800) AM_WRITENOP // this gets written the same values as 0x2000
561561   AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_play_w)
562   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ym", ym3526_r,ym3526_w)
562   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_r,ym3526_w)
563563   AM_RANGE(0x3000, 0x3000) AM_WRITENOP /* adpcm related? stereo pan? */
564564   AM_RANGE(0x8000, 0xffff) AM_ROM
565565ADDRESS_MAP_END
r6428r6429
807807    /* sound hardware */
808808   MDRV_SPEAKER_STANDARD_MONO("mono")
809809
810   MDRV_SOUND_ADD("ym", YM3526, 12000000/4)
810   MDRV_SOUND_ADD("ymsnd", YM3526, 12000000/4)
811811   MDRV_SOUND_CONFIG(ym3526_config)
812812   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
813813
src/mame/drivers/junofrst.c
r6428r6429
203203   AM_RANGE(0x0000, 0x0fff) AM_ROM
204204   AM_RANGE(0x2000, 0x23ff) AM_RAM
205205   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
206   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay", ay8910_address_w)
207   AM_RANGE(0x4001, 0x4001) AM_DEVREAD("ay", ay8910_r)
208   AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("ay", ay8910_data_w)
206   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_address_w)
207   AM_RANGE(0x4001, 0x4001) AM_DEVREAD("aysnd", ay8910_r)
208   AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("aysnd", ay8910_data_w)
209209   AM_RANGE(0x5000, 0x5000) AM_WRITE(soundlatch2_w)
210210   AM_RANGE(0x6000, 0x6000) AM_WRITE(junofrst_i8039_irq_w)
211211ADDRESS_MAP_END
r6428r6429
304304   /* sound hardware */
305305   MDRV_SPEAKER_STANDARD_MONO("mono")
306306
307   MDRV_SOUND_ADD("ay", AY8910, 14318000/8)
307   MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8)
308308   MDRV_SOUND_CONFIG(ay8910_config)
309309   MDRV_SOUND_ROUTE(0, "filter.0.0", 0.30)
310310   MDRV_SOUND_ROUTE(1, "filter.0.1", 0.30)
src/mame/drivers/caswin.c
r6428r6429
142142
143143static ADDRESS_MAP_START( vvillage_io, ADDRESS_SPACE_IO, 8 )
144144   ADDRESS_MAP_GLOBAL_MASK(0xff)
145   AM_RANGE(0x01,0x01) AM_DEVREAD("ay", ay8910_r)
146   AM_RANGE(0x02,0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
145   AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_r)
146   AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
147147   AM_RANGE(0x10,0x10) AM_READ_PORT("IN0")
148148   AM_RANGE(0x11,0x11) AM_READ_PORT("IN1")
149149   AM_RANGE(0x10,0x10) AM_WRITE(vvillage_scroll_w)
r6428r6429
300300
301301   MDRV_SPEAKER_STANDARD_MONO("mono")
302302
303   MDRV_SOUND_ADD("ay", AY8910, 4000000 / 4)
303   MDRV_SOUND_ADD("aysnd", AY8910, 4000000 / 4)
304304   MDRV_SOUND_CONFIG(ay8910_config)
305305   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
306306MACHINE_DRIVER_END
src/mame/drivers/hitpoker.c
r6428r6429
226226   AM_RANGE(0xbe53, 0xbe53) AM_READ(eeprom_r)
227227   AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_address_w)
228228   AM_RANGE(0xbe81, 0xbe81) AM_DEVWRITE("crtc", mc6845_register_w)
229   AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("ay", ay8910_r,ay8910_address_data_w)
229   AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("aysnd", ay8910_r,ay8910_address_data_w)
230230   AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well
231231//  AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r)
232232   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(hitpoker_cram_r,hitpoker_cram_w)
r6428r6429
483483
484484   MDRV_SPEAKER_STANDARD_MONO("mono")
485485
486   MDRV_SOUND_ADD("ay", AY8910, 1500000)
486   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
487487   MDRV_SOUND_CONFIG(ay8910_config)
488488   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
489489MACHINE_DRIVER_END
src/mame/drivers/taito_h.c
r6428r6429
303303   AM_RANGE(0x0000, 0x3fff) AM_ROM
304304   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
305305   AM_RANGE(0xc000, 0xdfff) AM_RAM
306   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
306   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
307307   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
308308   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
309309   AM_RANGE(0xe400, 0xe403) AM_WRITENOP      /* pan control */
r6428r6429
576576   /* sound hardware */
577577   MDRV_SPEAKER_STANDARD_MONO("mono")
578578
579   MDRV_SOUND_ADD("ym", YM2610, 8000000)
579   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
580580   MDRV_SOUND_CONFIG(ym2610_config)
581581   MDRV_SOUND_ROUTE(0, "mono", 0.25)
582582   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
616616   /* sound hardware */
617617   MDRV_SPEAKER_STANDARD_MONO("mono")
618618
619   MDRV_SOUND_ADD("ym", YM2610, 8000000)
619   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
620620   MDRV_SOUND_CONFIG(ym2610_config)
621621   MDRV_SOUND_ROUTE(0, "mono", 0.25)
622622   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
656656   /* sound hardware */
657657   MDRV_SPEAKER_STANDARD_MONO("mono")
658658
659   MDRV_SOUND_ADD("ym", YM2610, 8000000)
659   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
660660   MDRV_SOUND_CONFIG(ym2610_config)
661661   MDRV_SOUND_ROUTE(0, "mono", 0.25)
662662   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
702702   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* samples */
703703   ROM_LOAD( "b51-18.bin", 0x00000, 0x80000, CRC(8b23ac83) SHA1(340b9e7f09c1809a332b41d3fb579f5f8cd6367f) )
704704
705   ROM_REGION( 0x80000, "ym", 0 )   /* samples */
705   ROM_REGION( 0x80000, "ymsnd", 0 )   /* samples */
706706   ROM_LOAD( "b51-17.bin", 0x00000, 0x80000, CRC(d85096aa) SHA1(dac39ed182e9eda06575f1667c4c1ff9a4a56599) )
707707ROM_END
708708
r6428r6429
730730   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* samples */
731731   ROM_LOAD( "b56-09.bin", 0x00000, 0x80000, CRC(7fd9ee68) SHA1(edc4455b3f6a6f30f418d03c6e53af875542a325) )
732732
733   ROM_REGION( 0x80000, "ym", 0 )   /* samples */
733   ROM_REGION( 0x80000, "ymsnd", 0 )   /* samples */
734734   ROM_LOAD( "b56-10.bin", 0x00000, 0x80000, CRC(de1bce59) SHA1(aa3aea30d6f53e60d9a0d4ec767e1b261d5efc8a) )
735735
736736   ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */
r6428r6429
761761   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* samples */
762762   ROM_LOAD( "b56-09.bin", 0x00000, 0x80000, CRC(7fd9ee68) SHA1(edc4455b3f6a6f30f418d03c6e53af875542a325) )
763763
764   ROM_REGION( 0x80000, "ym", 0 )   /* samples */
764   ROM_REGION( 0x80000, "ymsnd", 0 )   /* samples */
765765   ROM_LOAD( "b56-10.bin", 0x00000, 0x80000, CRC(de1bce59) SHA1(aa3aea30d6f53e60d9a0d4ec767e1b261d5efc8a) )
766766
767767   ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */
r6428r6429
796796   ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */
797797   ROM_LOAD( "c02-18.22", 0x00000, 0x02000, CRC(c88f0bbe) SHA1(18c87c744fbeca35d13033e50f62e5383eb4ec2c) )
798798
799   ROM_REGION( 0x80000, "ym", 0 )   /* samples */
799   ROM_REGION( 0x80000, "ymsnd", 0 )   /* samples */
800800   ROM_LOAD( "c02-01.31", 0x00000, 0x80000, CRC(d5a3d1aa) SHA1(544f807015b5d854a4d8cb73e4dbae4b953fd440) )
801801ROM_END
802802
src/mame/drivers/ginganin.c
r6428r6429
166166   AM_RANGE(0x0802, 0x0802) AM_WRITE(MC6840_write_port_0_w)      /* Takahiro Nogi. 1999/09/27 */
167167   AM_RANGE(0x0803, 0x0803) AM_WRITE(MC6840_write_port_1_w)      /* Takahiro Nogi. 1999/09/27 */
168168   AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_r)
169   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym", y8950_w)
170   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ay", ay8910_address_data_w)
169   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", y8950_w)
170   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
171171   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
172172ADDRESS_MAP_END
173173
r6428r6429
351351   /* sound hardware */
352352   MDRV_SPEAKER_STANDARD_MONO("mono")
353353
354   MDRV_SOUND_ADD("ay", AY8910, 3579545 / 2)
354   MDRV_SOUND_ADD("aysnd", AY8910, 3579545 / 2)
355355   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
356356
357   MDRV_SOUND_ADD("ym", Y8950, 3579545)
357   MDRV_SOUND_ADD("ymsnd", Y8950, 3579545)
358358   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
359359MACHINE_DRIVER_END
360360
r6428r6429
395395   ROM_REGION( 0x08000, "gfx5", 0 )   /* background tilemaps */
396396   ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) )
397397
398   ROM_REGION( 0x20000, "ym", 0 )   /* samples */
398   ROM_REGION( 0x20000, "ymsnd", 0 )   /* samples */
399399   ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) )
400400   ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) )
401401
r6428r6429
430430   ROM_REGION( 0x08000, "gfx5", 0 )   /* background tilemaps */
431431   ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) )
432432
433   ROM_REGION( 0x20000, "ym", 0 )   /* samples */
433   ROM_REGION( 0x20000, "ymsnd", 0 )   /* samples */
434434   ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) )
435435   ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) )
436436ROM_END
src/mame/drivers/tail2nos.c
r6428r6429
9494static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
9595   ADDRESS_MAP_GLOBAL_MASK(0xff)
9696   AM_RANGE(0x07, 0x07) AM_READWRITE(soundlatch_r, SMH_NOP)   /* the write is a clear pending command */
97   AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ym", ym2608_w)
97   AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ymsnd", ym2608_w)
9898#if 0
99   AM_RANGE(0x18, 0x1b) AM_DEVREAD("ym", ym2608_r)
99   AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_r)
100100#endif
101101ADDRESS_MAP_END
102102
r6428r6429
263263   /* sound hardware */
264264   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
265265
266   MDRV_SOUND_ADD("ym", YM2608, XTAL_8MHz)   /* verified on pcb */
266   MDRV_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz)   /* verified on pcb */
267267   MDRV_SOUND_CONFIG(ym2608_config)
268268   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
269269   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
304304   ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 )   /* gfx data for the 051316 */
305305   /* RAM, not ROM - handled at run time */
306306
307   ROM_REGION( 0x20000, "ym", 0 ) /* sound samples */
307   ROM_REGION( 0x20000, "ymsnd", 0 ) /* sound samples */
308308   ROM_LOAD( "osb",          0x00000, 0x20000, CRC(d49ab2f5) SHA1(92f7f6c8f35ac39910879dd88d2cfb6db7c848c9) )
309309ROM_END
310310
r6428r6429
339339   ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 )   /* gfx data for the 051316 */
340340   /* RAM, not ROM - handled at run time */
341341
342   ROM_REGION( 0x20000, "ym", 0 ) /* sound samples */
342   ROM_REGION( 0x20000, "ymsnd", 0 ) /* sound samples */
343343   ROM_LOAD( "osb",          0x00000, 0x20000, CRC(d49ab2f5) SHA1(92f7f6c8f35ac39910879dd88d2cfb6db7c848c9) )
344344ROM_END
345345
src/mame/drivers/slapshot.c
r6428r6429
315315   AM_RANGE(0x0000, 0x3fff) AM_ROM
316316   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
317317   AM_RANGE(0xc000, 0xdfff) AM_RAM
318   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
318   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r,ym2610_w)
319319   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
320320   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
321321   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
545545   /* sound hardware */
546546   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
547547
548   MDRV_SOUND_ADD("ym", YM2610B, 16000000/2)
548   MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2)
549549   MDRV_SOUND_CONFIG(ym2610_config)
550550   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
551551   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
585585   /* sound hardware */
586586   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
587587
588   MDRV_SOUND_ADD("ym", YM2610B, 16000000/2)
588   MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2)
589589   MDRV_SOUND_CONFIG(ym2610_config)
590590   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
591591   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
618618   ROM_LOAD       ( "d71-03.25", 0x300000, 0x100000, CRC(dccef9ec) SHA1(ee7a49727b822cf4c1d7acff994b77ea6191c423) )
619619   ROM_FILL       (              0x200000, 0x100000, 0 )
620620
621   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
621   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
622622   ROM_LOAD( "d71-06.37", 0x00000, 0x80000, CRC(f3324188) SHA1(70dd724441eae8614218bc7f0f51860bd2462f0c) )
623623
624624   /* no Delta-T samples */
r6428r6429
653653   ROM_LOAD       ( "d74_04.25", 0x600000, 0x200000, CRC(2f385638) SHA1(1ba2ec7d9b1c491e1cc6d7e646e09ef2bc063f25) )
654654   ROM_FILL       (              0x400000, 0x200000, 0 )
655655
656   ROM_REGION( 0x200000, "ym", 0 )   /* ADPCM samples */
656   ROM_REGION( 0x200000, "ymsnd", 0 )   /* ADPCM samples */
657657   ROM_LOAD( "d74_01.37",  0x000000, 0x200000, CRC(115313e0) SHA1(51a69e7a26960b1328ccefeaec0fb26bdccc39f2) )
658658
659659   /* no Delta-T samples */
r6428r6429
680680   ROM_LOAD       ( "d74_04.25", 0x600000, 0x200000, CRC(2f385638) SHA1(1ba2ec7d9b1c491e1cc6d7e646e09ef2bc063f25) )
681681   ROM_FILL       (              0x400000, 0x200000, 0 )
682682
683   ROM_REGION( 0x200000, "ym", 0 )   /* ADPCM samples */
683   ROM_REGION( 0x200000, "ymsnd", 0 )   /* ADPCM samples */
684684   ROM_LOAD( "d74_01.37",  0x000000, 0x200000, CRC(115313e0) SHA1(51a69e7a26960b1328ccefeaec0fb26bdccc39f2) )
685685
686686   /* no Delta-T samples */
src/mame/drivers/meritm.c
r6428r6429
589589   AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
590590   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w)
591591   AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w)
592   AM_RANGE(0x80, 0x80) AM_DEVREAD("ay", ay8910_r)
593   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay", ay8910_address_data_w)
592   AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8910_r)
593   AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8910_address_data_w)
594594   AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
595595ADDRESS_MAP_END
596596
r6428r6429
608608   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w)
609609   AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w)
610610   AM_RANGE(0x60, 0x67) AM_READWRITE(pc16552d_0_r,pc16552d_0_w)
611   AM_RANGE(0x80, 0x80) AM_DEVREAD("ay", ay8910_r)
612   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay", ay8910_address_data_w)
611   AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8910_r)
612   AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8910_address_data_w)
613613   AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
614614ADDRESS_MAP_END
615615
r6428r6429
635635   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w)
636636   AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w)
637637   AM_RANGE(0x60, 0x67) AM_READWRITE(pc16552d_0_r,pc16552d_0_w)
638   AM_RANGE(0x80, 0x80) AM_DEVREAD("ay", ay8910_r)
639   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay", ay8910_address_data_w)
638   AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8910_r)
639   AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8910_address_data_w)
640640   AM_RANGE(0xff, 0xff) AM_WRITE(meritm_bank_w)
641641ADDRESS_MAP_END
642642
r6428r6429
937937static MACHINE_START(meritm_crt260)
938938{
939939   meritm_ram = auto_alloc_array(machine, UINT8,  0x8000 );
940   memset( meritm_ram, 0x8000, 0x00 );
940   memset(meritm_ram, 0x00, 0x8000);
941941   memory_configure_bank(machine, 1, 0, 128, memory_region(machine, "maincpu"), 0x8000);
942942   memory_configure_bank(machine, 2, 0, 128, memory_region(machine, "maincpu"), 0x8000);
943943   memory_configure_bank(machine, 3, 0, 4, meritm_ram, 0x2000);
r6428r6429
10061006
10071007  /* sound hardware */
10081008   MDRV_SPEAKER_STANDARD_MONO("mono")
1009   MDRV_SOUND_ADD("ay", AY8910, SYSTEM_CLK/12)
1009   MDRV_SOUND_ADD("aysnd", AY8910, SYSTEM_CLK/12)
10101010   MDRV_SOUND_CONFIG(ay8910_config)
10111011   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
10121012MACHINE_DRIVER_END
src/mame/drivers/wardner.c
r6428r6429
235235
236236static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
237237   ADDRESS_MAP_GLOBAL_MASK(0xff)
238   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
238   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
239239ADDRESS_MAP_END
240240
241241
r6428r6429
475475   /* sound hardware */
476476   MDRV_SPEAKER_STANDARD_MONO("mono")
477477
478   MDRV_SOUND_ADD("ym", YM3812, 24000000/7)
478   MDRV_SOUND_ADD("ymsnd", YM3812, 24000000/7)
479479   MDRV_SOUND_CONFIG(ym3812_config)
480480   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
481481MACHINE_DRIVER_END
src/mame/drivers/cninja.c
r6428r6429
278278static ADDRESS_MAP_START( sound_map_mutantf, ADDRESS_SPACE_PROGRAM, 8 )
279279   AM_RANGE(0x000000, 0x00ffff) AM_ROM
280280   AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP
281   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
281   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
282282   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
283283   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
284284   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
290290static ADDRESS_MAP_START( stoneage_s_map, ADDRESS_SPACE_PROGRAM, 8 )
291291   AM_RANGE(0x0000, 0x7fff) AM_ROM
292292   AM_RANGE(0x8000, 0x87ff) AM_RAM
293   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
293   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
294294   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
295295   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
296296ADDRESS_MAP_END
r6428r6429
767767   /* sound hardware */
768768   MDRV_SPEAKER_STANDARD_MONO("mono")
769769
770   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
770   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
771771   MDRV_SOUND_CONFIG(ym2151_interface2)
772772   MDRV_SOUND_ROUTE(0, "mono", 0.45)
773773   MDRV_SOUND_ROUTE(1, "mono", 0.45)
r6428r6429
908908   /* sound hardware */
909909   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
910910
911   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
911   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
912912   MDRV_SOUND_CONFIG(ym2151_config)
913913   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
914914   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/lucky74.c
r6428r6429
831831   AM_RANGE(0xf100, 0xf100) AM_DEVWRITE("sn1", sn76496_w)                     /* SN76489 #1 */
832832   AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* Input Ports 2 & 4 */
833833   AM_RANGE(0xf300, 0xf300) AM_DEVWRITE("sn2", sn76496_w)                     /* SN76489 #2 */
834   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ay", ay8910_address_w)                  /* YM2149 control */
834   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("aysnd", ay8910_address_w)                  /* YM2149 control */
835835   AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("sn3", sn76496_w)                     /* SN76489 #3 */
836   AM_RANGE(0xf600, 0xf600) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)         /* YM2149 (Input Port 1) */
836   AM_RANGE(0xf600, 0xf600) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)         /* YM2149 (Input Port 1) */
837837   AM_RANGE(0xf700, 0xf701) AM_READWRITE(usart_8251_r, usart_8251_w)                  /* USART 8251 port */
838838   AM_RANGE(0xf800, 0xf803) AM_READWRITE(copro_sm7831_r, copro_sm7831_w)               /* SM7831 Co-Processor */
839839ADDRESS_MAP_END
r6428r6429
12841284   MDRV_SOUND_ADD("sn3", SN76489, C_06B49P_CLKOUT_03)   /* 3 MHz. */
12851285   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
12861286
1287   MDRV_SOUND_ADD("ay", AY8910, C_06B49P_CLKOUT_04)   /* 1.5 MHz. */
1287   MDRV_SOUND_ADD("aysnd", AY8910, C_06B49P_CLKOUT_04)   /* 1.5 MHz. */
12881288   MDRV_SOUND_CONFIG(ay8910_config)
12891289   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.00)         /* not routed to audio hardware */
12901290
src/mame/drivers/ddrible.c
r6428r6429
156156
157157static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
158158   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&ddrible_snd_sharedram)      /* shared RAM with CPU #1 */
159   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   /* YM2203 */
159   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)   /* YM2203 */
160160   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_data_w)         /* Speech data */
161161   AM_RANGE(0x8000, 0xffff) AM_ROM                              /* ROM */
162162ADDRESS_MAP_END
r6428r6429
295295   /* sound hardware */
296296   MDRV_SPEAKER_STANDARD_MONO("mono")
297297
298   MDRV_SOUND_ADD("ym", YM2203, XTAL_3_579545MHz) /* verified on pcb */
298   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_3_579545MHz) /* verified on pcb */
299299   MDRV_SOUND_CONFIG(ym2203_config)
300300   MDRV_SOUND_ROUTE(0, "filter1", 0.25)
301301   MDRV_SOUND_ROUTE(1, "filter2", 0.25)
src/mame/drivers/jack.c
r6428r6429
181181
182182static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
183183   ADDRESS_MAP_GLOBAL_MASK(0xff)
184   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
185   AM_RANGE(0x80, 0x80) AM_DEVWRITE("ay", ay8910_address_w)
184   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
185   AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_address_w)
186186ADDRESS_MAP_END
187187
188188
r6428r6429
865865   /* sound hardware */
866866   MDRV_SPEAKER_STANDARD_MONO("mono")
867867
868   MDRV_SOUND_ADD("ay", AY8910, 18000000/12)
868   MDRV_SOUND_ADD("aysnd", AY8910, 18000000/12)
869869   MDRV_SOUND_CONFIG(ay8910_config)
870870   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
871871MACHINE_DRIVER_END
src/mame/drivers/vigilant.c
r6428r6429
119119
120120static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
121121   ADDRESS_MAP_GLOBAL_MASK(0xff)
122   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
122   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
123123   AM_RANGE(0x80, 0x81) AM_READWRITE(soundlatch_r, vigilant_sample_addr_w)   /* STL / STH */
124124   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w)         /* COUNT UP */
125125   AM_RANGE(0x83, 0x83) AM_WRITE(m72_sound_irq_ack_w)   /* IRQ clear */
r6428r6429
556556   /* sound hardware */
557557   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
558558
559   MDRV_SOUND_ADD("ym", YM2151, 3579645)
559   MDRV_SOUND_ADD("ymsnd", YM2151, 3579645)
560560   MDRV_SOUND_CONFIG(ym2151_config)
561561   MDRV_SOUND_ROUTE(0, "lspeaker", 0.55)
562562   MDRV_SOUND_ROUTE(1, "rspeaker", 0.55)
r6428r6429
658658   /* sound hardware */
659659   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
660660
661   MDRV_SOUND_ADD("ym", YM2151, 3579645)
661   MDRV_SOUND_ADD("ymsnd", YM2151, 3579645)
662662   MDRV_SOUND_CONFIG(ym2151_config)
663663   MDRV_SOUND_ROUTE(0, "lspeaker", 0.55)
664664   MDRV_SOUND_ROUTE(1, "rspeaker", 0.55)
src/mame/drivers/nbmj8991.c
r6428r6429
254254static ADDRESS_MAP_START( galkoku_io_map, ADDRESS_SPACE_IO, 8 )
255255   ADDRESS_MAP_GLOBAL_MASK(0xff)
256256   AM_RANGE(0x00, 0x7f) AM_READWRITE(nb1413m3_sndrom_r,nbmj8991_blitter_w)
257   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
257   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
258258   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
259259   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
260260   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
268268static ADDRESS_MAP_START( hyouban_io_map, ADDRESS_SPACE_IO, 8 )
269269   ADDRESS_MAP_GLOBAL_MASK(0xff)
270270   AM_RANGE(0x00, 0x7f) AM_READWRITE(nb1413m3_sndrom_r,nbmj8991_blitter_w)
271   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
272   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
271   AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_r)
272   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_data_address_w)
273273   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
274274   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
275275   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
r6428r6429
320320   AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", DAC_WRITE)
321321   AM_RANGE(0x04, 0x04) AM_WRITE(nbmj8991_soundbank_w)
322322   AM_RANGE(0x06, 0x06) AM_WRITENOP
323   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
323   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_w)
324324ADDRESS_MAP_END
325325
326326
r6428r6429
14981498
14991499   /* sound hardware */
15001500   MDRV_SPEAKER_STANDARD_MONO("mono")
1501   MDRV_SOUND_ADD("fm", YM3812, 25000000/10)
1501   MDRV_SOUND_ADD("fmsnd", YM3812, 25000000/10)
15021502   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
15031503
15041504   MDRV_SOUND_ADD("dac", DAC, 0)
r6428r6429
15371537   /* sound hardware */
15381538   MDRV_SPEAKER_STANDARD_MONO("mono")
15391539
1540   MDRV_SOUND_ADD("fm", YM3812, 25000000/6.25)
1540   MDRV_SOUND_ADD("fmsnd", YM3812, 25000000/6.25)
15411541   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
15421542
15431543   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
15541554   MDRV_IMPORT_FROM(nbmjdrv1)
15551555
15561556   /* sound hardware */
1557   MDRV_SOUND_REPLACE("fm", AY8910, 1250000)
1557   MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000)
15581558   MDRV_SOUND_CONFIG(ay8910_config)
15591559   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
15601560MACHINE_DRIVER_END
src/mame/drivers/galivan.c
r6428r6429
162162
163163static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
164164   ADDRESS_MAP_GLOBAL_MASK(0xff)
165   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3526_w)
165   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_w)
166166   AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_w)
167167   AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_w)
168168/*  AM_RANGE(0x04, 0x04) AM_READNOP    value read and *discarded*    */
r6428r6429
467467   /* sound hardware */
468468   MDRV_SPEAKER_STANDARD_MONO("mono")
469469
470   MDRV_SOUND_ADD("ym", YM3526, 8000000/2)
470   MDRV_SOUND_ADD("ymsnd", YM3526, 8000000/2)
471471   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
472472
473473   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
509509
510510   /* sound hardware */
511511   MDRV_SPEAKER_STANDARD_MONO("mono")
512   MDRV_SOUND_ADD("ym", YM3526, 8000000/2)
512   MDRV_SOUND_ADD("ymsnd", YM3526, 8000000/2)
513513   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
514514
515515   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/splash.c
r6428r6429
138138   AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w)            /* ADPCM data for the MSM5205 chip */
139139//  AM_RANGE(0xe000, 0xe000) AM_WRITENOP                                /* ??? */
140140   AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_r)                  /* Sound latch */
141   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)   /* YM3812 */
141   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)   /* YM3812 */
142142   AM_RANGE(0xf800, 0xffff) AM_RAM                              /* RAM */
143143ADDRESS_MAP_END
144144
r6428r6429
182182
183183static ADDRESS_MAP_START( roldfrog_sound_io_map, ADDRESS_SPACE_IO, 8 )
184184   ADDRESS_MAP_GLOBAL_MASK(0xff)
185   AM_RANGE(0x12, 0x13) AM_DEVWRITE("ym", ym2203_w)
185   AM_RANGE(0x12, 0x13) AM_DEVWRITE("ymsnd", ym2203_w)
186186   AM_RANGE(0x40, 0x40) AM_NOP   /* NMI ack */
187187   AM_RANGE(0x70, 0x70) AM_READ(soundlatch_r)
188188ADDRESS_MAP_END
r6428r6429
421421   /* sound hardware */
422422   MDRV_SPEAKER_STANDARD_MONO("mono")
423423
424   MDRV_SOUND_ADD("ym", YM3812, 3000000)
424   MDRV_SOUND_ADD("ymsnd", YM3812, 3000000)
425425   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
426426
427427   MDRV_SOUND_ADD("msm", MSM5205, 384000)
r6428r6429
475475
476476   MDRV_SPEAKER_STANDARD_MONO("mono")
477477
478   MDRV_SOUND_ADD("ym", YM2203, 3000000)
478   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
479479   MDRV_SOUND_CONFIG(ym2203_config)
480480   MDRV_SOUND_ROUTE(0, "mono", 0.60)
481481   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
514514   /* sound hardware */
515515//  MDRV_SPEAKER_STANDARD_MONO("mono")
516516
517//  MDRV_SOUND_ADD("ym", YM3812, 3000000)
517//  MDRV_SOUND_ADD("ymsnd", YM3812, 3000000)
518518//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
519519
520520//  MDRV_SOUND_ADD("msm", MSM5205, 384000)
src/mame/drivers/buster.c
r6428r6429
9191
9292   MDRV_SPEAKER_STANDARD_MONO("mono")
9393
94   MDRV_SOUND_ADD("ay", AY8910, 1500000/2)
94   MDRV_SOUND_ADD("aysnd", AY8910, 1500000/2)
9595//  MDRV_SOUND_CONFIG(ay8910_config)
9696   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
9797MACHINE_DRIVER_END
src/mame/drivers/route16.c
r6428r6429
574574   AY8910_DEFAULT_LOADS,
575575   DEVCB_NULL,
576576   DEVCB_NULL,
577   DEVCB_DEVICE_HANDLER("sn", stratvox_sn76477_w),  /* SN76477 commands (not used in Route 16?) */
577   DEVCB_DEVICE_HANDLER("snsnd", stratvox_sn76477_w),  /* SN76477 commands (not used in Route 16?) */
578578   DEVCB_NULL
579579};
580580
r6428r6429
662662   MDRV_SOUND_CONFIG(stratvox_ay8910_interface)
663663   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
664664
665   MDRV_SOUND_ADD("sn", SN76477, 0)
665   MDRV_SOUND_ADD("snsnd", SN76477, 0)
666666   MDRV_SOUND_CONFIG(sn76477_intf)
667667   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
668668
src/mame/drivers/m63.c
r6428r6429
121121#include "sound/ay8910.h"
122122#include "sound/samples.h"
123123
124SAMPLES_START( fghtbskt_sh_start );
125WRITE8_HANDLER( fghtbskt_samples_w );
124typedef struct _m63_state m63_state;
125struct _m63_state
126{
127   UINT8 *  videoram;
128   UINT8 *  colorram;
129   UINT8 *  spriteram;
130   UINT8 *  videoram2;
131   UINT8 *  scrollram;
126132
127static UINT8 *m63_videoram2, *m63_scrollram;
128static int pal_bank, fg_flag, sy_offset;
129static tilemap *bg_tilemap, *fg_tilemap;
130static UINT8 sound_irq;
131static int sound_status;
132static int p1,p2;
133   /* video-related */
134   tilemap  *bg_tilemap, *fg_tilemap;
135   int      pal_bank, fg_flag, sy_offset;
133136
137   /* sound-related */
138   UINT8    sound_irq;
139   int      sound_status;
140   int      p1, p2;
141   INT16    *samplebuf;
134142
143   /* sound devices */
144   const device_config *ay1;
145   const device_config *ay2;
146   const device_config *samples;
147};
148
149
135150static PALETTE_INIT( m63 )
136151{
137152   int i;
138153
139   for (i = 0;i < 256;i++)
154   for (i = 0; i < 256; i++)
140155   {
141      int bit0,bit1,bit2,bit3,r,g,b;
156      int bit0, bit1, bit2, bit3, r, g, b;
142157
143158      /* red component */
144159      bit0 = (color_prom[i] >> 0) & 0x01;
r6428r6429
162177      palette_set_color(machine,i,MAKE_RGB(r,g,b));
163178   }
164179
165   color_prom += 3*256;
180   color_prom += 3 * 256;
166181
167   for (i = 0;i < 4;i++)
182   for (i = 0; i < 4; i++)
168183   {
169      int bit0,bit1,bit2,r,g,b;
184      int bit0, bit1, bit2, r, g, b;
170185
171186      /* red component */
172187      bit0 = (color_prom[i] >> 0) & 0x01;
r6428r6429
189204
190205static WRITE8_HANDLER( m63_videoram_w )
191206{
192   videoram[offset] = data;
193   tilemap_mark_tile_dirty(bg_tilemap, offset);
207   m63_state *state = (m63_state *)space->machine->driver_data;
208
209   state->videoram[offset] = data;
210   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
194211}
195212
196213static WRITE8_HANDLER( m63_colorram_w )
197214{
198   colorram[offset] = data;
199   tilemap_mark_tile_dirty(bg_tilemap, offset);
215   m63_state *state = (m63_state *)space->machine->driver_data;
216
217   state->colorram[offset] = data;
218   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
200219}
201220
202221static WRITE8_HANDLER( m63_videoram2_w )
203222{
204   m63_videoram2[offset] = data;
205   tilemap_mark_tile_dirty(fg_tilemap, offset);
223   m63_state *state = (m63_state *)space->machine->driver_data;
224
225   state->videoram2[offset] = data;
226   tilemap_mark_tile_dirty(state->fg_tilemap, offset);
206227}
207228
208229static WRITE8_HANDLER( m63_palbank_w )
209230{
210   if (pal_bank != (data & 0x01))
231   m63_state *state = (m63_state *)space->machine->driver_data;
232
233   if (state->pal_bank != (data & 0x01))
211234   {
212      pal_bank = data & 0x01;
213      tilemap_mark_all_tiles_dirty(bg_tilemap);
235      state->pal_bank = data & 0x01;
236      tilemap_mark_all_tiles_dirty(state->bg_tilemap);
214237   }
215238}
216239
r6428r6429
225248
226249static WRITE8_HANDLER( fghtbskt_flipscreen_w )
227250{
251   m63_state *state = (m63_state *)space->machine->driver_data;
252
228253   flip_screen_set(space->machine, data);
229   fg_flag = flip_screen_get(space->machine) ? TILE_FLIPX : 0;
254   state->fg_flag = flip_screen_get(space->machine) ? TILE_FLIPX : 0;
230255}
231256
232257
233258static TILE_GET_INFO( get_bg_tile_info )
234259{
235   int attr = colorram[tile_index];
236   int code = videoram[tile_index] | ((attr & 0x30) << 4);
237   int color = (attr & 0x0f) + (pal_bank << 4);
260   m63_state *state = (m63_state *)machine->driver_data;
238261
262   int attr = state->colorram[tile_index];
263   int code = state->videoram[tile_index] | ((attr & 0x30) << 4);
264   int color = (attr & 0x0f) + (state->pal_bank << 4);
265
239266   SET_TILE_INFO(1, code, color, 0);
240267}
241268
242269static TILE_GET_INFO( get_fg_tile_info )
243270{
244   int code = m63_videoram2[tile_index];
271   m63_state *state = (m63_state *)machine->driver_data;
245272
246   SET_TILE_INFO(0, code, 0, fg_flag);
273   int code = state->videoram2[tile_index];
274
275   SET_TILE_INFO(0, code, 0, state->fg_flag);
247276}
248277
249278static VIDEO_START( m63 )
250279{
251   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
252      8, 8, 32, 32);
280   m63_state *state = (m63_state *)machine->driver_data;
253281
254   fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,
255      8, 8, 32, 32);
282   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
283   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
256284
257   tilemap_set_scroll_cols(bg_tilemap, 32);
258   tilemap_set_transparent_pen(fg_tilemap, 0);
259
260   fg_flag = 0;
285   tilemap_set_scroll_cols(state->bg_tilemap, 32);
286   tilemap_set_transparent_pen(state->fg_tilemap, 0);
261287}
262288
263289static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
264290{
291   m63_state *state = (m63_state *)machine->driver_data;
265292   int offs;
266293
267   for (offs = 0;offs < spriteram_size;offs += 4)
294   for (offs = 0; offs < spriteram_size; offs += 4)
268295   {
269      int code = spriteram[offs + 1] | ((spriteram[offs + 2] & 0x10) << 4);
270      int color = (spriteram[offs + 2] & 0x0f) + (pal_bank << 4);
271      int flipx = spriteram[offs + 2] & 0x20;
296      int code = state->spriteram[offs + 1] | ((state->spriteram[offs + 2] & 0x10) << 4);
297      int color = (state->spriteram[offs + 2] & 0x0f) + (state->pal_bank << 4);
298      int flipx = state->spriteram[offs + 2] & 0x20;
272299      int flipy = 0;
273      int sx = spriteram[offs + 3];
274      int sy = sy_offset - spriteram[offs];
300      int sx = state->spriteram[offs + 3];
301      int sy = state->sy_offset - state->spriteram[offs];
275302
276303      if (flip_screen_get(machine))
277304      {
278305         sx = 240 - sx;
279         sy = sy_offset - sy;
306         sy = state->sy_offset - sy;
280307         flipx = !flipx;
281308         flipy = !flipy;
282309      }
r6428r6429
294321         machine->gfx[2],
295322         code, color,
296323         flipx, flipy,
297         sx-0x100, sy, 0);
324         sx - 0x100, sy, 0);
298325      }
299326
300327   }
r6428r6429
302329
303330static VIDEO_UPDATE( m63 )
304331{
332   m63_state *state = (m63_state *)screen->machine->driver_data;
333
305334   int col;
306335
307336   for (col = 0; col < 32; col++)
308      tilemap_set_scrolly(bg_tilemap, col, m63_scrollram[col * 8]);
337      tilemap_set_scrolly(state->bg_tilemap, col, state->scrollram[col * 8]);
309338
310   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
339   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
311340   draw_sprites(screen->machine, bitmap, cliprect);
312   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
341   tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0);
313342   return 0;
314343}
315344
r6428r6429
327356
328357static WRITE8_HANDLER( snddata_w )
329358{
330   const device_config *ay1 = devtag_get_device(space->machine, "ay1");
331   const device_config *ay2 = devtag_get_device(space->machine, "ay2");
359   m63_state *state = (m63_state *)space->machine->driver_data;
332360
333   if ((p2 & 0xf0) == 0xe0)
334      ay8910_address_w(ay1, 0, offset);
335   else if ((p2 & 0xf0) == 0xa0)
336      ay8910_data_w(ay1, 0, offset);
337   else if (ay2 != NULL && (p1 & 0xe0) == 0x60)
338      ay8910_address_w(ay2, 0, offset);
339   else if (ay2 != NULL && (p1 & 0xe0) == 0x40)
340       ay8910_data_w(ay2, 0, offset);
341   else if ((p2 & 0xf0) == 0x70 )
342      sound_status = offset;
361   if ((state->p2 & 0xf0) == 0xe0)
362      ay8910_address_w(state->ay1, 0, offset);
363   else if ((state->p2 & 0xf0) == 0xa0)
364      ay8910_data_w(state->ay1, 0, offset);
365   else if (state->ay2 != NULL && (state->p1 & 0xe0) == 0x60)
366      ay8910_address_w(state->ay2, 0, offset);
367   else if (state->ay2 != NULL && (state->p1 & 0xe0) == 0x40)
368       ay8910_data_w(state->ay2, 0, offset);
369   else if ((state->p2 & 0xf0) == 0x70 )
370      state->sound_status = offset;
343371}
344372
345373static WRITE8_HANDLER( p1_w )
346374{
347   p1 = data;
375   m63_state *state = (m63_state *)space->machine->driver_data;
376   state->p1 = data;
348377}
349378
350379static WRITE8_HANDLER( p2_w )
351380{
352   p2 = data;
353   if((p2 & 0xf0) == 0x50)
381   m63_state *state = (m63_state *)space->machine->driver_data;
382
383   state->p2 = data;
384   if((state->p2 & 0xf0) == 0x50)
354385   {
355386      cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
356387   }
r6428r6429
358389
359390static READ8_HANDLER( snd_status_r )
360391{
361   return sound_status;
392   m63_state *state = (m63_state *)space->machine->driver_data;
393   return state->sound_status;
362394}
363395
364396static READ8_HANDLER( irq_r )
365397{
366   if (sound_irq)
398   m63_state *state = (m63_state *)space->machine->driver_data;
399
400   if (state->sound_irq)
367401   {
368      sound_irq = 0;
402      state->sound_irq = 0;
369403      return 1;
370404   }
371405   return 0;
r6428r6429
373407
374408static READ8_HANDLER( snddata_r )
375409{
376   switch(p2 & 0xf0)
410   m63_state *state = (m63_state *)space->machine->driver_data;
411   switch (state->p2 & 0xf0)
377412   {
378413      case 0x60:   return soundlatch_r(space, 0); ;
379      case 0x70:   return memory_region(space->machine, "user1")[((p1 & 0x1f) << 8) | offset];
414      case 0x70:   return memory_region(space->machine, "user1")[((state->p1 & 0x1f) << 8) | offset];
380415   }
381416   return 0xff;
382417}
383418
419static WRITE8_HANDLER( fghtbskt_samples_w )
420{
421   m63_state *state = (m63_state *)space->machine->driver_data;
422
423   if (data & 1)
424      sample_start_raw(state->samples, 0, state->samplebuf + ((data & 0xf0) << 8), 0x2000, 8000, 0);
425}
426
384427static ADDRESS_MAP_START( m63_map, ADDRESS_SPACE_PROGRAM, 8 )
385428   AM_RANGE(0x0000, 0xbfff) AM_ROM
386429   AM_RANGE(0xd000, 0xdfff) AM_RAM
387430   AM_RANGE(0xe000, 0xe1ff) AM_RAM
388   AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
389   AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_BASE(&m63_scrollram)
390   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE(&m63_videoram2)
391   AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE(&videoram)
392   AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_BASE(&colorram)
431   AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE(&spriteram_size)
432   AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_BASE_MEMBER(m63_state, scrollram)
433   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, videoram2)
434   AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, videoram)
435   AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_BASE_MEMBER(m63_state, colorram)
393436   AM_RANGE(0xf000, 0xf000) AM_WRITE(interrupt_enable_w)   /* NMI enable */
394437   AM_RANGE(0xf002, 0xf002) AM_WRITE(m63_flipscreen_w)
395438   AM_RANGE(0xf003, 0xf003) AM_WRITE(m63_palbank_w)
r6428r6429
406449   AM_RANGE(0x8000, 0xbfff) AM_ROM
407450   AM_RANGE(0xc000, 0xc7ff) AM_RAM
408451   AM_RANGE(0xd000, 0xd1ff) AM_RAM
409   AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
410   AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_BASE(&m63_scrollram)
411   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE(&m63_videoram2)
412   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_BASE(&videoram)
413   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_BASE(&colorram)
452   AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE(&spriteram_size)
453   AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_BASE_MEMBER(m63_state, scrollram)
454   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, videoram2)
455   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, videoram)
456   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_BASE_MEMBER(m63_state, colorram)
414457   AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r)
415458   AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1")
416459   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2")
r6428r6429
622665GFXDECODE_END
623666
624667
668static SAMPLES_START( fghtbskt_sh_start )
669{
670   running_machine *machine = device->machine;
671   m63_state *state = (m63_state *)machine->driver_data;
672   int i, len = memory_region_length(machine, "samples");
673   UINT8 *ROM = memory_region(machine, "samples");
674
675   state->samplebuf = auto_alloc_array(machine, INT16, len);
676   state_save_register_global_pointer(machine, state->samplebuf, len);
677
678   for(i = 0; i < len; i++)
679      state->samplebuf[i] = ((INT8)(ROM[i] ^ 0x80)) * 256;
680}
681
625682static const samples_interface fghtbskt_samples_interface =
626683{
627684   1,
r6428r6429
631688
632689static INTERRUPT_GEN( snd_irq )
633690{
634   sound_irq = 1;
691   m63_state *state = (m63_state *)device->machine->driver_data;
692   state->sound_irq = 1;
635693}
636694
695static MACHINE_START( m63 )
696{
697   m63_state *state = (m63_state *)machine->driver_data;
698
699   state->ay1 = devtag_get_device(machine, "ay1");
700   state->ay2 = devtag_get_device(machine, "ay2");
701   state->samples = devtag_get_device(machine, "samples");
702
703   state_save_register_global(machine, state->pal_bank);
704   state_save_register_global(machine, state->fg_flag);
705   state_save_register_global(machine, state->sy_offset);
706
707   /* sound-related */
708   state_save_register_global(machine, state->sound_irq);
709   state_save_register_global(machine, state->sound_status);
710   state_save_register_global(machine, state->p1);
711   state_save_register_global(machine, state->p2);
712}
713
714static MACHINE_RESET( m63 )
715{
716   m63_state *state = (m63_state *)machine->driver_data;
717
718   state->pal_bank = 0;
719   state->fg_flag = 0;
720   state->sound_irq = 0;
721   state->sound_status = 0;
722   state->p1 = 0;
723   state->p2 = 0;
724}
725
637726static MACHINE_DRIVER_START( m63 )
638727
728   /* driver data */
729   MDRV_DRIVER_DATA(m63_state)
730
639731   /* basic machine hardware */
640732   MDRV_CPU_ADD("maincpu",Z80,XTAL_12MHz/4)     /* 3 MHz */
641733   MDRV_CPU_PROGRAM_MAP(m63_map)
r6428r6429
646738   MDRV_CPU_IO_MAP(i8039_port_map)
647739   MDRV_CPU_PERIODIC_INT(snd_irq, 60)
648740
741   MDRV_MACHINE_START(m63)
742   MDRV_MACHINE_RESET(m63)
649743
650744   /* video hardware */
651745   MDRV_SCREEN_ADD("screen", RASTER)
r6428r6429
680774
681775static MACHINE_DRIVER_START( fghtbskt )
682776
777   /* driver data */
778   MDRV_DRIVER_DATA(m63_state)
779
683780   /* basic machine hardware */
684781   MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/4)     /* 3 MHz */
685782   MDRV_CPU_PROGRAM_MAP(fghtbskt_map)
r6428r6429
690787   MDRV_CPU_IO_MAP(i8039_port_map)
691788   MDRV_CPU_PERIODIC_INT(snd_irq, 60/2)
692789
790   MDRV_MACHINE_START(m63)
791   MDRV_MACHINE_RESET(m63)
792
693793   /* video hardware */
694794   MDRV_SCREEN_ADD("screen", RASTER)
695795   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
888988   ROM_LOAD( "fb_r.9e",      0x0000, 0x0100, CRC(c5cdc8ba) SHA1(3fcef3ebe0dda72dfa35e042ff611758c345d749) )
889989   ROM_LOAD( "fb_g.10e",     0x0100, 0x0100, CRC(1460c936) SHA1(f99a544c83931de098a6cfac391f63ae43f5cdd0) )
890990   ROM_LOAD( "fb_b.11e",     0x0200, 0x0100, CRC(fca5bf0e) SHA1(5846f43aa2906cac58e300fdab197b99f896e3ef) )
891
892
893991ROM_END
894992
895993static DRIVER_INIT( wilytowr )
896994{
897   sy_offset = 238;
995   m63_state *state = (m63_state *)machine->driver_data;
996   state->sy_offset = 238;
898997}
899998
900999static DRIVER_INIT( fghtbskt )
9011000{
902   sy_offset = 240;
1001   m63_state *state = (m63_state *)machine->driver_data;
1002   state->sy_offset = 240;
9031003}
9041004
905GAME( 1984, wilytowr, 0,        m63,      wilytowr, wilytowr, ROT180, "Irem",                    "Wily Tower", 0 )
906GAME( 1985, atomboy,  wilytowr, atomboy,  wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision B)", 0 )
907GAME( 1985, atomboya, wilytowr, atomboy,  wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision A)", 0 )
908GAME( 1984, fghtbskt, 0,        fghtbskt, fghtbskt, fghtbskt, ROT0,   "Paradise Co. Ltd.",       "Fighting Basketball", 0 )
1005GAME( 1984, wilytowr, 0,        m63,      wilytowr, wilytowr, ROT180, "Irem",                    "Wily Tower", GAME_SUPPORTS_SAVE )
1006GAME( 1985, atomboy,  wilytowr, atomboy,  wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision B)", GAME_SUPPORTS_SAVE )
1007GAME( 1985, atomboya, wilytowr, atomboy,  wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision A)", GAME_SUPPORTS_SAVE )
1008GAME( 1984, fghtbskt, 0,        fghtbskt, fghtbskt, fghtbskt, ROT0,   "Paradise Co. Ltd.",       "Fighting Basketball", GAME_SUPPORTS_SAVE )
src/mame/drivers/tatsumi.c
r6428r6429
222222   AM_RANGE(0x00000, 0x01fff) AM_RAM
223223   AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ?
224224   AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw
225   AM_RANGE(0x08000, 0x08001) AM_DEVREADWRITE("ym", tatsumi_hack_ym2151_r, ym2151_w)
225   AM_RANGE(0x08000, 0x08001) AM_DEVREADWRITE("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
226226   AM_RANGE(0x0a000, 0x0a000) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w)
227227   AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select
228228   AM_RANGE(0xf0000, 0xfffff) AM_ROM
r6428r6429
266266static ADDRESS_MAP_START( roundup5_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
267267   AM_RANGE(0x0000, 0xdfff) AM_ROM
268268   AM_RANGE(0xe000, 0xffef) AM_RAM
269   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE("ym", tatsumi_hack_ym2151_r, ym2151_w)
269   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
270270   AM_RANGE(0xfff4, 0xfff4) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w)
271271   AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0")
272272   AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1")
r6428r6429
323323static ADDRESS_MAP_START( cyclwarr_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
324324   AM_RANGE(0x0000, 0xdfff) AM_ROM
325325   AM_RANGE(0xe000, 0xffef) AM_RAM
326   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE("ym", tatsumi_hack_ym2151_r, ym2151_w)
326   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
327327   AM_RANGE(0xfff4, 0xfff4) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w)
328328   AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_r)
329329   AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP
r6428r6429
891891   /* sound hardware */
892892   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
893893
894   MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4)
894   MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
895895   MDRV_SOUND_CONFIG(ym2151_config)
896896   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
897897   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
r6428r6429
934934   /* sound hardware */
935935   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
936936
937   MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4)
937   MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
938938   MDRV_SOUND_CONFIG(ym2151_config)
939939   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
940940   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
r6428r6429
978978   /* sound hardware */
979979   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
980980
981   MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4)
981   MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
982982   MDRV_SOUND_CONFIG(ym2151_config)
983983   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
984984   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
r6428r6429
10221022   /* sound hardware */
10231023   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10241024
1025   MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4)
1025   MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
10261026   MDRV_SOUND_CONFIG(ym2151_config)
10271027   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
10281028   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/supbtime.c
r6428r6429
9898   ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
9999   AM_RANGE(0x000000, 0x00ffff) AM_ROM
100100   AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
101   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
101   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
102102   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
103103   AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
104104   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
348348   /* sound hardware */
349349   MDRV_SPEAKER_STANDARD_MONO("mono")
350350
351   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
351   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
352352   MDRV_SOUND_CONFIG(ym2151_config)
353353   MDRV_SOUND_ROUTE(0, "mono", 0.45)
354354   MDRV_SOUND_ROUTE(1, "mono", 0.45)
r6428r6429
388388   /* sound hardware */
389389   MDRV_SPEAKER_STANDARD_MONO("mono")
390390
391   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
391   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
392392   MDRV_SOUND_CONFIG(ym2151_config)
393393   MDRV_SOUND_ROUTE(0, "mono", 0.45)
394394   MDRV_SOUND_ROUTE(1, "mono", 0.45)
src/mame/drivers/segamsys.c
r6428r6429
16431643   /* INIT THE PORTS *********************************************************************************************/
16441644
16451645   const address_space *io = cputag_get_address_space(machine, tag, ADDRESS_SPACE_IO);
1646   const device_config *sn = devtag_get_device(machine, "sn");
1646   const device_config *sn = devtag_get_device(machine, "snsnd");
16471647
16481648   memory_install_readwrite8_handler(io, 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w);
16491649
r6428r6429
17491749   /* sound hardware */
17501750   MDRV_SPEAKER_STANDARD_MONO("mono")
17511751
1752   MDRV_SOUND_ADD("sn", SN76496, 3579540)
1752   MDRV_SOUND_ADD("snsnd", SN76496, 3579540)
17531753   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
17541754MACHINE_DRIVER_END
17551755
src/mame/drivers/gbusters.c
r6428r6429
147147   AM_RANGE(0x8000, 0x87ff) AM_RAM                                       /* RAM */
148148   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                           /* soundlatch_r */
149149   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)      /* 007232 registers */
150   AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ym", ym2151_status_port_r)               /* YM 2151 */
151   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)            /* YM 2151 */
150   AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ymsnd", ym2151_status_port_r)               /* YM 2151 */
151   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)            /* YM 2151 */
152152   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", gbusters_snd_bankswitch_w)      /* 007232 bankswitch? */
153153ADDRESS_MAP_END
154154
r6428r6429
253253   /* sound hardware */
254254   MDRV_SPEAKER_STANDARD_MONO("mono")
255255
256   MDRV_SOUND_ADD("ym", YM2151, 3579545)
256   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
257257   MDRV_SOUND_ROUTE(0, "mono", 0.60)
258258   MDRV_SOUND_ROUTE(1, "mono", 0.60)
259259
src/mame/drivers/m72.c
r6428r6429
10271027
10281028static ADDRESS_MAP_START( rtype_sound_portmap, ADDRESS_SPACE_IO, 8 )
10291029   ADDRESS_MAP_GLOBAL_MASK(0xff)
1030   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1030   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
10311031   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
10321032   AM_RANGE(0x06, 0x06) AM_WRITE(m72_sound_irq_ack_w)
10331033   AM_RANGE(0x84, 0x84) AM_READ(m72_sample_r)
r6428r6429
10351035
10361036static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
10371037   ADDRESS_MAP_GLOBAL_MASK(0xff)
1038   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1038   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
10391039   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
10401040   AM_RANGE(0x06, 0x06) AM_WRITE(m72_sound_irq_ack_w)
10411041   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w)
r6428r6429
10441044
10451045static ADDRESS_MAP_START( rtype2_sound_portmap, ADDRESS_SPACE_IO, 8 )
10461046   ADDRESS_MAP_GLOBAL_MASK(0xff)
1047   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1047   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
10481048   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r)
10491049   AM_RANGE(0x80, 0x81) AM_WRITE(rtype2_sample_addr_w)
10501050   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w)
r6428r6429
10551055static ADDRESS_MAP_START( poundfor_sound_portmap, ADDRESS_SPACE_IO, 8 )
10561056   ADDRESS_MAP_GLOBAL_MASK(0xff)
10571057   AM_RANGE(0x10, 0x13) AM_WRITE(poundfor_sample_addr_w)
1058   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1058   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
10591059   AM_RANGE(0x42, 0x42) AM_READ(soundlatch_r)
10601060   AM_RANGE(0x42, 0x42) AM_WRITE(m72_sound_irq_ack_w)
10611061ADDRESS_MAP_END
r6428r6429
18101810   /* sound hardware */
18111811   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18121812
1813   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
1813   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
18141814   MDRV_SOUND_CONFIG(ym2151_config)
18151815   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
18161816   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
18441844   /* sound hardware */
18451845   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18461846
1847   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
1847   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
18481848   MDRV_SOUND_CONFIG(ym2151_config)
18491849   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
18501850   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
19041904   /* sound hardware */
19051905   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19061906
1907   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
1907   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
19081908   MDRV_SOUND_CONFIG(ym2151_config)
19091909   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19101910   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
19451945   /* sound hardware */
19461946   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19471947
1948   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
1948   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
19491949   MDRV_SOUND_CONFIG(ym2151_config)
19501950   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19511951   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
19861986   /* sound hardware */
19871987   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19881988
1989   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
1989   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
19901990   MDRV_SOUND_CONFIG(ym2151_config)
19911991   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19921992   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
20262026   /* sound hardware */
20272027   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20282028
2029   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2029   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
20302030   MDRV_SOUND_CONFIG(ym2151_config)
20312031   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
20322032   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
20672067   /* sound hardware */
20682068   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20692069
2070   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2070   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
20712071   MDRV_SOUND_CONFIG(ym2151_config)
20722072   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
20732073   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
21072107   /* sound hardware */
21082108   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21092109
2110   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2110   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
21112111   MDRV_SOUND_CONFIG(ym2151_config)
21122112   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
21132113   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
21472147   /* sound hardware */
21482148   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21492149
2150   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2150   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
21512151   MDRV_SOUND_CONFIG(ym2151_config)
21522152   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
21532153   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
21882188   /* sound hardware */
21892189   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21902190
2191   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2191   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
21922192   MDRV_SOUND_CONFIG(ym2151_config)
21932193   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
21942194   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
22292229   /* sound hardware */
22302230   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
22312231
2232   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2232   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
22332233   MDRV_SOUND_CONFIG(ym2151_config)
22342234   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
22352235   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
22692269   /* sound hardware */
22702270   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
22712271
2272   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK)
2272   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
22732273   MDRV_SOUND_CONFIG(ym2151_config)
22742274   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
22752275   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
30303030
30313031ROM_START( rtype2 )
30323032   ROM_REGION( 0x100000, "maincpu", 0 )
3033   ROM_LOAD16_BYTE( "ic54.8d",      0x00001, 0x20000, CRC(d8ece6f4) SHA1(f7bb246fe8b75af24716d419bb3c6e7d9cd0971e) )
3034   ROM_LOAD16_BYTE( "ic60.9d",      0x00000, 0x20000, CRC(32cfb2e4) SHA1(d4b44a40e2933040eddb2b09de7bfe28d76c5f25) )
3035   ROM_LOAD16_BYTE( "ic53.8b",      0x40001, 0x20000, CRC(4f6e9b15) SHA1(ef733c2615951f54691877ad3e84d08107723324) )
3036   ROM_RELOAD(                      0xc0001, 0x20000 )
3037   ROM_LOAD16_BYTE( "ic59.9b",      0x40000, 0x20000, CRC(0fd123bf) SHA1(1133163f6716e9a4bbb437b3a471477d0bd97051) )
3038   ROM_RELOAD(                      0xc0000, 0x20000 )
3033   ROM_LOAD16_BYTE( "rt2-a-h0-d.54", 0x00001, 0x20000, CRC(d8ece6f4) SHA1(f7bb246fe8b75af24716d419bb3c6e7d9cd0971e) )
3034   ROM_LOAD16_BYTE( "rt2-a-l0-d.60", 0x00000, 0x20000, CRC(32cfb2e4) SHA1(d4b44a40e2933040eddb2b09de7bfe28d76c5f25) )
3035   ROM_LOAD16_BYTE( "rt2-a-h1-d.53", 0x40001, 0x20000, CRC(4f6e9b15) SHA1(ef733c2615951f54691877ad3e84d08107723324) )
3036   ROM_RELOAD(                       0xc0001, 0x20000 )
3037   ROM_LOAD16_BYTE( "rt2-a-l1-d.59", 0x40000, 0x20000, CRC(0fd123bf) SHA1(1133163f6716e9a4bbb437b3a471477d0bd97051) )
3038   ROM_RELOAD(                       0xc0000, 0x20000 )
30393039
30403040   ROM_REGION( 0x10000, "soundcpu", 0 )
30413041   ROM_LOAD( "ic17.4f",      0x0000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
r6428r6429
30923092   ROM_LOAD( "ic14.4c",      0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
30933093ROM_END
30943094
3095ROM_START( rtype2jc )
3096   ROM_REGION( 0x100000, "maincpu", 0 )
3097   ROM_LOAD16_BYTE( "rt2-a-h0-c.54",  0x00001, 0x20000, CRC(ef9a9990) SHA1(fdf8fb7cb2b16f3cc58592da5c696ccff85f87e0) )
3098   ROM_LOAD16_BYTE( "rt2-a-l0-c.60",  0x00000, 0x20000, CRC(d8b9da64) SHA1(ce19fc95d0adefa57c2161d7b0d756ecf799c707) )
3099   ROM_LOAD16_BYTE( "rt2-a-h1-c.53",  0x40001, 0x20000, CRC(1b1870f4) SHA1(9a98b146980a87d088b7157da7a64c99902ddd54) )
3100   ROM_RELOAD(                        0xc0001, 0x20000 )
3101   ROM_LOAD16_BYTE( "rt2-a-l1-c.59",  0x40000, 0x20000, CRC(60fdff35) SHA1(9c89682deebfa88864b5af9cf0f05944d5c2212f) )
3102   ROM_RELOAD(                        0xc0000, 0x20000 )
3103
3104   ROM_REGION( 0x10000, "soundcpu", 0 )
3105   ROM_LOAD( "ic17.4f",      0x0000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) )
3106
3107   ROM_REGION( 0x080000, "gfx1", 0 )
3108   ROM_LOAD( "ic31.6l",      0x00000, 0x20000, CRC(2cd8f913) SHA1(a53752b35da95b420dd29a09176d265d292b3938) )   /* sprites */
3109   ROM_LOAD( "ic21.4l",      0x20000, 0x20000, CRC(5033066d) SHA1(e125127f0610c63f9e59a585db547be5d49ed863) )
3110   ROM_LOAD( "ic32.6m",      0x40000, 0x20000, CRC(ec3a0450) SHA1(632bdd397f1bc67f6970faf7d09ab8d911e105fe) )
3111   ROM_LOAD( "ic22.4m",      0x60000, 0x20000, CRC(db6176fc) SHA1(1eaf72af0322490c98461aded202288e387caac1) )
3112
3113   ROM_REGION( 0x100000, "gfx2", 0 )
3114   ROM_LOAD( "ic50.7s",      0x00000, 0x20000, CRC(f3f8736e) SHA1(37872b30459ad05b2981d4ac84983f3b52d0d2d6) )   /* tiles */
3115   ROM_LOAD( "ic51.7u",      0x20000, 0x20000, CRC(b4c543af) SHA1(56042eba711160fc701021c8787414dcaddcdecb) )
3116   ROM_LOAD( "ic56.8s",      0x40000, 0x20000, CRC(4cb80d66) SHA1(31c5496c14b277e428a2f22195fe1742d6a577d4) )
3117   ROM_LOAD( "ic57.8u",      0x60000, 0x20000, CRC(bee128e0) SHA1(b149dae5f8f67a329d6df033fadf50ad75c0a57a) )
3118   ROM_LOAD( "ic65.9r",      0x80000, 0x20000, CRC(2dc9c71a) SHA1(124e89c17f3af034d5a387ff3eab906d289c27f7) )
3119   ROM_LOAD( "ic66.9u",      0xa0000, 0x20000, CRC(7533c428) SHA1(ba435cfb6c3c49fcc4d716dcecf8f17545b8eec6) )
3120   ROM_LOAD( "ic63.9m",      0xc0000, 0x20000, CRC(a6ad67f2) SHA1(b005b037ce8b3c932089982ecfbccdc922278fe3) )
3121   ROM_LOAD( "ic64.9p",      0xe0000, 0x20000, CRC(3686d555) SHA1(d03754d9b8a6a3bfd4a85eeddacc35a36af197bd) )
3122
3123   ROM_REGION( 0x20000, "samples", 0 )   /* samples */
3124   ROM_LOAD( "ic14.4c",      0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) )
3125ROM_END
3126
3127
30953128ROM_START( majtitle )
30963129   ROM_REGION( 0x100000, "maincpu", 0 )
30973130   ROM_LOAD16_BYTE( "mt_h0-a.bin",    0x00001, 0x20000, CRC(36aadb67) SHA1(11cb9f190431ef7b68bcad691191c810b00452be) )
r6428r6429
34913524GAME( 1987, mrheli,      bchopper, m72,      bchopper, mrheli,   ROT0,   "Irem", "Mr. HELI no Dai-Bouken", GAME_NO_COCKTAIL )
34923525GAME( 1988, nspirit,     0,        m72,      nspirit,  nspirit,  ROT0,   "Irem", "Ninja Spirit", GAME_NO_COCKTAIL )
34933526GAME( 1988, nspiritj,    nspirit,  m72_8751, nspirit,  m72_8751, ROT0,   "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL ) /* some corruption on warning screen (layer enable?) */
3494GAME( 1988, imgfight,    0,        m72,      imgfight, imgfight, ROT270, "Irem", "Image Fight (revision A, Japan)", 0 )
3527GAME( 1988, imgfight,    0,        m72,      imgfight, imgfight, ROT270, "Irem", "Image Fight (Japan, revision A)", 0 )
34953528GAME( 1988, imgfighto,   imgfight, m72,      imgfight, imgfight, ROT270, "Irem", "Image Fight (Japan)", 0 )
34963529GAME( 1989, loht,        0,        m72,      loht,     loht,     ROT0,   "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL )
34973530GAME( 1989, lohtj,       loht,     m72,      loht,     loht,     ROT0,   "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL )
34983531GAME( 1989, lohtb,       loht,     m72,      loht,     0,        ROT0,   "Irem", "Legend of Hero Tonma (bootleg, set 1)", GAME_NOT_WORKING| GAME_NO_COCKTAIL )
34993532GAME( 1989, lohtb2,      loht,     m72_8751, loht,     m72_8751, ROT0,   "Irem", "Legend of Hero Tonma (bootleg, set 2)", GAME_NO_COCKTAIL )
35003533GAME( 1989, xmultipl,    0,        xmultipl, xmultipl, xmultipl, ROT0,   "Irem", "X Multiply (Japan)", GAME_NO_COCKTAIL )
3501GAME( 1989, dbreed,      0,        dbreed,   dbreed,   0,        ROT0,   "Irem", "Dragon Breed (M81 pcb version)", GAME_NO_COCKTAIL )
3502GAME( 1989, dbreedm72,   dbreed,   dbreed72, dbreed,   dbreed72, ROT0,   "Irem", "Dragon Breed (M72 pcb version)", GAME_NO_COCKTAIL )
3534GAME( 1989, dbreed,      0,        dbreed,   dbreed,   0,        ROT0,   "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL )
3535GAME( 1989, dbreedm72,   dbreed,   dbreed72, dbreed,   dbreed72, ROT0,   "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL )
35033536GAME( 1989, rtype2,      0,        rtype2,   rtype2,   0,        ROT0,   "Irem", "R-Type II", GAME_NO_COCKTAIL )
35043537GAME( 1989, rtype2j,     rtype2,   rtype2,   rtype2,   0,        ROT0,   "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL )
3538GAME( 1989, rtype2jc,    rtype2,   rtype2,   rtype2,   0,        ROT0,   "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL )
35053539GAME( 1990, majtitle,    0,        majtitle, rtype2,   0,        ROT0,   "Irem", "Major Title (World)", GAME_NO_COCKTAIL )
35063540GAME( 1990, majtitlej,   majtitle, majtitle, rtype2,   0,        ROT0,   "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL )
35073541GAME( 1990, hharry,      0,        hharry,   hharry,   0,        ROT0,   "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL )
src/mame/drivers/crgolf.c
r6428r6429
258258static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
259259   AM_RANGE(0x0000, 0x7fff) AM_ROM
260260   AM_RANGE(0x8000, 0x87ff) AM_RAM
261   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay", ay8910_address_data_w)
261   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
262262   AM_RANGE(0xc002, 0xc002) AM_WRITENOP
263263   AM_RANGE(0xe000, 0xe000) AM_READWRITE(switch_input_r, switch_input_select_w)
264264   AM_RANGE(0xe001, 0xe001) AM_READWRITE(analog_input_r, unknown_w)
r6428r6429
382382
383383   /* sound hardware */
384384   MDRV_SPEAKER_STANDARD_MONO("mono")
385   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/3/2/2)
385   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/3/2/2)
386386   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
387387MACHINE_DRIVER_END
388388
src/mame/drivers/rmhaihai.c
r6428r6429
186186   AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
187187   AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP)   // ??
188188   AM_RANGE(0x8001, 0x8001) AM_READWRITE(SMH_NOP, keyboard_w)   // ??
189   AM_RANGE(0x8020, 0x8020) AM_DEVREAD("ay", ay8910_r)
190   AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("ay", ay8910_address_data_w)
189   AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_r)
190   AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_address_data_w)
191191   AM_RANGE(0x8040, 0x8040) AM_DEVWRITE("msm", adpcm_w)
192192   AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w)
193193   AM_RANGE(0x8080, 0x8080) AM_WRITENOP   // ??
r6428r6429
209209   AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
210210   AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP)   // ??
211211   AM_RANGE(0x8001, 0x8001) AM_READWRITE(SMH_NOP, keyboard_w)   // ??
212   AM_RANGE(0x8020, 0x8020) AM_DEVREAD("ay", ay8910_r)
213   AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("ay", ay8910_address_data_w)
212   AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_r)
213   AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_address_data_w)
214214   AM_RANGE(0x8040, 0x8040) AM_DEVWRITE("msm", adpcm_w)
215215   AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w)
216216   AM_RANGE(0x8080, 0x8080) AM_WRITENOP   // ??
r6428r6429
461461   /* sound hardware */
462462   MDRV_SPEAKER_STANDARD_MONO("mono")
463463
464   MDRV_SOUND_ADD("ay", AY8910, 20000000/16)
464   MDRV_SOUND_ADD("aysnd", AY8910, 20000000/16)
465465   MDRV_SOUND_CONFIG(ay8910_config)
466466   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
467467
src/mame/drivers/topspeed.c
r6428r6429
486486   AM_RANGE(0x0000, 0x3fff) AM_ROM
487487   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
488488   AM_RANGE(0x8000, 0x8fff) AM_RAM
489   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
489   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
490490   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
491491   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
492492   AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("msm", topspeed_msm5205_address_w)
r6428r6429
704704   /* sound hardware */
705705   MDRV_SPEAKER_STANDARD_MONO("mono")
706706
707   MDRV_SOUND_ADD("ym", YM2151, 4000000)
707   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
708708   MDRV_SOUND_CONFIG(ym2151_config)
709709   MDRV_SOUND_ROUTE(0, "mono", 0.30)
710710   MDRV_SOUND_ROUTE(1, "mono", 0.30)
src/mame/drivers/amspdwy.c
r6428r6429
9595   AM_RANGE(0xa800, 0xa800) AM_READ(amspdwy_wheel_0_r)                     // Player 1
9696   AM_RANGE(0xac00, 0xac00) AM_READ(amspdwy_wheel_1_r)                     // Player 2
9797   AM_RANGE(0xb000, 0xb000) AM_WRITENOP                              // ? Exiting IRQ
98   AM_RANGE(0xb400, 0xb400) AM_DEVREAD("ym", amspdwy_sound_r) AM_WRITE(amspdwy_sound_w)      // YM2151 status, To Sound CPU
98   AM_RANGE(0xb400, 0xb400) AM_DEVREAD("ymsnd", amspdwy_sound_r) AM_WRITE(amspdwy_sound_w)      // YM2151 status, To Sound CPU
9999   AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)// Sprites
100100   AM_RANGE(0xe000, 0xe7ff) AM_RAM                                    // Work RAM
101101ADDRESS_MAP_END
r6428r6429
125125   AM_RANGE(0x0000, 0x7fff) AM_ROM                           // ROM
126126//  AM_RANGE(0x8000, 0x8000) AM_WRITENOP                            // ? Written with 0 at the start
127127   AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_r)               // From Main CPU
128   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         //
128   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)         //
129129   AM_RANGE(0xc000, 0xdfff) AM_RAM                           // Work RAM
130130   AM_RANGE(0xffff, 0xffff) AM_READNOP                        // ??? IY = FFFF at the start ?
131131ADDRESS_MAP_END
r6428r6429
295295   /* sound hardware */
296296   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
297297
298   MDRV_SOUND_ADD("ym", YM2151, 3000000)
298   MDRV_SOUND_ADD("ymsnd", YM2151, 3000000)
299299   MDRV_SOUND_CONFIG(amspdwy_ym2151_interface)
300300   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
301301   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/fantland.c
r6428r6429
282282
283283static ADDRESS_MAP_START( fantland_sound_iomap, ADDRESS_SPACE_IO, 8 )
284284   AM_RANGE( 0x0080, 0x0080 ) AM_READ( soundlatch_r )
285   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE( "ym", ym2151_r, ym2151_w )
285   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE( "ymsnd", ym2151_r, ym2151_w )
286286   AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE( "dac", dac_w )
287287ADDRESS_MAP_END
288288
289289static ADDRESS_MAP_START( galaxygn_sound_iomap, ADDRESS_SPACE_IO, 8 )
290290   AM_RANGE( 0x0080, 0x0080 ) AM_READ( soundlatch_r )
291   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE( "ym", ym2151_r, ym2151_w )
291   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE( "ymsnd", ym2151_r, ym2151_w )
292292ADDRESS_MAP_END
293293
294294
r6428r6429
399399static ADDRESS_MAP_START( wheelrun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
400400   AM_RANGE(0x0000, 0x7fff) AM_ROM
401401   AM_RANGE(0x8000, 0x87ff) AM_RAM
402   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3526_r, ym3526_w )
402   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_r, ym3526_w )
403403
404404   AM_RANGE(0xb000, 0xb000) AM_WRITE( SMH_NOP )   // on a car crash / hit
405405   AM_RANGE(0xc000, 0xc000) AM_WRITE( SMH_NOP )   // ""
r6428r6429
853853   /* sound hardware */
854854   MDRV_SPEAKER_STANDARD_MONO("mono")
855855
856   MDRV_SOUND_ADD("ym", YM2151, 3000000)
856   MDRV_SOUND_ADD("ymsnd", YM2151, 3000000)
857857   MDRV_SOUND_ROUTE(0, "mono", 0.35)
858858   MDRV_SOUND_ROUTE(1, "mono", 0.35)
859859
r6428r6429
901901   /* sound hardware */
902902   MDRV_SPEAKER_STANDARD_MONO("mono")
903903
904   MDRV_SOUND_ADD("ym", YM2151, 3000000)
904   MDRV_SOUND_ADD("ymsnd", YM2151, 3000000)
905905   MDRV_SOUND_CONFIG(galaxygn_ym2151_interface)
906906   MDRV_SOUND_ROUTE(0, "mono", 1.0)
907907   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
10131013   /* sound hardware */
10141014   MDRV_SPEAKER_STANDARD_MONO("mono")
10151015
1016   MDRV_SOUND_ADD("ym", YM3526, XTAL_14MHz/4)
1016   MDRV_SOUND_ADD("ymsnd", YM3526, XTAL_14MHz/4)
10171017   MDRV_SOUND_CONFIG(wheelrun_ym3526_interface)
10181018   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
10191019MACHINE_DRIVER_END
src/mame/drivers/albazc.c
r6428r6429
1414#include "cpu/z80/z80.h"
1515#include "sound/ay8910.h"
1616
17/* video */
17typedef struct _albazc_state albazc_state;
18struct _albazc_state
19{
20   /* video-related */
21   UINT8 *  spriteram1;
22   UINT8 *  spriteram2;
23   UINT8 *  spriteram3;
24};
1825
19static UINT8 *hanaroku_spriteram1;
20static UINT8 *hanaroku_spriteram2;
21static UINT8 *hanaroku_spriteram3;
2226
2327
28/* video */
29
2430static PALETTE_INIT( hanaroku )
2531{
2632   int i;
27   int r,g,b;
33   int r, g, b;
2834
2935   for (i = 0; i < 0x200; i++)
3036   {
31      b = (color_prom[i*2+1] & 0x1f);
32      g = ((color_prom[i*2+1] & 0xe0) | ( (color_prom[i*2+0]& 0x03) <<8)  ) >> 5;
33      r = (color_prom[i*2+0]&0x7c) >> 2;
37      b = (color_prom[i * 2 + 1] & 0x1f);
38      g = ((color_prom[i * 2 + 1] & 0xe0) | ((color_prom[i * 2 + 0]& 0x03) <<8)) >> 5;
39      r = (color_prom[i * 2 + 0] & 0x7c) >> 2;
3440
35      palette_set_color_rgb(machine,i,pal5bit(r),pal5bit(g),pal5bit(b));
41      palette_set_color_rgb(machine, i, pal5bit(r), pal5bit(g), pal5bit(b));
3642   }
3743}
3844
3945
40static VIDEO_START(hanaroku)
46static VIDEO_START( hanaroku )
4147{
4248}
4349
44static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
50static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
4551{
52   albazc_state *state = (albazc_state *)machine->driver_data;
4653   int i;
4754
4855   for (i = 511; i >= 0; i--)
4956   {
50      int code = hanaroku_spriteram1[i] | (hanaroku_spriteram2[i] << 8);
51      int color = (hanaroku_spriteram2[i + 0x200] & 0xf8) >> 3;
57      int code = state->spriteram1[i] | (state->spriteram2[i] << 8);
58      int color = (state->spriteram2[i + 0x200] & 0xf8) >> 3;
5259      int flipx = 0;
5360      int flipy = 0;
54      int sx = hanaroku_spriteram1[i + 0x200] | ((hanaroku_spriteram2[i + 0x200] & 0x07) << 8);
55      int sy = 242 - hanaroku_spriteram3[i];
61      int sx = state->spriteram1[i + 0x200] | ((state->spriteram2[i + 0x200] & 0x07) << 8);
62      int sy = 242 - state->spriteram3[i];
5663
5764      if (flip_screen_get(machine))
5865      {
r6428r6429
120127
121128static ADDRESS_MAP_START( hanaroku_map, ADDRESS_SPACE_PROGRAM, 8 )
122129   AM_RANGE(0x0000, 0x7fff) AM_ROM
123   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&hanaroku_spriteram1)
124   AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE(&hanaroku_spriteram2)
125   AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE(&hanaroku_spriteram3)
130   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(albazc_state, spriteram1)
131   AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE_MEMBER(albazc_state, spriteram2)
132   AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE_MEMBER(albazc_state, spriteram3)
126133   AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP   // ??? written once during P.O.S.T.
127134   AM_RANGE(0xa300, 0xa304) AM_WRITENOP   // ???
128135   AM_RANGE(0xb000, 0xb000) AM_WRITENOP   // ??? always 0x40
129136   AM_RANGE(0xc000, 0xc3ff) AM_RAM         // main ram
130137   AM_RANGE(0xc400, 0xc4ff) AM_RAM         // ???
131   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ay", ay8910_r)
132   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
138   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("aysnd", ay8910_r)
139   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
133140   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w)
134141   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1")
135142   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w)
r6428r6429
227234
228235
229236static MACHINE_DRIVER_START( hanaroku )
237
238   /* driver data */
239   MDRV_DRIVER_DATA(albazc_state)
240
230241   MDRV_CPU_ADD("maincpu", Z80,6000000)       /* ? MHz */
231242   MDRV_CPU_PROGRAM_MAP(hanaroku_map)
232243   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
r6428r6429
249260   /* sound hardware */
250261   MDRV_SPEAKER_STANDARD_MONO("mono")
251262
252   MDRV_SOUND_ADD("ay", AY8910, 1500000)
263   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
253264   MDRV_SOUND_CONFIG(ay8910_config)
254265   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
255266MACHINE_DRIVER_END
r6428r6429
271282ROM_END
272283
273284
274GAME( 1988, hanaroku, 0,        hanaroku, hanaroku, 0, ROT0, "Alba", "Hanaroku", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS )
285GAME( 1988, hanaroku, 0,        hanaroku, hanaroku, 0, ROT0, "Alba", "Hanaroku", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
src/mame/drivers/thunderx.c
r6428r6429
416416   AM_RANGE(0x8000, 0x87ff) AM_RAM               /* RAM */
417417   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)         /* soundlatch_r */
418418   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)      /* 007232 registers */
419   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)      /* YM2151 */
419   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)      /* YM2151 */
420420   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", scontra_snd_bankswitch_w)   /* 007232 bank select */
421421ADDRESS_MAP_END
422422
r6428r6429
424424   AM_RANGE(0x0000, 0x7fff) AM_ROM
425425   AM_RANGE(0x8000, 0x87ff) AM_RAM
426426   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
427   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
427   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
428428ADDRESS_MAP_END
429429
430430/***************************************************************************
r6428r6429
604604   /* sound hardware */
605605   MDRV_SPEAKER_STANDARD_MONO("mono")
606606
607   MDRV_SOUND_ADD("ym", YM2151, 3579545)
607   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
608608   MDRV_SOUND_ROUTE(0, "mono", 1.0)
609609   MDRV_SOUND_ROUTE(1, "mono", 1.0)
610610
r6428r6429
645645   /* sound hardware */
646646   MDRV_SPEAKER_STANDARD_MONO("mono")
647647
648   MDRV_SOUND_ADD("ym", YM2151, 3579545)
648   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
649649   MDRV_SOUND_ROUTE(0, "mono", 1.0)
650650   MDRV_SOUND_ROUTE(1, "mono", 1.0)
651651MACHINE_DRIVER_END
src/mame/drivers/sothello.c
r6428r6429
125125    AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r)
126126    AM_RANGE( 0x40, 0x4f) AM_WRITE(soundlatch_w)
127127    AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w)
128    AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
128    AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
129129                     /* not sure, but the A1 line is ignored, code @ $8b8 */
130130    AM_RANGE( 0x70, 0x70) AM_WRITE( v9938_0_vram_w ) AM_READ( v9938_0_vram_r )
131131    AM_RANGE( 0x71, 0x71) AM_WRITE( v9938_0_command_w ) AM_READ( v9938_0_status_r )
r6428r6429
377377
378378    /* sound hardware */
379379    MDRV_SPEAKER_STANDARD_MONO("mono")
380    MDRV_SOUND_ADD("ym", YM2203, YM_CLOCK)
380    MDRV_SOUND_ADD("ymsnd", YM2203, YM_CLOCK)
381381    MDRV_SOUND_CONFIG(ym2203_config)
382382    MDRV_SOUND_ROUTE(0, "mono", 0.25)
383383    MDRV_SOUND_ROUTE(1, "mono", 0.25)
src/mame/drivers/tumbleb.c
r6428r6429
691691#else
692692   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
693693#endif
694   AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
694   AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
695695   AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
696696   AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
697697   AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* sprites */
r6428r6429
806806static ADDRESS_MAP_START( semicom_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
807807   AM_RANGE(0x0000, 0xcfff) AM_ROM
808808   AM_RANGE(0xd000, 0xd7ff) AM_RAM
809   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
809   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
810810   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
811811//  AM_RANGE(0xf006, 0xf006) ??
812812   AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r)
r6428r6429
841841
842842static ADDRESS_MAP_START( jumppop_sound_io_map, ADDRESS_SPACE_IO, 8 )
843843   ADDRESS_MAP_GLOBAL_MASK(0xff)
844   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3812_w)
844   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3812_w)
845845   AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
846846   AM_RANGE(0x03, 0x03) AM_READ(jumppop_z80latch_r)
847847   AM_RANGE(0x04, 0x04) AM_NOP
r6428r6429
21072107   /* sound hardware */
21082108   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21092109
2110   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
2110   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
21112111   MDRV_SOUND_ROUTE(0, "lspeaker", 0.20)
21122112   MDRV_SOUND_ROUTE(1, "rspeaker", 0.20)
21132113
r6428r6429
21702170   /* sound hardware - same as hyperpac */
21712171   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21722172
2173   MDRV_SOUND_ADD("ym", YM2151, 3427190)
2173   MDRV_SOUND_ADD("ymsnd", YM2151, 3427190)
21742174   MDRV_SOUND_CONFIG(semicom_ym2151_interface)
21752175   MDRV_SOUND_ROUTE(0, "lspeaker", 0.10)
21762176   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
r6428r6429
21902190   MDRV_IMPORT_FROM(htchctch)
21912191   MDRV_VIDEO_UPDATE( bcstory )
21922192
2193   MDRV_SOUND_REPLACE("ym", YM2151, 3427190)
2193   MDRV_SOUND_REPLACE("ymsnd", YM2151, 3427190)
21942194   MDRV_SOUND_CONFIG(semicom_ym2151_interface)
21952195   MDRV_SOUND_ROUTE(0, "lspeaker", 0.10)
21962196   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
r6428r6429
22112211static MACHINE_DRIVER_START( metlsavr )
22122212   MDRV_IMPORT_FROM(cookbib)
22132213
2214   MDRV_SOUND_REPLACE("ym", YM2151, 3427190)
2214   MDRV_SOUND_REPLACE("ymsnd", YM2151, 3427190)
22152215   MDRV_SOUND_CONFIG(semicom_ym2151_interface)
22162216   MDRV_SOUND_ROUTE(0, "lspeaker", 0.10)
22172217   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
r6428r6429
22442244
22452245   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
22462246
2247   MDRV_SOUND_ADD("ym", YM3812, 3500000)
2247   MDRV_SOUND_ADD("ymsnd", YM3812, 3500000)
22482248   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.70)
22492249   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.70)
22502250
src/mame/drivers/cabaret.c
r6428r6429
151151   AM_RANGE( 0x00a2, 0x00a2 ) AM_READ_PORT("DSW2")         /* DSW2 */
152152   AM_RANGE( 0x00b0, 0x00b0 ) AM_READ_PORT("DSW3")         /* DSW3 */
153153
154   AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE( "ym", ym2413_w )
154   AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE( "ymsnd", ym2413_w )
155155
156156   AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE( fg_tile_w )  AM_BASE( &fg_tile_ram )
157157   AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE( fg_color_w ) AM_BASE( &fg_color_ram )
r6428r6429
328328
329329   /* sound hardware */
330330   MDRV_SPEAKER_STANDARD_MONO("mono")
331   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
331   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
332332   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
333333MACHINE_DRIVER_END
334334
src/mame/drivers/kchamp.c
r6428r6429
401401static MACHINE_DRIVER_START( kchampvs )
402402
403403   /* basic machine hardware */
404   MDRV_CPU_ADD("maincpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
404    MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* verified on pcb */
405405   MDRV_CPU_PROGRAM_MAP(kchampvs_map)
406406   MDRV_CPU_IO_MAP(kchampvs_io_map)
407407   MDRV_CPU_VBLANK_INT("screen", kc_interrupt)
408408
409   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
409    MDRV_CPU_ADD("audiocpu", Z80, XTAL_12MHz/4) /* verified on pcb */
410410   MDRV_CPU_PROGRAM_MAP(kchampvs_sound_map)
411411   MDRV_CPU_IO_MAP(kchampvs_sound_io_map)      /* irq's triggered from main cpu */
412412                              /* nmi's from msm5205 */
413413
414414   /* video hardware */
415415   MDRV_SCREEN_ADD("screen", RASTER)
416   MDRV_SCREEN_REFRESH_RATE(60)
416    MDRV_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */
417417   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
418418   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
419419   MDRV_SCREEN_SIZE(32*8, 32*8)
r6428r6429
429429   /* sound hardware */
430430   MDRV_SPEAKER_STANDARD_MONO("mono")
431431
432   MDRV_SOUND_ADD("ay1", AY8910, 1500000)
432    MDRV_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8)    /* verified on pcb */
433433   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
434434
435   MDRV_SOUND_ADD("ay2", AY8910, 1500000)
435    MDRV_SOUND_ADD("ay2", AY8910, XTAL_12MHz/8)    /* verified on pcb */
436436   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
437437
438   MDRV_SOUND_ADD("msm", MSM5205, 375000)
438    MDRV_SOUND_ADD("msm", MSM5205, 375000)  /* verified on pcb, discrete circuit clock */
439439   MDRV_SOUND_CONFIG(msm_interface)
440440   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
441441MACHINE_DRIVER_END
src/mame/drivers/olibochu.c
r6428r6429
239239   AM_RANGE(0x0000, 0x1fff) AM_ROM
240240   AM_RANGE(0x6000, 0x63ff) AM_RAM
241241   AM_RANGE(0x7000, 0x7000) AM_READ(soundlatch_r)   /* likely ay8910 input port, not direct */
242   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay", ay8910_address_data_w)
242   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
243243   AM_RANGE(0x7004, 0x7004) AM_WRITENOP //sound filter?
244244   AM_RANGE(0x7006, 0x7006) AM_WRITENOP //irq ack?
245245ADDRESS_MAP_END
r6428r6429
424424   /* sound hardware */
425425   MDRV_SPEAKER_STANDARD_MONO("mono")
426426
427   MDRV_SOUND_ADD("ay", AY8910, 2000000)
427   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
428428   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
429429MACHINE_DRIVER_END
430430
src/mame/drivers/tugboat.c
r6428r6429
198198
199199static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
200200   AM_RANGE(0x0000, 0x01ff) AM_RAM AM_BASE(&tugboat_ram)
201   AM_RANGE(0x1060, 0x1061) AM_DEVWRITE("ay", ay8910_address_data_w)
201   AM_RANGE(0x1060, 0x1061) AM_DEVWRITE("aysnd", ay8910_address_data_w)
202202   AM_RANGE(0x10a0, 0x10a1) AM_WRITE(tugboat_hd46505_0_w)   /* scrolling is performed changing the start_addr register (0C/0D) */
203203   AM_RANGE(0x10c0, 0x10c1) AM_WRITE(tugboat_hd46505_1_w)
204204   AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w)
r6428r6429
338338   /* sound hardware */
339339   MDRV_SPEAKER_STANDARD_MONO("mono")
340340
341   MDRV_SOUND_ADD("ay", AY8910, 2000000)
341   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
342342   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
343343MACHINE_DRIVER_END
344344
src/mame/drivers/m90.c
r6428r6429
149149
150150static ADDRESS_MAP_START( m90_sound_cpu_io_map, ADDRESS_SPACE_IO, 8 )
151151   ADDRESS_MAP_GLOBAL_MASK(0xff)
152   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
152   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
153153   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r)
154154   AM_RANGE(0x80, 0x81) AM_WRITE(rtype2_sample_addr_w)
155155   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w)
r6428r6429
159159
160160static ADDRESS_MAP_START( bbmanw_sound_io_map, ADDRESS_SPACE_IO, 8 )
161161   ADDRESS_MAP_GLOBAL_MASK(0xff)
162   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
162   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
163163   AM_RANGE(0x42, 0x42) AM_READWRITE(soundlatch_r, m72_sound_irq_ack_w)
164164//  AM_RANGE(0x40, 0x41) AM_WRITE(rtype2_sample_addr_w)
165165//  AM_RANGE(0x41, 0x41) AM_READ(m72_sample_r)
r6428r6429
729729   /* sound hardware */
730730   MDRV_SPEAKER_STANDARD_MONO("mono")
731731
732   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
732   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
733733   MDRV_SOUND_CONFIG(ym2151_config)
734734   MDRV_SOUND_ROUTE(0, "mono", 0.15)
735735   MDRV_SOUND_ROUTE(1, "mono", 0.15)
r6428r6429
809809   /* sound hardware */
810810   MDRV_SPEAKER_STANDARD_MONO("mono")
811811
812   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
812   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
813813   MDRV_SOUND_CONFIG(ym2151_config)
814814   MDRV_SOUND_ROUTE(0, "mono", 0.15)
815815   MDRV_SOUND_ROUTE(1, "mono", 0.15)
r6428r6429
853853   /* sound hardware */
854854   MDRV_SPEAKER_STANDARD_MONO("mono")
855855
856   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
856   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
857857   MDRV_SOUND_CONFIG(ym2151_config)
858858   MDRV_SOUND_ROUTE(0, "mono", 0.15)
859859   MDRV_SOUND_ROUTE(1, "mono", 0.15)
r6428r6429
922922   /* sound hardware */
923923   MDRV_SPEAKER_STANDARD_MONO("mono")
924924
925   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
925   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
926926   MDRV_SOUND_CONFIG(ym2151_config)
927927   MDRV_SOUND_ROUTE(0, "mono", 0.15)
928928   MDRV_SOUND_ROUTE(1, "mono", 0.15)
src/mame/drivers/kingdrby.c
r6428r6429
375375
376376static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
377377   ADDRESS_MAP_GLOBAL_MASK(0xff)
378   AM_RANGE(0x40, 0x40) AM_DEVREAD("ay", ay8910_r)
379   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_data_address_w)
378   AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_r)
379   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_data_address_w)
380380ADDRESS_MAP_END
381381
382382/*************************************
r6428r6429
720720
721721   MDRV_SPEAKER_STANDARD_MONO("mono")
722722
723   MDRV_SOUND_ADD("ay", AY8910, CLK_1/8)   /* guess */
723   MDRV_SOUND_ADD("aysnd", AY8910, CLK_1/8)   /* guess */
724724   MDRV_SOUND_CONFIG(ay8910_config)
725725   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
726726MACHINE_DRIVER_END
src/mame/drivers/phoenix.c
r6428r6429
6464   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK(1), phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
6565   AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w)
6666   AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
67   AM_RANGE(0x6800, 0x68ff) AM_DEVWRITE("ay", ay8910_address_w)
68   AM_RANGE(0x6900, 0x69ff) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
67   AM_RANGE(0x6800, 0x68ff) AM_DEVWRITE("aysnd", ay8910_address_w)
68   AM_RANGE(0x6900, 0x69ff) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
6969   AM_RANGE(0x7000, 0x73ff) AM_READ(survival_input_port_0_r)            /* IN0 or IN1 */
7070   AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0")                      /* DSW */
7171ADDRESS_MAP_END
r6428r6429
550550   MDRV_SPEAKER_STANDARD_MONO("mono")
551551
552552   /* FIXME: check clock */
553   MDRV_SOUND_ADD("ay", AY8910, 11000000/4)
553   MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4)
554554   MDRV_SOUND_CONFIG(survival_ay8910_interface)
555555   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
556556MACHINE_DRIVER_END
src/mame/drivers/superqix.c
r6428r6429
584584
585585static ADDRESS_MAP_START( pbillian_port_map, ADDRESS_SPACE_IO, 8 )
586586   AM_RANGE(0x0000, 0x01ff) AM_RAM_WRITE(paletteram_BBGGRRII_w) AM_BASE(&paletteram)
587   AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay", ay8910_r)
588   AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("ay", ay8910_data_address_w)
587   AM_RANGE(0x0401, 0x0401) AM_DEVREAD("aysnd", ay8910_r)
588   AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("aysnd", ay8910_data_address_w)
589589   AM_RANGE(0x0408, 0x0408) AM_READ(pbillian_from_mcu_r)
590590   AM_RANGE(0x0408, 0x0408) AM_WRITE(pbillian_z80_mcu_w)
591591   AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w)
r6428r6429
597597
598598static ADDRESS_MAP_START( hotsmash_port_map, ADDRESS_SPACE_IO, 8 )
599599   AM_RANGE(0x0000, 0x01ff) AM_RAM_WRITE(paletteram_BBGGRRII_w) AM_BASE(&paletteram)
600   AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay", ay8910_r)
601   AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("ay", ay8910_data_address_w)
600   AM_RANGE(0x0401, 0x0401) AM_DEVREAD("aysnd", ay8910_r)
601   AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("aysnd", ay8910_data_address_w)
602602   AM_RANGE(0x0408, 0x0408) AM_READ(hotsmash_from_mcu_r)
603603   AM_RANGE(0x0408, 0x0408) AM_WRITE(hotsmash_z80_mcu_w)
604604   AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w)
r6428r6429
10521052
10531053   MDRV_SPEAKER_STANDARD_MONO("mono")
10541054
1055   MDRV_SOUND_ADD("ay", AY8910, 12000000/8)
1055   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8)
10561056   MDRV_SOUND_CONFIG(pbillian_ay8910_interface)
10571057   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
10581058
r6428r6429
10881088
10891089   MDRV_SPEAKER_STANDARD_MONO("mono")
10901090
1091   MDRV_SOUND_ADD("ay", AY8910, 12000000/8)
1091   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8)
10921092   MDRV_SOUND_CONFIG(hotsmash_ay8910_interface)
10931093   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
10941094
src/mame/drivers/cyberbal.c
r6428r6429
187187
188188static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
189189   AM_RANGE(0x0000, 0x1fff) AM_RAM
190   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
190   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
191191   AM_RANGE(0x2800, 0x2801) AM_WRITE(cyberbal_sound_68k_6502_w)
192192   AM_RANGE(0x2802, 0x2803) AM_READWRITE(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w)
193193   AM_RANGE(0x2804, 0x2805) AM_WRITE(atarigen_6502_sound_w)
r6428r6429
453453   /* sound hardware */
454454   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
455455
456   MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4)
456   MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
457457   MDRV_SOUND_CONFIG(ym2151_config)
458458   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
459459   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/drivers/lockon.c
r6428r6429
207207
208208static ADDRESS_MAP_START( sound_io, ADDRESS_SPACE_IO, 8 )
209209   ADDRESS_MAP_GLOBAL_MASK(0xff)
210   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
210   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
211211   AM_RANGE(0x02, 0x02) AM_NOP
212212ADDRESS_MAP_END
213213
r6428r6429
491491
492492   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
493493
494   MDRV_SOUND_ADD("ym", YM2203, XTAL_16MHz / 4)
494   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4)
495495   MDRV_SOUND_CONFIG(ym2203_config)
496496   MDRV_SOUND_ROUTE(0, "lspeaker", 0.40)
497497   MDRV_SOUND_ROUTE(0, "rspeaker", 0.40)
src/mame/drivers/spaceg.c
r6428r6429
1#include "driver.h"
2#include "cpu/z80/z80.h"
3#include "sound/dac.h"
4#include "sound/sn76496.h"
1/**************************************************************************************
52
6
7/*
83Space Guerrilla PCB Layout
94--------------------------
105
r6428r6429
164159      DIP24- Unpopulated position for DIP24 IC
165160      All ROMs type 2708 (DIP24)
166161
167*/
162**************************************************************************************/
168163
164#include "driver.h"
165#include "cpu/z80/z80.h"
166#include "sound/dac.h"
167#include "sound/sn76496.h"
169168
170169
170/*************************************
171 *
172 *  Driver data
173 *
174 *************************************/
171175
172static UINT8 *unkram;
176typedef struct _spaceg_state spaceg_state;
177struct _spaceg_state
178{
179   UINT8 *  videoram;
180   UINT8 *  unkram;
181   UINT8 *  io9400;
182   UINT8 *  io9401;
183};
173184
174static UINT8 *io9400;
175static UINT8 *io9401;
185/*************************************
186 *
187 *  Video emulation
188 *
189 *************************************/
176190
177191static PALETTE_INIT( spaceg )
178192{
179193   int i;
180194
181   for (i=0; i<128; i++)
195   for (i = 0; i < 128; i++)
182196      palette_set_color (machine, i, MAKE_RGB(0x00,0x00,0x00));
183197
184198
185   palette_set_color (machine,0, MAKE_RGB(0x00,0x00,0x00));   //ok czarny
186   palette_set_color (machine,1, MAKE_RGB(0x7f,0x00,0x00));//???
187   palette_set_color (machine,2, MAKE_RGB(0xff,0xff,0xff));   //ok+ bialy
188   palette_set_color (machine,3, MAKE_RGB(0xff,0x00,0x00));   //ok j.czerw.
189   palette_set_color (machine,4, MAKE_RGB(0x3f,0x3f,0xff));   //ok j.niebieski
190   palette_set_color (machine,5, MAKE_RGB(0x3f,0xff,0x3f));   //ok j.zielony
191   palette_set_color (machine,6, MAKE_RGB(0xff,0xbf,0xbf));   //ok+ 'majtki'
192   palette_set_color (machine,7, MAKE_RGB(0xff,0xff,0x00));   //ok+ zolty
199   palette_set_color (machine, 0, MAKE_RGB(0x00,0x00,0x00));   //ok czarny
200   palette_set_color (machine, 1, MAKE_RGB(0x7f,0x00,0x00));//???
201   palette_set_color (machine, 2, MAKE_RGB(0xff,0xff,0xff));   //ok+ bialy
202   palette_set_color (machine, 3, MAKE_RGB(0xff,0x00,0x00));   //ok j.czerw.
203   palette_set_color (machine, 4, MAKE_RGB(0x3f,0x3f,0xff));   //ok j.niebieski
204   palette_set_color (machine, 5, MAKE_RGB(0x3f,0xff,0x3f));   //ok j.zielony
205   palette_set_color (machine, 6, MAKE_RGB(0xff,0xbf,0xbf));   //ok+ 'majtki'
206   palette_set_color (machine, 7, MAKE_RGB(0xff,0xff,0x00));   //ok+ zolty
193207
194   palette_set_color (machine,8, MAKE_RGB(0xff,0x7f,0x00));   //ok+ pomaranczowy
195   palette_set_color (machine,9, MAKE_RGB(0x3f,0xbf,0xff));   //ok j.niebieski (ciemniejszy od 13)
196   palette_set_color (machine,10,MAKE_RGB(0x3f,0xbf,0x3f));   //ok+ c.zielony
197   palette_set_color (machine,11,MAKE_RGB(0x00,0xff,0x00));   //ok j.zielony
198   palette_set_color (machine,12,MAKE_RGB(0x7f,0x00,0x00));   //ok brazowy (c.czerw)
199   palette_set_color (machine,13,MAKE_RGB(0x7f,0xbf,0xff));   //ok j.niebieski (jasniejszy od 9)
200   palette_set_color (machine,14,MAKE_RGB(0x00,0xff,0xff));//???
201   palette_set_color (machine,15,MAKE_RGB(0x7f,0x7f,0x7f));//???
208   palette_set_color (machine, 8, MAKE_RGB(0xff,0x7f,0x00));   //ok+ pomaranczowy
209   palette_set_color (machine, 9, MAKE_RGB(0x3f,0xbf,0xff));   //ok j.niebieski (ciemniejszy od 13)
210   palette_set_color (machine, 10, MAKE_RGB(0x3f,0xbf,0x3f));   //ok+ c.zielony
211   palette_set_color (machine, 11, MAKE_RGB(0x00,0xff,0x00));   //ok j.zielony
212   palette_set_color (machine, 12, MAKE_RGB(0x7f,0x00,0x00));   //ok brazowy (c.czerw)
213   palette_set_color (machine, 13, MAKE_RGB(0x7f,0xbf,0xff));   //ok j.niebieski (jasniejszy od 9)
214   palette_set_color (machine, 14, MAKE_RGB(0x00,0xff,0xff));//???
215   palette_set_color (machine, 15, MAKE_RGB(0x7f,0x7f,0x7f));//???
202216
203217}
204218
205219static WRITE8_HANDLER( zvideoram_w )
206220{
221   spaceg_state *state = (spaceg_state *)space->machine->driver_data;
207222   int col;
208223
209   col = unkram[0x400];
224   col = state->unkram[0x400];
210225
211   if (col>0x0f) popmessage("color>0x0f =%2d",col);
226   if (col > 0x0f)
227      popmessage("color > 0x0f = %2d", col);
212228
213   col &=0x0f;
229   col &= 0x0f;
214230
215   switch(*io9401)
231   switch (*state->io9401)
216232   {
217233   case 0x0d:   /* 1101 */
218      videoram[offset] &= ~data;
219      data = videoram[offset];
234      state->videoram[offset] &= ~data;
235      data = state->videoram[offset];
220236      break;
221237
222238   case 0x01:   /* 0001 */
223239   case 0x00:   /* 0000 */
224      videoram[offset] = data;
240      state->videoram[offset] = data;
225241      break;
226242
227243   default:
228      logerror("mode =%02x pc=%04x\n",*io9401,cpu_get_pc(space->cpu) );
229      popmessage("mode =%02x pc=%04x\n",*io9401,cpu_get_pc(space->cpu) );
244      logerror("mode = %02x pc = %04x\n", *state->io9401, cpu_get_pc(space->cpu));
245      popmessage("mode = %02x pc = %04x\n", *state->io9401, cpu_get_pc(space->cpu));
230246      return;
231247   }
232248
233249
234   unkram  [offset] = col;
250   state->unkram[offset] = col;
235251}
236252
237253
238254static READ8_HANDLER(spaceg_colorram_r)
239255{
256   spaceg_state *state = (spaceg_state *)space->machine->driver_data;
257   int rgbcolor;
240258
241int rgbcolor;
242
243   if (offset<0x400)
259   if (offset < 0x400)
244260   {
245      rgbcolor = (unkram[offset]<<1) | ((offset &0x100)>>8);
261      rgbcolor = (state->unkram[offset] << 1) | ((offset &0x100) >> 8);
246262
247      if ((offset>=0x200) && (offset<0x220)) /* 0xa200- 0xa21f */
263      if ((offset >= 0x200) && (offset < 0x220)) /* 0xa200- 0xa21f */
248264      {
249265         /* palette 1 */
250266         int col_ind = offset & 0x1f;
251267         palette_set_color_rgb(space->machine, 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3));
252268      }
253      else
254      if ((offset>=0x300) && (offset<0x320)) /* 0xa300- 0xa31f */
269      else if ((offset >= 0x300) && (offset < 0x320)) /* 0xa300- 0xa31f */
255270      {
256271         /* palette 2 */
257272         int col_ind = offset & 0x1f;
r6428r6429
261276         logerror("palette? read from unkram offset = %04x\n",offset);
262277   }
263278
264if (*io9401!=0x40)
265   logerror("unkram read in mode: 9401 = %02x (offset=%04x)\n",*io9401,offset);
279   if (*state->io9401 != 0x40)
280      logerror("unkram read in mode: 9401 = %02x (offset = %04x)\n", *state->io9401, offset);
266281
267
268   return unkram[offset];
282   return state->unkram[offset];
269283}
270284
271285
272286static VIDEO_UPDATE( spaceg )
273287{
288   spaceg_state *state = (spaceg_state *)screen->machine->driver_data;
274289   offs_t offs;
275290
276291   for (offs = 0; offs < 0x2000; offs++)
277292   {
278293      int i;
279      UINT8 data = videoram[offs];
294      UINT8 data = state->videoram[offs];
280295
281296      int y = offs & 0xff;
282      UINT8 x = ((offs >> 8) << 3) - ((*io9400 & 0xe0) >> 5);
297      UINT8 x = ((offs >> 8) << 3) - ((*state->io9400 & 0xe0) >> 5);
283298
284299      for (i = 0; i < 8; i++)
285300      {
286         *BITMAP_ADDR16(bitmap, y, x) = (data & 0x80) ? unkram[offs] : 0;
301         *BITMAP_ADDR16(bitmap, y, x) = (data & 0x80) ? state->unkram[offs] : 0;
287302
288303         x++;
289304         data <<= 1;
r6428r6429
294309}
295310
296311
312/*************************************
313 *
314 *  Memory maps
315 *
316 *************************************/
317
297318static ADDRESS_MAP_START( spaceg_map, ADDRESS_SPACE_PROGRAM, 8 )
298319   AM_RANGE(0x0000, 0x1fff) AM_ROM
299320   AM_RANGE(0x3000, 0x3fff) AM_ROM
300321   AM_RANGE(0x7000, 0x77ff) AM_RAM
301322
302   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(spaceg_colorram_r, SMH_RAM) AM_BASE(&unkram)
303   AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(zvideoram_w) AM_BASE(&videoram)
323   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(spaceg_colorram_r, SMH_RAM) AM_BASE_MEMBER(spaceg_state, unkram)
324   AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(zvideoram_w) AM_BASE_MEMBER(spaceg_state, videoram)
304325
305   AM_RANGE(0x9400, 0x9400) AM_WRITE(SMH_RAM) AM_BASE(&io9400) /* gfx ctrl */
306   AM_RANGE(0x9401, 0x9401) AM_WRITE(SMH_RAM) AM_BASE(&io9401)   /* gfx ctrl */
326   AM_RANGE(0x9400, 0x9400) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(spaceg_state, io9400) /* gfx ctrl */
327   AM_RANGE(0x9401, 0x9401) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(spaceg_state, io9401) /* gfx ctrl */
307328   /* 9402 -
308329        bits 0 and 1 probably control the lamps under the player 1 and player 2 start buttons
309330        bit 2 - unknown -
r6428r6429
321342
322343
323344
345/*************************************
346 *
347 *  Input ports
348 *
349 *************************************/
350
324351static INPUT_PORTS_START( spaceg )
325352   PORT_START("9800")
326353   PORT_DIPUNUSED(  0x01, IP_ACTIVE_HIGH )                 /* was related to coinage */
r6428r6429
360387INPUT_PORTS_END
361388
362389
390/*************************************
391 *
392 *  Machine driver
393 *
394 *************************************/
395
363396static MACHINE_DRIVER_START( spaceg )
364397
398   /* driver data */
399   MDRV_DRIVER_DATA(spaceg_state)
400
365401   /* basic machine hardware */
366402   MDRV_CPU_ADD("maincpu", Z80,2500000)       /* 2.5 MHz */
367403   MDRV_CPU_PROGRAM_MAP(spaceg_map)
r6428r6429
396432MACHINE_DRIVER_END
397433
398434
399/***************************************************************************
435/*************************************
436 *
437 *  ROM definition
438 *
439 *************************************/
400440
401  Game driver(s)
402
403***************************************************************************/
404
405441ROM_START( spaceg )
406442   ROM_REGION( 0x10000, "maincpu", 0 )
407443   ROM_LOAD( "1.9a",  0x0000, 0x0400, CRC(d6f80b0e) SHA1(503e832c065bb302ec60ed239c4d99a605cb931a) )
r6428r6429
419455ROM_END
420456
421457
422GAME( 1979, spaceg, 0, spaceg, spaceg, 0, ROT270, "Omori", "Space Guerrilla", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
458/*************************************
459 *
460 *  Game driver
461 *
462 *************************************/
463
464GAME( 1979, spaceg, 0, spaceg, spaceg, 0, ROT270, "Omori", "Space Guerrilla", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
src/mame/drivers/gei.c
r0r6429
1/*
2
3  Greyhound Electronics Inc. hardware
4
5  driver by Nicola Salmoria
6  driver by Pierpaolo Prazzoli and graphic fixes by Tomasz Slanina
7  additional work by Mariusz Wojcieszek
8
9
10ROM board has a part # UVM10B  1984
11Main board has a part # UV-1B Rev 5 1982-83-84
12
13Processor: Z80
14Support Chips:(2) 8255s
15RAM: 6117on ROM board and (24) MCM4517s on main board
16
17When games are first run a RAM error will occur because the nvram needs initialising.
18When ERROR appears, press F2, then F3 to reset, then F2 again and the game will start
19
20Trivia games "No Coins" mode: if DSW "No Coins" is on, coin inputs are
21replaced by a 6th button to start games. This is a feature of the PCB for private use.
22
23Selection/Poker payout button: if pressed, all coins/credits are gone and added to the
24payout bookkeeping, shown in the service mode under the coin in total. Last Winner shows
25the last payout. Payout hardware is unknown.
26
27Video Trivia sets (as stated from Greyhound Electronics, Inc. manual):
28
29Series 1: (128K)           Series 2: (128K)           Series 3: (128K)
30----------------           ----------------           ----------------
31Science                    T.V. Mash                  Beatlemania
32General I                  General II                 General III
33Sports I                   Sports II                  Sports III
34Music                      Comics                     Country-Western
35Movies-T.V.                Entertainment              T.V. Soaps
36
37
38Series 4: (128K)           Series 5: (128K)           Series 6: (128K)
39----------------           ----------------           ----------------
40History-Geography          The States                 Science II
41Star Trek                  James Bond                 General IV
42Baseball                   Hockey                     Commercials-Ads
43Hollywood                  Elvismania                 Honeymooners
44Television I               The Wild West              Television II
45
46
47Series 7: (128K)           Series 8: (256K)           * Starting with Series 8
48----------------           ----------------           "Announcement":
49T.V. Dallas                Science                    3 Times as many
50General V                  General                    questions in this
51Kids Korner                Sports                     series!
52Good Guys                  T.V./Entertainment
53Biblical                   Adult Sex
54                            or alt: Potpourri
55
56
57Series 9: (256K)           Series 10: (256K)          Series 11: (256K)
58----------------           -----------------          -----------------
59Facts                      New Science                Rich and Famous
60Rock-N-Roll                New General                Fast Women and Cars
61Television                 New T.V. Mash              Aerospace
62Artists-Athletes           New Entertainment          TV/Music Alternative
63U.S.A. Trivia              New Sports                 General Facts
64 or alt: Adult Sex 2        or alt: Adult Sex 3        or alt: Gay Times
65
66*/
67
68#include "driver.h"
69#include "cpu/z80/z80.h"
70#include "machine/8255ppi.h"
71#include "machine/ticket.h"
72#include "sound/dac.h"
73
74static UINT8 drawctrl[3];
75static UINT8 color[8];
76
77static WRITE8_HANDLER( gei_drawctrl_w )
78{
79   drawctrl[offset] = data;
80   if (offset == 2)
81   {
82      int i;
83      for (i = 0; i < 8; i++)
84         if (BIT(drawctrl[1],i)) color[i] = drawctrl[0] & 7;
85   }
86}
87
88static WRITE8_HANDLER( gei_bitmap_w )
89{
90   int sx,sy;
91   static int prevoffset, yadd;
92   int i;
93
94   videoram[offset] = data;
95
96   yadd = (offset==prevoffset) ? (yadd+1):0;
97   prevoffset = offset;
98
99   sx = 8 * (offset % 64);
100   sy = offset / 64;
101   sy = (sy + yadd) & 0xff;
102
103
104   for (i = 0; i < 8; i++)
105      *BITMAP_ADDR16(tmpbitmap, sy, sx+i) = color[8-i-1];
106}
107
108static PALETTE_INIT(gei)
109{
110   int i;
111
112   for (i = 0; i < 8; i++ )
113   {
114      palette_set_color(machine, i, MAKE_RGB(pal1bit(i >> 2), pal1bit(i), pal1bit(i >> 1)));
115   }
116}
117
118static WRITE8_DEVICE_HANDLER( lamps_w )
119{
120   /* 5 button lamps */
121   set_led_status(0,data & 0x01);
122   set_led_status(1,data & 0x02);
123   set_led_status(2,data & 0x04);
124   set_led_status(3,data & 0x08);
125   set_led_status(4,data & 0x10);
126
127   /* 3 button lamps for deal, cancel, stand in poker games;
128    lamp order verified in poker and selection self tests */
129   set_led_status(7,data & 0x20);
130   set_led_status(5,data & 0x40);
131   set_led_status(6,data & 0x80);
132}
133
134static WRITE8_DEVICE_HANDLER( sound_w )
135{
136   const address_space *space = cputag_get_address_space(device->machine, "cpu", ADDRESS_SPACE_PROGRAM);
137
138   /* bit 3 - coin lockout, lamp10 in poker / lamp6 in trivia test modes */
139   coin_lockout_global_w(~data & 0x08);
140   set_led_status(9,data & 0x08);
141
142   /* bit 5 - ticket out in trivia games */
143   ticket_dispenser_w(space, 0, (data & 0x20)<< 2);
144
145   /* bit 6 enables NMI */
146   interrupt_enable_w(space, 0, data & 0x40);
147
148   /* bit 7 goes directly to the sound amplifier */
149   dac_data_w(devtag_get_device(device->machine, "dac"), ((data & 0x80) >> 7) * 255);
150}
151
152static WRITE8_DEVICE_HANDLER( sound2_w )
153{
154   /* bit 3,6 - coin lockout, lamp10+11 in selection test mode */
155   coin_lockout_w(0, ~data & 0x08);
156   coin_lockout_w(1, ~data & 0x40);
157   set_led_status(9,data & 0x08);
158   set_led_status(10,data & 0x40);
159
160   /* bit 4,5 - lamps 12, 13 in selection test mode;
161    12 lights up if dsw maximum bet = 30 an bet > 15 or if dsw maximum bet = 10 an bet = 10 */
162   set_led_status(11,data & 0x10);
163   set_led_status(12,data & 0x20);
164
165   /* bit 7 goes directly to the sound amplifier */
166   dac_data_w(devtag_get_device(device->machine, "dac"), ((data & 0x80) >> 7) * 255);
167}
168
169static WRITE8_DEVICE_HANDLER( lamps2_w )
170{
171   /* bit 4 - play/raise button lamp, lamp 9 in poker test mode  */
172   set_led_status(8,data & 0x10);
173}
174
175static WRITE8_DEVICE_HANDLER( nmi_w )
176{
177   const address_space *space = cputag_get_address_space(device->machine, "cpu", ADDRESS_SPACE_PROGRAM);
178
179   /* bit 4 - play/raise button lamp, lamp 9 in selection test mode  */
180   set_led_status(8,data & 0x10);
181
182   /* bit 6 enables NMI */
183   interrupt_enable_w(space, 0, data & 0x40);
184}
185
186static READ8_HANDLER( catchall )
187{
188   int pc = cpu_get_pc(space->cpu);
189
190   if (pc != 0x3c74 && pc != 0x0364 && pc != 0x036d)   /* weed out spurious blit reads */
191      logerror("%04x: unmapped memory read from %04x\n",pc,offset);
192
193   return 0xff;
194}
195
196static READ8_DEVICE_HANDLER( portC_r )
197{
198   return 4;
199}
200
201static WRITE8_HANDLER( banksel_main_w )
202{
203   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x8000);
204}
205static WRITE8_HANDLER( banksel_1_w )
206{
207   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x10000);
208}
209static WRITE8_HANDLER( banksel_2_w )
210{
211   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x18000);
212}
213static WRITE8_HANDLER( banksel_3_w )
214{
215   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x20000);
216}
217static WRITE8_HANDLER( banksel_4_w )
218{
219   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x28000);
220}
221static WRITE8_HANDLER( banksel_5_w )
222{
223   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x30000);
224}
225
226static WRITE8_HANDLER( banksel_1_1_w )
227{
228   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x10000);
229}
230static WRITE8_HANDLER( banksel_2_1_w )
231{
232   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x14000);
233}
234static WRITE8_HANDLER( banksel_3_1_w )
235{
236   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x18000);
237}
238static WRITE8_HANDLER( banksel_4_1_w )
239{
240   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1c000);
241}
242static WRITE8_HANDLER( banksel_5_1_w )
243{
244   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x20000);
245}
246static WRITE8_HANDLER( banksel_1_2_w )
247{
248   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x12000);
249}
250static WRITE8_HANDLER( banksel_2_2_w )
251{
252   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x16000);
253}
254static WRITE8_HANDLER( banksel_3_2_w )
255{
256   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1a000);
257}
258static WRITE8_HANDLER( banksel_4_2_w )
259{
260   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1e000);
261}
262static WRITE8_HANDLER( banksel_5_2_w )
263{
264   memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x22000);
265}
266
267static WRITE8_HANDLER(geimulti_bank_w)
268{
269   int bank = -1;
270
271   switch(offset + 0x5a00)
272   {
273      case 0x5a7e: bank = 0; break;
274      case 0x5a7d: bank = 1; break;
275      case 0x5a7b: bank = 2; break;
276      case 0x5a77: bank = 3; break;
277      case 0x5a6f: bank = 4; break;
278      case 0x5a5f: bank = 5; break;
279      case 0x5a3f: bank = 6; break;
280      case 0x5c7d: bank = 7; break;
281      case 0x5c7b: bank = 8; break;
282      case 0x5c77: bank = 9; break;
283      case 0x5c6f: bank = 10; break;
284      case 0x5c5f: bank = 11; break;
285      case 0x5c3f: bank = 12; break;
286      case 0x5c7e: bank = 13; break;
287      case 0x5aff: case 0x5cff: break;
288      default: logerror( "Uknown banking write, offset = %04x, data = %02x\n", offset, data);
289   }
290
291   if (bank != -1)
292      memory_set_bankptr(space->machine, 1, memory_region(space->machine, "bank") + bank*0x8000);
293}
294
295/* This signature is used to validate the ROMs in sportauth. Simple protection check? */
296static int signature_answer,signature_pos;
297
298static READ8_HANDLER( signature_r )
299{
300   return signature_answer;
301}
302
303static WRITE8_HANDLER( signature_w )
304{
305   if (data == 0) signature_pos = 0;
306   else
307   {
308      static const UINT8 signature[8] = { 0xff, 0x01, 0xfd, 0x05, 0xf5, 0x15, 0xd5, 0x55 };
309
310      signature_answer = signature[signature_pos++];
311
312      signature_pos &= 7;   /* safety; shouldn't happen */
313   }
314}
315
316static WRITE8_HANDLER( signature2_w )
317{
318   if (data == 0) signature_pos = 0;
319   else
320   {
321      static const UINT8 signature[8] = { 0xff, 0x01, 0xf7, 0x11, 0xd7, 0x51, 0x57, 0x51 };
322
323      signature_answer = signature[signature_pos++];
324
325      signature_pos &= 7;   /* safety; shouldn't happen */
326   }
327}
328
329static ADDRESS_MAP_START( getrivia_map, ADDRESS_SPACE_PROGRAM, 8 )
330   AM_RANGE(0x0000, 0x1fff) AM_ROM
331   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
332   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
333   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
334   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
335   AM_RANGE(0x600f, 0x600f) AM_WRITE(banksel_5_1_w)
336   AM_RANGE(0x6017, 0x6017) AM_WRITE(banksel_4_1_w)
337   AM_RANGE(0x601b, 0x601b) AM_WRITE(banksel_3_1_w)
338   AM_RANGE(0x601d, 0x601d) AM_WRITE(banksel_2_1_w)
339   AM_RANGE(0x601e, 0x601e) AM_WRITE(banksel_1_1_w)
340   AM_RANGE(0x608f, 0x608f) AM_WRITE(banksel_5_2_w)
341   AM_RANGE(0x6097, 0x6097) AM_WRITE(banksel_4_2_w)
342   AM_RANGE(0x609b, 0x609b) AM_WRITE(banksel_3_2_w)
343   AM_RANGE(0x609d, 0x609d) AM_WRITE(banksel_2_2_w)
344   AM_RANGE(0x609e, 0x609e) AM_WRITE(banksel_1_2_w)
345   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
346   AM_RANGE(0x8000, 0x9fff) AM_ROM /* space for diagnostic ROM? */
347   AM_RANGE(0xa000, 0xbfff) AM_ROM
348   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
349ADDRESS_MAP_END
350
351static ADDRESS_MAP_START( gselect_map, ADDRESS_SPACE_PROGRAM, 8 )
352   AM_RANGE(0x0000, 0x1fff) AM_ROM
353   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
354   AM_RANGE(0x4000, 0x40ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
355   AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
356   AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_1_2_w)
357   AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_2_1_w)
358   AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_2_2_w)
359   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
360   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
361   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
362   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
363ADDRESS_MAP_END
364
365// TODO: where are mapped the lower 0x2000 bytes of the banks?
366static ADDRESS_MAP_START( amuse_map, ADDRESS_SPACE_PROGRAM, 8 )
367   AM_RANGE(0x0000, 0x1fff) AM_ROM
368   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
369   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
370   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
371   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
372   AM_RANGE(0x606f, 0x606f) AM_WRITE(banksel_5_1_w)
373   AM_RANGE(0x6077, 0x6077) AM_WRITE(banksel_4_1_w)
374   AM_RANGE(0x607b, 0x607b) AM_WRITE(banksel_3_1_w)
375   AM_RANGE(0x607d, 0x607d) AM_WRITE(banksel_2_1_w)
376   AM_RANGE(0x607e, 0x607e) AM_WRITE(banksel_1_1_w)
377   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
378   AM_RANGE(0x8000, 0xbfff) AM_ROM
379   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
380ADDRESS_MAP_END
381
382static ADDRESS_MAP_START( gepoker_map, ADDRESS_SPACE_PROGRAM, 8 )
383   AM_RANGE(0x0000, 0x1fff) AM_ROM
384   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
385   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
386   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
387   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
388   AM_RANGE(0x60ef, 0x60ef) AM_WRITE(banksel_3_1_w)
389   AM_RANGE(0x60f7, 0x60f7) AM_WRITE(banksel_2_2_w)
390   AM_RANGE(0x60fb, 0x60fb) AM_WRITE(banksel_2_1_w)
391   AM_RANGE(0x60fd, 0x60fd) AM_WRITE(banksel_1_2_w)
392   AM_RANGE(0x60fe, 0x60fe) AM_WRITE(banksel_1_1_w)
393   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
394   AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */
395   AM_RANGE(0xe000, 0xffff) AM_ROM
396   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
397ADDRESS_MAP_END
398
399static ADDRESS_MAP_START( amuse1_map, ADDRESS_SPACE_PROGRAM, 8 )
400   AM_RANGE(0x0000, 0x1fff) AM_ROM
401   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
402   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
403   AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
404   AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_2_1_w)
405   AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_3_1_w)
406   AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_4_1_w)
407   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
408   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
409   AM_RANGE(0x5800, 0x5fff) AM_ROM
410   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
411   AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */
412   AM_RANGE(0xe000, 0xffff) AM_ROM
413   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
414ADDRESS_MAP_END
415
416static ADDRESS_MAP_START( findout_map, ADDRESS_SPACE_PROGRAM, 8 )
417   AM_RANGE(0x0000, 0x3fff) AM_ROM
418   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
419   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r,ppi8255_w)
420   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r,ppi8255_w)
421   /* banked ROMs are enabled by low 6 bits of the address */
422   AM_RANGE(0x601f, 0x601f) AM_WRITE(banksel_main_w)
423   AM_RANGE(0x602f, 0x602f) AM_WRITE(banksel_5_w)
424   AM_RANGE(0x6037, 0x6037) AM_WRITE(banksel_4_w)
425   AM_RANGE(0x603b, 0x603b) AM_WRITE(banksel_3_w)
426   AM_RANGE(0x603d, 0x603d) AM_WRITE(banksel_2_w)
427   AM_RANGE(0x603e, 0x603e) AM_WRITE(banksel_1_w)
428   AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
429   AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
430   AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
431   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
432   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
433   AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)  AM_BASE(&videoram)
434   AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
435ADDRESS_MAP_END
436
437
438static ADDRESS_MAP_START( suprpokr_map, ADDRESS_SPACE_PROGRAM, 8 )
439   AM_RANGE(0x0000, 0x3fff) AM_ROM
440   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
441   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
442   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
443   AM_RANGE(0x6200, 0x6200) AM_WRITE(signature2_w)
444   AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
445   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
446   AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */
447   AM_RANGE(0xe000, 0xffff) AM_ROM
448   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
449ADDRESS_MAP_END
450
451static ADDRESS_MAP_START( geimulti_map, ADDRESS_SPACE_PROGRAM, 8 )
452   AM_RANGE(0x0000, 0x3fff) AM_ROM
453   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
454   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
455   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
456   AM_RANGE(0x5800, 0x5fff) AM_ROM
457   AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
458   AM_RANGE(0x6000, 0x7fff) AM_ROM
459   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
460   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
461   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
462ADDRESS_MAP_END
463
464static ADDRESS_MAP_START( sprtauth_map, ADDRESS_SPACE_PROGRAM, 8 )
465   AM_RANGE(0x0000, 0x3fff) AM_ROM
466   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
467   AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
468   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
469   AM_RANGE(0x5600, 0x5600) AM_READ(signature_r)
470   AM_RANGE(0x5800, 0x5800) AM_WRITE(signature_w)
471   AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
472   AM_RANGE(0x6000, 0x7fff) AM_ROM
473   AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
474   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
475   AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) AM_BASE(&videoram)
476ADDRESS_MAP_END
477
478static INPUT_PORTS_START(reelfun_standard)
479   PORT_START("IN0")
480   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
481   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
482   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
483   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
484   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
485   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
486   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
487   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
488
489   PORT_START("IN1")   /* IN1 */
490   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("1 Left A-Z")
491   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("2 Right A-Z")
492   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("3 Select Letter")
493   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("4 Start")
494   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("5 Solve Puzzle")
495   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
496   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
497   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
498INPUT_PORTS_END
499
500static INPUT_PORTS_START(trivia_standard)
501   PORT_START("IN0")
502   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
503   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
504   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ticket_dispenser_0_port_r, 0)      /* ticket status */
505   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
506   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
507   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
508   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
509   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
510
511   PORT_START("IN1")   /* IN1 */
512   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
513   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
514   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
515   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
516   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
517   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
518   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
519   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
520INPUT_PORTS_END
521
522static INPUT_PORTS_START( gselect )
523   PORT_START("DSWA")
524   PORT_DIPNAME( 0x01, 0x01, "Poker: Discard Cards" )
525   PORT_DIPSETTING(    0x01, "5" )
526   PORT_DIPSETTING(    0x00, "3" )
527   PORT_DIPNAME( 0x06, 0x06, "Poker: Pay on" )
528   PORT_DIPSETTING(    0x06, "any Pair" )
529   PORT_DIPSETTING(    0x04, "Pair of Eights or better" )
530   PORT_DIPSETTING(    0x02, "Pair of Jacks or better" )
531   PORT_DIPSETTING(    0x00, "Pair of Aces only" )
532   PORT_DIPNAME( 0x08, 0x00, "Maximum Bet" )
533   PORT_DIPSETTING(    0x08, "30" )
534   PORT_DIPSETTING(    0x00, "10" )
535   PORT_DIPNAME( 0x10, 0x10, "Poker: Credits needed for 2 Jokers" )
536   PORT_DIPSETTING(    0x10, "8" )
537   PORT_DIPSETTING(    0x00, "4" )
538   PORT_DIPNAME( 0xe0, 0x80, "Payout Percentage" )
539   PORT_DIPSETTING(    0xe0, "35" )
540   PORT_DIPSETTING(    0xc0, "40" )
541   PORT_DIPSETTING(    0xa0, "45" )
542   PORT_DIPSETTING(    0x80, "50" )
543   PORT_DIPSETTING(    0x60, "55" )
544   PORT_DIPSETTING(    0x40, "60" )
545   PORT_DIPSETTING(    0x20, "65" )
546   PORT_DIPSETTING(    0x00, "70" )
547
548   PORT_START("IN0")
549   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
550   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
551   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_IMPULSE(2) PORT_NAME("Button 12 ?")
552   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
553   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(2) PORT_NAME ("Payout")
554   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
555   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
556   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_IMPULSE(2) PORT_NAME ("Play / Raise")
557
558   PORT_START("IN1")
559   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_IMPULSE(2)
560   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_IMPULSE(2)
561   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_IMPULSE(2)
562   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_IMPULSE(2)
563   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_IMPULSE(2)
564   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_IMPULSE(2) PORT_NAME ("Deal")
565   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_IMPULSE(2) PORT_NAME ("Cancel")
566   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_IMPULSE(2) PORT_NAME ("Stand")
567/*  Button 8, 6, 7 order verified in test mode switch test */
568
569   PORT_START("IN2")
570   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
571INPUT_PORTS_END
572
573static INPUT_PORTS_START( gepoker )
574   PORT_INCLUDE( gselect )
575
576   PORT_MODIFY("IN0")
577   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* no coin 2 */
578   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* no button 12 */
579INPUT_PORTS_END
580
581static INPUT_PORTS_START( getrivia )
582   PORT_START("DSWA")
583   PORT_DIPNAME( 0x03, 0x01, "Questions" )
584   PORT_DIPSETTING(    0x00, "4" )
585   PORT_DIPSETTING(    0x01, "5" )
586/*  PORT_DIPSETTING(    0x02, "5" )*/
587   PORT_DIPSETTING(    0x03, "6" )
588   PORT_DIPNAME( 0x04, 0x00, "Show Answer" )
589   PORT_DIPSETTING(    0x04, DEF_STR( No ) )
590   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
591   PORT_DIPNAME( 0x08, 0x00, "Max Coins" )
592   PORT_DIPSETTING(    0x00, "10" )
593   PORT_DIPSETTING(    0x08, "30" )
594   PORT_DIPNAME( 0x10, 0x00, "Timeout" )
595   PORT_DIPSETTING(    0x10, DEF_STR( No ) )
596   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
597   PORT_DIPNAME( 0x20, 0x00, "Tickets" )
598   PORT_DIPSETTING(    0x20, DEF_STR( No ) )
599   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
600   PORT_DIPNAME( 0x40, 0x40, "No Coins" )
601   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
602   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
603   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
604   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
605   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
606
607   PORT_START("IN0")
608   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x40)
609   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x00) PORT_NAME ("Start in no coins mode")
610   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x40)
611   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x00)
612   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ticket_dispenser_0_port_r, 0)      /* ticket status */
613   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
614   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
615   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
616   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
617   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
618
619   PORT_START("IN1")
620   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
621   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
622   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
623   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
624   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
625   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
626   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
627   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
628
629INPUT_PORTS_END
630
631static INPUT_PORTS_START( sextriv1 )
632   PORT_INCLUDE( getrivia )
633
634   PORT_MODIFY("IN0")
635   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* no coin 2 */
636INPUT_PORTS_END
637
638static INPUT_PORTS_START(suprpokr)
639   PORT_INCLUDE(gepoker)
640
641   PORT_MODIFY("DSWA")
642   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
643   PORT_DIPSETTING(    0x00, DEF_STR( 8C_1C ) )
644   PORT_DIPSETTING(    0x01, DEF_STR( 7C_1C ) )
645   PORT_DIPSETTING(    0x02, DEF_STR( 6C_1C ) )
646   PORT_DIPSETTING(    0x03, DEF_STR( 5C_1C ) )
647   PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
648   PORT_DIPSETTING(    0x05, DEF_STR( 3C_1C ) )
649   PORT_DIPSETTING(    0x06, DEF_STR( 2C_1C ) )
650   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
651   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
652   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
653   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
654   PORT_DIPNAME( 0x10, 0x10, "Screen" )
655   PORT_DIPSETTING(    0x10, "Horizontal" )
656   PORT_DIPSETTING(    0x00, "Vertical" )
657   PORT_DIPNAME( 0x20, 0x20, "Percentage" )
658   PORT_DIPSETTING(    0x20, "Dynamic" )
659   PORT_DIPSETTING(    0x00, "Actual" )
660   PORT_DIPNAME( 0x40, 0x40, "Hopper" )
661   PORT_DIPSETTING(    0x40, "Disabled" )
662   PORT_DIPSETTING(    0x00, "Enabled" )
663   PORT_DIPNAME( 0x80, 0x80, "If RAM Error" )
664   PORT_DIPSETTING(    0x80, "Play" )
665   PORT_DIPSETTING(    0x00, "Freeze" )
666INPUT_PORTS_END
667
668static INPUT_PORTS_START( reelfun )
669   PORT_START("DSWA")
670   PORT_DIPNAME( 0x07, 0x01, "Coinage Multiplier" )
671   PORT_DIPSETTING(    0x07, "7" )
672   PORT_DIPSETTING(    0x06, "6" )
673   PORT_DIPSETTING(    0x05, "5" )
674   PORT_DIPSETTING(    0x04, "4" )
675   PORT_DIPSETTING(    0x03, "3" )
676   PORT_DIPSETTING(    0x02, "2" )
677   PORT_DIPSETTING(    0x01, "1" )
678   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
679   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) )
680   PORT_DIPSETTING( 0x08, "Credits per Coin" )
681   PORT_DIPSETTING( 0x00, "Coins per Credit" )
682   PORT_DIPNAME( 0x10, 0x10, "Screen" )
683   PORT_DIPSETTING( 0x10, "Horizontal" )
684   PORT_DIPSETTING( 0x00, "Vertical" )
685   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
686   PORT_DIPSETTING( 0x20, DEF_STR( Upright ) )
687   PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
688   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
689   PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
690   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
691   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
692   PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
693   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
694
695   PORT_INCLUDE(reelfun_standard)
696INPUT_PORTS_END
697
698static INPUT_PORTS_START( findout )
699   PORT_START("DSWA")      /* DSW A */
700   PORT_DIPNAME( 0x07, 0x01, DEF_STR( Coinage ) )
701   PORT_DIPSETTING(    0x07, DEF_STR( 7C_1C ) )
702   PORT_DIPSETTING(    0x06, DEF_STR( 6C_1C ) )
703   PORT_DIPSETTING(    0x05, DEF_STR( 5C_1C ) )
704   PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
705   PORT_DIPSETTING(    0x03, DEF_STR( 3C_1C ) )
706   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
707   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
708   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
709   PORT_DIPNAME( 0x08, 0x00, "Game Repetition" )
710   PORT_DIPSETTING( 0x08, DEF_STR( No ) )
711   PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
712   PORT_DIPNAME( 0x10, 0x10, "Orientation" )
713   PORT_DIPSETTING( 0x10, "Horizontal" )
714   PORT_DIPSETTING( 0x00, "Vertical" )
715   PORT_DIPNAME( 0x20, 0x20, "Buy Letter" )
716   PORT_DIPSETTING( 0x20, DEF_STR( No ) )
717   PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
718   PORT_DIPNAME( 0x40, 0x40, "Starting Letter" )
719   PORT_DIPSETTING( 0x40, DEF_STR( No ) )
720   PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
721   PORT_DIPNAME( 0x80, 0x80, "Bonus Letter" )
722   PORT_DIPSETTING( 0x80, DEF_STR( No ) )
723   PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
724
725   PORT_INCLUDE(reelfun_standard)
726INPUT_PORTS_END
727
728static INPUT_PORTS_START( gt103 )
729   PORT_START("DSWA")      /* DSW A */
730   PORT_DIPNAME( 0x07, 0x01, "Coinage Multiplier" )
731   PORT_DIPSETTING(    0x07, "7" )
732   PORT_DIPSETTING(    0x06, "6" )
733   PORT_DIPSETTING(    0x05, "5" )
734   PORT_DIPSETTING(    0x04, "4" )
735   PORT_DIPSETTING(    0x03, "3" )
736   PORT_DIPSETTING(    0x02, "2" )
737   PORT_DIPSETTING(    0x01, "1" )
738   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
739   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) )
740   PORT_DIPSETTING( 0x08, "Credits per Coin" )
741   PORT_DIPSETTING( 0x00, "Coins per Credit" )
742   PORT_DIPNAME( 0x10, 0x10, "Screen" )
743   PORT_DIPSETTING( 0x10, "Horizontal" )
744   PORT_DIPSETTING( 0x00, "Vertical" )
745   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
746   PORT_DIPSETTING( 0x20, DEF_STR( Upright ) )
747   PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
748   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
749   PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
750   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
751   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
752   PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
753   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
754
755   PORT_INCLUDE(trivia_standard)
756INPUT_PORTS_END
757
758static INPUT_PORTS_START( gt103a )
759   PORT_START("DSWA")
760   PORT_DIPNAME( 0x03, 0x01, "Questions" )
761   PORT_DIPSETTING(    0x00, "4" )
762   PORT_DIPSETTING(    0x01, "5" )
763//  PORT_DIPSETTING(    0x02, "5" )
764   PORT_DIPSETTING(    0x03, "6" )
765   PORT_DIPNAME( 0x04, 0x00, "Show Answer" )
766   PORT_DIPSETTING(    0x04, DEF_STR( No ) )
767   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
768   PORT_DIPNAME( 0x08, 0x00, "Max Coins" )
769   PORT_DIPSETTING(    0x08, "30" )
770   PORT_DIPSETTING(    0x00, "10" )
771   PORT_DIPNAME( 0x10, 0x00, "Timeout" )
772   PORT_DIPSETTING(    0x10, DEF_STR( No ) )
773   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
774   PORT_DIPNAME( 0x20, 0x00, "Tickets" )
775   PORT_DIPSETTING(    0x20, DEF_STR( No ) )
776   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
777   PORT_DIPNAME( 0x40, 0x40, "No Coins" )
778   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
779   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
780   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
781   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
782   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
783
784   PORT_START("IN0")
785   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x40)
786   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x00) PORT_NAME ("Start in no coins mode")
787   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x40)
788   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWA", 0x40, PORTCOND_EQUALS, 0x00)
789   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ticket_dispenser_0_port_r, 0)      /* ticket status */
790   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
791   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
792   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
793   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
794   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
795
796   PORT_START("IN1")   /* IN1 */
797   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
798   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
799   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
800   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
801   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
802   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
803   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
804   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
805INPUT_PORTS_END
806
807static INPUT_PORTS_START( quiz )
808   PORT_INCLUDE( gt103a )
809
810   PORT_MODIFY("DSWA")
811   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )   /* no tickets */
812   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
813   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
814
815   PORT_MODIFY("IN0")
816   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* no coin 2 */
817   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* no tickets */
818INPUT_PORTS_END
819
820static INPUT_PORTS_START( gt507uk )
821   PORT_START("DSWA")      /* DSW A */
822   PORT_DIPNAME( 0x01, 0x00, "If Ram Error" )
823   PORT_DIPSETTING( 0x01, "Freeze" )
824   PORT_DIPSETTING( 0x00, "Play" )
825   PORT_DIPNAME( 0x0a, 0x08, "Payout" )
826   PORT_DIPSETTING( 0x0a, "Bank" )
827   PORT_DIPSETTING( 0x08, "N/A" )
828   PORT_DIPSETTING( 0x02, "Credit" )
829   PORT_DIPSETTING( 0x00, "Direct" )
830   PORT_DIPNAME( 0x04, 0x04, "Payout Hardware" )
831   PORT_DIPSETTING( 0x04, "Hopper" )
832   PORT_DIPSETTING( 0x00, "Solenoid" )
833   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
834   PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
835   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
836   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
837   PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
838   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
839   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
840   PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
841   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
842   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
843   PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
844   PORT_DIPSETTING( 0x00, DEF_STR( On ) )
845
846   PORT_INCLUDE(trivia_standard)
847
848   PORT_MODIFY("IN0")
849   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
850   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)   /* coin 3, 2, 4 order verified in test mode */
851   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(2)
852INPUT_PORTS_END
853
854static INPUT_PORTS_START(geimulti)
855   PORT_INCLUDE(gselect)
856
857   PORT_MODIFY("DSWA")
858   PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) )
859   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
860   PORT_DIPSETTING(    0x07, DEF_STR( 7C_1C ) )
861   PORT_DIPSETTING(    0x06, DEF_STR( 6C_1C ) )
862   PORT_DIPSETTING(    0x05, DEF_STR( 5C_1C ) )
863   PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
864   PORT_DIPSETTING(    0x03, DEF_STR( 3C_1C ) )
865   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
866   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
867   PORT_DIPSETTING(    0x08, DEF_STR( Free_Play ) )
868   PORT_DIPSETTING(    0x09, DEF_STR( 1C_1C ) )
869   PORT_DIPSETTING(   0x0a, DEF_STR( 1C_2C ) )
870   PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
871   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
872   PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
873   PORT_DIPSETTING(    0x0e, DEF_STR( 1C_6C ) )
874   PORT_DIPSETTING(    0x0f, DEF_STR( 1C_7C ) )
875   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
876   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
877   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
878   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
879   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
880   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
881   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
882   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
883   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
884   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
885   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
886   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
887INPUT_PORTS_END
888
889static INPUT_PORTS_START(sprtauth)
890   PORT_INCLUDE(getrivia)
891
892   PORT_MODIFY("IN0")
893   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
894   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
895   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ticket_dispenser_0_port_r, 0)      /* ticket status */
896   PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
897   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
898   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
899   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
900   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
901
902   PORT_MODIFY("DSWA")
903   PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) )
904   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
905   PORT_DIPSETTING(    0x07, DEF_STR( 7C_1C ) )
906   PORT_DIPSETTING(    0x06, DEF_STR( 6C_1C ) )
907   PORT_DIPSETTING(    0x05, DEF_STR( 5C_1C ) )
908   PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
909   PORT_DIPSETTING(    0x03, DEF_STR( 3C_1C ) )
910   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
911   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
912   PORT_DIPSETTING(    0x08, DEF_STR( Free_Play ) )
913   PORT_DIPSETTING(    0x09, DEF_STR( 1C_1C ) )
914   PORT_DIPSETTING(   0x0a, DEF_STR( 1C_2C ) )
915   PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
916   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
917   PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
918   PORT_DIPSETTING(    0x0e, DEF_STR( 1C_6C ) )
919   PORT_DIPSETTING(    0x0f, DEF_STR( 1C_7C ) )
920   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
921   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
922   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
923   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
924   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
925   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
926   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
927   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
928   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
929   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
930   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
931   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
932
933INPUT_PORTS_END
934
935static const ppi8255_interface getrivia_ppi8255_intf[2] =
936{
937   {
938      DEVCB_INPUT_PORT("DSWA"),   /* Port A read */
939      DEVCB_INPUT_PORT("IN0"),   /* Port B read */
940      DEVCB_NULL,               /* Port C read */
941      DEVCB_NULL,               /* Port A write */
942      DEVCB_NULL,               /* Port B write */
943      DEVCB_HANDLER(sound_w)      /* Port C write */
944   },
945   {
946      DEVCB_INPUT_PORT("IN1"),   /* Port A read */
947      DEVCB_NULL,               /* Port B read */
948      DEVCB_NULL,               /* Port C read */
949      DEVCB_NULL,               /* Port A write */
950      DEVCB_HANDLER(lamps_w),      /* Port B write */
951      DEVCB_HANDLER(lamps2_w)      /* Port C write */
952   }
953};
954
955static const ppi8255_interface gselect_ppi8255_intf[2] =
956{
957   {
958      DEVCB_INPUT_PORT("DSWA"),   /* Port A read */
959      DEVCB_INPUT_PORT("IN0"),   /* Port B read */
960      DEVCB_NULL,               /* Port C read */
961      DEVCB_NULL,               /* Port A write */
962      DEVCB_NULL,               /* Port B write */
963      DEVCB_HANDLER(sound2_w)            /* Port C write */
964   },
965   {
966      DEVCB_INPUT_PORT("IN1"),   /* Port A read */
967      DEVCB_NULL,               /* Port B read */
968      DEVCB_INPUT_PORT("IN2"),   /* Port C read */
969      DEVCB_NULL,               /* Port A write */
970      DEVCB_HANDLER(lamps_w),      /* Port B write */
971      DEVCB_HANDLER(nmi_w)      /* Port C write */
972   }
973};
974
975static const ppi8255_interface findout_ppi8255_intf[2] =
976{
977   {
978      DEVCB_INPUT_PORT("DSWA"),      /* Port A read */
979      DEVCB_INPUT_PORT("IN0"),      /* Port B read */
980      DEVCB_NULL,                  /* Port C read */
981      DEVCB_NULL,                  /* Port A write */
982      DEVCB_NULL,                  /* Port B write */
983      DEVCB_HANDLER(sound_w),         /* Port C write */
984   },
985   {
986      DEVCB_INPUT_PORT("IN1"),      /* Port A read */
987      DEVCB_NULL,                  /* Port B read */
988      DEVCB_HANDLER(portC_r),         /* Port C read */
989      DEVCB_NULL,                  /* Port A write */
990      DEVCB_HANDLER(lamps_w),         /* Port B write */
991      DEVCB_NULL                  /* Port C write */
992   }
993};
994
995static MACHINE_RESET( getrivia )
996{
997   ticket_dispenser_init(machine, 100, 1, 1);
998}
999
1000static MACHINE_RESET( gselect )
1001{
1002}
1003
1004static MACHINE_DRIVER_START( getrivia )
1005   MDRV_CPU_ADD("cpu",Z80,4000000) /* 4 MHz */
1006   MDRV_CPU_PROGRAM_MAP(getrivia_map)
1007   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
1008
1009   /* video hardware */
1010   MDRV_SCREEN_ADD("screen", RASTER)
1011   MDRV_SCREEN_REFRESH_RATE(60)
1012   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
1013   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1014   MDRV_SCREEN_SIZE(512, 256)
1015   MDRV_SCREEN_VISIBLE_AREA(48, 511-48, 16, 255-16)
1016
1017   MDRV_PALETTE_LENGTH(8)
1018   MDRV_PALETTE_INIT(gei)
1019
1020   MDRV_MACHINE_RESET(getrivia)
1021   MDRV_NVRAM_HANDLER(generic_0fill)
1022
1023   MDRV_VIDEO_START(generic_bitmapped)
1024   MDRV_VIDEO_UPDATE(generic_bitmapped)
1025
1026   MDRV_PPI8255_ADD( "ppi8255_0", getrivia_ppi8255_intf[0] )
1027   MDRV_PPI8255_ADD( "ppi8255_1", getrivia_ppi8255_intf[1] )
1028
1029   /* sound hardware */
1030   MDRV_SPEAKER_STANDARD_MONO("mono")
1031
1032   MDRV_SOUND_ADD("dac", DAC, 0)
1033   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
1034MACHINE_DRIVER_END
1035
1036static MACHINE_DRIVER_START( findout )
1037   MDRV_IMPORT_FROM(getrivia)
1038
1039   MDRV_CPU_MODIFY("cpu")
1040   MDRV_CPU_PROGRAM_MAP(findout_map)
1041
1042   MDRV_PPI8255_RECONFIG( "ppi8255_0", findout_ppi8255_intf[0] )
1043   MDRV_PPI8255_RECONFIG( "ppi8255_1", findout_ppi8255_intf[1] )
1044MACHINE_DRIVER_END
1045
1046static MACHINE_DRIVER_START( gselect )
1047
1048   /* basic machine hardware */
1049   MDRV_IMPORT_FROM(getrivia)
1050
1051   MDRV_CPU_MODIFY("cpu")
1052   MDRV_CPU_PROGRAM_MAP(gselect_map)
1053
1054   MDRV_MACHINE_RESET(gselect)
1055
1056   MDRV_PPI8255_RECONFIG( "ppi8255_0", gselect_ppi8255_intf[0] )
1057   MDRV_PPI8255_RECONFIG( "ppi8255_1", gselect_ppi8255_intf[1] )
1058MACHINE_DRIVER_END
1059
1060static MACHINE_DRIVER_START( jokpokera )
1061
1062   /* basic machine hardware */
1063   MDRV_IMPORT_FROM(getrivia)
1064
1065   MDRV_CPU_MODIFY("cpu")
1066   MDRV_CPU_PROGRAM_MAP(gselect_map)
1067
1068   MDRV_MACHINE_RESET(gselect)
1069   MDRV_PPI8255_RECONFIG( "ppi8255_0", gselect_ppi8255_intf[0] )
1070MACHINE_DRIVER_END
1071
1072static MACHINE_DRIVER_START( amuse )
1073
1074   /* basic machine hardware */
1075   MDRV_IMPORT_FROM(getrivia)
1076
1077   MDRV_CPU_MODIFY("cpu")
1078   MDRV_CPU_PROGRAM_MAP(amuse_map)
1079MACHINE_DRIVER_END
1080
1081static MACHINE_DRIVER_START( gepoker )
1082
1083   /* basic machine hardware */
1084   MDRV_IMPORT_FROM(getrivia)
1085
1086   MDRV_CPU_MODIFY("cpu")
1087   MDRV_CPU_PROGRAM_MAP(gepoker_map)
1088MACHINE_DRIVER_END
1089
1090static MACHINE_DRIVER_START( amuse1 )
1091
1092   MDRV_IMPORT_FROM(getrivia)
1093
1094   MDRV_CPU_MODIFY("cpu")
1095   MDRV_CPU_PROGRAM_MAP(amuse1_map)
1096MACHINE_DRIVER_END
1097
1098static MACHINE_DRIVER_START( suprpokr )
1099
1100   MDRV_IMPORT_FROM(getrivia)
1101
1102   MDRV_CPU_MODIFY("cpu")
1103   MDRV_CPU_PROGRAM_MAP(suprpokr_map)
1104MACHINE_DRIVER_END
1105
1106static MACHINE_DRIVER_START( geimulti )
1107
1108   MDRV_IMPORT_FROM(getrivia)
1109
1110   MDRV_CPU_MODIFY("cpu")
1111   MDRV_CPU_PROGRAM_MAP(geimulti_map)
1112MACHINE_DRIVER_END
1113
1114static MACHINE_DRIVER_START( sprtauth )
1115
1116   MDRV_IMPORT_FROM(getrivia)
1117
1118   MDRV_CPU_MODIFY("cpu")
1119   MDRV_CPU_PROGRAM_MAP(sprtauth_map)
1120MACHINE_DRIVER_END
1121
1122/***************************************************
1123Rom board is UVM-1A
1124
1125Contains:
1126 3 2732  eproms (Program Code, 1 empty socket)
1127 2 X2212P (Ram chips, no battery backup)
1128 DM7408N
1129
1130PCB labeled M075
1131
1132****************************************************/
1133
1134ROM_START( jokpoker )
1135   ROM_REGION( 0x24000, "cpu", 0 )
1136   ROM_LOAD( "m075.1", 0x00000, 0x1000, CRC(ad42465b) SHA1(3f06847a9aecb0592f99419dba9be5f18005d57b) ) /* rom board UMV-1A */
1137   ROM_LOAD( "m075.2", 0x01000, 0x1000, CRC(bd129fc2) SHA1(2e05ba34922c16d127be32941447013efea05bcd) )
1138   ROM_LOAD( "m075.3", 0x02000, 0x1000, CRC(45725bc9) SHA1(9e6dcbec955ef8190f2307ddb367b24b7f34338d) )
1139ROM_END
1140
1141ROM_START( jokpokera )
1142   ROM_REGION( 0x24000, "cpu", 0 )
1143   ROM_LOAD( "jpbiwr930-1.bin", 0x00000, 0x2000, CRC(d0f4fec5) SHA1(5fcc72522df66464759d5ba3d5209bc7a3a80002) )  /* rom board UMV-7C */
1144   ROM_LOAD( "jpbiwr930-2.bin", 0x02000, 0x2000, CRC(824d1aee) SHA1(6eebde351c3b5bbed3796846d8d651b41ed6f84a) )
1145ROM_END
1146
1147/*
1148Joker Poker BI Version 16.04BI 10-19-88
1149
1150Standard GEI mainboard
1151
1152UVM 7S REV A romboard
1153*/
1154
1155ROM_START( jokpokerb )
1156   ROM_REGION( 0x24000, "cpu", 0 )
1157   ROM_LOAD( "jp_bi_10-19-88.e1", 0x00000, 0x2000, CRC(d59a78e2) SHA1(d8463675f30a52e0f93c5ea5c2ee663095d3d5ea) )
1158   ROM_LOAD( "jp_bi_10-19-88.e2", 0x02000, 0x2000, CRC(1a34dc80) SHA1(27dff743e661ae7421fef0b046e3ae205b842603) )
1159ROM_END
1160
1161/*
1162Joker Poker BI Version 16.03BI 5-10-85
1163
1164Standard GEI mainboard
1165
1166UVM7-C romboard
1167*/
1168
1169ROM_START( jokpokerc )
1170   ROM_REGION( 0x24000, "cpu", 0 )
1171   ROM_LOAD( "jp_bi_5-10-85.1", 0x00000, 0x2000, CRC(d0f4fec5) SHA1(5fcc72522df66464759d5ba3d5209bc7a3a80002) )
1172   ROM_LOAD( "jp_bi_5-10-85.2", 0x02000, 0x2000, CRC(9f8bee22) SHA1(8d894d2a07bd18d731b7a54a16bb9b9230c79306) )
1173ROM_END
1174
1175/***************************************************
1176Rom board is UVM-1B
1177
1178Contains:
1179 4 2732  eproms (Program Code)
1180 Battery (3.5V litium battery) backed up NEC 8444XF301
1181 DM7408N
1182
1183****************************************************/
1184
1185ROM_START( superbwl )
1186   ROM_REGION( 0x24000, "cpu", 0 )
1187   ROM_LOAD( "super_bowl.1", 0x00000, 0x1000, CRC(82edf064) SHA1(8a26377590282f51fb39d013452ba11252e7dd05) ) /* rom board UMV-1B */
1188   ROM_LOAD( "super_bowl.2", 0x01000, 0x1000, CRC(2438dd1f) SHA1(26bbd1cb3d0d5b93f61b92ff95948ac9de060715) )
1189   ROM_LOAD( "super_bowl.3", 0x02000, 0x1000, CRC(9b111430) SHA1(9aaa755f3e4b369477c1a0525c994a19fe0f6107) )
1190   ROM_LOAD( "super_bowl.4", 0x03000, 0x1000, CRC(037cad42) SHA1(d4037a28bb49b31358b5d560e5e028d958ae2bc9) )
1191ROM_END
1192
1193/***************************************************
1194Rom board is UVM 10 B
1195
1196Contains:
1197 2 2764  eproms (Program Code)
1198 5 27128 eproms (Question roms)
1199 Battery (3V litium battery) backed up HM6117P-4
1200 SN74LS374
1201 MMI PAL10L8
1202
1203
1204Sets will be listed by "series" - the program code version
1205 is not as important as maintaining the correct questions
1206 sets as per known series
1207Missing sets will be filled as dumped, as question roms
1208 are interchangable, operators did thier own swaps
1209
1210Note: Question roms that contain "#1" (or 2 ect)
1211      are corrected roms (spelling and / or answers)
1212
1213****************************************************/
1214
1215ROM_START( gtsers1 ) /* Series 1 (Complete) */
1216   ROM_REGION( 0x24000, "cpu", 0 )
1217   ROM_LOAD( "prog101c_right", 0x00000, 0x2000, CRC(767f0e46) SHA1(5de7b54876fcbfb2328174ffe6b656ffea886fcb) ) /* rom board UMV 10 B */
1218   ROM_LOAD( "prog101c_left",  0x0a000, 0x2000, CRC(24c0a097) SHA1(b8de58baecb92775e0882cd6eca3b9e07cf7c5a5) )
1219   /* Question roms */
1220   ROM_LOAD( "science_#1",    0x10000, 0x4000, CRC(68259e09) SHA1(29e848b4744b767c51ff81a756fba7bf96daefec) )
1221   ROM_LOAD( "general_#1",    0x14000, 0x4000, CRC(25a0ef9d) SHA1(793abd779cc237e14933933747bbf27bbcbfcd32) )
1222   ROM_LOAD( "sports_#1",     0x18000, 0x4000, CRC(cb1744f5) SHA1(ea3f7bfcecf5c58c26aa0f34908ba5d54f7279ec) )
1223   ROM_LOAD( "music_#1",      0x1c000, 0x4000, CRC(1b546857) SHA1(31e04bb5016e8ef6dc48f9b3ddaeab5fe04f91c2) )
1224   ROM_LOAD( "movies-tv_#1",  0x20000, 0x4000, CRC(e9a55dad) SHA1(c87682e72bad3507b24eb6a52b4e430e0bfcdab6) )
1225ROM_END
1226
1227ROM_START( gtsers2 ) /* Series 2 (Complete - question roms dated 2/9) */
1228   ROM_REGION( 0x24000, "cpu", 0 )
1229   ROM_LOAD( "prog101c_right", 0x00000, 0x2000, CRC(767f0e46) SHA1(5de7b54876fcbfb2328174ffe6b656ffea886fcb) ) /* rom board UMV 10 B */
1230   ROM_LOAD( "prog101c_left",  0x0a000, 0x2000, CRC(24c0a097) SHA1(b8de58baecb92775e0882cd6eca3b9e07cf7c5a5) )
1231   /* Question roms */
1232   ROM_LOAD( "tv_mash",          0x10000, 0x4000, CRC(a86990fc) SHA1(6a11b038d48bb97feb4857546349ed93ea1f9273) )
1233   ROM_LOAD( "general_2",        0x14000, 0x4000, CRC(5798f2b3) SHA1(0636017969d9b1eac5d33cfb18cb36f7cf4cba88) )
1234   ROM_LOAD( "sports_2_#2",      0x18000, 0x4000, CRC(fb632622) SHA1(c14d8178f5cfc5994e2ab4f829e353fa75b57304) )
1235   ROM_LOAD( "comics_#1",        0x1c000, 0x4000, CRC(8c5cd561) SHA1(1ca566acf72ce636b1b34ee6b7cafb9584340bcc) )
1236   ROM_LOAD( "entertainment_#1", 0x20000, 0x4000, CRC(cd3ce4c7) SHA1(4bd121fa5899a96b015605f84179ed82be0a25f3) ) /* Correct spelling of "Acapella" */
1237ROM_END
1238
1239ROM_START( gtsers3 ) /* Series 3 (Complete - question roms dated 3/9) */
1240   ROM_REGION( 0x24000, "cpu", 0 )
1241   ROM_LOAD( "prog102b_right",   0x00000, 0x2000, CRC(e8391f71) SHA1(a955eff87d622d4fcfd25f6d888c48ff82556879) )
1242   ROM_LOAD( "prog102b_left",    0x0a000, 0x2000, CRC(cc7b45a7) SHA1(c708f56feb36c1241358a42bb7dce25b799f1f0b) )
1243   /* Question roms */
1244   ROM_LOAD( "beatlemania_#1", 0x10000, 0x4000, CRC(c35ab539) SHA1(aa7c9b532aeb289b71c179e6ff1cc5b63dbe240c) )
1245   ROM_LOAD( "general_3",      0x14000, 0x4000, CRC(a60f17a4) SHA1(0d79be9e2e49b9817e94d410e25bb6dcda10aa9e) )
1246   ROM_LOAD( "sports_3_#3",    0x18000, 0x4000, CRC(b22cec38) SHA1(a416c3de9749fda3ab5ae5841304da0cef900cbf) )
1247   ROM_LOAD( "country-west",   0x1c000, 0x4000, CRC(3227c475) SHA1(d07ad4876122223fe7ab3f21781e0d847332ea5c) )
1248   ROM_LOAD( "tv_soaps",       0x20000, 0x4000, CRC(26914f3a) SHA1(aec380cea14d6acb71986f3d65c7620b16c174ae) )
1249ROM_END
1250
1251ROM_START( gtsers4 ) /* Series 4 (Incomplete - question roms dated 4/9) */
1252   ROM_REGION( 0x24000, "cpu", 0 )
1253   ROM_LOAD( "prog102c_right", 0x00000, 0x2000, CRC(76fdc3a3) SHA1(212e09644b9cab334aad22ec5860e8638c6ba3fa) )
1254   ROM_LOAD( "prog102c_left",  0x0a000, 0x2000, CRC(901fb2f9) SHA1(98e49c74d89c4911a1f4d5ccf3e6cf3226c6a178) )
1255   /* Question roms */
1256   ROM_LOAD( "history-geog",   0x10000, 0x4000, CRC(76d6b026) SHA1(613809b247cb27773631a1bb34af485c2b1bd486) )
1257   ROM_LOAD( "star_trek",      0x14000, 0x4000, CRC(19764e00) SHA1(d7ed577dba02776ac58e8f34b833ed07679c0af1) )
1258   ROM_LOAD( "television_#1",  0x18000, 0x4000, CRC(0f646389) SHA1(23fefe2e6cc26767d52604e7ab15bb4db99a6e94) )
1259   /* Missing "baseball" */
1260   /* Missing "hollywood" */
1261ROM_END
1262
1263ROM_START( gtsers5 ) /* Series 5 (Incomplete - question roms dated 5/9) */
1264   ROM_REGION( 0x24000, "cpu", 0 )
1265   ROM_LOAD( "prog102c_right", 0x00000, 0x2000, CRC(76fdc3a3) SHA1(212e09644b9cab334aad22ec5860e8638c6ba3fa) )
1266   ROM_LOAD( "prog102c_left",  0x0a000, 0x2000, CRC(901fb2f9) SHA1(98e49c74d89c4911a1f4d5ccf3e6cf3226c6a178) )
1267   /* Question roms */
1268   ROM_LOAD( "james_bond",    0x10000, 0x4000, CRC(fe9fadfd) SHA1(44b3fee1f14148f47b0b40600aabd5bff9b65e85) )
1269   ROM_LOAD( "hockey",        0x14000, 0x4000, CRC(4874a431) SHA1(f3c11dfbf71d101aa1a6cd3622b282a4ebe4664b) )
1270   /* Missing "the_states" */
1271   /* Missing "wild_west" */
1272   /* Missing "elvismania" */
1273ROM_END
1274
1275ROM_START( gtsers7 ) /* Series 7 (Incomplete - question roms dated 7/9?) */
1276   ROM_REGION( 0x24000, "cpu", 0 )
1277   ROM_LOAD( "prog102c_right", 0x00000, 0x2000, CRC(76fdc3a3) SHA1(212e09644b9cab334aad22ec5860e8638c6ba3fa) )
1278   ROM_LOAD( "prog102c_left",  0x0a000, 0x2000, CRC(901fb2f9) SHA1(98e49c74d89c4911a1f4d5ccf3e6cf3226c6a178) )
1279   /* Question roms */
1280   ROM_LOAD( "general_5",     0x10000, 0x4000, CRC(81bf07c7) SHA1(a53f050b4ef8ffc0499b50224d4bbed4af0ca09c) )
1281   /* Missing "tv_dallas" */
1282   /* Missing "kids_korner" */
1283   /* Missing "good_guys" */
1284   /* Missing "biblical" */
1285ROM_END
1286
1287ROM_START( gtsersa ) /* alt or older version questions */
1288   ROM_REGION( 0x24000, "cpu", 0 )
1289   ROM_LOAD( "prog102c_right", 0x00000, 0x2000, CRC(76fdc3a3) SHA1(212e09644b9cab334aad22ec5860e8638c6ba3fa) )
1290   ROM_LOAD( "prog102c_left",  0x0a000, 0x2000, CRC(901fb2f9) SHA1(98e49c74d89c4911a1f4d5ccf3e6cf3226c6a178) )
1291   /* Question roms */
1292   ROM_LOAD( "sports",               0x10000, 0x4000, CRC(9b4a17b6) SHA1(1b5358b5bc83c2817ecfa4e277fa351a679d5023) ) /* Series 1 question */
1293   ROM_LOAD( "entertainment_#1_old", 0x14000, 0x4000, CRC(2bffb3b4) SHA1(5947ebd708df35cefa86608392909c16b25d0710) ) /* Dated 2/9 - Spells "Acapella" as "Cappella" */
1294   ROM_LOAD( "sports_2",             0x18000, 0x4000, CRC(e8f8e168) SHA1(d2bc57dc0799dd8817b15857f17c4d7ee4d9f932) ) /* Dated 2/9 */
1295   ROM_LOAD( "comics",               0x1c000, 0x4000, CRC(7efdfe8f) SHA1(ec255777c61677ca32c49b9da5e85e07c0647e5f) ) /* Dated 2/9 */
1296   ROM_LOAD( "entertainment",        0x20000, 0x4000, CRC(b670b9e8) SHA1(0d2246fcc6c753694bc9bd1fc05ac439f24059ef) ) /* Dated 2/9 */
1297ROM_END
1298
1299ROM_START( gtsersb ) /* alt or older version questions */
1300   ROM_REGION( 0x24000, "cpu", 0 )
1301   ROM_LOAD( "prog102c_right", 0x00000, 0x2000, CRC(76fdc3a3) SHA1(212e09644b9cab334aad22ec5860e8638c6ba3fa) )
1302   ROM_LOAD( "prog102c_left",  0x0a000, 0x2000, CRC(901fb2f9) SHA1(98e49c74d89c4911a1f4d5ccf3e6cf3226c6a178) )
1303   /* Question roms */
1304   ROM_LOAD( "beatlemania",    0x10000, 0x4000, CRC(cb241960) SHA1(e560b776b2cb5fd29d1663fffdf68f4427d674a9) ) /* Dated 3/9 */
1305   ROM_LOAD( "sports_3",       0x14000, 0x4000, CRC(5986996c) SHA1(56432c15a3b0204ed527c18e24716f17bb52dc4e) ) /* Dated 3/9 */
1306   ROM_LOAD( "television",     0x18000, 0x4000, CRC(413f34c8) SHA1(318f6b464449bf3f0c43c4210a667190c774eb67) ) /* Dated 4/9 */
1307   ROM_LOAD( "sex_triv",       0x1c000, 0x4000, CRC(cd0ce4e2) SHA1(2046ee3da94f00bf4a8b3fc62b1190d58e83cc89) ) /* Dated 7/9 - likely an alt series 7 question set */
1308   ROM_LOAD( "facts_of_life",  0x20000, 0x4000, CRC(1668c7bf) SHA1(6bf43de26f8a626560579ab75fd0890fe00f99dd) ) /* Uknown series question set */
1309ROM_END
1310
1311ROM_START( sextriv1 )
1312   ROM_REGION( 0x24000, "cpu", 0 )
1313   ROM_LOAD( "prog1_right",   0x00000, 0x2000, CRC(73abcd12) SHA1(3b985f25a11507878cef6d11420e215065fb0906) )
1314   ROM_LOAD( "prog1_left",    0x0a000, 0x2000, CRC(04ee6ecd) SHA1(28342fcdcf36b34fa93f1a985163ca5aab03defe) )
1315   /* Question roms */
1316   ROM_LOAD( "adult_sex",    0x10000, 0x4000, CRC(509a8183) SHA1(635c784860e423b22aaea94abc53c1d9477cb1df) )
1317   ROM_LOAD( "arousing_sex", 0x14000, 0x4000, CRC(1dbf4578) SHA1(51a548d5fe59739e62b5f0e9e6ebc7deb8656210) )
1318   ROM_LOAD( "intimate_sex", 0x18000, 0x4000, CRC(1f46b626) SHA1(04aa5306c69d130e0f84fa390a773e73c06e5e9b) )
1319   ROM_LOAD( "sizzling_sex", 0x1c000, 0x4000, CRC(c718833d) SHA1(02ea341e56554dd9302fe95f45dcf446a2978917) )
1320ROM_END
1321
1322ROM_START( sextriv2 )
1323   ROM_REGION( 0x24000, "cpu", 0 )
1324   ROM_LOAD( "prog1_right",     0x00000, 0x2000, CRC(73abcd12) SHA1(3b985f25a11507878cef6d11420e215065fb0906) )
1325   ROM_LOAD( "prog1_left",      0x0a000, 0x2000, CRC(04ee6ecd) SHA1(28342fcdcf36b34fa93f1a985163ca5aab03defe) )
1326   /* Question roms */
1327   ROM_LOAD( "general_sex",     0x10000, 0x4000, CRC(36fed946) SHA1(25d445ab6cb4b6f41a1dd7104ee1141e597b2e9e) )
1328   ROM_LOAD( "educational_sex", 0x14000, 0x4000, CRC(281cbe03) SHA1(9c3900cd2535f942a5cbae7edd46ac0170e04c52) )
1329   ROM_LOAD( "novelty_sex",     0x18000, 0x4000, CRC(26603979) SHA1(78061741e5224b3162be51e637a2fbb9a48962a3) )
1330ROM_END
1331
1332/***************************************************
1333Rom board is UVM-4B
1334
1335Contains 5 2764 eproms, MMI PAL16R4CN
1336
1337Battery (3V litium battery) backed up HM6117P-4
1338
1339Roms labeled as:
1340
13414/1  at spot 1
1342BLJK at spot 2
1343POKR at spot 3
1344SPRD at spot 4
1345SLOT at spot 3
1346
1347Alt set included BONE in place of SPRD & a newer SLOT
1348
1349These board sets may also be known as the V116 (or V16)
1350sets as the alt set also included that name on the labels
1351
1352****************************************************/
1353
1354ROM_START( gs4002 )
1355   ROM_REGION( 0x18000, "cpu", 0 )
1356   ROM_LOAD( "4-1.1",          0x00000, 0x2000, CRC(a456e456) SHA1(f36b96ac31ce0f128ecb94f94d1dbdd88ee03c77) ) /* V16M 5-4-84 */
1357   /* Banked roms */
1358   ROM_LOAD( "bljk_3-16-84.2", 0x10000, 0x2000, CRC(c3785523) SHA1(090f324fc7adb0a36b189cf04086f0e050895ee4) )
1359   ROM_LOAD( "pokr_5-16-84.3", 0x12000, 0x2000, CRC(f0e99cc5) SHA1(02fdc95974e503b6627930918fcc3c029a7a4612) )
1360   ROM_LOAD( "sprd_1-24-84.4", 0x14000, 0x2000, CRC(5fe90ed4) SHA1(38db69567d9c38f78127e581fdf924aca4926378) )
1361   ROM_LOAD( "slot_1-24-84.5", 0x16000, 0x2000, CRC(cd7cfa4c) SHA1(aa3de086e5a1018b9e5a18403a6144a6b0ed1036) )
1362ROM_END
1363
1364ROM_START( gs4002a )
1365   ROM_REGION( 0x18000, "cpu", 0 )
1366   ROM_LOAD( "4-1.1",          0x00000, 0x2000, CRC(a456e456) SHA1(f36b96ac31ce0f128ecb94f94d1dbdd88ee03c77) ) /* V16M 5-4-84 */
1367   /* Banked roms */
1368   ROM_LOAD( "bljk_3-16-84.2", 0x10000, 0x2000, CRC(c3785523) SHA1(090f324fc7adb0a36b189cf04086f0e050895ee4) )
1369   ROM_LOAD( "pokr_5-16-84.3", 0x12000, 0x2000, CRC(f0e99cc5) SHA1(02fdc95974e503b6627930918fcc3c029a7a4612) )
1370   ROM_LOAD( "bone_5-16-84.4", 0x14000, 0x2000, CRC(eccd2fb0) SHA1(2683e432ffcca4280c31f57b2596e4389bc59b7b) )
1371   ROM_LOAD( "slot_9-24-84.5", 0x16000, 0x2000, CRC(25d8c504) SHA1(2d52b66e8a1f06f486015440668bd924a123dad0) )
1372ROM_END
1373
1374/*
1375Greyhound Poker board...
1376
1377Standard Greyhound Electronics Inc UV-1B mainboard.
1378
1379Rom board UVM 10 B or UMV 10 C
1380
1381Battery backed up NEC D449C ram
1382PAL16R4
138374L374
1384
1385Roms in this order on the UMV 10 C board:
1386
1387Label        Normaly in the slot
1388--------------------------------
1389High
1390Control
1391rom1         Joker Poker
1392rom2         Black jack
1393rom3         Rolling Bones
1394rom4         Casino Slots
1395rom5         Horse Race
1396
1397For UMV 10 B: 1C, 2C, 1, 2, 3, 4, & 5
1398
1399There looks to be several types and combos for these, some are "ICB" or "IAM"
1400It also looks like operators mixed & matched to upgrade (some times incorrectly)
1401their boards.  Sets will be filled in as found and dumped.
1402
1403There are some versions, like, the ICB sets that use 2764 roms for all roms. While the IAM set uses
140427128 roms for all roms.  These roms are the correct size, but it's currently not known if the rom
1405board (UVM 10 B/C) "sees" them as 27128 or the standard size of 2764.
1406
1407Dumped, but not known to be supported by any High/Control combo:
1408ROM_LOAD( "rollingbones_am_3-16-84",  0x16000, 0x4000, CRC(41879e9b) SHA1(5106d5772bf43b28817e27efd16c785359cd929e) ) // Might work with IAM control, once it gets figured out
1409
1410The ICB set is known as the M105 set as some label sets included that name.
1411
1412*/
1413
1414ROM_START( gepoker ) /* v50.02 with most roms for ICB dated 8-16-84 */
1415   ROM_REGION( 0x1b000, "cpu", ROMREGION_ERASEFF )
1416   ROM_LOAD( "control_icb_8-16",    0x00000, 0x2000, CRC(0103963d) SHA1(9bc646e721048b84111e0686eaca23bc24eee3e2) )
1417   ROM_LOAD( "high_icb_6-25-85-5",  0x0e000, 0x2000, CRC(dfb6592e) SHA1(d68de9f537d3c14279dc576424d195bb266e3897) )
1418   /* Banked roms */
1419   ROM_LOAD( "jokerpoker_icb_8-16-84",    0x10000, 0x2000, CRC(0834a1e6) SHA1(663e6f4e0586eb9b84d3098aef8c596585c27304) )
1420   ROM_LOAD( "blackjack_icb_8-16-84",     0x12000, 0x2000, CRC(cff27ffd) SHA1(fd85b54400b2f22ae92042b01a2c162e64d2d066) )
1421   ROM_LOAD( "rollingbones_icb_8-16-84",  0x14000, 0x2000, CRC(52d66cb6) SHA1(57db34906fcafd37f3a361df209dafe080aeac16) )
1422   ROM_LOAD( "casinoslots_icb_8-16-84",   0x16000, 0x2000, CRC(3db002a3) SHA1(7dff4efceee37b25328303cf0606bf4baa4df5f3) )
1423   ROM_LOAD( "horserace_icb_3-19-85",     0x18000, 0x2000, CRC(f1e6e61e) SHA1(944b1ab4af911e5ed136f1fca3c44219726eeebb) )
1424ROM_END
1425
1426ROM_START( gepoker1 ) /* v50.02 with roms for ICB dated 9-30-86 */
1427   ROM_REGION( 0x1b000, "cpu", ROMREGION_ERASEFF )
1428   ROM_LOAD( "control_icb_9-30",    0x00000, 0x2000, CRC(08b996f2) SHA1(5f5efb5015ec9571cc94734c18debfadaa28f585) )
1429   ROM_LOAD( "high_icb_6-25-85-5a", 0x0e000, 0x2000, CRC(6ddc1750) SHA1(ee19206b7f4a98e3e7647414127f4e09b3e9134f) )
1430   /* Banked roms */
1431   ROM_LOAD( "jokerpoker_icb_9-30-86",    0x10000, 0x2000, CRC(a1473367) SHA1(9b37ccafc02704e8f1d61150326494e86148d84e) )
1432   ROM_LOAD( "blackjack_icb_9-30-86",     0x12000, 0x2000, CRC(82804184) SHA1(2e2e6a80c99c8eb226dc54c1d32d0bf24de300a4) )
1433   ROM_LOAD( "casinoslots_icb_9-30-86",   0x14000, 0x2000, CRC(713c3963) SHA1(a9297c04fc44522ca6891516a2c744712132896a) )
1434   ROM_LOAD( "beatthespread_icb_9-30-86", 0x16000, 0x2000, CRC(93654d2a) SHA1(3aa5a54b91867c03182e93a7f1607545503a33f7) )
1435   ROM_LOAD( "instantbingo_t24_10-07-86", 0x18000, 0x2000, CRC(de87ed0a) SHA1(4a26d93368c1a39dd38aabe450c34203101f0ef7) ) /* Found with this set, is it compatible or an operater swap? */
1436ROM_END
1437
1438ROM_START( gepoker2 ) /* v50.02 with control dated 9-30-84 */
1439   ROM_REGION( 0x1b000, "cpu", ROMREGION_ERASEFF )
1440   ROM_LOAD( "control_icb_9-30",  0x00000, 0x2000, CRC(08b996f2) SHA1(5f5efb5015ec9571cc94734c18debfadaa28f585) )
1441   ROM_LOAD( "high_icb_6-25a",    0x0e000, 0x2000, CRC(6ddc1750) SHA1(ee19206b7f4a98e3e7647414127f4e09b3e9134f) )
1442   /* Banked roms */
1443   ROM_LOAD( "jokerpoker_cb_10-19-88",    0x10000, 0x2000, CRC(a590af75) SHA1(63bc64fbc9ac0c489b1f4894d77a4be13d7251e7) )
1444   ROM_LOAD( "horserace_icb_1-1-87",      0x12000, 0x2000, CRC(6d5092e3) SHA1(ef99d1b858aef3c438c61c2b17e371dc6aca6623) )
1445ROM_END
1446
1447ROM_START( amuse ) /* v50.08 with most roms for IAM dated 8-16-84 */
1448   ROM_REGION( 0x24000, "cpu", ROMREGION_ERASEFF )
1449   ROM_LOAD( "control_iam_8-16",  0x00000, 0x4000, CRC(345434b9) SHA1(ec880f6f5e90aa971937e0270701e323f6a83671) ) /* all roms were 27128, twice the size of other sets */
1450   ROM_LOAD( "high_iam_8-16",     0x08000, 0x4000, CRC(57000fb7) SHA1(144723eb528c4816b9aa4b0ba77d2723c6442546) ) /* Is only the 1st half used by the board / program? */
1451   /* Banked roms */
1452   ROM_LOAD( "jokerpoker_iam_8-16-84",    0x10000, 0x4000, CRC(33794a87) SHA1(2b46809623713582746d9f817db33077f15a3684) ) /* This set is verified correct by 3 different sets checked */
1453   ROM_LOAD( "blackjack_iam_8-16-84",     0x14000, 0x4000, CRC(6e10b5b8) SHA1(5dc294b4a562193a99b0d307323fcc084a053426) )
1454   ROM_LOAD( "rollingbones_iam_8-16-84",  0x18000, 0x4000, CRC(26949774) SHA1(20571b955521ec3929430249aa651cee8a97043d) )
1455   ROM_LOAD( "casinoslots_iam_8-16-84",   0x1c000, 0x4000, CRC(c5a1eec6) SHA1(43d31bfe4cbbb6b86f52f675f513050866443176) )
1456   ROM_LOAD( "horserace_iam_3-19-84",     0x20000, 0x4000, CRC(7b9e75cb) SHA1(0db8da6f5f59f57886766bec96102d43796567ef) )
1457ROM_END
1458
1459/*
1460
1461UVM-8B romboard
1462
1463*/
1464
1465ROM_START( amuse1 ) /* v30.08 */
1466   ROM_REGION( 0x20000, "cpu", ROMREGION_ERASEFF )
1467   ROM_LOAD( "m108_control_5-16-84",  0x00000, 0x4000, CRC(9dda922f) SHA1(ded42adda8376452e0ac4f771ebb42fd86811dc5) )
1468   ROM_LOAD( "m108_hcon_5-16-84",     0x05800, 0x1000, CRC(ade5c42d) SHA1(d3e32ecaeb21a4e5eedd243c42d5914b03f572bd) )
1469   /* Banked roms */
1470   ROM_LOAD( "jokerpoker_amba_5-16-84",   0x10000, 0x4000, CRC(530b22d7) SHA1(418d41820429d0f8e054d383c502f4d75505ddca) )
1471   ROM_LOAD( "rollingbones_am_5-16-84",   0x14000, 0x4000, CRC(60496f5a) SHA1(9f9fd4191eaaa12350dbcc9d414306454b2adfba) )
1472   ROM_LOAD( "beatthespread_am2p_3-16-84",0x18000, 0x4000, CRC(40997230) SHA1(49e92a9f371a9839c94aa923aa5883284dae9dc2) )
1473ROM_END
1474
1475
1476ROM_START( suprpokr )
1477   ROM_REGION( 0x10000, "cpu", ROMREGION_ERASEFF )
1478   ROM_LOAD( "10-19s-1.e1",  0x00000, 0x4000, CRC(50662b4d) SHA1(967161a755db43d2cfd5ce92e14c5284f1f1f8ad) )
1479   ROM_LOAD( "10-19s-1.e2",  0x08000, 0x4000, BAD_DUMP CRC(22b45aeb) SHA1(006c3072cc44c6fde9b4d15163dc70707bbd5a9c) ) /* Self test reports this ROM bad */
1480ROM_END
1481
1482ROM_START( reelfun ) /* v7.01 */
1483   ROM_REGION( 0x38000, "cpu", 0 )
1484   ROM_LOAD( "reelfun.cnt",          0x00000, 0x4000, CRC(d9d1e92b) SHA1(337f66a37b3734d565b3ff3d912e0f690fd7c445) )
1485   ROM_LOAD( "reelfun.prg",          0x08000, 0x2000, CRC(615d846a) SHA1(ffa1c47393f4f364aa34d14cf3ac2f56d9eaecb0) )   /* banked */
1486   ROM_LOAD( "reelfun-1-title",      0x10000, 0x8000, CRC(0e165fbc) SHA1(a3a5b7db72ab86efe973f649f5dfe5133830e3fc) )   /* banked ROMs for solution data */
1487   ROM_LOAD( "reelfun-2-place",      0x18000, 0x8000, CRC(a0066bfd) SHA1(b6f031ab50eb396be79e79e06f2101400683ec3e) )
1488   ROM_LOAD( "reelfun-3-phrase",     0x20000, 0x8000, CRC(199e36b0) SHA1(d9dfe39c9a4fca1169150f8941f8ebc499dfbaf5) )
1489   ROM_LOAD( "reelfun-4-person",     0x28000, 0x8000, CRC(49b0710b) SHA1(a38b3251bcb8683d43bdb903036970140a9735e6) )
1490   ROM_LOAD( "reelfun-5-song_title", 0x30000, 0x8000, CRC(cce01c45) SHA1(c484f5828928edf39335cedf21acab0b9e2a6881) )
1491ROM_END
1492
1493ROM_START( findout )
1494   ROM_REGION( 0x38000, "cpu", 0 )
1495   ROM_LOAD( "12.bin",       0x00000, 0x4000, CRC(21132d4c) SHA1(e3562ee2f46b3f022a852a0e0b1c8fb8164f64a3) )
1496   ROM_LOAD( "11.bin",       0x08000, 0x2000, CRC(0014282c) SHA1(c6792f2ff712ba3759ff009950d78750df844d01) )   /* banked */
1497   ROM_LOAD( "13.bin",       0x10000, 0x8000, CRC(cea91a13) SHA1(ad3b395ab0362f3decf178824b1feb10b6335bb3) )   /* banked ROMs for solution data */
1498   ROM_LOAD( "14.bin",       0x18000, 0x8000, CRC(2a433a40) SHA1(4132d81256db940789a40aa1162bf1b3997cb23f) )
1499   ROM_LOAD( "15.bin",       0x20000, 0x8000, CRC(d817b31e) SHA1(11e6e1042ee548ce2080127611ce3516a0528ae0) )
1500   ROM_LOAD( "16.bin",       0x28000, 0x8000, CRC(143f9ac8) SHA1(4411e8ba853d7d5c032115ce23453362ab82e9bb) )
1501   ROM_LOAD( "17.bin",       0x30000, 0x8000, CRC(dd743bc7) SHA1(63f7e01ac5cda76a1d3390b6b83f4429b7d3b781) )
1502
1503   ROM_REGION( 0x0200, "gfx2", 0 )
1504   ROM_LOAD( "82s147.bin",   0x0000, 0x0200, CRC(f3b663bb) SHA1(5a683951c8d3a2baac4b49e379d6e10e35465c8a) )   /* unknown */
1505ROM_END
1506
1507ROM_START( gt507uk )
1508   ROM_REGION( 0x38000, "cpu", 0 )
1509   ROM_LOAD( "triv_3_2.bin",    0x00000, 0x4000, CRC(2d72a081) SHA1(8aa32acf335d027466799b097e0de66bcf13247f) )
1510   ROM_LOAD( "rom_ad.bin",      0x08000, 0x2000, CRC(c81cc847) SHA1(057b7b75a2fe1abf88b23e7b2de230d9f96139f5) )
1511   ROM_LOAD( "aerospace",       0x10000, 0x8000, CRC(cb555d46) SHA1(559ae05160d7893ff96311a2177eba039a4cf186) )
1512   ROM_LOAD( "english_sport_4", 0x18000, 0x8000, CRC(6ae8a63d) SHA1(c6018141d8bbe0ed7619980bf7da89dd91d7fcc2) )
1513   ROM_LOAD( "general_facts",   0x20000, 0x8000, CRC(f921f108) SHA1(fd72282df5cee0e6ab55268b40785b3dc8e3d65b) )
1514   ROM_LOAD( "horrors",         0x28000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) )
1515   ROM_LOAD( "pop_music",       0x30000, 0x8000, CRC(884fec7c) SHA1(b389216c17f516df4e15eee46246719dd4acb587) )
1516ROM_END
1517
1518ROM_START( gt5 ) /* v5.06, From a TRIV3D romboard */
1519   ROM_REGION( 0x38000, "cpu", 0 )
1520   ROM_LOAD( "program",         0x00000, 0x4000, CRC(e9d6226c) SHA1(42e62c5cafa3f051bf48c18c8c549ffcd4c766c5) )
1521   ROM_LOAD( "entertainment_2", 0x10000, 0x8000, CRC(c75c2331) SHA1(9c5947616a4cba2623c599def6cf3b2b1981b681) ) /* rom / question set #15 */
1522   ROM_LOAD( "facts_2",         0x18000, 0x8000, CRC(7836ef31) SHA1(6a84cfa39de392eed46a4b37752e00b6d094bbd6) )
1523   ROM_LOAD( "new_science_3",   0x20000, 0x8000, CRC(fcbc3bc3) SHA1(2dbdd39dce9dbf53c0954dec44a4f5109243dc60) )
1524   ROM_LOAD( "nfl_football",    0x28000, 0x8000, CRC(42eb2849) SHA1(c24e681a508ef8350f7e5d50aea2c31cf70ce5c9) )
1525   ROM_LOAD( "adult_sex_6",     0x30000, 0x8000, CRC(d66f35f7) SHA1(81b56756230b27b0903d0c5df30439726526afe2) )
1526ROM_END
1527
1528ROM_START( gtsers8 )
1529   ROM_REGION( 0x38000, "cpu", 0 )
1530   ROM_LOAD( "prog1_versionc",  0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
1531   ROM_LOAD( "science",         0x10000, 0x8000, CRC(2f940ebd) SHA1(bead4988ac0a97d70f2a3c0b40a05968436de2ed) )
1532   ROM_LOAD( "general",         0x18000, 0x8000, CRC(1efa01c3) SHA1(801ef5ab55184e488b08ef99ebd641ea4f7edb24) )
1533   ROM_LOAD( "sports",          0x20000, 0x8000, CRC(6bd1ba9a) SHA1(7caac1bd438a9b1d11fb33e11814b5d76951211a) )
1534   ROM_LOAD( "soccer",          0x28000, 0x8000, CRC(f821f860) SHA1(b0437ef5d31c507c6499c1fb732d2ba3b9beb151) )
1535   ROM_LOAD( "potpourri",       0x30000, 0x8000, CRC(f2968a28) SHA1(87c08c59dfee71e7bf071f09c3017c750a1c5694) )
1536   /* Missing Alternate question set: "Adult Sex" */
1537ROM_END
1538
1539ROM_START( gtsers9 )
1540   ROM_REGION( 0x38000, "cpu", 0 )
1541   ROM_LOAD( "prog1_versionc",  0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
1542   ROM_LOAD( "facts",           0x10000, 0x8000, CRC(21bd6181) SHA1(609ae1097a4011e90d03d4c4f03140fbe84c084a) )
1543   ROM_LOAD( "rock-n-roll",     0x18000, 0x8000, CRC(1be036b1) SHA1(0b262906044950319dd911b956ac2e0b433f6c7f) )
1544   ROM_LOAD( "television",      0x20000, 0x8000, CRC(731d4cc0) SHA1(184b6e48edda24f50e377a473a1a4709a218181b) )
1545   ROM_LOAD( "usa_trivia",      0x28000, 0x8000, CRC(829543b4) SHA1(deb0a4132852643ad884cf194b0a2e6671aa2b4e) )
1546   ROM_LOAD( "adult_sex_2",     0x30000, 0x8000, CRC(0d683f21) SHA1(f47ce3c31c4c5ed02247fa280303e6ae760315df) ) /* Listed as an alternate question set */
1547   /* Missing "Artists-Athletes" */
1548ROM_END
1549
1550ROM_START( gtsers10 )
1551   ROM_REGION( 0x38000, "cpu", 0 )
1552   ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
1553   ROM_LOAD( "new_general",    0x10000, 0x8000, CRC(ba1f5b92) SHA1(7e94be0ef6904331d3a6b266e5887e9a15c5e7f9) )
1554   ROM_LOAD( "new_tv_mash",    0x18000, 0x8000, CRC(f73240c6) SHA1(78020644074da719414133a86a91c1328e5d8929) )
1555   ROM_LOAD( "new_entrtnmnt",  0x20000, 0x8000, CRC(0f54340c) SHA1(1ca4c23b542339791a2d8f4a9a857f755feca8a1) )
1556   ROM_LOAD( "new_sports",     0x28000, 0x8000, CRC(19eff1a3) SHA1(8e024ae6cc572176c90d819a438ace7b2512dbf2) )
1557   ROM_LOAD( "adult_sex_3",    0x30000, 0x8000, CRC(2c46e355) SHA1(387ab389abaaea8e870b00039dd884237f7dd9c6) ) /* Listed as an alternate question set */
1558   /* Missing "New Science" */
1559ROM_END
1560
1561ROM_START( gtsers11 )
1562   ROM_REGION( 0x38000, "cpu", 0 )
1563   ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
1564   ROM_LOAD( "rich-famous",    0x10000, 0x8000, CRC(39e07e4a) SHA1(6e5a0bcefaa1169f313e8818cf50919108b3e121) )
1565   ROM_LOAD( "cars-women",     0x18000, 0x8000, CRC(4c5dd1df) SHA1(f3e2146eeab07ec71617c7614c6e8f6bc844e6e3) )
1566   ROM_LOAD( "aerospace",      0x20000, 0x8000, CRC(cb555d46) SHA1(559ae05160d7893ff96311a2177eba039a4cf186) )
1567   ROM_LOAD( "tv_music",       0x28000, 0x8000, CRC(5138e0fb) SHA1(102146d63752258c2fda95df49289c42b392c838) )
1568   ROM_LOAD( "gay_times",      0x30000, 0x8000, CRC(c4f9a8cf) SHA1(9247ecc5708aba263e0365fc43a1a7d0c2b7c391) ) /* Listed as an alternate question set */
1569   /* Missing "General Facts" */
1570ROM_END
1571
1572ROM_START( gt103a1 )
1573   ROM_REGION( 0x38000, "cpu", 0 )
1574   ROM_LOAD( "prog1_versiona",  0x00000, 0x4000, CRC(537d6566) SHA1(282a33e4a9fc54d34094393c00026bf31ccd6ab5) )
1575   ROM_LOAD( "new_science_2",   0x10000, 0x8000, CRC(3bd80fb8) SHA1(9a196595bc5dc6ed5ee5853786839ed4847fa436) ) /* Questions from an unknown set, will be corrected when verified */
1576   ROM_LOAD( "nfl_football",    0x18000, 0x8000, CRC(d676b7cd) SHA1(d652d2441adb500f7af526d110d0335ea453d75b) ) /* These questions are likely mix-n-match do to opperator swaps   */
1577   ROM_LOAD( "rock_music",      0x20000, 0x8000, CRC(7f11733a) SHA1(d4d0dee75518edf986cb1241ade45ccb4840f088) ) /* Currently unverified are Series 12, 13 & 14 */
1578   ROM_LOAD( "war_and_peace",   0x28000, 0x8000, CRC(bc709383) SHA1(2fba4c80773abea7bbd826c39378b821cddaa255) )
1579   ROM_LOAD( "entertainment",   0x30000, 0x8000, CRC(07068c9f) SHA1(1aedc78d071281ec8b08488cd82655d41a77cf6b) )
1580ROM_END
1581
1582ROM_START( gt103a2 )
1583   ROM_REGION( 0x38000, "cpu", 0 )
1584   ROM_LOAD( "prog1_versionc",  0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
1585   ROM_LOAD( "vices",           0x10000, 0x8000, CRC(e6069955) SHA1(68f7453f21a4ce1be912141bbe947fbd81d918a3) ) /* Questions from an unknown set, will be corrected when verified */
1586   ROM_LOAD( "cops_&_robbers",  0x18000, 0x8000, CRC(8b367c33) SHA1(013468157bf469c9cf138809fdc45b3ba60a423b) ) /* These questions are likely mix-n-match do to opperator swaps   */
1587   ROM_LOAD( "famous_couples",  0x20000, 0x8000, CRC(e0618218) SHA1(ff64fcd6dec83a2271b63c3ae64dc932a3954ec5) ) /* Currently unverified are Series 12, 13 & 14 */
1588   ROM_LOAD( "famous_quotes",   0x28000, 0x8000, CRC(0a27d8ae) SHA1(427e6ae25e47da7f7f7c3e92a37e330d711da90c) )
1589ROM_END
1590
1591ROM_START( gt103a3 )
1592   ROM_REGION( 0x38000, "cpu", 0 )
1593   ROM_LOAD( "t_3a-8_1.bin",    0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) )
1594   ROM_LOAD( "rock-n-roll_alt", 0x10000, 0x8000, CRC(8eb83052) SHA1(93e3c1ae6c2048fb44ecafe1013b6a96da38fa84) ) /* Questions from an unknown set, will be corrected when verified */
1595   ROM_LOAD( "history-geog.",   0x18000, 0x8000, CRC(c9a70fc3) SHA1(4021e5d702844416e8c798ed0a57c9ecd20b1d4b) ) /* These questions are likely mix-n-match do to opperator swaps   */
1596   ROM_LOAD( "the_sixties",     0x20000, 0x8000, CRC(8cfa854e) SHA1(81428c12f99841db1c61b471ac8d00f0c411883b) ) /* Currently unverified are Series 12, 13 & 14 */
1597   ROM_LOAD( "tv_comedies",     0x28000, 0x8000, CRC(992ae38e) SHA1(312780d651a85a1c433f587ff2ede579456d3fd9) )
1598ROM_END
1599
1600ROM_START( gt103aa )
1601   ROM_REGION( 0x38000, "cpu", 0 )
1602   ROM_LOAD( "t_3a-8_1.bin",      0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) )
1603   ROM_LOAD( "entertainment_alt", 0x10000, 0x8000, CRC(9a6628b9) SHA1(c0cb7e974329d4d5b91f107296d21a674e35a51b) ) /* Questions from an unknown set, will be corrected when verified */
1604   ROM_LOAD( "general_alt",       0x18000, 0x8000, CRC(df34f7f9) SHA1(329d123eea711d5135dc02dd7b89b220ce8ddd28) ) /* These questions are likely mix-n-match do to opperator swaps   */
1605   ROM_LOAD( "science_alt",       0x20000, 0x8000, CRC(9eaebd18) SHA1(3a4d787cb006dbb23ce346577cb1bb5e543ba52c) ) /* Currently unverified are Series 12, 13 & 14 */
1606   ROM_LOAD( "science_alt2",      0x28000, 0x8000, CRC(ac93d348) SHA1(55550ba6b5daffdf9653854075ad4f8398a5e621) )
1607   ROM_LOAD( "sports_alt2",       0x30000, 0x8000, CRC(40207845) SHA1(2dddb9685dcefabfde07057a639aa9d08da2329e) )
1608ROM_END
1609
1610ROM_START( gt103asx )
1611   ROM_REGION( 0x38000, "cpu", 0 )
1612   ROM_LOAD( "t_3a-8_1.bin",    0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) )
1613   ROM_LOAD( "adult_sex_2",     0x10000, 0x8000, CRC(0d683f21) SHA1(f47ce3c31c4c5ed02247fa280303e6ae760315df) )
1614   ROM_LOAD( "adult_sex_2_alt", 0x18000, 0x8000, CRC(8c0eacc8) SHA1(ddaa25548d161394b41c65a2db57a9fcf793062b) )
1615   ROM_LOAD( "adult_sex_3_alt", 0x20000, 0x8000, CRC(63cbd1d6) SHA1(8dcd5546dc8688d6b8404d5cf63d8a59acc9bf4c) )
1616   ROM_LOAD( "adult_sex_4",     0x28000, 0x8000, CRC(36a75071) SHA1(f08d31f241e1dc9b94b940cd2872a692f6f8475b) )
1617   ROM_LOAD( "adult_sex_5",     0x30000, 0x8000, CRC(fdbc3729) SHA1(7cb7cec4439ddc39de2f7f62c25623cfb869f493) )
1618ROM_END
1619
1620ROM_START( quiz )
1621   ROM_REGION( 0x38000, "cpu", 0 )
1622   ROM_LOAD( "1.bin",        0x00000, 0x4000, CRC(4e3204da) SHA1(291f1c9b8c4c07881621c3ecbba7af80f86b9520) )
1623   ROM_LOAD( "2.bin",        0x10000, 0x8000, CRC(b79f3ae1) SHA1(4b4aa50ec95138bc8ee4bc2a61bcbfa2515ac854) )
1624   ROM_LOAD( "3.bin",        0x18000, 0x8000, CRC(9c7e9608) SHA1(35ee9aa36d16bca64875640224c7fe9d327a95c3) )
1625   ROM_LOAD( "4.bin",        0x20000, 0x8000, CRC(30f6b4d0) SHA1(ab2624eb1a3fd9cd8d44433962d09496cd67d569) )
1626   ROM_LOAD( "5.bin",        0x28000, 0x8000, CRC(e9cdae21) SHA1(4de4a4edf9eccd8f9f7b935f47bee42c10ad606f) )
1627   ROM_LOAD( "6.bin",        0x30000, 0x8000, CRC(89e2b7e8) SHA1(e85c66f0cf37418f522c2d6384997d52f2f15117) )
1628
1629   ROM_REGION( 0x0200, "proms", 0 ) /* unknown */
1630   ROM_LOAD( "prom_am27s29pc.bin", 0x0000, 0x0200, CRC(19e3f161) SHA1(52da3c1e50c2329454de14cb9c46149e573e562b) )
1631ROM_END
1632
1633ROM_START( quiz211 )
1634   ROM_REGION( 0x38000, "cpu", 0 )
1635   ROM_LOAD( "1a.bin",         0x000000, 0x4000, CRC(116de0ea) SHA1(9af97b100aa2c79a58de055abe726d6e2e00aab4) )
1636   ROM_CONTINUE(               0x000000, 0x4000 ) // halves identical
1637   ROM_LOAD( "hobby.bin",      0x10000, 0x8000, CRC(c86d0c2b) SHA1(987ef17c7b9cc119511a16cbd98ec44d24665af5) )
1638   ROM_LOAD( "musica.bin",     0x18000, 0x8000, CRC(6b08990f) SHA1(bbc633dc4e0c395269d3d3fbf1f7617ea7adabf1) )
1639   ROM_LOAD( "natura.bin",     0x20000, 0x8000, CRC(f17b0d59) SHA1(ebe3d5a0247f3065f0c5d4ee0b846a737700f379) )
1640   ROM_LOAD( "spettacolo.bin", 0x28000, 0x8000, CRC(38b8e37a) SHA1(e6df575f61ac61e825d98eaef99c128647806a75) )
1641   ROM_LOAD( "mondiali90.bin", 0x30000, 0x4000, CRC(35622870) SHA1(f2dab64106ca4ef07175a0ad9491470964d8a0d2) )
1642
1643   ROM_REGION( 0x0e00, "proms", 0 ) /* unknown */
1644   ROM_LOAD( "prom_27s13-1.bin", 0x0000, 0x0200, NO_DUMP )
1645   ROM_LOAD( "prom_27s13-2.bin", 0x0200, 0x0200, NO_DUMP )
1646   ROM_LOAD( "prom_27s13-3.bin", 0x0400, 0x0200, NO_DUMP )
1647   ROM_LOAD( "prom_27s13-4.bin", 0x0600, 0x0200, NO_DUMP )
1648   ROM_LOAD( "prom_27s13-5.bin", 0x0800, 0x0200, NO_DUMP )
1649   ROM_LOAD( "prom_27s13-6.bin", 0x0a00, 0x0200, NO_DUMP )
1650   ROM_LOAD( "prom_6349-1n.bin", 0x0c00, 0x0200, CRC(19e3f161) SHA1(52da3c1e50c2329454de14cb9c46149e573e562b) )
1651
1652   ROM_REGION( 0x0100, "plds", 0 )
1653   ROM_LOAD( "pal10l8cn.bin",   0x0000, 0x002c, CRC(86095226) SHA1(e7496efbd5ca240f0df2dfa5627402342c7f5384) )
1654ROM_END
1655
1656/*
1657GEI Multi Game System
1658(c) 1992
1659
1660Much newer satellite board for the Greyhound UV-1B mainboard system
1661
1662Contains:
1663Power LED
16643 Pals
16652 74LS374N
1666
1667ST MK48Z02B-20 Zeropower RAM
1668
1669Control, graphics & 13 banked roms (as labeled):
1670
1671Cont: R.5 Cont 92
1672GRPH: R.5 K.B. 93
1673
1674Bank  1: pokr 4/3 92
1675Bank  2: bljk 4/3 92
1676Bank  3: bone 4/3 92
1677Bank  4: slot 4/3 92
1678Bank  5: sprd 4/3 92
1679Bank  6: hrse 7/8 92
1680Bank  7: dogs 7/8 92
1681Bank  8: memo test
1682Bank  9: reel fun
1683Bank 10: fact #1
1684Bank 11: adlt sex #1
1685Bank 12: nfl #1
1686Bank 13: entr #1
1687
1688All roms are 27C256 type eproms
1689*/
1690
1691ROM_START( geimulti )
1692   ROM_REGION( 0x10000, "cpu", ROMREGION_ERASEFF )
1693   ROM_LOAD( "cont", 0x00000, 0x8000, CRC(920020df) SHA1(01cb0a58bf863d63bcafe1e198ce5ea10bb8f59e) )
1694
1695   ROM_REGION( 0x8000*(13 + 1), "bank", ROMREGION_ERASEFF )
1696   ROM_LOAD( "pokr",      0x00000, 0x8000, CRC(1e9651a0) SHA1(23f98633701a9ac01784b29d1283ec9236810baf) )
1697   ROM_LOAD( "bljk",      0x08000, 0x8000, CRC(afde21e6) SHA1(4db37ee4ffc72e3513cbfe31d018caa062683adf) )
1698   ROM_LOAD( "bone",      0x10000, 0x8000, CRC(6a84fc5d) SHA1(09d5d052a90744e5c6e0b06cabfdbbaa2458bbb5) )
1699   ROM_LOAD( "slot",      0x18000, 0x8000, CRC(11b85a71) SHA1(5672f6f796b2743c252d159778bd8746cf1f5f86) )
1700   ROM_LOAD( "sprd",      0x20000, 0x8000, CRC(2f067b3d) SHA1(cd7cae3d2def74369b8d015b9f36d5a174bea92c) )
1701   ROM_LOAD( "hrse",      0x28000, 0x8000, CRC(ab1d014a) SHA1(aa7a372266decd7b65234de4d866fe7baf71c9bb) )
1702   ROM_LOAD( "dogs",      0x30000, 0x8000, CRC(83cd070a) SHA1(ed7ce3ffe030802e99dd27f2310524615fcfc8bf) )
1703   ROM_LOAD( "memotest",  0x38000, 0x8000, CRC(8942b98c) SHA1(3f182eb6d00618d9859cd8acdf13c829d4469075) )
1704   ROM_LOAD( "reelfun",   0x40000, 0x8000, CRC(b3ede904) SHA1(e77c15e893583572650bb60432d68a1f7bf67d09) )
1705   ROM_LOAD( "fact#1",    0x48000, 0x8000, CRC(949b5519) SHA1(d4ac35ccbbb50f4e0d1e21e8427e6ad535e6da53) )
1706   ROM_LOAD( "adltsex#1", 0x50000, 0x8000, CRC(9e4d320b) SHA1(76a6280bce884acb3faa9ef3882de016612c34f6) )
1707   ROM_LOAD( "nfl#1",     0x58000, 0x8000, CRC(74fbbf17) SHA1(9d559034d3ec0b293d4b720150197daea3d450ff) )
1708   ROM_LOAD( "entr#1",    0x60000, 0x8000, CRC(caceaa7b) SHA1(c51f10f5acd3d3fedce43103b9f11d006139043c) )
1709   ROM_LOAD( "grph",      0x68000, 0x8000, CRC(25e265db) SHA1(6e184309ee67dbe7930570b135ace09eeb1eb333) )
1710
1711ROM_END
1712
1713ROM_START( sprtauth )
1714   ROM_REGION( 0x10000, "cpu", ROMREGION_ERASEFF )
1715   ROM_LOAD( "sprt-auth-rev1-cont.cont", 0x00000, 0x8000, CRC(19dd0aa6) SHA1(7805d8139ac20061fc782bcaeff2202ed451fa91) )
1716
1717   ROM_REGION( 0x8000*(13 + 1), "bank", ROMREGION_ERASEFF )
1718   ROM_LOAD( "sprt-auth-prem-bsbl.bank1",    0x00000, 0x8000, CRC(ef296636) SHA1(e727fe58bc961f56503788b2b670f5b3b04743f2) )
1719   ROM_LOAD( "sprt-auth-prem-bskt.bank2",    0x08000, 0x8000, CRC(4649d523) SHA1(fdfa1263cc6b3c45e62af0e3baf79311f243ac5f) )
1720   ROM_LOAD( "sprt-auth-prem-foot.bank3",    0x10000, 0x8000, CRC(76076022) SHA1(5014133e7143c4f4ccf4c7d1f05effe286b5a30a) )
1721   ROM_LOAD( "sprt-auth-prem-hcky.bank4",    0x18000, 0x8000, CRC(135beec3) SHA1(66fce1c0c0abbbf4971ab0f764d27f1d0849ccdc) )
1722   ROM_LOAD( "sprt-auth-asrt-sprt.bank5",    0x20000, 0x8000, CRC(fe8fc879) SHA1(efe38e8d3a314062b8005636df683349cd54f857) )
1723   ROM_LOAD( "sprt-auth-auto-racg.bank6",    0x28000, 0x8000, CRC(7ac1bbd6) SHA1(8635791bf2707b4d028ee8b020199770984b9ef4) )
1724   ROM_LOAD( "sprt-auth-ii-bsbl-ball.bank7", 0x30000, 0x8000, CRC(bad3e6bd) SHA1(e3df34a4d5db7cfbd014a841d224eeefc8386d40) )
1725   ROM_LOAD( "sprt-auth-ii-foot-ball.bank8", 0x38000, 0x8000, CRC(c305dec2) SHA1(924e608cd327bf6ffe831225affa270181599cea) )
1726   ROM_LOAD( "sprt-auth-supr-bowl.bank9",    0x40000, 0x8000, CRC(3a548fe5) SHA1(6ad35516651a8a878b512cb3eff697952e194dd0) )
1727   ROM_LOAD( "sprt-auth-rev1-kb.grph",       0x68000, 0x8000, CRC(c4f734ac) SHA1(028217fe6d7be75f75e9f67b665d465c729d2995) )
1728
1729ROM_END
1730
1731static DRIVER_INIT( setbank )
1732{
1733   memory_set_bankptr(machine, 1,memory_region(machine, "cpu") + 0x2000);
1734}
1735
1736static DRIVER_INIT( geimulti )
1737{
1738   memory_set_bankptr(machine, 1,memory_region(machine, "bank") + 0x0000);
1739}
1740
1741GAME( 1982, jokpoker, 0,        gselect,  gselect,  setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)",            GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1742GAME( 1983, jokpokera,jokpoker, jokpokera,gselect,  setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI)",           GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1743GAME( 1983, jokpokerb,jokpoker, jokpokera,gselect,  setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)",    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1744GAME( 1983, jokpokerc,jokpoker, jokpokera,gselect,  setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)",  GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1745GAME( 1982, superbwl, 0,        gselect,  gselect,  setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1746
1747GAME( 1982, gs4002,   0,        gselect,  gselect,  0,       ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)",     GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1748GAME( 1982, gs4002a,  gs4002,   gselect,  gselect,  0,       ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)",     GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1749
1750GAME( 1982, amuse,    0,        amuse,    gepoker,  0,       ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)",               GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1751GAME( 1982, amuse1, 0,          amuse1,   gepoker,  0,       ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)",               GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1752
1753GAME( 1984, gepoker,  0,        gepoker,  gepoker,  0,       ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)",        GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1754GAME( 1984, gepoker1, gepoker,  gepoker,  gepoker,  0,       ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)",        GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1755GAME( 1984, gepoker2, gepoker,  gepoker,  gepoker,  0,       ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)",        GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1756
1757GAME( 1984, gtsers1,  0,        getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1758GAME( 1984, gtsers2,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1759GAME( 1984, gtsers3,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1760GAME( 1984, gtsers4,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1761GAME( 1984, gtsers5,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1762GAME( 1984, gtsers7,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1763GAME( 1984, gtsersa,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)",   GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1764GAME( 1984, gtsersb,  gtsers1,  getrivia, getrivia, 0,       ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)",   GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1765GAME( 1984, gtsers8,  0,        findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1766GAME( 1984, gtsers9,  gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)",             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1767GAME( 1984, gtsers10, gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)",            GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1768GAME( 1984, gtsers11, gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)",            GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1769GAME( 1984, gt103a1,  gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 1)",          GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1770GAME( 1984, gt103a2,  gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 2)",          GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1771GAME( 1984, gt103a3,  gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 3)",          GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1772GAME( 1984, gt103aa,  gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions)",    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1773GAME( 1984, gt103asx, gtsers8,  findout,  gt103a,   0,       ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)",    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1774
1775GAME( 1985, sextriv1, 0,        getrivia, sextriv1, 0,       ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)",  GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1776GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, 0,       ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)",  GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1777
1778GAME( 1986, gt507uk,  0,        findout,  gt507uk,  0,       ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)",                GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1779GAME( 1986, gt5,      0,        findout,  gt103,    0,       ROT0, "Grayhound Electronics", "Trivia (Version 5.06)",                   GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1780
1781GAME( 1986, quiz,     0,        findout,  quiz,     0,       ROT0, "Italian bootleg",       "Quiz (Revision 2)",                       GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1782
1783GAME( 1986, reelfun,  0,        findout,  reelfun,  0,       ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)",                 GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1784GAME( 1987, findout,  0,        findout,  findout,  0,       ROT0, "Elettronolo",           "Find Out (Version 4.04)",                 GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1785
1786GAME( 1987, suprpokr, 0,        suprpokr, suprpokr, 0,       ROT0, "Grayhound Electronics", "Super Poker",                             GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1787
1788GAME( 1991, quiz211,  0,        findout,  quiz,     0,       ROT0, "Elettronolo",           "Quiz (Revision 2.11)",                    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1789
1790GAME( 1992, geimulti, 0,        geimulti, geimulti, geimulti,ROT0, "Grayhound Electronics",  "GEI Multi Game",                         GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1791GAME( 1992, sprtauth, 0,        sprtauth, sprtauth, geimulti,ROT0, "Classic Games",          "Sports Authority",                       GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
src/mame/drivers/segas32.c
r6428r6429
12591259static ADDRESS_MAP_START( system32_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
12601260   AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x100000)
12611261   AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(1)
1262   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rf", rf5c68_w)
1263   AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rf", rf5c68_mem_r, rf5c68_mem_w)
1262   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_w)
1263   AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_mem_r, rf5c68_mem_w)
12641264   AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE(&z80_shared_ram)
12651265ADDRESS_MAP_END
12661266
r6428r6429
12871287static ADDRESS_MAP_START( multi32_sound_portmap, ADDRESS_SPACE_IO, 8 )
12881288   ADDRESS_MAP_UNMAP_HIGH
12891289   ADDRESS_MAP_GLOBAL_MASK(0xff)
1290   AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
1290   AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ymsnd", ym3438_r, ym3438_w)
12911291   AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w)
12921292   AM_RANGE(0xb0, 0xbf) AM_DEVWRITE("sega", multipcm_bank_w)
12931293   AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w)
r6428r6429
22152215   MDRV_SOUND_ROUTE(0, "lspeaker", 0.40)
22162216   MDRV_SOUND_ROUTE(1, "rspeaker", 0.40)
22172217
2218   MDRV_SOUND_ADD("rf", RF5C68, RFC_CLOCK/4)
2218   MDRV_SOUND_ADD("rfsnd", RF5C68, RFC_CLOCK/4)
22192219   MDRV_SOUND_ROUTE(0, "lspeaker", 0.55)
22202220   MDRV_SOUND_ROUTE(1, "rspeaker", 0.55)
22212221MACHINE_DRIVER_END
r6428r6429
22672267   /* sound hardware */
22682268   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
22692269
2270   MDRV_SOUND_ADD("ym", YM3438, MASTER_CLOCK/4)
2270   MDRV_SOUND_ADD("ymsnd", YM3438, MASTER_CLOCK/4)
22712271   MDRV_SOUND_CONFIG(ym3438_config)
22722272   MDRV_SOUND_ROUTE(1, "lspeaker", 0.40)
22732273   MDRV_SOUND_ROUTE(0, "rspeaker", 0.40)
src/mame/drivers/looping.c
r6428r6429
511511   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
512512   AM_RANGE(0x0000, 0x37ff) AM_ROM
513513   AM_RANGE(0x3800, 0x3bff) AM_RAM
514   AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("ay", ay8910_r, ay8910_address_w)
515   AM_RANGE(0x3c02, 0x3c02) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("ay", ay8910_data_w)
514   AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_address_w)
515   AM_RANGE(0x3c02, 0x3c02) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("aysnd", ay8910_data_w)
516516   AM_RANGE(0x3c03, 0x3c03) AM_MIRROR(0x00f6) AM_NOP
517517   AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("tms", SMH_NOP, tms5220_data_w)
518518   AM_RANGE(0x3e02, 0x3e02) AM_MIRROR(0x00f4) AM_DEVREADWRITE("tms", tms5220_status_r, SMH_NOP)
r6428r6429
522522static ADDRESS_MAP_START( looping_sound_io_map, ADDRESS_SPACE_IO, 8 )
523523   AM_RANGE(0x000, 0x000) AM_WRITE(looping_souint_clr)
524524   AM_RANGE(0x001, 0x007) AM_DEVWRITE("dac", looping_sound_sw)
525   AM_RANGE(0x008, 0x008) AM_DEVWRITE("ay", ay_enable_w)
525   AM_RANGE(0x008, 0x008) AM_DEVWRITE("aysnd", ay_enable_w)
526526   AM_RANGE(0x009, 0x009) AM_DEVWRITE("tms", speech_enable_w)
527527   AM_RANGE(0x00a, 0x00a) AM_WRITE(ballon_enable_w)
528528   AM_RANGE(0x00b, 0x00f) AM_NOP
r6428r6429
638638   /* sound hardware */
639639   MDRV_SPEAKER_STANDARD_MONO("mono")
640640
641   MDRV_SOUND_ADD("ay", AY8910, SOUND_CLOCK/4)
641   MDRV_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK/4)
642642   MDRV_SOUND_CONFIG(ay8910_config)
643643   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
644644
src/mame/drivers/badlands.c
r6428r6429
406406
407407static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
408408   AM_RANGE(0x0000, 0x1fff) AM_RAM
409   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
409   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
410410   AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w)
411411   AM_RANGE(0x3000, 0xffff) AM_ROM
412412ADDRESS_MAP_END
r6428r6429
527527   /* sound hardware */
528528   MDRV_SPEAKER_STANDARD_MONO("mono")
529529
530   MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4)
530   MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
531531   MDRV_SOUND_ROUTE(0, "mono", 0.30)
532532   MDRV_SOUND_ROUTE(1, "mono", 0.30)
533533MACHINE_DRIVER_END
r6428r6429
733733   /* sound hardware */
734734   MDRV_SPEAKER_STANDARD_MONO("mono")
735735
736   MDRV_SOUND_ADD("ym", YM2151, 2800000/4)
736   MDRV_SOUND_ADD("ymsnd", YM2151, 2800000/4)
737737   MDRV_SOUND_ROUTE(0, "mono", 0.30)
738738   MDRV_SOUND_ROUTE(1, "mono", 0.30)
739739MACHINE_DRIVER_END
src/mame/drivers/astinvad.c
r6428r6429
2222#include "sound/samples.h"
2323
2424
25#define MASTER_CLOCK      XTAL_2MHz
26#define VIDEO_CLOCK         XTAL_4_9152MHz
25#define MASTER_CLOCK         XTAL_2MHz
26#define VIDEO_CLOCK          XTAL_4_9152MHz
2727
2828
2929/* sample sound IDs - must match sample file name table below */
r6428r6429
4141};
4242
4343
44typedef struct _astinvad_state astinvad_state;
45struct _astinvad_state
46{
47   UINT8 *    colorram;
48   UINT8 *    videoram;
4449
45/*************************************
46 *
47 *  Globals
48 *
49 *************************************/
50   emu_timer  *int_timer;
51   UINT8      sound_state[2];
52   UINT8      screen_flip;
53   UINT8      screen_red;
54   UINT8      flip_yoffs;
55   UINT8      color_latch;
5056
51static emu_timer *int_timer;
52static UINT8 sound_state[2];
53static UINT8 screen_flip;
54static UINT8 screen_red;
55static UINT8 flip_yoffs;
56static UINT8 color_latch;
57   const device_config *ppi8255_0;
58   const device_config *ppi8255_1;
59   const device_config *samples;
60};
5761
5862
59
6063/*************************************
6164 *
6265 *  Prototypes and interfaces
r6428r6429
9699
97100static VIDEO_START( spaceint )
98101{
99   colorram = auto_alloc_array(machine, UINT8, videoram_size);
102   astinvad_state *state = (astinvad_state *)machine->driver_data;
103   state->colorram = auto_alloc_array(machine, UINT8, videoram_size);
104
105   state_save_register_global(machine, state->color_latch);
106   state_save_register_global_pointer(machine, state->colorram, videoram_size);
100107}
101108
102109
103110static WRITE8_HANDLER( color_latch_w )
104111{
105   color_latch = data & 0x0f;
112   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
113   state->color_latch = data & 0x0f;
106114}
107115
108116
109117static WRITE8_HANDLER( spaceint_videoram_w )
110118{
111   videoram[offset] = data;
112   colorram[offset] = color_latch;
119   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
120   state->videoram[offset] = data;
121   state->colorram[offset] = state->color_latch;
113122}
114123
115124
r6428r6429
120129 *
121130 *************************************/
122131
123static void plot_byte(bitmap_t *bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color)
132static void plot_byte( running_machine *machine, bitmap_t *bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color )
124133{
134   astinvad_state *state = (astinvad_state *)machine->driver_data;
125135   pen_t fore_pen = MAKE_RGB(pal1bit(color >> 0), pal1bit(color >> 2), pal1bit(color >> 1));
126   UINT8 flip_xor = screen_flip & 7;
136   UINT8 flip_xor = state->screen_flip & 7;
127137
128138   *BITMAP_ADDR32(bitmap, y, x + (0 ^ flip_xor)) = (data & 0x01) ? fore_pen : RGB_BLACK;
129139   *BITMAP_ADDR32(bitmap, y, x + (1 ^ flip_xor)) = (data & 0x02) ? fore_pen : RGB_BLACK;
r6428r6429
138148
139149static VIDEO_UPDATE( astinvad )
140150{
151   astinvad_state *state = (astinvad_state *)screen->machine->driver_data;
141152   const UINT8 *color_prom = memory_region(screen->machine, "proms");
142   UINT8 yoffs = flip_yoffs & screen_flip;
153   UINT8 yoffs = state->flip_yoffs & state->screen_flip;
143154   int x, y;
144155
145156   /* render the visible pixels */
146157   for (y = cliprect->min_y; y <= cliprect->max_y; y++)
147158      for (x = cliprect->min_x & ~7; x <= cliprect->max_x; x += 8)
148159      {
149         UINT8 color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (screen_flip ? 0 : 4);
150         UINT8 data = videoram[(((y ^ screen_flip) + yoffs) << 5) | ((x ^ screen_flip) >> 3)];
151         plot_byte(bitmap, y, x, data, screen_red ? 1 : color);
160         UINT8 color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (state->screen_flip ? 0 : 4);
161         UINT8 data = state->videoram[(((y ^ state->screen_flip) + yoffs) << 5) | ((x ^ state->screen_flip) >> 3)];
162         plot_byte(screen->machine, bitmap, y, x, data, state->screen_red ? 1 : color);
152163      }
153164
154165   return 0;
r6428r6429
157168
158169static VIDEO_UPDATE( spaceint )
159170{
171   astinvad_state *state = (astinvad_state *)screen->machine->driver_data;
160172   const UINT8 *color_prom = memory_region(screen->machine, "proms");
161173   int offs;
162174
163175   for (offs = 0; offs < videoram_size; offs++)
164176   {
165      UINT8 data = videoram[offs];
166      UINT8 color = colorram[offs];
177      UINT8 data = state->videoram[offs];
178      UINT8 color = state->colorram[offs];
167179
168180      UINT8 y = ~offs;
169181      UINT8 x = offs >> 8 << 3;
r6428r6429
172184      offs_t n = ((offs >> 5) & 0xf0) | color;
173185      color = color_prom[n] & 0x07;
174186
175      plot_byte(bitmap, y, x, data, color);
187      plot_byte(screen->machine, bitmap, y, x, data, color);
176188   }
177189
178190   return 0;
r6428r6429
194206
195207static TIMER_CALLBACK( kamizake_int_gen )
196208{
209   astinvad_state *state = (astinvad_state *)machine->driver_data;
197210   /* interrupts are asserted on every state change of the 128V line */
198211   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
199212   param ^= 128;
200   timer_adjust_oneshot(int_timer, video_screen_get_time_until_pos(machine->primary_screen, param, 0), param);
213   timer_adjust_oneshot(state->int_timer, video_screen_get_time_until_pos(machine->primary_screen, param, 0), param);
201214
202215   /* an RC circuit turns the interrupt off after a short amount of time */
203216   timer_set(machine, double_to_attotime(300 * 0.1e-6), NULL, 0, kamikaze_int_off);
r6428r6429
206219
207220static MACHINE_START( kamikaze )
208221{
209   int_timer = timer_alloc(machine, kamizake_int_gen, NULL);
210   timer_adjust_oneshot(int_timer, video_screen_get_time_until_pos(machine->primary_screen, 128, 0), 128);
222   astinvad_state *state = (astinvad_state *)machine->driver_data;
223
224   state->ppi8255_0 = devtag_get_device(machine, "ppi8255_0");
225   state->ppi8255_1 = devtag_get_device(machine, "ppi8255_1");
226   state->samples = devtag_get_device(machine, "samples");
227
228   state->int_timer = timer_alloc(machine, kamizake_int_gen, NULL);
229   timer_adjust_oneshot(state->int_timer, video_screen_get_time_until_pos(machine->primary_screen, 128, 0), 128);
230
231   state_save_register_global(machine, state->screen_flip);
232   state_save_register_global(machine, state->screen_red);
233   state_save_register_global_array(machine, state->sound_state);
211234}
212235
236static MACHINE_RESET( kamikaze )
237{
238   astinvad_state *state = (astinvad_state *)machine->driver_data;
213239
240   state->screen_flip = 0;
241   state->screen_red = 0;
242   state->sound_state[0] = 0;
243   state->sound_state[1] = 0;
244}
245
246
247static MACHINE_START( spaceint )
248{
249   astinvad_state *state = (astinvad_state *)machine->driver_data;
250
251   state->samples = devtag_get_device(machine, "samples");
252
253   state_save_register_global(machine, state->screen_flip);
254   state_save_register_global_array(machine, state->sound_state);
255}
256
257static MACHINE_RESET( spaceint )
258{
259   astinvad_state *state = (astinvad_state *)machine->driver_data;
260
261   state->screen_flip = 0;
262   state->sound_state[0] = 0;
263   state->sound_state[1] = 0;
264   state->color_latch = 0;
265}
266
267
214268static INPUT_CHANGED( spaceint_coin_inserted )
215269{
216270   /* coin insertion causes an NMI */
r6428r6429
227281
228282static READ8_HANDLER( kamikaze_ppi_r )
229283{
284   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
230285   UINT8 result = 0xff;
231286
232287   /* the address lines are used for /CS; yes, they can overlap! */
233288   if (!(offset & 4))
234      result &= ppi8255_r(devtag_get_device(space->machine, "ppi8255_0"), offset);
289      result &= ppi8255_r(state->ppi8255_0, offset);
235290   if (!(offset & 8))
236      result &= ppi8255_r(devtag_get_device(space->machine, "ppi8255_1"), offset);
291      result &= ppi8255_r(state->ppi8255_1, offset);
237292   return result;
238293}
239294
240295
241296static WRITE8_HANDLER( kamikaze_ppi_w )
242297{
298   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
299
243300   /* the address lines are used for /CS; yes, they can overlap! */
244301   if (!(offset & 4))
245      ppi8255_w(devtag_get_device(space->machine, "ppi8255_0"), offset, data);
302      ppi8255_w(state->ppi8255_0, offset, data);
246303   if (!(offset & 8))
247      ppi8255_w(devtag_get_device(space->machine, "ppi8255_1"), offset, data);
304      ppi8255_w(state->ppi8255_1, offset, data);
248305}
249306
250307
r6428r6429
257314
258315static WRITE8_DEVICE_HANDLER( astinvad_sound1_w )
259316{
260   const device_config *samples = devtag_get_device(device->machine, "samples");
261   int bits_gone_hi = data & ~sound_state[0];
262   sound_state[0] = data;
317   astinvad_state *state = (astinvad_state *)device->machine->driver_data;
318   int bits_gone_hi = data & ~state->sound_state[0];
319   state->sound_state[0] = data;
263320
264   if (bits_gone_hi & 0x01) sample_start(samples, 0, SND_UFO, 1);
265   if (!(data & 0x01))      sample_stop(samples, 0);
266   if (bits_gone_hi & 0x02) sample_start(samples, 1, SND_SHOT, 0);
267   if (bits_gone_hi & 0x04) sample_start(samples, 2, SND_BASEHIT, 0);
268   if (bits_gone_hi & 0x08) sample_start(samples, 3, SND_INVADERHIT, 0);
321   if (bits_gone_hi & 0x01) sample_start(state->samples, 0, SND_UFO, 1);
322   if (!(data & 0x01))      sample_stop(state->samples, 0);
323   if (bits_gone_hi & 0x02) sample_start(state->samples, 1, SND_SHOT, 0);
324   if (bits_gone_hi & 0x04) sample_start(state->samples, 2, SND_BASEHIT, 0);
325   if (bits_gone_hi & 0x08) sample_start(state->samples, 3, SND_INVADERHIT, 0);
269326
270327   sound_global_enable(device->machine, data & 0x20);
271   screen_red = data & 0x04;
328   state->screen_red = data & 0x04;
272329}
273330
274331
275332static WRITE8_DEVICE_HANDLER( astinvad_sound2_w )
276333{
277   const device_config *samples = devtag_get_device(device->machine, "samples");
278   int bits_gone_hi = data & ~sound_state[1];
279   sound_state[1] = data;
334   astinvad_state *state = (astinvad_state *)device->machine->driver_data;
335   int bits_gone_hi = data & ~state->sound_state[1];
336   state->sound_state[1] = data;
280337
281   if (bits_gone_hi & 0x01) sample_start(samples, 5, SND_FLEET1, 0);
282   if (bits_gone_hi & 0x02) sample_start(samples, 5, SND_FLEET2, 0);
283   if (bits_gone_hi & 0x04) sample_start(samples, 5, SND_FLEET3, 0);
284   if (bits_gone_hi & 0x08) sample_start(samples, 5, SND_FLEET4, 0);
285   if (bits_gone_hi & 0x10) sample_start(samples, 4, SND_UFOHIT, 0);
338   if (bits_gone_hi & 0x01) sample_start(state->samples, 5, SND_FLEET1, 0);
339   if (bits_gone_hi & 0x02) sample_start(state->samples, 5, SND_FLEET2, 0);
340   if (bits_gone_hi & 0x04) sample_start(state->samples, 5, SND_FLEET3, 0);
341   if (bits_gone_hi & 0x08) sample_start(state->samples, 5, SND_FLEET4, 0);
342   if (bits_gone_hi & 0x10) sample_start(state->samples, 4, SND_UFOHIT, 0);
286343
287   screen_flip = (input_port_read(device->machine, "CABINET") & data & 0x20) ? 0xff : 0x00;
344   state->screen_flip = (input_port_read(device->machine, "CABINET") & data & 0x20) ? 0xff : 0x00;
288345}
289346
290347
291348static WRITE8_HANDLER( spaceint_sound1_w )
292349{
293   const device_config *samples = devtag_get_device(space->machine, "samples");
294   int bits_gone_hi = data & ~sound_state[0];
295   sound_state[0] = data;
350   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
351   int bits_gone_hi = data & ~state->sound_state[0];
352   state->sound_state[0] = data;
296353
297   if (bits_gone_hi & 0x01) sample_start(samples, 1, SND_SHOT, 0);
298   if (bits_gone_hi & 0x02) sample_start(samples, 2, SND_BASEHIT, 0);
299   if (bits_gone_hi & 0x04) sample_start(samples, 4, SND_UFOHIT, 0);
300   if (bits_gone_hi & 0x08) sample_start(samples, 0, SND_UFO, 1);
301   if (!(data & 0x08))      sample_stop(samples, 0);
354   if (bits_gone_hi & 0x01) sample_start(state->samples, 1, SND_SHOT, 0);
355   if (bits_gone_hi & 0x02) sample_start(state->samples, 2, SND_BASEHIT, 0);
356   if (bits_gone_hi & 0x04) sample_start(state->samples, 4, SND_UFOHIT, 0);
357   if (bits_gone_hi & 0x08) sample_start(state->samples, 0, SND_UFO, 1);
358   if (!(data & 0x08))      sample_stop(state->samples, 0);
302359
303   if (bits_gone_hi & 0x10) sample_start(samples, 5, SND_FLEET1, 0);
304   if (bits_gone_hi & 0x20) sample_start(samples, 5, SND_FLEET2, 0);
305   if (bits_gone_hi & 0x40) sample_start(samples, 5, SND_FLEET3, 0);
306   if (bits_gone_hi & 0x80) sample_start(samples, 5, SND_FLEET4, 0);
360   if (bits_gone_hi & 0x10) sample_start(state->samples, 5, SND_FLEET1, 0);
361   if (bits_gone_hi & 0x20) sample_start(state->samples, 5, SND_FLEET2, 0);
362   if (bits_gone_hi & 0x40) sample_start(state->samples, 5, SND_FLEET3, 0);
363   if (bits_gone_hi & 0x80) sample_start(state->samples, 5, SND_FLEET4, 0);
307364}
308365
309366
310367static WRITE8_HANDLER( spaceint_sound2_w )
311368{
312   const device_config *samples = devtag_get_device(space->machine, "samples");
313   int bits_gone_hi = data & ~sound_state[1];
314   sound_state[1] = data;
369   astinvad_state *state = (astinvad_state *)space->machine->driver_data;
370   int bits_gone_hi = data & ~state->sound_state[1];
371   state->sound_state[1] = data;
315372
316373   sound_global_enable(space->machine, data & 0x02);
317374
318   if (bits_gone_hi & 0x04) sample_start(samples, 3, SND_INVADERHIT, 0);
375   if (bits_gone_hi & 0x04) sample_start(state->samples, 3, SND_INVADERHIT, 0);
319376
320   screen_flip = (input_port_read(space->machine, "CABINET") & data & 0x80) ? 0xff : 0x00;
377   state->screen_flip = (input_port_read(space->machine, "CABINET") & data & 0x80) ? 0xff : 0x00;
321378}
322379
323380
r6428r6429
332389   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
333390   AM_RANGE(0x0000, 0x1bff) AM_ROM
334391   AM_RANGE(0x1c00, 0x1fff) AM_RAM
335   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
392   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE(&videoram_size)
336393ADDRESS_MAP_END
337394
338395
339396static ADDRESS_MAP_START( spaceint_map, ADDRESS_SPACE_PROGRAM, 8 )
340397   AM_RANGE(0x0000, 0x1fff) AM_ROM
341398   AM_RANGE(0x2000, 0x23ff) AM_RAM
342   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
399   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE(&videoram_size)
343400ADDRESS_MAP_END
344401
345402
r6428r6429
520577
521578static MACHINE_DRIVER_START( kamikaze )
522579
580   /* driver data */
581   MDRV_DRIVER_DATA(astinvad_state)
582
523583   /* basic machine hardware */
524584   MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK)
525585   MDRV_CPU_PROGRAM_MAP(kamikaze_map)
526586   MDRV_CPU_IO_MAP(kamikaze_portmap)
527587
528588   MDRV_MACHINE_START(kamikaze)
589   MDRV_MACHINE_RESET(kamikaze)
529590
530591   MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
531592   MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
r6428r6429
557618
558619static MACHINE_DRIVER_START( spaceint )
559620
621   /* driver data */
622   MDRV_DRIVER_DATA(astinvad_state)
623
560624   /* basic machine hardware */
561625   MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK)        /* a guess */
562626   MDRV_CPU_PROGRAM_MAP(spaceint_map)
563627   MDRV_CPU_IO_MAP(spaceint_portmap)
564628   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
565629
630   MDRV_MACHINE_START(spaceint)
631   MDRV_MACHINE_RESET(spaceint)
632
566633   /* video hardware */
567634   MDRV_VIDEO_START(spaceint)
568635   MDRV_VIDEO_UPDATE(spaceint)
r6428r6429
675742
676743static DRIVER_INIT( kamikaze )
677744{
745   astinvad_state *state = (astinvad_state *)machine->driver_data;
746
678747   /* the flip screen logic adds 32 to the Y after flipping */
679   flip_yoffs = 32;
748   state->flip_yoffs = 32;
680749}
681750
682751
683752static DRIVER_INIT( spcking2 )
684753{
754   astinvad_state *state = (astinvad_state *)machine->driver_data;
755
685756   /* don't have the schematics, but the blanking must center the screen here */
686   flip_yoffs = 0;
757   state->flip_yoffs = 0;
687758}
688759
689760
r6428r6429
694765 *
695766 *************************************/
696767
697GAME( 1979, kamikaze, 0,        kamikaze, kamikaze, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", GAME_IMPERFECT_SOUND )
698GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, kamikaze, ROT270, "Stern",              "Astro Invader", GAME_IMPERFECT_SOUND )
699GAME( 19??, kosmokil, kamikaze, kamikaze, kamikaze, kamikaze, ROT270, "bootleg",            "Kosmo Killer", GAME_IMPERFECT_SOUND ) // says >BEM< Mi Italy but it looks hacked in, dif revision of game tho.
700GAME( 1979, spcking2, 0,        spcking2, spcking2, spcking2, ROT270, "Konami",             "Space King 2", GAME_IMPERFECT_SOUND )
701GAME( 1980, spaceint, 0,        spaceint, spaceint, 0,        ROT90,  "Shoei",              "Space Intruder", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS )
702GAME( 1980, spaceintj,spaceint, spaceint, spaceinj, 0,        ROT90,  "Shoei",              "Space Intruder (Japan)", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS )
768GAME( 1979, kamikaze, 0,        kamikaze, kamikaze, kamikaze, ROT270, "Leijac Corporation", "Kamikaze",      GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
769GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, kamikaze, ROT270, "Stern",              "Astro Invader", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
770GAME( 19??, kosmokil, kamikaze, kamikaze, kamikaze, kamikaze, ROT270, "bootleg",            "Kosmo Killer",  GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // says >BEM< Mi Italy but it looks hacked in, dif revision of game tho.
771GAME( 1979, spcking2, 0,        spcking2, spcking2, spcking2, ROT270, "Konami",             "Space King 2",  GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
772GAME( 1980, spaceint, 0,        spaceint, spaceint, 0,        ROT90,  "Shoei",              "Space Intruder", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
773GAME( 1980, spaceintj,spaceint, spaceint, spaceinj, 0,        ROT90,  "Shoei",              "Space Intruder (Japan)", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
src/mame/drivers/supertnk.c
r6428r6429
296296   AM_RANGE(0x1800, 0x1bff) AM_RAM
297297   AM_RANGE(0x1efc, 0x1efc) AM_READ_PORT("JOYS")
298298   AM_RANGE(0x1efd, 0x1efd) AM_READ_PORT("INPUTS")
299   AM_RANGE(0x1efe, 0x1eff) AM_DEVWRITE("ay", ay8910_address_data_w)
299   AM_RANGE(0x1efe, 0x1eff) AM_DEVWRITE("aysnd", ay8910_address_data_w)
300300   AM_RANGE(0x1efe, 0x1efe) AM_READ_PORT("DSW")
301301   AM_RANGE(0x1eff, 0x1eff) AM_READ_PORT("UNK")
302302   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(supertnk_videoram_r, supertnk_videoram_w) AM_SIZE(&supertnk_videoram_size)
r6428r6429
434434   /* audio hardware */
435435   MDRV_SPEAKER_STANDARD_MONO("mono")
436436
437   MDRV_SOUND_ADD("ay", AY8910, 2000000)
437   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
438438   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
439439MACHINE_DRIVER_END
440440
src/mame/drivers/quizdna.c
r6428r6429
7474   AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
7575   AM_RANGE(0xc0, 0xc0) AM_WRITE(quizdna_rombank_w)
7676   AM_RANGE(0xd0, 0xd0) AM_WRITE(quizdna_screen_ctrl_w)
77   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
77   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
7878   AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
7979ADDRESS_MAP_END
8080
r6428r6429
8989   AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
9090   AM_RANGE(0xc0, 0xc0) AM_WRITE(quizdna_rombank_w)
9191   AM_RANGE(0xd0, 0xd0) AM_WRITE(quizdna_screen_ctrl_w)
92   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
92   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
9393   AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
9494ADDRESS_MAP_END
9595
r6428r6429
104104   AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE")
105105   AM_RANGE(0xc0, 0xc0) AM_WRITE(gekiretu_rombank_w)
106106   AM_RANGE(0xd0, 0xd0) AM_WRITE(quizdna_screen_ctrl_w)
107   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
107   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
108108   AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
109109ADDRESS_MAP_END
110110
r6428r6429
477477   /* sound hardware */
478478   MDRV_SPEAKER_STANDARD_MONO("mono")
479479
480   MDRV_SOUND_ADD("ym", YM2203, MCLK/4)
480   MDRV_SOUND_ADD("ymsnd", YM2203, MCLK/4)
481481   MDRV_SOUND_CONFIG(ym2203_config)
482482   MDRV_SOUND_ROUTE(0, "mono", 0.10)
483483   MDRV_SOUND_ROUTE(1, "mono", 0.10)
src/mame/drivers/boogwing.c
r6428r6429
133133static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
134134   AM_RANGE(0x000000, 0x00ffff) AM_ROM
135135   AM_RANGE(0x100000, 0x100001) AM_NOP
136   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
136   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
137137   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
138138   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
139139   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
323323   /* sound hardware */
324324   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
325325
326   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
326   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
327327   MDRV_SOUND_CONFIG(ym2151_config)
328328   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
329329   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
src/mame/drivers/mirderby.c
r6428r6429
134134   /* sound hardware */
135135   MDRV_SPEAKER_STANDARD_MONO("mono")
136136
137   MDRV_SOUND_ADD("ym", YM2203, 2000000)
137   MDRV_SOUND_ADD("ymsnd", YM2203, 2000000)
138138   MDRV_SOUND_ROUTE(0, "mono", 0.25)
139139   MDRV_SOUND_ROUTE(1, "mono", 0.25)
140140   MDRV_SOUND_ROUTE(2, "mono", 0.25)
src/mame/drivers/neodrvr.c
r6428r6429
736736   ROM_REGION( 0x20000, "fixedbios", 0 )
737737   ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
738738
739   ROM_REGION( 0x10000, "ym", ROMREGION_ERASEFF )
739   ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF )
740740
741741   NO_DELTAT_REGION
742742
r6428r6429
752752   /* MB832000 */
753753   NEO_BIOS_AUDIO_256K( "001-m1.bin", CRC(ba874463) SHA1(a83514f4b20301f84a98699900e2593f1c1b8846) )
754754
755   ROM_REGION( 0x080000, "ym", 0 )
755   ROM_REGION( 0x080000, "ymsnd", 0 )
756756   ROM_LOAD( "001-v1.bin", 0x000000, 0x080000, CRC(a7c3d5e5) SHA1(e3efc86940f91c53b7724c4566cfc21ea1a7a465) )
757757
758758   ROM_REGION( 0x180000, "ym.deltat", 0 )
r6428r6429
778778   /* MB832000 */
779779   NEO_BIOS_AUDIO_256K( "002-m1.bin", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) )
780780
781   ROM_REGION( 0x200000, "ym", 0 )
781   ROM_REGION( 0x200000, "ymsnd", 0 )
782782   ROM_LOAD( "002-v11.bin", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) )
783783   ROM_LOAD( "002-v12.bin", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) )
784784   ROM_LOAD( "002-v13.bin", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) )
r6428r6429
805805   /* MB832000 */
806806   NEO_BIOS_AUDIO_256K( "002-m1.bin", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) )
807807
808   ROM_REGION( 0x200000, "ym", 0 )
808   ROM_REGION( 0x200000, "ymsnd", 0 )
809809   ROM_LOAD( "002-v11.bin", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) )
810810   ROM_LOAD( "002-v12.bin", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) )
811811   ROM_LOAD( "002-v13.bin", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) )
r6428r6429
833833   /* TC531001 */
834834   NEO_BIOS_AUDIO_128K( "003-m1.bin", CRC(4cc545e6) SHA1(8e014b8cab3e5b3995756a4ea52ce49c36866377) )
835835
836   ROM_REGION( 0x080000, "ym", 0 )
836   ROM_REGION( 0x080000, "ymsnd", 0 )
837837   ROM_LOAD( "003-v1.bin", 0x000000, 0x080000, CRC(ff97f1cb) SHA1(defa249d46ae220f7bfa70746f5202bbbcc3e5fe) )
838838
839839   ROM_REGION( 0x200000, "ym.deltat", 0 )
r6428r6429
861861
862862   NEO_BIOS_AUDIO_128K( "004-m1.bin", CRC(c71fbb3b) SHA1(59c58665b53da61352359d191a0569de5dd1f4b3) )
863863
864   ROM_REGION( 0x100000, "ym", 0 )
864   ROM_REGION( 0x100000, "ymsnd", 0 )
865865   ROM_LOAD( "004-v11.bin", 0x000000, 0x080000, CRC(b2fb2153) SHA1(36e0cc8927b11105de40188af46f6cf532794c10) )
866866   ROM_LOAD( "004-v12.bin", 0x080000, 0x080000, CRC(8503317b) SHA1(ab22f1aba1e977ab234a4f1d73dc6ed789dbeb85) )
867867
r6428r6429
886886   /* MB832000 */
887887   NEO_BIOS_AUDIO_256K( "005-m1.bin", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) )
888888
889   ROM_REGION( 0x080000, "ym", 0 )
889   ROM_REGION( 0x080000, "ymsnd", 0 )
890890   ROM_LOAD( "005-v11.bin", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) )
891891
892892   ROM_REGION( 0x100000, "ym.deltat", 0 )
r6428r6429
911911   /* MB832000 */
912912   NEO_BIOS_AUDIO_256K( "005-m1.bin", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) )
913913
914   ROM_REGION( 0x080000, "ym", 0 )
914   ROM_REGION( 0x080000, "ymsnd", 0 )
915915   ROM_LOAD( "005-v11.bin", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) )
916916
917917   ROM_REGION( 0x100000, "ym.deltat", 0 )
r6428r6429
936936   /* MB832000 */
937937   NEO_BIOS_AUDIO_256K( "006-m1.bin", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) )
938938
939   ROM_REGION( 0x100000, "ym", 0 )
939   ROM_REGION( 0x100000, "ymsnd", 0 )
940940   ROM_LOAD( "006-v11.bin", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) )
941941   ROM_LOAD( "006-v12.bin", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) )
942942
r6428r6429
962962   /* MB832000 */
963963   NEO_BIOS_AUDIO_256K( "006-m1.bin", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) )
964964
965   ROM_REGION( 0x100000, "ym", 0 )
965   ROM_REGION( 0x100000, "ymsnd", 0 )
966966   ROM_LOAD( "006-v11.bin", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) )
967967   ROM_LOAD( "006-v12.bin", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) )
968968
r6428r6429
988988
989989   NEO_BIOS_AUDIO_128K( "007-m1.bin", CRC(28dfe2cd) SHA1(1a1a99fb917c6c8db591e3be695ce03f843ee1df) )
990990
991   ROM_REGION( 0x200000, "ym", 0 )
991   ROM_REGION( 0x200000, "ymsnd", 0 )
992992   ROM_LOAD( "007-v1.bin", 0x000000, 0x100000, CRC(cd5db931) SHA1(b59f9f2df29f49470312a6cd20f5669b6aaf51ff) )
993993   ROM_LOAD( "007-v2.bin", 0x100000, 0x100000, CRC(63e9b574) SHA1(1ade4cd0b15c84dd4a0fb7f7abf0885eef3a3f71) )
994994
r6428r6429
10091009
10101010   NEO_BIOS_AUDIO_128K( "009-m1.bin", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) )
10111011
1012   ROM_REGION( 0x180000, "ym", 0 )
1012   ROM_REGION( 0x180000, "ymsnd", 0 )
10131013   ROM_LOAD( "009-v11.bin", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) )
10141014   ROM_LOAD( "009-v12.bin", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) )
10151015   ROM_LOAD( "009-v13.bin", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) )
r6428r6429
10341034
10351035   NEO_BIOS_AUDIO_128K( "009-m1.bin", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) )
10361036
1037   ROM_REGION( 0x180000, "ym", 0 )
1037   ROM_REGION( 0x180000, "ymsnd", 0 )
10381038   ROM_LOAD( "009-v11.bin", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) )
10391039   ROM_LOAD( "009-v12.bin", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) )
10401040   ROM_LOAD( "009-v13.bin", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) )
r6428r6429
10591059
10601060   NEO_BIOS_AUDIO_128K( "010-m1.bin", CRC(8be3a078) SHA1(054ec6a061fcc88df1ecbb0a01611a31f37a7709) )
10611061
1062   ROM_REGION( 0x200000, "ym", 0 )
1062   ROM_REGION( 0x200000, "ymsnd", 0 )
10631063   ROM_LOAD( "010-v11.bin", 0x000000, 0x080000, CRC(90224d22) SHA1(5443ee6f90d80d43194cb4b4f0e08851a59e7784) )
10641064   ROM_LOAD( "010-v12.bin", 0x080000, 0x080000, CRC(a0cf1834) SHA1(8df57a7941bdae7e446a6056039adb012cdde246) )
10651065   ROM_LOAD( "010-v13.bin", 0x100000, 0x080000, CRC(ae38bc84) SHA1(c0937b4f89b8b26c8a0e747b234f44ad6a3bf2ba) )
r6428r6429
10871087   /* MB832000 */
10881088   NEO_BIOS_AUDIO_256K( "011-m1.bin", CRC(ca661f1b) SHA1(4e3cb57db716ec48487c1b070c3a55a5faf40856) )
10891089
1090   ROM_REGION( 0x180000, "ym", 0 )
1090   ROM_REGION( 0x180000, "ymsnd", 0 )
10911091   ROM_LOAD( "011-v11.bin", 0x000000, 0x100000, CRC(5c674d5c) SHA1(d7b9beddeb247b584cea9ca6c43ec6869809b673) )
10921092   ROM_LOAD( "011-v12.bin", 0x100000, 0x080000, CRC(9f513d5a) SHA1(37b04962f0b8e2a74abd35c407337a6151dc4e95) )
10931093
r6428r6429
11101110   /* CXK381003A */
11111111   NEO_BIOS_AUDIO_128K( "014-m1.bin", CRC(b6683092) SHA1(623ec7ec2915fb077bf65b4a16c815e071c25259) )
11121112
1113   ROM_REGION( 0x200000, "ym", 0 )
1113   ROM_REGION( 0x200000, "ymsnd", 0 )
11141114   ROM_LOAD( "014-v1.bin", 0x000000, 0x100000, CRC(25419296) SHA1(c9fc04987c4e0875d276e1a0fb671740b6f548ad) )
11151115   ROM_LOAD( "014-v2.bin", 0x100000, 0x100000, CRC(0de53d5e) SHA1(467f6040da3dfb1974785e95e14c3f608a93720a) )
11161116
r6428r6429
11331133   /* TC531001 */
11341134   NEO_BIOS_AUDIO_128K( "016-m1.bin", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) )
11351135
1136   ROM_REGION( 0x200000, "ym", 0 )
1136   ROM_REGION( 0x200000, "ymsnd", 0 )
11371137   ROM_LOAD( "016-v1.bin", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) )
11381138   ROM_LOAD( "016-v2.bin", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) )
11391139
r6428r6429
11561156   /* TC531001 */
11571157   NEO_BIOS_AUDIO_128K( "016-m1.bin", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) )
11581158
1159   ROM_REGION( 0x200000, "ym", 0 )
1159   ROM_REGION( 0x200000, "ymsnd", 0 )
11601160   ROM_LOAD( "016-v1.bin", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) )
11611161   ROM_LOAD( "016-v2.bin", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) )
11621162
r6428r6429
11781178
11791179   NEO_BIOS_AUDIO_128K( "017-m1.bin", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) )
11801180
1181   ROM_REGION( 0x200000, "ym", 0 )
1181   ROM_REGION( 0x200000, "ymsnd", 0 )
11821182   ROM_LOAD( "017-v1.bin", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) )
11831183   ROM_LOAD( "017-v2.bin", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) )
11841184
r6428r6429
12001200
12011201   NEO_BIOS_AUDIO_128K( "017-m1.bin", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) )
12021202
1203   ROM_REGION( 0x200000, "ym", 0 )
1203   ROM_REGION( 0x200000, "ymsnd", 0 )
12041204   ROM_LOAD( "017-v1.bin", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) )
12051205   ROM_LOAD( "017-v2.bin", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) )
12061206
r6428r6429
12221222   /* HN62321A */
12231223   NEO_BIOS_AUDIO_128K( "018-m1.bin", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) )
12241224
1225   ROM_REGION( 0x200000, "ym", 0 )
1225   ROM_REGION( 0x200000, "ymsnd", 0 )
12261226   ROM_LOAD( "018-v1.bin", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) )
12271227   ROM_LOAD( "018-v2.bin", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) )
12281228
r6428r6429
12441244   /* HN62321A */
12451245   NEO_BIOS_AUDIO_128K( "018-m1.bin", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) )
12461246
1247   ROM_REGION( 0x200000, "ym", 0 )
1247   ROM_REGION( 0x200000, "ymsnd", 0 )
12481248   ROM_LOAD( "018-v1.bin", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) )
12491249   ROM_LOAD( "018-v2.bin", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) )
12501250
r6428r6429
12661266   /* TC531001 */
12671267   NEO_BIOS_AUDIO_128K( "019-m1.bin", CRC(d568c17d) SHA1(a2e318ed6ad1809c79f3f0853d75e0dd1a2f275c) )
12681268
1269   ROM_REGION( 0x100000, "ym", 0 )
1269   ROM_REGION( 0x100000, "ymsnd", 0 )
12701270   ROM_LOAD( "019-v11.bin", 0x000000, 0x080000, CRC(0fb74872) SHA1(38c555926c77576d63472bc075210c42e9ce13a3) )
12711271   ROM_LOAD( "019-v12.bin", 0x080000, 0x080000, CRC(029faa57) SHA1(7bbaa87e38929ab1e32df5f6a2ec0fd5001e7cdb) )
12721272
r6428r6429
12881288   /* TC531001 */
12891289   NEO_BIOS_AUDIO_128K( "020-m1.bin", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
12901290
1291   ROM_REGION( 0x180000, "ym", 0 )
1291   ROM_REGION( 0x180000, "ymsnd", 0 )
12921292   ROM_LOAD( "020-v11.bin", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
12931293   ROM_LOAD( "020-v12.bin", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
12941294
r6428r6429
13121312   /* TC531001 */
13131313   NEO_BIOS_AUDIO_128K( "020-m1.bin", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
13141314
1315   ROM_REGION( 0x180000, "ym", 0 )
1315   ROM_REGION( 0x180000, "ymsnd", 0 )
13161316   ROM_LOAD( "020-v11.bin", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
13171317   ROM_LOAD( "020-v12.bin", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
13181318
r6428r6429
13351335   /* MB832000 */
13361336   NEO_BIOS_AUDIO_256K( "021-m1.bin", CRC(5a4be5e8) SHA1(552f025ce0d51c25f42e1a81cf0d08376ca5475d) )
13371337
1338   ROM_REGION( 0x080000, "ym", 0 )
1338   ROM_REGION( 0x080000, "ymsnd", 0 )
13391339   ROM_LOAD( "021-v11.bin", 0x000000, 0x080000, CRC(66c1e5c4) SHA1(7e85420021d4c39c36ed75a1cec567c5610ffce0) )
13401340
13411341   ROM_REGION( 0x080000, "ym.deltat", 0 )
r6428r6429
13541354
13551355   NEO_BIOS_AUDIO_128K( "022-m1.bin", CRC(8e1d4ab6) SHA1(deabc11ab81e7e68a3e041c03a127ae28d0d7264) )
13561356
1357   ROM_REGION( 0x200000, "ym", 0 )
1357   ROM_REGION( 0x200000, "ymsnd", 0 )
13581358   ROM_LOAD( "022-v11.bin", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) )
13591359   ROM_LOAD( "022-v22.bin", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) )
13601360
r6428r6429
13751375
13761376   NEO_BIOS_AUDIO_128K( "023-m1.bin", CRC(2a2105e0) SHA1(26fc13556fda2dbeb7b5b035abd994e302dc7662) )
13771377
1378   ROM_REGION( 0x100000, "ym", 0 )
1378   ROM_REGION( 0x100000, "ymsnd", 0 )
13791379   ROM_LOAD( "023-v1.bin", 0x000000, 0x100000, CRC(a53e5bd3) SHA1(cf115c6478ce155d889e6a5acb962339e08e024b) )
13801380
13811381   NO_DELTAT_REGION
r6428r6429
13931393
13941394   NEO_BIOS_AUDIO_128K( "024-m1.bin", CRC(cec19742) SHA1(ab6c6ba7737e68d2420a0617719c6d4c89039c45) )
13951395
1396   ROM_REGION( 0x200000, "ym", 0 )
1396   ROM_REGION( 0x200000, "ymsnd", 0 )
13971397   ROM_LOAD( "024-v1.bin", 0x000000, 0x100000, CRC(efdfa063) SHA1(e4609ecbcc1c820758f229da5145f51285b50555) )
13981398   ROM_LOAD( "024-v2.bin", 0x100000, 0x100000, CRC(3c7997c0) SHA1(8cb7e8e69892b19d318978370dbc510d51b06a69) )
13991399
r6428r6429
14141414
14151415   NEO_BIOS_AUDIO_128K( "025-m1.bin", CRC(9927034c) SHA1(205665361c5b2ab4f01ec480dd3c9b69db858d09) )
14161416
1417   ROM_REGION( 0x200000, "ym", 0 )
1417   ROM_REGION( 0x200000, "ymsnd", 0 )
14181418   ROM_LOAD( "025-v1.bin", 0x000000, 0x100000, CRC(4558558a) SHA1(a4b277703ed67225c652be0d618daeca65a27b88) )
14191419   ROM_LOAD( "025-v2.bin", 0x100000, 0x100000, CRC(c5e052e9) SHA1(fa1119c90ce4c706a6aa0c17d7bc06aa3068d9b2) )
14201420
r6428r6429
14351435
14361436   NEO_BIOS_AUDIO_128K( "027-m1.bin", CRC(6a915482) SHA1(ce39c41a0b13798b0401ba1dde489619dfbc30ef) )
14371437
1438   ROM_REGION( 0x100000, "ym", 0 )
1438   ROM_REGION( 0x100000, "ymsnd", 0 )
14391439   ROM_LOAD( "027-v11.bin", 0x000000, 0x100000, CRC(59ad4459) SHA1(bbb8ba8a8e337dd2946eefda4757e80d0547d54a) )
14401440
14411441   ROM_REGION( 0x100000, "ym.deltat", 0 )
r6428r6429
14561456
14571457   NEO_BIOS_AUDIO_128K( "029-m1.bin", CRC(8ed64977) SHA1(c2f77213f05b4b2e1962a45e718a9e36cc398cbb) )
14581458
1459   ROM_REGION( 0x100000, "ym", 0 )
1459   ROM_REGION( 0x100000, "ymsnd", 0 )
14601460   ROM_LOAD( "029-v1.bin", 0x000000, 0x100000, CRC(85065452) SHA1(7154b7c59b16c32753ac6b5790fb50b51ce30a20) )
14611461
14621462   NO_DELTAT_REGION
r6428r6429
14761476
14771477   NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
14781478
1479   ROM_REGION( 0x200000, "ym", 0 )
1479   ROM_REGION( 0x200000, "ymsnd", 0 )
14801480   ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
14811481   ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
14821482
r6428r6429
14981498
14991499   NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
15001500
1501   ROM_REGION( 0x200000, "ym", 0 )
1501   ROM_REGION( 0x200000, "ymsnd", 0 )
15021502   ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
15031503   ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
15041504
r6428r6429
15191519
15201520   NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
15211521
1522   ROM_REGION( 0x200000, "ym", 0 )
1522   ROM_REGION( 0x200000, "ymsnd", 0 )
15231523   ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
15241524   ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
15251525
r6428r6429
15411541   /* TC531001 */
15421542   NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) )
15431543
1544   ROM_REGION( 0x200000, "ym", 0 )
1544   ROM_REGION( 0x200000, "ymsnd", 0 )
15451545   ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
15461546   ROM_LOAD( "031-v2.bin", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) )
15471547
r6428r6429
15631563   /* TC531001 */
15641564   NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) )
15651565
1566   ROM_REGION( 0x200000, "ym", 0 )
1566   ROM_REGION( 0x200000, "ymsnd", 0 )
15671567   ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
15681568   ROM_LOAD( "031-v2.bin", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) )
15691569
r6428r6429
15851585   /* TC531001 */
15861586   NEO_BIOS_AUDIO_128K( "032-m1.bin", CRC(35ec952d) SHA1(8aed30e26d7e2c70dbce5de752df416091066f7b) )
15871587
1588   ROM_REGION( 0x200000, "ym", 0 )
1588   ROM_REGION( 0x200000, "ymsnd", 0 )
15891589   ROM_LOAD( "032-v1.bin", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) )
15901590   ROM_LOAD( "032-v2.bin", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) )
15911591
r6428r6429
16091609   /* TC531001 */
16101610   NEO_BIOS_AUDIO_128K( "032-m1.bin", CRC(35ec952d) SHA1(8aed30e26d7e2c70dbce5de752df416091066f7b) )
16111611
1612   ROM_REGION( 0x200000, "ym", 0 )
1612   ROM_REGION( 0x200000, "ymsnd", 0 )
16131613   ROM_LOAD( "032-v1.bin", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) )
16141614   ROM_LOAD( "032-v2.bin", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) )
16151615
r6428r6429
16321632
16331633   NEO_BIOS_AUDIO_128K( "033-m1.bin", CRC(5be10ffd) SHA1(90a5e6cbbc58a7883cd2a3a597180d631a466882) )
16341634
1635   ROM_REGION( 0x200000, "ym", 0 )
1635   ROM_REGION( 0x200000, "ymsnd", 0 )
16361636   ROM_LOAD( "033-v1.bin", 0x000000, 0x100000, CRC(212fd20d) SHA1(120c040db8c01a6f140eea03725448bfa9ca98c2) )
16371637   ROM_LOAD( "033-v2.bin", 0x100000, 0x100000, CRC(fa2ae47f) SHA1(80d0ba4cd30aab59b6f0db8fa341387bd7388afc) )
16381638
r6428r6429
16531653
16541654   NEO_BIOS_AUDIO_128K( "034-m1.bin", CRC(f41b16b8) SHA1(f3e1cfc4cd2c5baece176f169906aa796367d303) )
16551655
1656   ROM_REGION( 0x200000, "ym", 0 )
1656   ROM_REGION( 0x200000, "ymsnd", 0 )
16571657   ROM_LOAD( "034-v1.bin", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) )
16581658   ROM_LOAD( "034-v2.bin", 0x100000, 0x100000, CRC(5aa15686) SHA1(efe47954827a98d539ba719347c5f8aa60e6338b) )
16591659
r6428r6429
16741674
16751675   NEO_BIOS_AUDIO_128K( "036-m1.bin", BAD_DUMP CRC(f1385b96) SHA1(e7e3d1484188a115e262511116aaf466b8b1f428) )
16761676
1677   ROM_REGION( 0x200000, "ym", 0 )
1677   ROM_REGION( 0x200000, "ymsnd", 0 )
16781678   ROM_LOAD( "036-v1.bin", 0x000000, 0x100000, CRC(1c335dce) SHA1(493c273fa71bf81861a20af4c4eaae159e169f39) )
16791679   ROM_LOAD( "036-v2.bin", 0x100000, 0x100000, CRC(bbf79342) SHA1(45a4f40e415cdf35c3073851506648c8f7d53958) )
16801680
r6428r6429
16951695
16961696   NEO_BIOS_AUDIO_128K( "037-m1.bin", CRC(9c384263) SHA1(74b86284048669e316c5d241b4aaeb02d59d4dfa) )
16971697
1698   ROM_REGION( 0x100000, "ym", 0 )
1698   ROM_REGION( 0x100000, "ymsnd", 0 )
16991699   ROM_LOAD( "037-v1.bin", 0x000000, 0x100000, CRC(61fedf65) SHA1(98f31d1e23bf7c1f7844e67f14707a704134042e) )
17001700
17011701   NO_DELTAT_REGION
r6428r6429
17161716
17171717   NEO_BIOS_AUDIO_128K( "038-m1.bin", CRC(0908707e) SHA1(df7489ea6abf84d7f137ba7a8f52a4fd1b088fd7) )
17181718
1719   ROM_REGION( 0x180000, "ym", 0 )
1719   ROM_REGION( 0x180000, "ymsnd", 0 )
17201720   ROM_LOAD( "038-v1.bin", 0x000000, 0x100000, CRC(5ccd9fd5) SHA1(c3c8c758a320c39e4ceb0b6d9f188ed6d122eec4) )
17211721   ROM_LOAD( "038-v2.bin", 0x100000, 0x080000, CRC(ddd8d1e6) SHA1(65c819fa2392f264f5a1a0a4967c96775732500b) )
17221722
r6428r6429
17381738
17391739   NEO_BIOS_AUDIO_128K( "039-m1.bin", CRC(0c5b2ad5) SHA1(15eb5ea10fecdbdbcfd06225ae6d88bb239592e7) )
17401740
1741   ROM_REGION( 0x300000, "ym", 0 )
1741   ROM_REGION( 0x300000, "ymsnd", 0 )
17421742   ROM_LOAD( "039-v2.bin", 0x000000, 0x200000, CRC(86d34b25) SHA1(89bdb614b0c63d678962da52e2f596750d20828c) )
17431743   ROM_LOAD( "039-v4.bin", 0x200000, 0x100000, CRC(8fa62a0b) SHA1(58ac2fdd73c542eb8178cfc4adfa0e5940183283) )
17441744
r6428r6429
17611761
17621762   NEO_BIOS_AUDIO_128K( "040-m1.bin", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) )
17631763
1764   ROM_REGION( 0x300000, "ym", 0 )
1764   ROM_REGION( 0x300000, "ymsnd", 0 )
17651765   ROM_LOAD( "040-v1.bin", 0x000000, 0x200000, CRC(71cb4b5d) SHA1(56d9aca1d476c19c7d0f707176a8fed53e0189b7) )
17661766   ROM_LOAD( "040-v2.bin", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) )
17671767
r6428r6429
17851785   /* TC531001 */
17861786   NEO_BIOS_AUDIO_128K( "041-m1.bin", CRC(15c177a6) SHA1(3f4abed635102f9bc8b44809750828c82e79b44f) )
17871787
1788   ROM_REGION( 0x280000, "ym", 0 )
1788   ROM_REGION( 0x280000, "ymsnd", 0 )
17891789   ROM_LOAD( "041-v1.bin", 0x000000, 0x100000, CRC(cb1da093) SHA1(4f4d1d5fefa9dda372083c045bf0d268a57ce8f1) )
17901790   ROM_LOAD( "041-v2.bin", 0x100000, 0x100000, CRC(1c954a9d) SHA1(159bc6efdd531615461f6e16f83f6d4c4e67c237) )
17911791   ROM_LOAD( "041-v3.bin", 0x200000, 0x080000, CRC(afaa0180) SHA1(c4a047e21f093830498a163598ed7bd48a8cf9d1) )
r6428r6429
18071807
18081808   NEO_BIOS_AUDIO_128K( "042-m1.bin", CRC(bb19995d) SHA1(ed458fad5a23c6bd0d099927d98c31e1e6562d1b) )
18091809
1810   ROM_REGION( 0x200000, "ym", 0 )
1810   ROM_REGION( 0x200000, "ymsnd", 0 )
18111811   ROM_LOAD( "042-v1.bin", 0x000000, 0x100000, CRC(af7f8247) SHA1(99a47014017c20e4e22010c60612b6b7f6efc9e5) )
18121812   ROM_LOAD( "042-v2.bin", 0x100000, 0x100000, CRC(c6474b59) SHA1(a6c5054032b698116247b2f09a8b94a1b588c4f1) )
18131813
r6428r6429
18291829
18301830   NEO_BIOS_AUDIO_128K( "043-m1.bin", CRC(7eab59cb) SHA1(5ae4107457e091f73960bfba39b589ae36d51ca3) )
18311831
1832   ROM_REGION( 0x400000, "ym", 0 )
1832   ROM_REGION( 0x400000, "ymsnd", 0 )
18331833   ROM_LOAD( "043-v1.bin", 0x000000, 0x200000, CRC(63688ce8) SHA1(5c6ac29a0cc0655a87cfe3ada8706838b86b86e4) )
18341834   ROM_LOAD( "043-v2.bin", 0x200000, 0x200000, CRC(c69a827b) SHA1(f5197ea87bb6573fa6aef3a1713c3679c58c1e74) )
18351835
r6428r6429
18551855   /* TC531001 */
18561856   NEO_BIOS_AUDIO_128K( "044-m1.bin", CRC(0987e4bb) SHA1(8fae4b7fac09d46d4727928e609ed9d3711dbded) )
18571857
1858   ROM_REGION( 0x400000, "ym", 0 )
1858   ROM_REGION( 0x400000, "ymsnd", 0 )
18591859   ROM_LOAD( "044-v2.bin", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) )
18601860   ROM_LOAD( "044-v4.bin", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) )
18611861
r6428r6429
18811881
18821882   NEO_BIOS_AUDIO_128K( "045-m1.bin", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
18831883
1884   ROM_REGION( 0x400000, "ym", 0 )
1884   ROM_REGION( 0x400000, "ymsnd", 0 )
18851885   ROM_LOAD( "045-v1.bin", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
18861886   ROM_LOAD( "045-v2.bin", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
18871887
r6428r6429
19051905
19061906   NEO_BIOS_AUDIO_128K( "045-m1.bin", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
19071907
1908   ROM_REGION( 0x400000, "ym", 0 )
1908   ROM_REGION( 0x400000, "ymsnd", 0 )
19091909   ROM_LOAD( "045-v1.bin", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
19101910   ROM_LOAD( "045-v2.bin", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
19111911
r6428r6429
19371937
19381938   NEO_BIOS_AUDIO_128K( "046-m1.bin", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) )
19391939
1940   ROM_REGION( 0x400000, "ym", 0 )
1940   ROM_REGION( 0x400000, "ymsnd", 0 )
19411941   ROM_LOAD( "046-v1.bin", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) )
19421942   ROM_LOAD( "046-v2.bin", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) )
19431943   ROM_LOAD( "046-v3.bin", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) )
r6428r6429
19651965
19661966   NEO_BIOS_AUDIO_128K( "046-m1.bin", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) )
19671967
1968   ROM_REGION( 0x400000, "ym", 0 )
1968   ROM_REGION( 0x400000, "ymsnd", 0 )
19691969   ROM_LOAD( "046-v1.bin", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) )
19701970   ROM_LOAD( "046-v2.bin", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) )
19711971   ROM_LOAD( "046-v3.bin", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) )
r6428r6429
19931993
19941994   NEO_BIOS_AUDIO_128K( "047-m1.bin", CRC(820b0ba7) SHA1(5708248d89446e49184eaadb52f7c61b2b6c13c5) )
19951995
1996   ROM_REGION( 0x400000, "ym", 0 )
1996   ROM_REGION( 0x400000, "ymsnd", 0 )
19971997   ROM_LOAD( "047-v1.bin", 0x000000, 0x200000, CRC(d9d00784) SHA1(f6a91eada8c23aa4518c4b82eeebca69f79d845c) )
19981998   ROM_LOAD( "047-v2.bin", 0x200000, 0x200000, CRC(2c9a4b33) SHA1(d4a1c0951c02c8919b3ec32ed96933634ff9e54c) )
19991999
r6428r6429
20182018
20192019   NEO_BIOS_AUDIO_128K( "048-m1.bin", CRC(310467c7) SHA1(c529961195c9bdf5d1ce70a38ad129002d1f3b5f) )
20202020
2021   ROM_REGION( 0x200000, "ym", 0 )
2021   ROM_REGION( 0x200000, "ymsnd", 0 )
20222022   ROM_LOAD( "048-v1.bin", 0x000000, 0x200000, CRC(f1947d2b) SHA1(955ff91ab24eb2a7ec51ff46c9f9f2ec060456b2) )
20232023
20242024   NO_DELTAT_REGION
r6428r6429
20372037
20382038   NEO_BIOS_AUDIO_128K( "049-m1.bin", CRC(edd2acf4) SHA1(c4ee6ba834d54b9fc5a854dbc41a05877e090371) )
20392039
2040   ROM_REGION( 0x100000, "ym", 0 )
2040   ROM_REGION( 0x100000, "ymsnd", 0 )
20412041   ROM_LOAD( "049-v1.bin", 0x000000, 0x100000, CRC(ce43cb89) SHA1(47f82e077abb6efc6b1b0490412ae147d5d2acef) )
20422042
20432043   NO_DELTAT_REGION
r6428r6429
20552055
20562056   NEO_BIOS_AUDIO_128K( "050-m1.bin", CRC(6fcf07d3) SHA1(e9ecff4bfec1f5964bf06645f75d80d611b6231c) )
20572057
2058   ROM_REGION( 0x180000, "ym", 0 )
2058   ROM_REGION( 0x180000, "ymsnd", 0 )
20592059   ROM_LOAD( "050-v1.bin", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) )
20602060   ROM_LOAD( "050-v2.bin", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) )
20612061
r6428r6429
20762076
20772077   NEO_BIOS_AUDIO_128K( "051-m1.bin", CRC(8e69f29a) SHA1(7a25f4997996434ea1b7d0d1ca9e7aaf966cbd03) )
20782078
2079   ROM_REGION( 0x400000, "ym", 0 )
2079   ROM_REGION( 0x400000, "ymsnd", 0 )
20802080   ROM_LOAD( "051-v1.bin", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) )
20812081   ROM_LOAD( "051-v2.bin", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) )
20822082
r6428r6429
20972097
20982098   NEO_BIOS_AUDIO_128K( "052-m1.bin", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
20992099
2100   ROM_REGION( 0x200000, "ym", 0 )
2100   ROM_REGION( 0x200000, "ymsnd", 0 )
21012101   ROM_LOAD( "052-v1.bin", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
21022102
21032103   NO_DELTAT_REGION
r6428r6429
21192119
21202120   NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
21212121
2122   ROM_REGION( 0x300000, "ym", 0 )
2122   ROM_REGION( 0x300000, "ymsnd", 0 )
21232123   ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
21242124   ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
21252125
r6428r6429
21432143
21442144   NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
21452145
2146   ROM_REGION( 0x300000, "ym", 0 )
2146   ROM_REGION( 0x300000, "ymsnd", 0 )
21472147   ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
21482148   ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
21492149
r6428r6429
21672167
21682168   NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
21692169
2170   ROM_REGION( 0x300000, "ym", 0 )
2170   ROM_REGION( 0x300000, "ymsnd", 0 )
21712171   ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
21722172   ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
21732173
r6428r6429
21912191
21922192   NEO_BIOS_AUDIO_128K( "055-m1.bin", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
21932193
2194   ROM_REGION( 0x600000, "ym", 0 )
2194   ROM_REGION( 0x600000, "ymsnd", 0 )
21952195   ROM_LOAD( "055-v1.bin", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
21962196   ROM_LOAD( "055-v2.bin", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
21972197   ROM_LOAD( "055-v3.bin", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
r6428r6429
22172217
22182218   NEO_BIOS_AUDIO_128K( "056-m1.bin", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
22192219
2220   ROM_REGION( 0x500000, "ym", 0 )
2220   ROM_REGION( 0x500000, "ymsnd", 0 )
22212221   ROM_LOAD( "056-v1.bin", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
22222222   ROM_LOAD( "056-v2.bin", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
22232223   ROM_LOAD( "056-v3.bin", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
r6428r6429
22452245
22462246   NEO_BIOS_AUDIO_128K( "056-m1.bin", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
22472247
2248   ROM_REGION( 0x500000, "ym", 0 )
2248   ROM_REGION( 0x500000, "ymsnd", 0 )
22492249   ROM_LOAD( "056-v1.bin", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
22502250   ROM_LOAD( "056-v2.bin", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
22512251   ROM_LOAD( "056-v3.bin", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
r6428r6429
22722272
22732273   NEO_BIOS_AUDIO_128K( "057-m1.bin", CRC(8fa3bc77) SHA1(982f92978671e4ee66630948e6bb7565b37b5dc0) )
22742274
2275   ROM_REGION( 0x400000, "ym", 0 )
2275   ROM_REGION( 0x400000, "ymsnd", 0 )
22762276   ROM_LOAD( "057-v1.bin", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) )
22772277   ROM_LOAD( "057-v2.bin", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) )
22782278
r6428r6429
22962296
22972297   NEO_BIOS_AUDIO_128K( "058-m1.bin", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
22982298
2299   ROM_REGION( 0x500000, "ym", 0 )
2299   ROM_REGION( 0x500000, "ymsnd", 0 )
23002300   ROM_LOAD( "058-v1.bin", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
23012301   ROM_LOAD( "058-v2.bin", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
23022302   ROM_LOAD( "058-v3.bin", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
r6428r6429
23232323
23242324   NEO_BIOS_AUDIO_128K( "058-m1.bin", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
23252325
2326   ROM_REGION( 0x500000, "ym", 0 )
2326   ROM_REGION( 0x500000, "ymsnd", 0 )
23272327   ROM_LOAD( "058-v1.bin", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
23282328   ROM_LOAD( "058-v2.bin", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
23292329   ROM_LOAD( "058-v3.bin", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
r6428r6429
23482348
23492349   NEO_BIOS_AUDIO_128K( "059-m1.bin", CRC(29992eba) SHA1(187be624abe8670503edb235ff21ae8fdc3866e0) )
23502350
2351   ROM_REGION( 0x600000, "ym", 0 )
2351   ROM_REGION( 0x600000, "ymsnd", 0 )
23522352   ROM_LOAD( "059-v1.bin", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
23532353   ROM_LOAD( "059-v2.bin", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) )
23542354   ROM_LOAD( "059-v3.bin", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
r6428r6429
23752375
23762376   NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
23772377
2378   ROM_REGION( 0x300000, "ym", 0 )
2378   ROM_REGION( 0x300000, "ymsnd", 0 )
23792379   ROM_LOAD( "060-v1.bin", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
23802380   ROM_LOAD( "060-v2.bin", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) )
23812381
r6428r6429
23982398
23992399   NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
24002400
2401   ROM_REGION( 0x300000, "ym", 0 )
2401   ROM_REGION( 0x300000, "ymsnd", 0 )
24022402   ROM_LOAD( "060-v1.bin", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
24032403   ROM_LOAD( "060-v2.bin", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) )
24042404
r6428r6429
24192419
24202420   NEO_BIOS_AUDIO_128K( "061-m1.bin", CRC(156f6951) SHA1(49686f615f109a02b4f23931f1c84fee13872ffd) )
24212421
2422   ROM_REGION( 0x400000, "ym", 0 )
2422   ROM_REGION( 0x400000, "ymsnd", 0 )
24232423   ROM_LOAD( "061-v1.bin", 0x000000, 0x200000, CRC(f081c8d3) SHA1(fc9da0ddc1ddd1f9ae1443a726815c25e9dc38ae) )
24242424   ROM_LOAD( "061-v2.bin", 0x200000, 0x200000, CRC(7cd63302) SHA1(c39984c0ae0a8e76f1fc036344bbb83635c18937) )
24252425
r6428r6429
24412441
24422442   NEO_BIOS_AUDIO_128K( "062-m1.bin", CRC(76108b2f) SHA1(08c89a8b746dbb10ff885b41cde344173c2e3699) )
24432443
2444   ROM_REGION( 0x100000, "ym", 0 )
2444   ROM_REGION( 0x100000, "ymsnd", 0 )
24452445   ROM_LOAD( "062-v1.bin", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) )
24462446
24472447   NO_DELTAT_REGION
r6428r6429
24662466
24672467   NEO_BIOS_AUDIO_128K( "063-m1.bin", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
24682468
2469   ROM_REGION( 0x700000, "ym", 0 )
2469   ROM_REGION( 0x700000, "ymsnd", 0 )
24702470   ROM_LOAD( "063-v1.bin", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
24712471   ROM_LOAD( "063-v2.bin", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
24722472   ROM_LOAD( "063-v3.bin", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
r6428r6429
24982498
24992499   NEO_BIOS_AUDIO_128K( "063-m1.bin", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
25002500
2501   ROM_REGION( 0x700000, "ym", 0 )
2501   ROM_REGION( 0x700000, "ymsnd", 0 )
25022502   ROM_LOAD( "063-v1.bin", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
25032503   ROM_LOAD( "063-v2.bin", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
25042504   ROM_LOAD( "063-v3.bin", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
r6428r6429
25262526
25272527   NEO_BIOS_AUDIO_128K( "064-m1.bin", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) )
25282528
2529   ROM_REGION( 0x400000, "ym", 0 )
2529   ROM_REGION( 0x400000, "ymsnd", 0 )
25302530   ROM_LOAD( "064-v1.bin", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) )
25312531   ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
25322532
r6428r6429
25482548
25492549   NEO_BIOS_AUDIO_128K( "064-m1.bin", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) )
25502550
2551   ROM_REGION( 0x400000, "ym", 0 )
2551   ROM_REGION( 0x400000, "ymsnd", 0 )
25522552   ROM_LOAD( "064-v1.bin", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) )
25532553   ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
25542554
r6428r6429
25732573
25742574   NEO_BIOS_AUDIO_128K( "065-m1.bin", CRC(52c23cfc) SHA1(809a7e072ad9acbffc25e9bd27cdb97638d09d07) )
25752575
2576   ROM_REGION( 0x400000, "ym", 0 )
2576   ROM_REGION( 0x400000, "ymsnd", 0 )
25772577   ROM_LOAD( "065-v1.bin", 0x000000, 0x100000, CRC(ce8b3698) SHA1(7d75e2a5cf8c90be422f8b425447e81597fe145a) )
25782578   ROM_LOAD( "065-v2.bin", 0x100000, 0x100000, CRC(659f9b96) SHA1(62f40365212153bc3b92a1187fa44f6cdc7f7b83) )
25792579   ROM_LOAD( "065-v3.bin", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) )
r6428r6429
25962596
25972597   NEO_BIOS_AUDIO_128K( "066-m1.bin", CRC(030beae4) SHA1(ceb6ee6c09514504efacdbca7b280901e4c97084) )
25982598
2599   ROM_REGION( 0x200000, "ym", 0 )
2599   ROM_REGION( 0x200000, "ymsnd", 0 )
26002600   ROM_LOAD( "066-v1.bin", 0x000000, 0x200000, CRC(0b7ea37a) SHA1(34e7d4f6db053674a7e8c8b2e3e398777d5b02e6) )
26012601
26022602   NO_DELTAT_REGION
r6428r6429
26182618
26192619   NEO_BIOS_AUDIO_128K( "067-m1.bin", CRC(e777a234) SHA1(9f3974ac07859337bc0203f903c40ae3f60dc1fb) )
26202620
2621   ROM_REGION( 0x80000, "ym", 0 )
2621   ROM_REGION( 0x80000, "ymsnd", 0 )
26222622   ROM_LOAD( "067-v1.bin", 0x000000, 0x80000, CRC(cf23afd0) SHA1(10f87014ee10613f92b04f482f449721a6379db7) )
26232623
26242624   NO_DELTAT_REGION
r6428r6429
26362636
26372637   NEO_BIOS_AUDIO_128K( "068-mg1.bin", CRC(b1c7911e) SHA1(27b298e7d50981331e17aa642e2e363ffac4333a) )
26382638
2639   ROM_REGION( 0x300000, "ym", 0 )
2639   ROM_REGION( 0x300000, "ymsnd", 0 )
26402640   ROM_LOAD( "068-v1.bin", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) )
26412641   ROM_LOAD( "068-v2.bin", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) )
26422642   ROM_LOAD( "068-v3.bin", 0x200000, 0x100000, CRC(81ff05aa) SHA1(d74302f38c59055bfc83b39dff798a585314fecd) )
r6428r6429
26612661
26622662   NEO_BIOS_AUDIO_128K( "069-m1.bin", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
26632663
2664   ROM_REGION( 0xa00000, "ym", 0 )
2664   ROM_REGION( 0xa00000, "ymsnd", 0 )
26652665   ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
26662666   ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
26672667   ROM_LOAD( "069-v3.bin", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
r6428r6429
26912691
26922692   NEO_BIOS_AUDIO_128K( "070-m1.bin", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) )
26932693
2694   ROM_REGION( 0x0200000, "ym", 0 )
2694   ROM_REGION( 0x0200000, "ymsnd", 0 )
26952695   ROM_LOAD( "070-v1.bin", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) )
26962696
26972697   NO_DELTAT_REGION
r6428r6429
27102710
27112711   NEO_BIOS_AUDIO_128K( "073-m1.bin", CRC(3cdf5d88) SHA1(6d8365a946fbd0b7c7b896536322638d80f6a764) )
27122712
2713   ROM_REGION( 0x300000, "ym", 0 )
2713   ROM_REGION( 0x300000, "ymsnd", 0 )
27142714   ROM_LOAD( "073-v1.bin", 0x000000, 0x200000, CRC(7fc86d2f) SHA1(aa4234d22157060e0ba97a09c4e85c5276b74099) )
27152715   ROM_LOAD( "073-v2.bin", 0x200000, 0x100000, CRC(082adfc7) SHA1(19c168e9a6cadcbed79033c320bcf3a45f846daf) )
27162716
r6428r6429
27302730
27312731   NEO_BIOS_AUDIO_128K( "074-m1.bin", CRC(5a52a9d1) SHA1(ef913a9a55d29d5dd3beab1ce6039d64ce9b1a5b) )
27322732
2733   ROM_REGION( 0x400000, "ym", 0 )
2733   ROM_REGION( 0x400000, "ymsnd", 0 )
27342734   ROM_LOAD( "074-v1.bin", 0x000000, 0x200000, CRC(7675b8fa) SHA1(29f4facf89d551237b31bf779693cbbbc94e1ede) )
27352735   ROM_LOAD( "074-v2.bin", 0x200000, 0x200000, CRC(a9da86e9) SHA1(ff65af61e42b79a75060a352b24077d1fa28c83f) )
27362736
r6428r6429
27562756
27572757   NEO_BIOS_AUDIO_128K( "075-m1.bin", CRC(bb828df1) SHA1(eab8e2868173bdaac7c7ed97305a9aa1033fd303) )
27582758
2759   ROM_REGION( 0x300000, "ym", 0 )
2759   ROM_REGION( 0x300000, "ymsnd", 0 )
27602760   ROM_LOAD( "075-v1.bin", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) )
27612761   ROM_LOAD( "075-v2.bin", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) )
27622762
r6428r6429
27772777
27782778   NEO_BIOS_AUDIO_128K( "076-m1.bin", CRC(7b5f3d0a) SHA1(4a301781a57ff236f49492b576ff4858b0ffbdf8) )
27792779
2780   ROM_REGION( 0x500000, "ym", 0 )
2780   ROM_REGION( 0x500000, "ymsnd", 0 )
27812781   ROM_LOAD( "076-v1.bin", 0x000000, 0x200000, CRC(1a21d90c) SHA1(4793ab06421228ad122e359653ed0f1339b90c7a) )
27822782   ROM_LOAD( "076-v2.bin", 0x200000, 0x200000, CRC(b61686c3) SHA1(5a3405e833ce36abb7421190438b5cccc8537919) )
27832783   ROM_LOAD( "076-v3.bin", 0x400000, 0x100000, CRC(b90658fa) SHA1(b9a4b34565ce3688495c47e35c9b888ef686ae9f) )
r6428r6429
28002800
28012801   NEO_BIOS_AUDIO_128K( "078-m1.bin", CRC(8e9e3b10) SHA1(7c44d1dbd4f8d337c99e90361d1dab837df85e31) )
28022802
2803   ROM_REGION( 0x500000, "ym", 0 )
2803   ROM_REGION( 0x500000, "ymsnd", 0 )
28042804   ROM_LOAD( "078-v1.bin", 0x000000, 0x200000, CRC(e3b735ac) SHA1(e16dfac09aef8115a20bae0bef8c86d4e7d0dc4a) )
28052805   ROM_LOAD( "078-v2.bin", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) )
28062806   ROM_LOAD( "078-v3.bin", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) )
r6428r6429
28262826
28272827   NEO_BIOS_AUDIO_128K( "079-m1.bin", CRC(bee3455a) SHA1(fd5345d9847982085a9b364fff542580889bf02f) )
28282828
2829   ROM_REGION( 0x280000, "ym", 0 )
2829   ROM_REGION( 0x280000, "ymsnd", 0 )
28302830   ROM_LOAD( "079-v1.bin", 0x000000, 0x200000, CRC(718a2400) SHA1(cefc5d0b302bd4a87ab1fa244ade4482c23c6806) )
28312831   ROM_LOAD( "079-v2.bin", 0x200000, 0x080000, CRC(b19884f8) SHA1(5fe910f2029da19ddab4dc95c2292d7fbb086741) )
28322832
r6428r6429
28472847
28482848   NEO_BIOS_AUDIO_128K( "080-m1.bin", CRC(f5f44172) SHA1(eaaba1781622901b91bce9257be4e05f84df053b) )
28492849
2850   ROM_REGION( 0x600000, "ym", 0 )
2850   ROM_REGION( 0x600000, "ymsnd", 0 )
28512851   ROM_LOAD( "080-v1.bin", 0x000000, 0x200000, CRC(0be18f60) SHA1(05c8b7d9f5a8583015f31902ad16d9c621f47d4e) )
28522852   ROM_LOAD( "080-v2.bin", 0x200000, 0x200000, CRC(4abde3ff) SHA1(0188bfcafa9a1aac302705736a2bcb26b9d684c2) )
28532853   ROM_LOAD( "080-v3.bin", 0x400000, 0x200000, CRC(f02844e2) SHA1(8c65ebe146f4ddb6c904f8125cb32767f74c24d5) )
r6428r6429
28702870
28712871   NEO_BIOS_AUDIO_128K( "081-m1.bin", CRC(82fcd863) SHA1(b219a5685450f9c24cc195f1c914bc3b292d72c0) )
28722872
2873   ROM_REGION( 0x600000, "ym", 0 )
2873   ROM_REGION( 0x600000, "ymsnd", 0 )
28742874   ROM_LOAD( "081-v1.bin", 0x000000, 0x200000, CRC(201fa1e1) SHA1(9c27cc1b1d075223ed4a90dd02571d09a2f0d076) )
28752875   ROM_LOAD( "081-v2.bin", 0x200000, 0x200000, CRC(acf29d96) SHA1(5426985c33aea2efc8ff774b59d34d8b03bd9a85) )
28762876   ROM_LOAD( "081-v3.bin", 0x400000, 0x200000, CRC(e524e415) SHA1(8733e1b63471381b16c2b7c64b909745d99c8925) )
r6428r6429
28952895
28962896   NEO_BIOS_AUDIO_128K( "082-m1.bin", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
28972897
2898   ROM_REGION( 0x400000, "ym", 0 )
2898   ROM_REGION( 0x400000, "ymsnd", 0 )
28992899   ROM_LOAD( "082-v1.bin", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
29002900   ROM_LOAD( "082-v2.bin", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
29012901
r6428r6429
29232923
29242924   NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1 (5e5bbcaeb82bed2ee17df08f005ca20ad1030723) )
29252925
2926   ROM_REGION( 0x380000, "ym", 0 )
2926   ROM_REGION( 0x380000, "ymsnd", 0 )
29272927   ROM_LOAD( "068-v1.bin", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) ) /* unused */
29282928   ROM_LOAD( "068-v2.bin", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) ) /* unused */
29292929   ROM_LOAD( "d96-01.v3", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
r6428r6429
29492949
29502950   NEO_BIOS_AUDIO_128K( "084-m1.bin", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
29512951
2952   ROM_REGION( 0x900000, "ym", 0 )
2952   ROM_REGION( 0x900000, "ymsnd", 0 )
29532953   ROM_LOAD( "084-v1.bin", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
29542954   ROM_LOAD( "084-v2.bin", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
29552955   /* 600000-7fffff empty */
r6428r6429
29792979
29802980   NEO_BIOS_AUDIO_128K( "084-m1.bin", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
29812981
2982   ROM_REGION( 0x900000, "ym", 0 )
2982   ROM_REGION( 0x900000, "ymsnd", 0 )
29832983   ROM_LOAD( "084-v1.bin", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
29842984   ROM_LOAD( "084-v2.bin", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
29852985   /* 600000-7fffff empty */
r6428r6429
30073007
30083008   NEO_BIOS_AUDIO_128K( "086-m1.bin", CRC(cb82bc5d) SHA1(8e3ecabec25d89adb6e0eed0ef5f94d34a4d5fc0) )
30093009
3010   ROM_REGION( 0x400000, "ym", 0 )
3010   ROM_REGION( 0x400000, "ymsnd", 0 )
30113011   ROM_LOAD( "086-v1.bin", 0x000000, 0x200000, CRC(97bf1986) SHA1(b80d3a37e18d0a52f1e0092dc300989c9647efd1) )
30123012   ROM_LOAD( "086-v2.bin", 0x200000, 0x200000, CRC(b7eb05df) SHA1(ff2b55c7021c248cfdcfc9cd3658f2896bcbca38) )
30133013
r6428r6429
30323032
30333033   NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
30343034
3035   ROM_REGION( 0x600000, "ym", 0 )
3035   ROM_REGION( 0x600000, "ymsnd", 0 )
30363036   ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
30373037   ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
30383038
r6428r6429
30583058
30593059   NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
30603060
3061   ROM_REGION( 0x600000, "ym", 0 )
3061   ROM_REGION( 0x600000, "ymsnd", 0 )
30623062   ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
30633063   ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
30643064
r6428r6429
30843084
30853085   NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
30863086
3087   ROM_REGION( 0x600000, "ym", 0 )
3087   ROM_REGION( 0x600000, "ymsnd", 0 )
30883088   ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
30893089   ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
30903090
r6428r6429
31103110
31113111   NEO_BIOS_AUDIO_128K( "088-m1.bin", CRC(2fe1f499) SHA1(5b747eeef65be04423d2db05e086df9132758a47) )
31123112
3113   ROM_REGION( 0x200000, "ym", 0 )
3113   ROM_REGION( 0x200000, "ymsnd", 0 )
31143114   ROM_LOAD( "088-v1.bin", 0x000000, 0x200000, CRC(b7785023) SHA1(d11df1e623434669cd3f97f0feda747b24dac05d) )
31153115
31163116   NO_DELTAT_REGION
r6428r6429
31313131
31323132   NEO_BIOS_AUDIO_128K( "089-m1.bin", CRC(ff3df7c7) SHA1(59d2ef64f734f6026073b365300221909057a512) )
31333133
3134   ROM_REGION( 0x800000, "ym", 0 )
3134   ROM_REGION( 0x800000, "ymsnd", 0 )
31353135   ROM_LOAD( "089-v1.bin", 0x000000, 0x400000, CRC(b458ded2) SHA1(75d659ecb1fd6002188f469fcaafc9907440e624) )
31363136   ROM_LOAD( "089-v2.bin", 0x400000, 0x400000, CRC(9d2db551) SHA1(83f7e5db7fb1502ceadcd334df90b11b1bba78e5) )
31373137
r6428r6429
31573157
31583158   NEO_BIOS_AUDIO_128K( "090-m1.bin", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
31593159
3160   ROM_REGION( 0x600000, "ym", 0 )
3160   ROM_REGION( 0x600000, "ymsnd", 0 )
31613161   ROM_LOAD( "090-v1.bin", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
31623162   ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
31633163   ROM_LOAD( "090-v3.bin", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
r6428r6429
31863186
31873187   NEO_BIOS_AUDIO_128K( "092-m1.bin", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
31883188
3189   ROM_REGION( 0x700000, "ym", 0 )
3189   ROM_REGION( 0x700000, "ymsnd", 0 )
31903190   ROM_LOAD( "092-v1.bin", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
31913191   ROM_LOAD( "092-v2.bin", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
31923192   ROM_LOAD( "092-v3.bin", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
r6428r6429
32093209
32103210   NEO_BIOS_AUDIO_128K( "093-m1.bin", CRC(e81e780b) SHA1(c56c53984e0f92e180e850c60a75f550ee84917c) )
32113211
3212   ROM_REGION( 0x600000, "ym", 0 )
3212   ROM_REGION( 0x600000, "ymsnd", 0 )
32133213   ROM_LOAD( "093-v1.bin", 0x000000, 0x400000, CRC(02abd4b0) SHA1(6bf33ebc9b01cd4a029f6a555694a9835e30ca1b) )
32143214   ROM_LOAD( "093-v2.bin", 0x400000, 0x200000, CRC(a92b8b3d) SHA1(b672c97b85d2f52eba3cb26025008ebc7a18312a) )
32153215
r6428r6429
32313231
32323232   NEO_BIOS_AUDIO_128K( "094-m1.bin", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
32333233
3234   ROM_REGION( 0x500000, "ym", 0 )
3234   ROM_REGION( 0x500000, "ymsnd", 0 )
32353235   ROM_LOAD( "094-v1.bin", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
32363236   ROM_LOAD( "094-v2.bin", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
32373237   ROM_LOAD( "094-v3.bin", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
r6428r6429
32583258
32593259   NEO_BIOS_AUDIO_128K( "095-m1.bin", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) )
32603260
3261   ROM_REGION( 0xc00000, "ym", 0 )
3261   ROM_REGION( 0xc00000, "ymsnd", 0 )
32623262   ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
32633263   ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
32643264   ROM_LOAD( "095-v3.bin", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) )
r6428r6429
32913291
32923292   NEO_BIOS_AUDIO_128K( "095-m1.bin", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) )
32933293
3294   ROM_REGION( 0xc00000, "ym", 0 )
3294   ROM_REGION( 0xc00000, "ymsnd", 0 )
32953295   ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
32963296   ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
32973297   ROM_LOAD( "095-v3.bin", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) )
r6428r6429
33183318
33193319   NEO_BIOS_AUDIO_128K( "096-m1.bin", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
33203320
3321   ROM_REGION( 0x600000, "ym", 0 )
3321   ROM_REGION( 0x600000, "ymsnd", 0 )
33223322   ROM_LOAD( "096-v1.bin", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
33233323   ROM_LOAD( "096-v2.bin", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
33243324   ROM_LOAD( "096-v3.bin", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
r6428r6429
33453345
33463346   NEO_BIOS_AUDIO_128K( "096-m1.bin", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
33473347
3348   ROM_REGION( 0x600000, "ym", 0 )
3348   ROM_REGION( 0x600000, "ymsnd", 0 )
33493349   ROM_LOAD( "096-v1.bin", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
33503350   ROM_LOAD( "096-v2.bin", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
33513351   ROM_LOAD( "096-v3.bin", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
r6428r6429
33723372
33733373   NEO_BIOS_AUDIO_128K( "097-m1.bin", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
33743374
3375   ROM_REGION( 0x600000, "ym", 0 )
3375   ROM_REGION( 0x600000, "ymsnd", 0 )
33763376   ROM_LOAD( "097-v1.bin", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
33773377   ROM_LOAD( "097-v2.bin", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
33783378
r6428r6429
33943394
33953395   NEO_BIOS_AUDIO_128K( "200-m1.bin", CRC(9994ac00) SHA1(7bded797f3b80fd00bcbe451ac0abe6646b19a14) )
33963396
3397   ROM_REGION( 0x800000, "ym", 0 )
3397   ROM_REGION( 0x800000, "ymsnd", 0 )
33983398   ROM_LOAD( "200-v1.bin", 0x000000, 0x200000, CRC(00fd48d2) SHA1(ddfee09328632e598fd51537b3ae8593219b2111) )
33993399   ROM_LOAD( "200-v2.bin", 0x200000, 0x200000, CRC(082acb31) SHA1(2f1c053040e9d50a6d45fd7bea1b96742bae694f) )
34003400   ROM_LOAD( "200-v3.bin", 0x400000, 0x200000, CRC(7abca053) SHA1(e229bc0ea82a371d6ee8fd9fe442b0fd141d0a71) )
r6428r6429
34163416
34173417   NEO_BIOS_AUDIO_128K( "201-m1.bin", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
34183418
3419   ROM_REGION( 0x800000, "ym", 0 )
3419   ROM_REGION( 0x800000, "ymsnd", 0 )
34203420   ROM_LOAD( "201-v1.bin", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) )
34213421   ROM_LOAD( "201-v2.bin", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) )
34223422
r6428r6429
34373437
34383438   NEO_BIOS_AUDIO_128K( "202-m1.bin", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
34393439
3440   ROM_REGION( 0x080000, "ym", 0 )
3440   ROM_REGION( 0x080000, "ymsnd", 0 )
34413441   ROM_LOAD( "202-v1.bin", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
34423442
34433443   NO_DELTAT_REGION
r6428r6429
34553455
34563456   NEO_BIOS_AUDIO_128K( "203-m1.bin", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) )
34573457
3458   ROM_REGION( 0x200000, "ym", 0 )
3458   ROM_REGION( 0x200000, "ymsnd", 0 )
34593459   ROM_LOAD( "203-v1.bin", 0x000000, 0x200000, CRC(baa2b9a5) SHA1(914782b6c81d9a76ce02251575592b0648434ba3) )
34603460
34613461   NO_DELTAT_REGION
r6428r6429
34733473
34743474   NEO_BIOS_AUDIO_128K( "206-m1.bin", CRC(0e22902e) SHA1(fb8466c342d4abd8bb4cad01c6ceab03f96cdad8) )
34753475
3476   ROM_REGION( 0x400000, "ym", 0 )
3476   ROM_REGION( 0x400000, "ymsnd", 0 )
34773477   ROM_LOAD( "206-v1.bin", 0x000000, 0x200000, CRC(5385eca8) SHA1(1ca171ce74a5885ae8841d0924de21dc0af2214e) )
34783478   ROM_LOAD( "206-v2.bin", 0x200000, 0x200000, CRC(f8c55404) SHA1(cecc41e9e08a7ff05b6f62e713fc86a816bf55a2) )
34793479
r6428r6429
34943494
34953495   NEO_BIOS_AUDIO_128K( "207-m1.bin", CRC(81eade02) SHA1(d6d135bc525f3ed14a8c255f0b83d83a52b0659c) )
34963496
3497   ROM_REGION( 0x200000, "ym", 0 )
3497   ROM_REGION( 0x200000, "ymsnd", 0 )
34983498   ROM_LOAD( "207-v1.bin", 0x000000, 0x200000, CRC(4143c052) SHA1(561b19bc8811b80f2f42ffc0b5df27132696470a) )
34993499
35003500   NO_DELTAT_REGION
r6428r6429
35133513
35143514   NEO_BIOS_AUDIO_128K( "208-m1.bin", CRC(0a5f3325) SHA1(04e0236df478a5452654c823dcb42fea65b6a718) )
35153515
3516   ROM_REGION( 0x400000, "ym", 0 )
3516   ROM_REGION( 0x400000, "ymsnd", 0 )
35173517   ROM_LOAD( "208-v1.bin", 0x000000, 0x200000, CRC(8b53e945) SHA1(beb7d63f6101f8435f35321fddb8479d312505c4) )
35183518   ROM_LOAD( "208-v2.bin", 0x200000, 0x200000, CRC(af37ebf8) SHA1(f5c511479483533480f2b9ecf8edd4b7ae64c2d9) )
35193519
r6428r6429
35353535
35363536   NEO_BIOS_AUDIO_128K( "209-m1.bin", CRC(cd758325) SHA1(b51eac634fc646c07210dff993018ad9ebabd3f9) )
35373537
3538   ROM_REGION( 0x200000, "ym", 0 )
3538   ROM_REGION( 0x200000, "ymsnd", 0 )
35393539   ROM_LOAD( "209-v1.bin", 0x000000, 0x200000, CRC(ef214212) SHA1(3e05ccaa2d06decb18b379b96f900c0e6b39ce70) )
35403540
35413541   NO_DELTAT_REGION
r6428r6429
35563556
35573557   NEO_BIOS_AUDIO_128K( "212-m1.bin", CRC(fcab6191) SHA1(488b8310b0957f0012fe50f73641b606f6ac4a57) )
35583558
3559   ROM_REGION( 0x400000, "ym", 0 )
3559   ROM_REGION( 0x400000, "ymsnd", 0 )
35603560   ROM_LOAD( "212-v1.bin", 0x000000, 0x400000, CRC(013d4ef9) SHA1(438a697c44525bdf78b54432c4f7217ab5667047) )
35613561
35623562   NO_DELTAT_REGION
r6428r6429
35793579
35803580   NEO_BIOS_AUDIO_128K( "213-m1.bin", CRC(200045f1) SHA1(7a6cd1c8d4447ea260d7ff4520c676b8d685f2e4) )
35813581
3582   ROM_REGION( 0x400000, "ym", 0 )
3582   ROM_REGION( 0x400000, "ymsnd", 0 )
35833583   ROM_LOAD( "213-v1.bin", 0x000000, 0x200000, CRC(a421c076) SHA1(129f05c1a28a6493442f47a79c2d3577a1a43ef5) )
35843584   ROM_LOAD( "213-v2.bin", 0x200000, 0x200000, CRC(233c7dd9) SHA1(be7f980aa83831b6605aaaf4ec904180bb96c935) )
35853585
r6428r6429
35993599
36003600   NEO_BIOS_AUDIO_128K( "214-m1.bin", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
36013601
3602   ROM_REGION( 0xa00000, "ym", 0 )
3602   ROM_REGION( 0xa00000, "ymsnd", 0 )
36033603   ROM_LOAD( "214-v1.bin", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
36043604   ROM_LOAD( "214-v2.bin", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
36053605   ROM_LOAD( "214-v3.bin", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
r6428r6429
36263626
36273627   NEO_BIOS_AUDIO_128K( "214-m1.bin", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
36283628
3629   ROM_REGION( 0xa00000, "ym", 0 )
3629   ROM_REGION( 0xa00000, "ymsnd", 0 )
36303630   ROM_LOAD( "214-v1.bin", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
36313631   ROM_LOAD( "214-v2.bin", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
36323632   ROM_LOAD( "214-v3.bin", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
r6428r6429
36533653
36543654   NEO_BIOS_AUDIO_128K( "215-m1.bin", CRC(a932081d) SHA1(376a45e19edb780ac8798c41ae2260c8a8a4bba8) )
36553655
3656   ROM_REGION( 0x600000, "ym", 0 )
3656   ROM_REGION( 0x600000, "ymsnd", 0 )
36573657   ROM_LOAD( "215-v1.bin", 0x000000, 0x400000, CRC(877d1409) SHA1(77c58ebffe677ea6369c964ec7975b11df512fa1) )
36583658   ROM_LOAD( "215-v2.bin", 0x400000, 0x200000, CRC(1bfa218b) SHA1(344836a578bde3c0ab59b58c8734f868e7403c26) )
36593659
r6428r6429
36773677
36783678   NEO_BIOS_AUDIO_128K( "216-m1.bin", CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) )
36793679
3680   ROM_REGION( 0x800000, "ym", 0 )
3680   ROM_REGION( 0x800000, "ymsnd", 0 )
36813681   ROM_LOAD( "059-v1.bin", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
36823682   ROM_LOAD( "216-v2.bin", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) )
36833683   ROM_LOAD( "059-v3.bin", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
r6428r6429
37073707
37083708   NEO_BIOS_AUDIO_128K( "217-m1.bin", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
37093709
3710   ROM_REGION( 0x600000, "ym", 0 )
3710   ROM_REGION( 0x600000, "ymsnd", 0 )
37113711   ROM_LOAD( "217-v1.bin", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
37123712   ROM_LOAD( "217-v2.bin", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
37133713
r6428r6429
37333733
37343734   NEO_BIOS_AUDIO_128K( "218-m1.bin", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
37353735
3736   ROM_REGION( 0x800000, "ym", 0 )
3736   ROM_REGION( 0x800000, "ymsnd", 0 )
37373737   ROM_LOAD( "218-v1.bin", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
37383738   ROM_LOAD( "218-v2.bin", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
37393739
r6428r6429
37593759
37603760   NEO_BIOS_AUDIO_128K( "219-m1.bin", CRC(958efdc8) SHA1(aacc6056b1ff48cde8f241a11a27473cfb4b4aa3) )
37613761
3762   ROM_REGION( 0x400000, "ym", 0 )
3762   ROM_REGION( 0x400000, "ymsnd", 0 )
37633763   ROM_LOAD( "219-v1.bin", 0x000000, 0x200000, CRC(2cc1bd05) SHA1(e204b6d359e5b37661dddc2c1f14d64fd9089f75) )
37643764   ROM_LOAD( "219-v2.bin", 0x200000, 0x200000, CRC(06ac1d3f) SHA1(c7f2287e4e8366b78bc26ede7802e2e92d44d7c9) )
37653765
r6428r6429
37823782
37833783   NEO_BIOS_AUDIO_128K( "221-m1.bin", CRC(bddae628) SHA1(02c77e6aaaed43e39778bf83a3184e7c21db63d4) )
37843784
3785   ROM_REGION( 0x200000, "ym", 0 )
3785   ROM_REGION( 0x200000, "ymsnd", 0 )
37863786   ROM_LOAD( "221-v1.bin", 0x000000, 0x200000, CRC(7e5e53e4) SHA1(72b063b2d4acaaf72a20d14ad5bfc90cb64d3fed) )
37873787
37883788   NO_DELTAT_REGION
r6428r6429
38013801
38023802   NEO_BIOS_AUDIO_128K( "222-m1.bin", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
38033803
3804   ROM_REGION( 0xa00000, "ym", 0 )
3804   ROM_REGION( 0xa00000, "ymsnd", 0 )
38053805   ROM_LOAD( "222-v1.bin", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
38063806   ROM_LOAD( "222-v2.bin", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
38073807   ROM_LOAD( "222-v3.bin", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
r6428r6429
38283828
38293829   NEO_BIOS_AUDIO_128K( "222-m1.bin", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
38303830
3831   ROM_REGION( 0xa00000, "ym", 0 )
3831   ROM_REGION( 0xa00000, "ymsnd", 0 )
38323832   ROM_LOAD( "222-v1.bin", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
38333833   ROM_LOAD( "222-v2.bin", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
38343834   ROM_LOAD( "222-v3.bin", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
r6428r6429
38553855
38563856   NEO_BIOS_AUDIO_128K( "223-m1.bin", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
38573857
3858   ROM_REGION( 0xc00000, "ym", 0 )
3858   ROM_REGION( 0xc00000, "ymsnd", 0 )
38593859   ROM_LOAD( "223-v1.bin", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
38603860   ROM_LOAD( "223-v2.bin", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
38613861   ROM_LOAD( "223-v3.bin", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
r6428r6429
38823882
38833883   NEO_BIOS_AUDIO_128K( "224-m1.bin", CRC(364d6f96) SHA1(779b95a6476089b71f48c8368d9043ee1dba9032) )
38843884
3885   ROM_REGION( 0x600000, "ym", 0 )
3885   ROM_REGION( 0x600000, "ymsnd", 0 )
38863886   ROM_LOAD( "224-v1.bin", 0x000000, 0x400000, CRC(ff57f088) SHA1(1641989b8aac899dbd68aa2332bcdf9b90b33564) )
38873887   ROM_LOAD( "224-v2.bin", 0x400000, 0x200000, CRC(7ad26599) SHA1(822030037b7664795bf3d64e1452d0aecc22497e) )
38883888
r6428r6429
39043904
39053905   NEO_BIOS_AUDIO_128K( "225-m1.bin", CRC(0634bba6) SHA1(153aaf016440500df7a4454f3f2f2911219cb7d8) )
39063906
3907   ROM_REGION( 0x800000, "ym", 0 )
3907   ROM_REGION( 0x800000, "ymsnd", 0 )
39083908   ROM_LOAD( "225-v1.bin", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) )
39093909   ROM_LOAD( "225-v2.bin", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) )
39103910
r6428r6429
39283928
39293929   NEO_BIOS_AUDIO_128K( "227-m1.bin", CRC(c8e5e0f9) SHA1(09bb05ae6f09b59b9e4871fae1fc7c3bafd07394) )
39303930
3931   ROM_REGION( 0x800000, "ym", 0 )
3931   ROM_REGION( 0x800000, "ymsnd", 0 )
39323932   ROM_LOAD( "227-v1.bin", 0x000000, 0x400000, CRC(b8f24181) SHA1(0a3af88d20ff65b82c58325d32c20b99fc07f7f3) )
39333933   ROM_LOAD( "227-v2.bin", 0x400000, 0x400000, CRC(ee39e260) SHA1(4ed6802564ce262ebe92c7276424056b70998758) )
39343934
r6428r6429
39493949
39503950   NEO_BIOS_AUDIO_128K( "gl-m1.bin", CRC(fd833b33) SHA1(ab6c218c42cba821654cbdae154efecb69f844f6) )
39513951
3952   ROM_REGION( 0x200000, "ym", 0 )
3952   ROM_REGION( 0x200000, "ymsnd", 0 )
39533953   ROM_LOAD( "gl-v1.bin", 0x000000, 0x200000, CRC(c603fce6) SHA1(5a866471d35895b2ae13cbd5d1cb41bf2e72e1b8) )
39543954
39553955   NO_DELTAT_REGION
r6428r6429
39683968
39693969   NEO_BIOS_AUDIO_128K( "230-m1.bin", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) )
39703970
3971   ROM_REGION( 0x800000, "ym", 0 )
3971   ROM_REGION( 0x800000, "ymsnd", 0 )
39723972   ROM_LOAD( "230-v1.bin", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) )
39733973   ROM_LOAD( "230-v2.bin", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) )
39743974
r6428r6429
39893989
39903990   NEO_BIOS_AUDIO_128K( "231-m1.bin", CRC(de41301b) SHA1(59ce3836ac8f064d56a446c9374f05bcb40fcfd8) )
39913991
3992   ROM_REGION( 0x400000, "ym", 0 )
3992   ROM_REGION( 0x400000, "ymsnd", 0 )
39933993   ROM_LOAD( "231-v1.bin", 0x000000, 0x400000, CRC(113fb898) SHA1(9168ba90c4aa969f69eb11ba3f4d76592d81e05a) )
39943994
39953995   NO_DELTAT_REGION
r6428r6429
40104010
40114011   NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
40124012
4013   ROM_REGION( 0xc00000, "ym", 0 )
4013   ROM_REGION( 0xc00000, "ymsnd", 0 )
40144014   ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
40154015   ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
40164016   ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
r6428r6429
40354035
40364036   NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
40374037
4038   ROM_REGION( 0xc00000, "ym", 0 )
4038   ROM_REGION( 0xc00000, "ymsnd", 0 )
40394039   ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
40404040   ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
40414041   ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
r6428r6429
40594059
40604060   NEO_BIOS_AUDIO_128K( "233-m1.bin", CRC(5beaf34e) SHA1(2905d26945932cddc2dd3a1dc5abba8aa3baee14) )
40614061
4062   ROM_REGION( 0x480000, "ym", 0 )
4062   ROM_REGION( 0x480000, "ymsnd", 0 )
40634063   ROM_LOAD( "233-v1.bin", 0x000000, 0x400000, CRC(58839298) SHA1(18cae7bba997c52780761cbf119c4e4b34397a61) )
40644064   ROM_LOAD( "233-v2.bin", 0x400000, 0x080000, CRC(d5e30df4) SHA1(bbbc0ff5b975471bd682f85976ac4a93f6d44f2e) )
40654065
r6428r6429
40814081
40824082   NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
40834083
4084   ROM_REGION( 0x1000000, "ym", 0 )
4084   ROM_REGION( 0x1000000, "ymsnd", 0 )
40854085   ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
40864086   ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
40874087   ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
r6428r6429
41074107
41084108   NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
41094109
4110   ROM_REGION( 0x1000000, "ym", 0 )
4110   ROM_REGION( 0x1000000, "ymsnd", 0 )
41114111   ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
41124112   ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
41134113   ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
r6428r6429
41334133
41344134   NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
41354135
4136   ROM_REGION( 0x1000000, "ym", 0 )
4136   ROM_REGION( 0x1000000, "ymsnd", 0 )
41374137   ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
41384138   ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
41394139   ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
r6428r6429
41584158
41594159   NEO_BIOS_AUDIO_128K( "202-m1.bin", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
41604160
4161   ROM_REGION( 0x080000, "ym", 0 )
4161   ROM_REGION( 0x080000, "ymsnd", 0 )
41624162   ROM_LOAD( "202-v1.bin", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
41634163
41644164   NO_DELTAT_REGION
r6428r6429
41854185   ROM_LOAD( "236-m1.bin", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) ) /* so overwrite it with the real thing */
41864186   ROM_RELOAD( 0x10000, 0x20000 )
41874187
4188   ROM_REGION( 0x200000, "ym", 0 )
4188   ROM_REGION( 0x200000, "ymsnd", 0 )
41894189   ROM_LOAD( "236-v1.bin", 0x000000, 0x200000, CRC(5f89c3b4) SHA1(dc8fd561cf8dfdd41696dcf14ea8d2d0ac4eec4b) )
41904190
41914191   ROM_REGION( 0x100000, "ym.deltat", 0 )
r6428r6429
42044204
42054205   NEO_BIOS_AUDIO_128K( "237-m1.bin", CRC(d4c946dd) SHA1(6ca09040b5db8d89511d627954c783154d58ab01) )
42064206
4207   ROM_REGION( 0x200000, "ym", 0 )
4207   ROM_REGION( 0x200000, "ymsnd", 0 )
42084208   ROM_LOAD( "237-v1.bin", 0x000000, 0x200000, CRC(edcb1beb) SHA1(62f086b9968b366b59276ee4ae3c32c4d76fc6ce) )
42094209
42104210   NO_DELTAT_REGION
r6428r6429
42234223
42244224   NEO_BIOS_AUDIO_128K( "238-m1.bin", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) )
42254225
4226   ROM_REGION( 0x600000, "ym", 0 )
4226   ROM_REGION( 0x600000, "ymsnd", 0 )
42274227   ROM_LOAD( "238-v1.bin", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) )
42284228   ROM_LOAD( "238-v2.bin", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) )
42294229
r6428r6429
42494249
42504250   NEO_BIOS_AUDIO_128K( "238-m1.bin", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) )
42514251
4252   ROM_REGION( 0x600000, "ym", 0 )
4252   ROM_REGION( 0x600000, "ymsnd", 0 )
42534253   ROM_LOAD( "238-v1.bin", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) )
42544254   ROM_LOAD( "238-v2.bin", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) )
42554255
r6428r6429
42754275
42764276   NEO_BIOS_AUDIO_128K( "239-m1.bin", CRC(d31a3aea) SHA1(e23abfeb23052f0358edcf2c83401025fe632511) )
42774277
4278   ROM_REGION( 0x800000, "ym", 0 )
4278   ROM_REGION( 0x800000, "ymsnd", 0 )
42794279   ROM_LOAD( "239-v1.bin", 0x000000, 0x400000, CRC(1b8d5bf7) SHA1(67fc1f7e36e92a89cd1d415eb31a2892f57b0d04) )
42804280   ROM_LOAD( "239-v2.bin", 0x400000, 0x400000, CRC(74cf0a70) SHA1(b00451a2a30de2517ae3eca35eb1fe985b950eb8) )
42814281
r6428r6429
43024302   /* TC532000DP */
43034303   NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
43044304
4305   ROM_REGION( 0x0e00000, "ym", 0 )
4305   ROM_REGION( 0x0e00000, "ymsnd", 0 )
43064306   ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
43074307   ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
43084308   //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad?
r6428r6429
43304330   /* TC532000DP */
43314331   NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
43324332
4333   ROM_REGION( 0x0e00000, "ym", 0 )
4333   ROM_REGION( 0x0e00000, "ymsnd", 0 )
43344334   ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
43354335   ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
43364336   //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad?
r6428r6429
43584358   /* TC532000DP */
43594359   NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
43604360
4361   ROM_REGION( 0x0e00000, "ym", 0 )
4361   ROM_REGION( 0x0e00000, "ymsnd", 0 )
43624362   ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
43634363   ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
43644364   //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad?
r6428r6429
43854385
43864386   NEO_BIOS_AUDIO_128K( "241-m1.bin", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
43874387
4388   ROM_REGION( 0x800000, "ym", 0 )
4388   ROM_REGION( 0x800000, "ymsnd", 0 )
43894389   ROM_LOAD( "241-v1.bin", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
43904390   ROM_LOAD( "241-v2.bin", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
43914391
r6428r6429
44084408   /* TC532000DP */
44094409   NEO_BIOS_AUDIO_256K( "242-m1.bin", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
44104410
4411   ROM_REGION( 0x1000000, "ym", 0 )
4411   ROM_REGION( 0x1000000, "ymsnd", 0 )
44124412   ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
44134413   ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
44144414   ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
r6428r6429
44374437   /* Correct chip label */
44384438   NEO_BIOS_AUDIO_256K( "242-m1k.bin", CRC(ce12da0c) SHA1(e7c01dae2852d543d1a58d55735239f6a5aa05a5) )
44394439
4440   ROM_REGION( 0x1000000, "ym", 0 )
4440   ROM_REGION( 0x1000000, "ymsnd", 0 )
44414441   ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
44424442   ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
44434443   ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
r6428r6429
44664466   /* TC532000DP */
44674467   NEO_BIOS_AUDIO_256K( "242-mg1.bin", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
44684468
4469   ROM_REGION( 0x1000000, "ym", 0 )
4469   ROM_REGION( 0x1000000, "ymsnd", 0 )
44704470   ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
44714471   ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
44724472   ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
r6428r6429
44944494
44954495   NEO_BIOS_AUDIO_128K( "243-m1.bin", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
44964496
4497   ROM_REGION( 0x1000000, "ym", 0 )
4497   ROM_REGION( 0x1000000, "ymsnd", 0 )
44984498   ROM_LOAD( "243-v1.bin", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
44994499   ROM_LOAD( "243-v2.bin", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
45004500   ROM_LOAD( "243-v3.bin", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
r6428r6429
45204520
45214521   NEO_BIOS_AUDIO_128K( "244-m1.bin", CRC(a701b276) SHA1(055550ebc650835bcf8ea4457b2c91bd73e21281) )
45224522
4523   ROM_REGION( 0x600000, "ym", 0 )
4523   ROM_REGION( 0x600000, "ymsnd", 0 )
45244524   ROM_LOAD( "244-v1.bin", 0x000000, 0x400000, CRC(79def46d) SHA1(63414235de2e177654508f1c840040424f8993e6) )
45254525   ROM_LOAD( "244-v2.bin", 0x400000, 0x200000, CRC(b231902f) SHA1(9209772e947a2c7ac31b49dd613bf2eab0cb3358) )
45264526
r6428r6429
45404540
45414541   NEO_BIOS_AUDIO_128K( "245-m1.bin", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) )
45424542
4543   ROM_REGION( 0x800000, "ym", 0 )
4543   ROM_REGION( 0x800000, "ymsnd", 0 )
45444544   ROM_LOAD( "245-v1.bin", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) )
45454545   ROM_LOAD( "245-v2.bin", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) )
45464546
r6428r6429
45654565
45664566   NEO_BIOS_AUDIO_128K( "246-m1.bin", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
45674567
4568   ROM_REGION( 0x1000000, "ym", 0 )
4568   ROM_REGION( 0x1000000, "ymsnd", 0 )
45694569   ROM_LOAD( "246-v1.bin", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) )
45704570   ROM_LOAD( "246-v2.bin", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) )
45714571   ROM_LOAD( "246-v3.bin", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) )
r6428r6429
45894589
45904590   NEO_BIOS_AUDIO_128K( "247-m1.bin", CRC(a9fe0144) SHA1(4cc076ecce9216a373f3dcd7ba28a03d6050e522) )
45914591
4592   ROM_REGION( 0x200000, "ym", 0 )
4592   ROM_REGION( 0x200000, "ymsnd", 0 )
45934593   ROM_LOAD( "247-v1.bin", 0x000000, 0x200000, CRC(42ec743d) SHA1(f45b5167ebcbd59300f4e5b05448cd421654102a) )
45944594
45954595   NO_DELTAT_REGION
r6428r6429
46074607
46084608   NEO_BIOS_AUDIO_128K( "248-m1.bin", CRC(883097a9) SHA1(677bf9684c0c7977a9a3f0c1288e430040a53b49) )
46094609
4610   ROM_REGION( 0x800000, "ym", 0 )
4610   ROM_REGION( 0x800000, "ymsnd", 0 )
46114611   ROM_LOAD( "248-v1.bin", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) )
46124612   ROM_LOAD( "248-v2.bin", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) )
46134613
r6428r6429
46294629
46304630   NEO_BIOS_AUDIO_128K( "249-m1.bin", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) )
46314631
4632   ROM_REGION( 0x500000, "ym", 0 )
4632   ROM_REGION( 0x500000, "ymsnd", 0 )
46334633   ROM_LOAD( "249-v1.bin", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) )
46344634   ROM_LOAD( "249-v2.bin", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) )
46354635
r6428r6429
46494649
46504650   NEO_BIOS_AUDIO_128K( "250-m1.bin", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
46514651
4652   ROM_REGION( 0xa00000, "ym", 0 )
4652   ROM_REGION( 0xa00000, "ymsnd", 0 )
46534653   ROM_LOAD( "250-v1.bin", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
46544654   ROM_LOAD( "250-v2.bin", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
46554655   ROM_LOAD( "250-v3.bin", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
r6428r6429
46814681
46824682   NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
46834683
4684   ROM_REGION( 0x0e00000, "ym", 0 )
4684   ROM_REGION( 0x0e00000, "ymsnd", 0 )
46854685   ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
46864686   ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
46874687   ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
r6428r6429
47174717
47184718   NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
47194719
4720   ROM_REGION( 0x0e00000, "ym", 0 )
4720   ROM_REGION( 0x0e00000, "ymsnd", 0 )
47214721   ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
47224722   ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
47234723   ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
r6428r6429
47554755
47564756   NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
47574757
4758   ROM_REGION( 0x0e00000, "ym", 0 )
4758   ROM_REGION( 0x0e00000, "ymsnd", 0 )
47594759   ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
47604760   ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
47614761   ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
r6428r6429
47914791
47924792   NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
47934793
4794   ROM_REGION( 0x0e00000, "ym", 0 )
4794   ROM_REGION( 0x0e00000, "ymsnd", 0 )
47954795   ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
47964796   ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
47974797   ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
r6428r6429
48224822   /* Did the Prototype really use the same sound program / voice roms, sound isn't great .. */
48234823   NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
48244824
4825   ROM_REGION( 0x0e00000, "ym", 0 )
4825   ROM_REGION( 0x0e00000, "ymsnd", 0 )
48264826   ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
48274827   ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
48284828   ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
r6428r6429
48574857
48584858   NEO_BIOS_AUDIO_128K( "252-m1.bin", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) )
48594859
4860   ROM_REGION( 0x0400000, "ym", 0 )
4860   ROM_REGION( 0x0400000, "ymsnd", 0 )
48614861   ROM_LOAD( "252-v1.bin", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) )
48624862
48634863   NO_DELTAT_REGION
r6428r6429
48864886
48874887   NEO_BIOS_AUDIO_256K( "253-m1.bin", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
48884888
4889   ROM_REGION( 0x1000000, "ym", 0 )
4889   ROM_REGION( 0x1000000, "ymsnd", 0 )
48904890   ROM_LOAD( "253-v1.bin", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
48914891   ROM_LOAD( "253-v2.bin", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
48924892   ROM_LOAD( "253-v3.bin", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
r6428r6429
49224922
49234923   NEO_BIOS_AUDIO_256K( "253-m1.bin", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
49244924
4925   ROM_REGION( 0x1000000, "ym", 0 )
4925   ROM_REGION( 0x1000000, "ymsnd", 0 )
49264926   ROM_LOAD( "253-v1.bin", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
49274927   ROM_LOAD( "253-v2.bin", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
49284928   ROM_LOAD( "253-v3.bin", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
r6428r6429
49514951
49524952   NEO_BIOS_AUDIO_256K( "253-m1p.bin", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
49534953
4954   ROM_REGION( 0x1000000, "ym", 0 )
4954   ROM_REGION( 0x1000000, "ymsnd", 0 )
49554955   ROM_LOAD( "253-v1p.bin", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
49564956   ROM_LOAD( "253-v2p.bin", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
49574957   ROM_LOAD( "253-v3p.bin", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
r6428r6429
49854985
49864986   NEO_BIOS_AUDIO_128K( "254-m1.bin", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
49874987
4988   ROM_REGION( 0x1000000, "ym", 0 )
4988   ROM_REGION( 0x1000000, "ymsnd", 0 )
49894989   ROM_LOAD( "254-v1.bin", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
49904990   ROM_LOAD( "254-v2.bin", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
49914991   ROM_LOAD( "254-v3.bin", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
r6428r6429
50195019
50205020   NEO_BIOS_AUDIO_128K( "255-m1.bin", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) )
50215021
5022   ROM_REGION( 0x0600000, "ym", 0 )
5022   ROM_REGION( 0x0600000, "ymsnd", 0 )
50235023   ROM_LOAD( "255-v1.bin", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) )
50245024   ROM_LOAD( "255-v2.bin", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) )
50255025
r6428r6429
50515051
50525052   NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
50535053
5054   ROM_REGION( 0x1000000, "ym", 0 )
5054   ROM_REGION( 0x1000000, "ymsnd", 0 )
50555055   ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
50565056   ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
50575057   ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
r6428r6429
50865086
50875087   NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
50885088
5089   ROM_REGION( 0x1000000, "ym", 0 )
5089   ROM_REGION( 0x1000000, "ymsnd", 0 )
50905090   ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
50915091   ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
50925092   ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
r6428r6429
51235123   /* Encrypted */
51245124   NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.bin", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
51255125
5126   ROM_REGION( 0x1000000, "ym", 0 )
5126   ROM_REGION( 0x1000000, "ymsnd", 0 )
51275127   ROM_LOAD( "257-v1.bin", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
51285128   ROM_LOAD( "257-v2.bin", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
51295129   ROM_LOAD( "257-v3.bin", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
r6428r6429
51585158   /* Encrypted */
51595159   NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.bin", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
51605160
5161   ROM_REGION( 0x1000000, "ym", 0 )
5161   ROM_REGION( 0x1000000, "ymsnd", 0 )
51625162   ROM_LOAD( "257-v1.bin", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
51635163   ROM_LOAD( "257-v2.bin", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
51645164   ROM_LOAD( "257-v3.bin", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
r6428r6429
51925192
51935193   NEO_BIOS_AUDIO_128K( "259-m1.bin", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) )
51945194
5195   ROM_REGION( 0x500000, "ym", 0 )
5195   ROM_REGION( 0x500000, "ymsnd", 0 )
51965196   ROM_LOAD( "259-v1.bin", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) )
51975197   ROM_LOAD( "259-v2.bin", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) )
51985198
r6428r6429
52165216
52175217   NEO_BIOS_AUDIO_128K( "259-m1.bin", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) )
52185218
5219   ROM_REGION( 0x500000, "ym", 0 )
5219   ROM_REGION( 0x500000, "ymsnd", 0 )
52205220   ROM_LOAD( "259-v1p.bin", 0x000000, 0x200000, CRC(e97b9385) SHA1(d213cae6cf5732b8ab1f8a8cf04afee5dfd9a260) )
52215221   ROM_LOAD( "259-v2p.bin", 0x200000, 0x200000, CRC(b0cbd70a) SHA1(fc7c8183f8ff9800e8aae7c8d44d962300058cfb) )
52225222   ROM_LOAD( "259-v3p.bin", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) )
r6428r6429
52455245
52465246   NEO_BIOS_AUDIO_512K( "260-m1.bin", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
52475247
5248   ROM_REGION( 0x0400000, "ym", 0 )
5248   ROM_REGION( 0x0400000, "ymsnd", 0 )
52495249   ROM_LOAD( "260-v1.bin", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
52505250
52515251   NO_DELTAT_REGION
r6428r6429
52725272
52735273   NEO_BIOS_AUDIO_128K( "261-m1.bin", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
52745274
5275   ROM_REGION( 0x0e00000, "ym", 0 )
5275   ROM_REGION( 0x0e00000, "ymsnd", 0 )
52765276   ROM_LOAD( "261-v1.bin", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
52775277   ROM_LOAD( "261-v2.bin", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
52785278   ROM_LOAD( "261-v3.bin", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
r6428r6429
53045304   /* Encrypted */
53055305   NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.bin", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* yes it really does have a strange name */
53065306
5307   ROM_REGION( 0x1000000, "ym", 0 )
5307   ROM_REGION( 0x1000000, "ymsnd", 0 )
53085308   ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
53095309   ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
53105310   ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
r6428r6429
53405340   /* Encrypted */
53415341   NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.bin", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* yes it really does have a strange name */
53425342
5343   ROM_REGION( 0x1000000, "ym", 0 )
5343   ROM_REGION( 0x1000000, "ymsnd", 0 )
53445344   ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
53455345   ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
53465346   ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
r6428r6429
53815381   /* Encrypted */
53825382   NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
53835383
5384   ROM_REGION( 0x1000000, "ym", 0 )
5384   ROM_REGION( 0x1000000, "ymsnd", 0 )
53855385   /* Encrypted */
53865386   ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
53875387   ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
r6428r6429
54145414   /* Encrypted */
54155415   NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
54165416
5417   ROM_REGION( 0x1000000, "ym", 0 )
5417   ROM_REGION( 0x1000000, "ymsnd", 0 )
54185418   /* Encrypted */
54195419   ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
54205420   ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
r6428r6429
54475447   /* Encrypted */
54485448   NEO_BIOS_AUDIO_ENCRYPTED_128K( "264-m1.bin", CRC(4dbd7b43) SHA1(6b63756b0d2d30bbf13fbd219833c81fd060ef96) )
54495449
5450   ROM_REGION( 0x1000000, "ym", 0 )
5450   ROM_REGION( 0x1000000, "ymsnd", 0 )
54515451   /* Encrypted */
54525452   ROM_LOAD( "264-v1.bin", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
54535453   ROM_LOAD( "264-v2.bin", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
r6428r6429
54825482   /* Encrypted */
54835483   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
54845484
5485   ROM_REGION( 0x1000000, "ym", 0 )
5485   ROM_REGION( 0x1000000, "ymsnd", 0 )
54865486   /* Encrypted */
54875487   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
54885488   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
55175517   /* Encrypted */
55185518   NEO_BIOS_AUDIO_ENCRYPTED_128K( "266-m1.bin", CRC(456c3e6c) SHA1(5a07d0186198a18d2dda1331093cf29b0b9b2984) )
55195519
5520   ROM_REGION( 0x1000000, "ym", 0 )
5520   ROM_REGION( 0x1000000, "ymsnd", 0 )
55215521   /* Encrypted */
55225522   ROM_LOAD( "266-v1.bin", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
55235523   ROM_LOAD( "266-v2.bin", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
r6428r6429
55515551   /* Encrypted */
55525552   NEO_BIOS_AUDIO_ENCRYPTED_512K( "267-m1.bin", CRC(c7853ccd) SHA1(1b7a4c5093cf0fe3861ce44fd1d3b30c71ad0abe) )
55535553
5554   ROM_REGION( 0x400000, "ym", 0 )
5554   ROM_REGION( 0x400000, "ymsnd", 0 )
55555555   /* Encrypted */
55565556   ROM_LOAD( "267-v1.bin", 0x000000, 0x400000, CRC(e2e8e917) SHA1(7f412d55aebff3d38a225a88c632916295ab0584) )
55575557
r6428r6429
55795579   /* Encrypted */
55805580   NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
55815581
5582   ROM_REGION( 0x1000000, "ym", 0 )
5582   ROM_REGION( 0x1000000, "ymsnd", 0 )
55835583   /* Encrypted */
55845584   ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
55855585   ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
r6428r6429
56145614   /* Encrypted */
56155615   NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1h.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) ) /* Same as MVS above, but different label */
56165616
5617   ROM_REGION( 0x1000000, "ym", 0 )
5617   ROM_REGION( 0x1000000, "ymsnd", 0 )
56185618   /* Encrypted */
56195619   ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
56205620   ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
r6428r6429
56495649   /* Encrypted */
56505650   NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.bin", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
56515651
5652   ROM_REGION( 0x1000000, "ym", 0 )
5652   ROM_REGION( 0x1000000, "ymsnd", 0 )
56535653   /* Encrypted */
56545654   ROM_LOAD( "269-v1.bin", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
56555655   ROM_LOAD( "269-v2.bin", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
r6428r6429
56825682   /* Encrypted */
56835683   NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.bin", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
56845684
5685   ROM_REGION( 0x1000000, "ym", 0 )
5685   ROM_REGION( 0x1000000, "ymsnd", 0 )
56865686   /* Encrypted */
56875687   ROM_LOAD( "270-v1.bin", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
56885688   ROM_LOAD( "270-v2.bin", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
r6428r6429
57175717   /* Encrypted */
57185718   NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.bin", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
57195719
5720   ROM_REGION( 0x1000000, "ym", 0 )
5720   ROM_REGION( 0x1000000, "ymsnd", 0 )
57215721   /* Encrypted */
57225722   ROM_LOAD( "270-v1.bin", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
57235723   ROM_LOAD( "270-v2.bin", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
r6428r6429
57535753   /* Encrypted */
57545754   NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.bin", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) )
57555755
5756   ROM_REGION( 0x1000000, "ym", 0 )
5756   ROM_REGION( 0x1000000, "ymsnd", 0 )
57575757   /* Encrypted */
57585758   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
57595759   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
57895789   /* Encrypted */
57905790   NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1k.bin", CRC(48d9affe) SHA1(68f01560b91bbada39001ce01bdeeed5c9bb29f2) )
57915791
5792   ROM_REGION( 0x1000000, "ym", 0 )
5792   ROM_REGION( 0x1000000, "ymsnd", 0 )
57935793   /* Encrypted */
57945794   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
57955795   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
58235823
58245824   NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
58255825
5826   ROM_REGION( 0x1000000, "ym", 0 )
5826   ROM_REGION( 0x1000000, "ymsnd", 0 )
58275827   /* Encrypted */
58285828   ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
58295829   ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
r6428r6429
58585858   /* Encrypted */
58595859   NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
58605860
5861   ROM_REGION( 0x1000000, "ym", 0 )
5861   ROM_REGION( 0x1000000, "ymsnd", 0 )
58625862   /* Encrypted */
58635863   ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
58645864   ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
r6428r6429
58935893   /* Encrypted */
58945894   NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
58955895
5896   ROM_REGION( 0x1000000, "ym", 0 )
5896   ROM_REGION( 0x1000000, "ymsnd", 0 )
58975897   /* Encrypted */
58985898   ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
58995899   ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
r6428r6429
59285928   /* Encrypted */
59295929   NEO_BIOS_AUDIO_ENCRYPTED_512K( "jgp-m1.bin", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
59305930
5931   ROM_REGION( 0x0200000, "ym", 0 )
5931   ROM_REGION( 0x0200000, "ymsnd", 0 )
59325932   ROM_LOAD( "jgp-v1.bin", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
59335933
59345934   NO_DELTAT_REGION
r6428r6429
59475947
59485948   NEO_BIOS_AUDIO_64K( "vl-m1.bin", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) )
59495949
5950   ROM_REGION( 0x200000, "ym", ROMREGION_ERASE00 )
5950   ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
59515951
59525952   NO_DELTAT_REGION
59535953
r6428r6429
59645964
59655965   NEO_BIOS_AUDIO_64K( "vl-m1.bin", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) )
59665966
5967   ROM_REGION( 0x200000, "ym", ROMREGION_ERASE00 )
5967   ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
59685968
59695969   NO_DELTAT_REGION
59705970
r6428r6429
60186018
60196019   ROM_Y_ZOOM
60206020
6021   ROM_REGION( 0x1000000, "ym", 0 )
6021   ROM_REGION( 0x1000000, "ymsnd", 0 )
60226022   /* Encrypted */
60236023   ROM_LOAD( "268-v1.bin", 0x000000, 0x1000000, CRC(8458afe5) SHA1(62b4c6e7db763e9ff2697bbcdb43dc5a56b48c68) )
60246024
r6428r6429
60526052
60536053   ROM_Y_ZOOM
60546054
6055   ROM_REGION( 0x1000000, "ym", 0 )
6055   ROM_REGION( 0x1000000, "ymsnd", 0 )
60566056   /* Encrypted */
60576057   ROM_LOAD( "269-v1.bin", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
60586058   ROM_LOAD( "269-v2.bin", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
r6428r6429
60856085
60866086   ROM_Y_ZOOM
60876087
6088   ROM_REGION( 0x1000000, "ym", 0 )
6088   ROM_REGION( 0x1000000, "ymsnd", 0 )
60896089   /* Encrypted */
60906090   ROM_LOAD( "269-v1a.bin", 0x000000, 0x1000000, CRC(a6af4753) SHA1(ec4f61a526b707a7faec4653b773beb3bf3a17ba) )
60916091
r6428r6429
61186118
61196119   ROM_Y_ZOOM
61206120
6121   ROM_REGION( 0x1000000, "ym", 0 )
6121   ROM_REGION( 0x1000000, "ymsnd", 0 )
61226122   /* Encrypted */
61236123   ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
61246124
r6428r6429
61616161
61626162   NEO_BIOS_AUDIO_128K( "zin-m1.bin", CRC(fd9627ca) SHA1(b640c1f1ff466f734bb1cb5d7b589cb7e8a55346) )
61636163
6164   ROM_REGION( 0x200000, "ym", 0 )
6164   ROM_REGION( 0x200000, "ymsnd", 0 )
61656165   ROM_LOAD( "zin-v1.bin", 0x000000, 0x200000, CRC(c09f74f1) SHA1(d0b56a780a6eba85ff092240b1f1cc6718f17c21) )
61666166
61676167   NO_DELTAT_REGION
r6428r6429
61826182
61836183   NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
61846184
6185   ROM_REGION( 0xc00000, "ym", 0 )
6185   ROM_REGION( 0xc00000, "ymsnd", 0 )
61866186   ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
61876187   ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
61886188   ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
r6428r6429
62076207
62086208   NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
62096209
6210   ROM_REGION( 0xc00000, "ym", 0 )
6210   ROM_REGION( 0xc00000, "ymsnd", 0 )
62116211   ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
62126212   ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
62136213   ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
r6428r6429
62336233
62346234   NEO_BIOS_AUDIO_128K( "246-m1.bin", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
62356235
6236   ROM_REGION( 0xA00000, "ym", 0 )
6236   ROM_REGION( 0xA00000, "ymsnd", 0 )
62376237   ROM_LOAD( "lnsq-v1.bin", 0x000000, 0x400000, CRC(4408ebc3) SHA1(e3f4d8a7e243a8cf48e97d91bbfec7829c0d9404) )
62386238   ROM_LOAD( "lnsq-v2.bin", 0x400000, 0x400000, CRC(3d953975) SHA1(6a4ab02ab3d4416a65343cf16815007cb273f19b) )
62396239   ROM_LOAD( "lnsq-v3.bin", 0x800000, 0x200000, CRC(437d1d8e) SHA1(95e015c21707b53ed7223eaa19f6cdcfb4d94f0c) )
r6428r6429
62606260
62616261   NEO_BIOS_AUDIO_512K( "garou-m1.bin", CRC(7c51d002) SHA1(01ffba6cbc8da07804f7b21d8c71c39d64a1a4e2) )
62626262
6263   ROM_REGION( 0x1000000, "ym", 0 )
6263   ROM_REGION( 0x1000000, "ymsnd", 0 )
62646264   ROM_LOAD( "garou-v1.bin", 0x000000, 0x400000, CRC(98d736e4) SHA1(3edda9a1d45b0e38a85156d24fc8ff2f0011239b) )
62656265   ROM_LOAD( "garou-v2.bin", 0x400000, 0x400000, CRC(eb43c03f) SHA1(83c9c168b154e60a64f1033004b2d33e218bbb8b) )
62666266   ROM_LOAD( "garou-v3.bin", 0x800000, 0x400000, CRC(10a0f814) SHA1(e86def80d6fb2a38ebc9f3338d22f28c15ce85da) )
r6428r6429
62866286
62876287   NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
62886288
6289   ROM_REGION( 0x1000000, "ym", 0 )
6289   ROM_REGION( 0x1000000, "ymsnd", 0 )
62906290   ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
62916291   ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
62926292   ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
r6428r6429
63176317   /* Bootleg m1 is 128k, data is identical */
63186318   NEO_BIOS_AUDIO_512K( "260-m1.bin", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
63196319
6320   ROM_REGION( 0x400000, "ym", 0 )
6320   ROM_REGION( 0x400000, "ymsnd", 0 )
63216321   ROM_LOAD( "nitd-v1.bin", 0x000000, 0x200000, CRC(79008868) SHA1(90bd6aaefd37341297ab1f4ae7246e52facd87d0) )
63226322   ROM_LOAD( "nitd-v2.bin", 0x200000, 0x200000, CRC(728558F9) SHA1(309aa7c933c199b2e540a601b363e7af8744fe00) )
63236323
r6428r6429
63426342   NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
63436343
63446344   /* sound roms are identical to kof2001 */
6345   ROM_REGION( 0x1000000, "ym", 0 )
6345   ROM_REGION( 0x1000000, "ymsnd", 0 )
63466346   ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
63476347   ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
63486348   ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
r6428r6429
63776377   NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
63786378
63796379   /* sound roms are identical to kof2001 */
6380   ROM_REGION( 0x1000000, "ym", 0 )
6380   ROM_REGION( 0x1000000, "ymsnd", 0 )
63816381   ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
63826382   ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
63836383   ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
r6428r6429
64136413   NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
64146414
64156415   /* Original set has 2x64 mbit sound roms */
6416   ROM_REGION( 0x1000000, "ym", 0 )
6416   ROM_REGION( 0x1000000, "ymsnd", 0 )
64176417   ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
64186418   ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
64196419   ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
r6428r6429
64456445   /* Encrypted */
64466446   NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
64476447
6448   ROM_REGION( 0x1000000, "ym", 0 )
6448   ROM_REGION( 0x1000000, "ymsnd", 0 )
64496449   /* Encrypted */
64506450   ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
64516451   ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
r6428r6429
64746474   /* Encrypted */
64756475   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
64766476
6477   ROM_REGION( 0x1000000, "ym", 0 )
6477   ROM_REGION( 0x1000000, "ymsnd", 0 )
64786478   /* Encrypted */
64796479   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
64806480   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
65026502   /* Encrypted */
65036503   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
65046504
6505   ROM_REGION( 0x1000000, "ym", 0 )
6505   ROM_REGION( 0x1000000, "ymsnd", 0 )
65066506   /* Encrypted */
65076507   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
65086508   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
65316531   /* Encrypted */
65326532   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
65336533
6534   ROM_REGION( 0x1000000, "ym", 0 )
6534   ROM_REGION( 0x1000000, "ymsnd", 0 )
65356535   /* Encrypted */
65366536   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
65376537   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
65606560   /* Encrypted */
65616561   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
65626562
6563   ROM_REGION( 0x1000000, "ym", 0 )
6563   ROM_REGION( 0x1000000, "ymsnd", 0 )
65646564   /* Encrypted */
65656565   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
65666566   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
65876587   /* Encrypted */
65886588   NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
65896589
6590   ROM_REGION( 0x1000000, "ym", 0 )
6590   ROM_REGION( 0x1000000, "ymsnd", 0 )
65916591   /* Encrypted */
65926592   ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
65936593   ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
r6428r6429
66176617
66186618   NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
66196619
6620   ROM_REGION( 0x1000000, "ym", 0 )
6620   ROM_REGION( 0x1000000, "ymsnd", 0 )
66216621   ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
66226622   ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
66236623
r6428r6429
66556655   NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
66566656   //NEO_BIOS_AUDIO_128K( "5004-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
66576657
6658   ROM_REGION( 0x1000000, "ym", 0 )
6658   ROM_REGION( 0x1000000, "ymsnd", 0 )
66596659   ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
66606660   ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
66616661
r6428r6429
66896689
66906690   NEO_BIOS_AUDIO_128K( "5006-m1.bin", CRC(9050bfe7) SHA1(765bf3d954f775231b7ef2504bb844cd0b29e3f7) )
66916691
6692   ROM_REGION( 0x1000000, "ym", 0 )
6692   ROM_REGION( 0x1000000, "ymsnd", 0 )
66936693   ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
66946694   ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
66956695
r6428r6429
67226722
67236723   NEO_BIOS_AUDIO_128K( "k2k4s-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
67246724
6725   ROM_REGION( 0x1000000, "ym", 0 )
6725   ROM_REGION( 0x1000000, "ymsnd", 0 )
67266726   ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) )
67276727   ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) )
67286728
r6428r6429
67556755
67566756   NEO_BIOS_AUDIO_128K( "mart-m1.bin", CRC(3ea96ab1) SHA1(e5053c4312f658faed2a34e38325a22ef792d384) )
67576757
6758   ROM_REGION( 0x1000000, "ym", 0 )
6758   ROM_REGION( 0x1000000, "ymsnd", 0 )
67596759   ROM_LOAD( "mart-v1.bin", 0x000000, 0x400000, CRC(352b0a07) SHA1(19f7cc12f3f6d0fda9c7449816c4c32367447897) )
67606760   ROM_LOAD16_WORD_SWAP( "mart-v2.bin", 0x400000, 0x400000, CRC(1e9bd59e) SHA1(0f754e780d0ebb815a92a45ad55f85f6d0181b70) )
67616761   ROM_LOAD( "mart-v3.bin", 0x800000, 0x400000, CRC(e8362fcc) SHA1(42d558fd80cabe22a1c09a1fa75741afbcf46b7c) )
r6428r6429
67926792   /* Encrypted */
67936793   NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
67946794
6795   ROM_REGION( 0x1000000, "ym", 0 )
6795   ROM_REGION( 0x1000000, "ymsnd", 0 )
67966796   /* Encrypted */
67976797   ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
67986798   ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
r6428r6429
68216821
68226822   NEO_BIOS_AUDIO_128K( "um1", CRC(f424368a) SHA1 (5e5bbcaeb82bed2ee17df08f005ca20ad1030723) )
68236823
6824   ROM_REGION( 0x380000, "ym", 0 )
6824   ROM_REGION( 0x380000, "ymsnd", 0 )
68256825   /* 0x000000-0x1fffff empty */
68266826   ROM_LOAD( "u8", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
68276827   ROM_LOAD( "u9", 0x300000, 0x080000, CRC(0a548948) SHA1 (e1e4afd17811cb60401c14fbcf0465035165f4fb) )
r6428r6429
68576857
68586858   ROM_Y_ZOOM
68596859
6860   ROM_REGION( 0x1000000, "ym", 0 )
6860   ROM_REGION( 0x1000000, "ymsnd", 0 )
68616861   ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
68626862   ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
68636863   ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
r6428r6429
68946894   ROM_CONTINUE( 0x00000, 0x10000 )
68956895   ROM_COPY( "audiocpu", 0x00000, 0x10000, 0x10000 )
68966896
6897   ROM_REGION( 0x1000000, "ym", 0 )
6897   ROM_REGION( 0x1000000, "ymsnd", 0 )
68986898   ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
68996899   ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
69006900   ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
r6428r6429
69366936
69376937   ROM_Y_ZOOM
69386938
6939   ROM_REGION( 0x1000000, "ym", 0 )
6939   ROM_REGION( 0x1000000, "ymsnd", 0 )
69406940   ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
69416941   ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
69426942   ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
r6428r6429
69726972   ROM_CONTINUE( 0x00000, 0x10000 )
69736973   ROM_COPY( "audiocpu", 0x00000, 0x10000, 0x10000 )
69746974
6975   ROM_REGION( 0x1000000, "ym", 0 )
6975   ROM_REGION( 0x1000000, "ymsnd", 0 )
69766976   ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
69776977   ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
69786978   ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
r6428r6429
70027002
70037003   NEO_BIOS_AUDIO_128K( "ssv-m1.bin", CRC(18114fb1) SHA1(016dc2f328340f3637a9bff373a20973df29f6b8) )
70047004
7005   ROM_REGION( 0x1000000, "ym", 0 )
7005   ROM_REGION( 0x1000000, "ymsnd", 0 )
70067006   ROM_LOAD( "ssv-v1.bin", 0x000000, 0x400000, CRC(a3609761) SHA1(6dce1dbfd228c739b3716ae1cf08fd7f925d8650) )
70077007   ROM_LOAD( "ssv-v2.bin", 0x400000, 0x400000, CRC(cbd6ebd5) SHA1(00211be3fa32035b0947ac65920ea8acae7bfae2) )
70087008   ROM_LOAD( "ssv-v3.bin", 0x800000, 0x400000, CRC(6f1c2703) SHA1(8015df3d788cb7926ebbcda64a96964fe102ba27) )
r6428r6429
70307030
70317031   NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
70327032
7033   ROM_REGION( 0x1000000, "ym", 0 )
7033   ROM_REGION( 0x1000000, "ymsnd", 0 )
70347034   /* Encrypted */
70357035   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
70367036   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
70597059
70607060   NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
70617061
7062   ROM_REGION( 0x1000000, "ym", 0 )
7062   ROM_REGION( 0x1000000, "ymsnd", 0 )
70637063   /* Encrypted */
70647064   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
70657065   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
70887088
70897089   NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
70907090
7091   ROM_REGION( 0x1000000, "ym", 0 )
7091   ROM_REGION( 0x1000000, "ymsnd", 0 )
70927092   /* Encrypted */
70937093   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
70947094   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
71157115
71167116   NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
71177117
7118   ROM_REGION( 0x1000000, "ym", 0 )
7118   ROM_REGION( 0x1000000, "ymsnd", 0 )
71197119   /* Encrypted */
71207120   ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
71217121   ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
r6428r6429
71467146
71477147   NEO_BIOS_AUDIO_64K( "dig-m1.bin", CRC(833cdf1b) SHA1(3a92c79adbe0d37956ea46a4746d6f1cbf7d2c14) )
71487148
7149   ROM_REGION( 0x200000, "ym", 0 )
7149   ROM_REGION( 0x200000, "ymsnd", 0 )
71507150   ROM_LOAD( "dig-v1.bin", 0x000000, 0x080000, CRC(ee15bda4) SHA1(fe2206728e6efd02d6302869a98b196eb19a17df) )
71517151
71527152   NO_DELTAT_REGION
r6428r6429
72067206   ROM_LOAD( "pt004-m1",     0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) )
72077207   ROM_RELOAD(          0x10000, 0x20000 )
72087208
7209   ROM_REGION( 0x200000, "ym", 0 )
7209   ROM_REGION( 0x200000, "ymsnd", 0 )
72107210   ROM_LOAD( "pt004-v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) )
72117211
72127212   NO_DELTAT_REGION
src/mame/drivers/fromance.c
r6428r6429
302302   AM_RANGE(0xe6, 0xe6) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w)
303303   AM_RANGE(0xe7, 0xe7) AM_DEVWRITE("msm", fromance_adpcm_reset_w)
304304   AM_RANGE(0xe8, 0xe8) AM_WRITE(fromance_adpcm_w)
305   AM_RANGE(0xe9, 0xea) AM_DEVWRITE("ay", ay8910_data_address_w)
305   AM_RANGE(0xe9, 0xea) AM_DEVWRITE("aysnd", ay8910_data_address_w)
306306ADDRESS_MAP_END
307307
308308static ADDRESS_MAP_START( idolmj_sub_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
316316   AM_RANGE(0x26, 0x26) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w)
317317   AM_RANGE(0x27, 0x27) AM_DEVWRITE("msm", fromance_adpcm_reset_w)
318318   AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w)
319   AM_RANGE(0x29, 0x2a) AM_DEVWRITE("ay", ay8910_data_address_w)
319   AM_RANGE(0x29, 0x2a) AM_DEVWRITE("aysnd", ay8910_data_address_w)
320320ADDRESS_MAP_END
321321
322322static ADDRESS_MAP_START( fromance_sub_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
330330   AM_RANGE(0x26, 0x26) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w)
331331   AM_RANGE(0x27, 0x27) AM_DEVWRITE("msm", fromance_adpcm_reset_w)
332332   AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w)
333   AM_RANGE(0x2a, 0x2b) AM_DEVWRITE("ym", ym2413_w)
333   AM_RANGE(0x2a, 0x2b) AM_DEVWRITE("ymsnd", ym2413_w)
334334ADDRESS_MAP_END
335335
336336
r6428r6429
10021002   /* sound hardware */
10031003   MDRV_SPEAKER_STANDARD_MONO("mono")
10041004
1005   MDRV_SOUND_ADD("ay", AY8910, 12000000/6)
1005   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6)
10061006   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
10071007
10081008   MDRV_SOUND_ADD("msm", MSM5205, 384000)
r6428r6429
10401040   /* sound hardware */
10411041   MDRV_SPEAKER_STANDARD_MONO("mono")
10421042
1043   MDRV_SOUND_ADD("ay", AY8910, 12000000/6)
1043   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6)
10441044   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
10451045
10461046   MDRV_SOUND_ADD("msm", MSM5205, 384000)
r6428r6429
10781078   /* sound hardware */
10791079   MDRV_SPEAKER_STANDARD_MONO("mono")
10801080
1081   MDRV_SOUND_ADD("ym", YM2413, 3579545)
1081   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
10821082   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
10831083
10841084   MDRV_SOUND_ADD("msm", MSM5205, 384000)
src/mame/drivers/mustache.c
r6428r6429
223223   /* sound hardware */
224224   MDRV_SPEAKER_STANDARD_MONO("mono")
225225
226   MDRV_SOUND_ADD("ym", YM2151, YM_CLOCK)
226   MDRV_SOUND_ADD("ymsnd", YM2151, YM_CLOCK)
227227   MDRV_SOUND_CONFIG(t5182_ym2151_interface)
228228   MDRV_SOUND_ROUTE(0, "mono", 1.0)
229229   MDRV_SOUND_ROUTE(1, "mono", 1.0)
src/mame/drivers/segas16a.c
r6428r6429
10031003static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
10041004   ADDRESS_MAP_UNMAP_HIGH
10051005   ADDRESS_MAP_GLOBAL_MASK(0xff)
1006   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1006   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
10071007   AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w)
10081008   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
10091009ADDRESS_MAP_END
r6428r6429
19501950   /* sound hardware */
19511951   MDRV_SPEAKER_STANDARD_MONO("mono")
19521952
1953   MDRV_SOUND_ADD("ym", YM2151, 4000000)
1953   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
19541954   MDRV_SOUND_CONFIG(ym2151_config)
19551955   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
19561956
r6428r6429
19641964   MDRV_DEVICE_REMOVE("n7751")
19651965   MDRV_DEVICE_REMOVE("dac")
19661966
1967   MDRV_SOUND_REPLACE("ym", YM2151, 4000000)
1967   MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000)
19681968   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
19691969MACHINE_DRIVER_END
19701970
src/mame/drivers/neogeo.c
r6428r6429
11671167static ADDRESS_MAP_START( auido_io_map, ADDRESS_SPACE_IO, 8 )
11681168  /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/  /* may not and NMI clear */
11691169   AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r)
1170   AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
1170   AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
11711171   AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */
11721172   AM_RANGE(0x08, 0x08) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_f000_f7ff_r)
11731173   AM_RANGE(0x09, 0x09) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_e000_efff_r)
r6428r6429
13371337   /* audio hardware */
13381338   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
13391339
1340   MDRV_SOUND_ADD("ym", YM2610, NEOGEO_YM2610_CLOCK)
1340   MDRV_SOUND_ADD("ymsnd", YM2610, NEOGEO_YM2610_CLOCK)
13411341   MDRV_SOUND_CONFIG(ym2610_config)
13421342   MDRV_SOUND_ROUTE(0, "lspeaker",  0.60)
13431343   MDRV_SOUND_ROUTE(0, "rspeaker", 0.60)
src/mame/drivers/segahang.c
r6428r6429
452452   ADDRESS_MAP_UNMAP_HIGH
453453   AM_RANGE(0x0000, 0x7fff) AM_ROM
454454   AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x0800) AM_RAM
455   AM_RANGE(0xd000, 0xd001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
455   AM_RANGE(0xd000, 0xd001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
456456   AM_RANGE(0xe000, 0xe0ff) AM_MIRROR(0x0f00) AM_DEVREADWRITE("pcm", sega_pcm_r, sega_pcm_w)
457457ADDRESS_MAP_END
458458
r6428r6429
473473static ADDRESS_MAP_START( sound_portmap_2151, ADDRESS_SPACE_IO, 8 )
474474   ADDRESS_MAP_UNMAP_HIGH
475475   ADDRESS_MAP_GLOBAL_MASK(0xff)
476   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
476   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
477477   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
478478ADDRESS_MAP_END
479479
r6428r6429
939939   /* sound hardware */
940940   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
941941
942   MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK_8MHz/2)
942   MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK_8MHz/2)
943943   MDRV_SOUND_CONFIG(ym2203_config)
944944   MDRV_SOUND_ROUTE(0, "lspeaker",  0.13)
945945   MDRV_SOUND_ROUTE(0, "rspeaker", 0.13)
r6428r6429
10051005   /* sound hardware */
10061006   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10071007
1008   MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK_8MHz/2)
1008   MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2)
10091009   MDRV_SOUND_CONFIG(ym2151_config)
10101010   MDRV_SOUND_ROUTE(0, "lspeaker", 0.43)
10111011   MDRV_SOUND_ROUTE(1, "rspeaker", 0.43)
src/mame/drivers/statriv2.c
r6428r6429
274274static ADDRESS_MAP_START( statriv2_io_map, ADDRESS_SPACE_IO, 8 )
275275   AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi", ppi8255_r, ppi8255_w)
276276   AM_RANGE(0x28, 0x2b) AM_READ(question_data_r) AM_WRITEONLY AM_BASE(&question_offset)
277   AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("ay", ay8910_address_data_w)
278   AM_RANGE(0xb1, 0xb1) AM_DEVREAD("ay", ay8910_r)
277   AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
278   AM_RANGE(0xb1, 0xb1) AM_DEVREAD("aysnd", ay8910_r)
279279   AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_r, tms9927_w)
280280ADDRESS_MAP_END
281281
282282static ADDRESS_MAP_START( statusbj_io, ADDRESS_SPACE_IO, 8 )
283283   ADDRESS_MAP_GLOBAL_MASK(0xff)
284284   AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi", ppi8255_r, ppi8255_w)
285   AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("ay", ay8910_address_data_w)
286   AM_RANGE(0xb1, 0xb1) AM_DEVREAD("ay", ay8910_r)
285   AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
286   AM_RANGE(0xb1, 0xb1) AM_DEVREAD("aysnd", ay8910_r)
287287   AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_r, tms9927_w)
288288ADDRESS_MAP_END
289289
r6428r6429
591591   /* sound hardware */
592592   MDRV_SPEAKER_STANDARD_MONO("mono")
593593
594   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8)
594   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8)
595595   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
596596MACHINE_DRIVER_END
597597
src/mame/drivers/carrera.c
r6428r6429
7171   AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4")
7272   AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5")
7373   AM_RANGE(0x06, 0x06) AM_WRITENOP // ?
74   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ay", ay8910_address_data_w)
74   AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_address_data_w)
7575ADDRESS_MAP_END
7676
7777static INPUT_PORTS_START( carrera )
r6428r6429
338338   /* sound hardware */
339339   MDRV_SPEAKER_STANDARD_MONO("mono")
340340
341   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/12)
341   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12)
342342   MDRV_SOUND_CONFIG(ay8910_config)
343343   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
344344MACHINE_DRIVER_END
src/mame/drivers/ultraman.c
r6428r6429
141141   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)   /* Sound latch read */
142142//  AM_RANGE(0xd000, 0xd000) AM_WRITENOP      /* ??? */
143143   AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)      /* M6295 */
144   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   /* YM2151 */
144   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   /* YM2151 */
145145ADDRESS_MAP_END
146146
147147static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
272272   /* sound hardware */
273273   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
274274
275   MDRV_SOUND_ADD("ym", YM2151, 24000000/6)
275   MDRV_SOUND_ADD("ymsnd", YM2151, 24000000/6)
276276   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
277277   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
278278
src/mame/drivers/d9final.c
r0r6429
1/*******************************************************************************************
2
3    Dream 9 Final (c) 1992 Excellent Systems
4
5    driver by Angelo Salese & David Haywood
6
7    TODO:
8    - Don't know where the ES8712 & RTC62421b chips routes;
9    - A bunch of missing port outputs;
10    - screen disable? Start-up fading looks horrible;
11    - Game looks IGS-esque, is there any correlation?
12
13============================================================================================
14
15    PCB: ES-9112
16
17    Main Chips: Z80, ES8712, 24Mhz OSC, RTC62421B 9262, YM2413, 4x8DSW
18
19*******************************************************************************************/
20
21
22#include "driver.h"
23#include "cpu/z80/z80.h"
24#include "sound/2413intf.h"
25
26static UINT8 *lo_vram,*hi_vram,*cram;
27static tilemap *sc0_tilemap;
28
29static TILE_GET_INFO( get_sc0_tile_info )
30{
31   int tile = ((hi_vram[tile_index] & 0x3f)<<8) | lo_vram[tile_index];
32   int color = cram[tile_index] & 0x3f;
33
34   SET_TILE_INFO(
35         0,
36         tile,
37         color,
38         0);
39}
40
41static VIDEO_START(d9final)
42{
43   sc0_tilemap = tilemap_create(machine, get_sc0_tile_info,tilemap_scan_rows,8,8,64,32);
44}
45
46static VIDEO_UPDATE(d9final)
47{
48   tilemap_draw(bitmap,cliprect,sc0_tilemap,0,0);
49   return 0;
50}
51
52static WRITE8_HANDLER( sc0_lovram )
53{
54   lo_vram[offset] = data;
55   tilemap_mark_tile_dirty(sc0_tilemap,offset);
56}
57
58static WRITE8_HANDLER( sc0_hivram )
59{
60   hi_vram[offset] = data;
61   tilemap_mark_tile_dirty(sc0_tilemap,offset);
62}
63
64static WRITE8_HANDLER( sc0_cram )
65{
66   cram[offset] = data;
67   tilemap_mark_tile_dirty(sc0_tilemap,offset);
68}
69
70static WRITE8_HANDLER( d9final_bank_w )
71{
72   UINT8 *ROM = memory_region(space->machine, "maincpu");
73   UINT32 bankaddress;
74
75   bankaddress = 0x10000+(0x4000 * (data & 0x7));
76   memory_set_bankptr(space->machine, 1, &ROM[bankaddress]);
77}
78
79/* game checks this after three attract cycles, otherwise coin inputs stop to work. */
80static READ8_HANDLER( prot_latch_r )
81{
82//  printf("PC=%06x\n",cpu_get_pc(space->cpu));
83
84   return 0x04;
85}
86
87
88static ADDRESS_MAP_START( d9final_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x7fff) AM_ROM
90   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
91   AM_RANGE(0xc000, 0xc7ff) AM_RAM
92   AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
93   AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
94   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sc0_lovram) AM_BASE(&lo_vram)
95   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sc0_hivram) AM_BASE(&hi_vram)
96   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sc0_cram) AM_BASE(&cram)
97   AM_RANGE(0xf000, 0xf000) AM_READ(prot_latch_r)
98ADDRESS_MAP_END
99
100static ADDRESS_MAP_START( d9final_io, ADDRESS_SPACE_IO, 8 )
101   ADDRESS_MAP_GLOBAL_MASK(0xff)
102//  AM_RANGE(0x00, 0x00) AM_WRITENOP //bit 0: irq enable? screen enable?
103   AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA")
104   AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWB")
105   AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWC")
106   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd",ym2413_w)
107   AM_RANGE(0x60, 0x60) AM_READ_PORT("DSWD")
108   AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0")
109   AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN1") AM_WRITE(d9final_bank_w)
110   AM_RANGE(0xe0, 0xe0) AM_READ_PORT("IN2")
111ADDRESS_MAP_END
112
113static INPUT_PORTS_START( d9final )
114   PORT_START("IN0")
115   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset")
116   PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNKNOWN )
117   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
118   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
119   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE )
120   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Analyzer")
121
122   PORT_START("IN1")
123   PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNKNOWN )
124   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH )
125   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
126   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
127   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
128   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_LOW )
129   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
130
131   PORT_START("IN2")
132   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) //another reset button
133   PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNKNOWN )
134   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
135   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
136   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
137   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
138
139   PORT_START("DSWA")
140   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
141   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
142   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
143   PORT_DIPNAME( 0x32, 0x32, "Credit Limit" ) PORT_DIPLOCATION("SW1:2,5,6")
144   PORT_DIPSETTING(    0x32, "1000" )
145   PORT_DIPSETTING(    0x12, "5000" )
146   PORT_DIPSETTING(    0x22, "10000" )
147   PORT_DIPSETTING(    0x00, "20000" )
148   PORT_DIPSETTING(    0x02, "50000" )
149// 0x10 20000
150// 0x30 20000
151   PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW1:3" )
152   PORT_DIPNAME( 0x08, 0x08, "Auto Start" ) PORT_DIPLOCATION("SW1:4")
153   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
154   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
155   PORT_DIPNAME( 0x40, 0x40, "Hopper Switch" ) PORT_DIPLOCATION("SW1:7")
156   PORT_DIPSETTING(    0x40, DEF_STR( High ) )
157   PORT_DIPSETTING(    0x00, DEF_STR( Low ) )
158   PORT_DIPNAME( 0x80, 0x80, "Payout" ) PORT_DIPLOCATION("SW1:8")
159   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
160   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
161
162   PORT_START("DSWB") //odd rates / difficulty stuff
163   PORT_DIPNAME( 0x07, 0x07, "Win Percentage" ) PORT_DIPLOCATION("SW2:1,2,3")
164   PORT_DIPSETTING(    0x00, "60%" )
165   PORT_DIPSETTING(    0x04, "65%" )
166   PORT_DIPSETTING(    0x02, "70%" )
167   PORT_DIPSETTING(    0x06, "75%" )
168   PORT_DIPSETTING(    0x01, "80%" )
169   PORT_DIPSETTING(    0x05, "85%" )
170   PORT_DIPSETTING(    0x03, "90%" )
171   PORT_DIPSETTING(    0x07, "95%" )
172   PORT_DIPNAME( 0x18, 0x18, "Bet Max" ) PORT_DIPLOCATION("SW2:4,5")
173   PORT_DIPSETTING(    0x18, "8" )
174   PORT_DIPSETTING(    0x08, "16" )
175   PORT_DIPSETTING(    0x10, "32" )
176   PORT_DIPSETTING(    0x00, "64" )
177   PORT_DIPNAME( 0x60, 0x60, "Double-Up Difficulty" ) PORT_DIPLOCATION("SW2:6,7")
178   PORT_DIPSETTING(    0x60, DEF_STR( Easy ) )
179   PORT_DIPSETTING(    0x20, DEF_STR( Normal ) )
180   PORT_DIPSETTING(    0x40, DEF_STR( Hard ) )
181   PORT_DIPSETTING(    0x00, DEF_STR( Very_Hard ) )
182   PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
183
184   PORT_START("DSWD") //coinage C & D
185   PORT_DIPNAME( 0x0f, 0x0e, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW3:1,2,3,4")
186   PORT_DIPSETTING(    0x00, "10 Coins / 1 Credit" )
187   PORT_DIPSETTING(    0x08, DEF_STR( 5C_1C ) )
188   PORT_DIPSETTING(    0x04, "5 Coins / 2 Credits" )
189   PORT_DIPSETTING(    0x0c, DEF_STR( 4C_1C ) )
190   PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
191   PORT_DIPSETTING(    0x0a, DEF_STR( 2C_1C ) )
192   PORT_DIPSETTING(    0x0e, DEF_STR( 1C_1C ) )
193   PORT_DIPSETTING(    0x06, DEF_STR( 2C_3C ) )
194   PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
195   PORT_DIPSETTING(    0x09, DEF_STR( 1C_3C ) )
196   PORT_DIPSETTING(    0x05, DEF_STR( 1C_5C ) )
197   PORT_DIPSETTING(    0x0d, "1 Coin / 10 Credits" )
198   PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
199   PORT_DIPSETTING(    0x0b, "1 Coin / 25 Credits" )
200   PORT_DIPSETTING(    0x07, "1 Coin / 50 Credits" )
201   PORT_DIPSETTING(    0x0f, "1 Coin / 100 Credits" )
202   PORT_DIPNAME( 0x70, 0x30, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW3:5,6,7")
203   PORT_DIPSETTING(    0x00, "10 Coins / 1 Credit" )
204   PORT_DIPSETTING(    0x40, DEF_STR( 9C_1C ) )
205   PORT_DIPSETTING(    0x20, DEF_STR( 6C_1C ) )
206   PORT_DIPSETTING(    0x60, DEF_STR( 5C_1C ) )
207   PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
208   PORT_DIPSETTING(    0x50, DEF_STR( 2C_1C ) )
209   PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
210   PORT_DIPSETTING(    0x70, "1 Coin / 50 Credits" )
211   PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW3:8" )
212
213   PORT_START("DSWC") //coinage C & Key In Coinage
214   PORT_DIPNAME( 0x07, 0x00, "Coin C" ) PORT_DIPLOCATION("SW4:1,2,3")
215   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
216   PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
217   PORT_DIPSETTING(    0x02, DEF_STR( 1C_4C ) )
218   PORT_DIPSETTING(    0x06, DEF_STR( 1C_5C ) )
219   PORT_DIPSETTING(    0x01, "1 Coin / 10 Credits" )
220   PORT_DIPSETTING(    0x05, "1 Coin / 20 Credits" )
221   PORT_DIPSETTING(    0x03, "1 Coin / 25 Credits" )
222   PORT_DIPSETTING(    0x07, "1 Coin / 50 Credits" )
223   PORT_DIPNAME( 0x38, 0x00, "Key In" ) PORT_DIPLOCATION("SW4:4,5,6")
224   PORT_DIPSETTING(    0x00, "1 Coin / 10 Credits" )
225   PORT_DIPSETTING(    0x20, "1 Coin / 20 Credits" )
226   PORT_DIPSETTING(    0x10, "1 Coin / 40 Credits" )
227   PORT_DIPSETTING(    0x30, "1 Coin / 50 Credits" )
228   PORT_DIPSETTING(    0x08, "1 Coin / 100 Credits" )
229   PORT_DIPSETTING(    0x28, "1 Coin / 200 Credits" )
230   PORT_DIPSETTING(    0x18, "1 Coin / 250 Credits" )
231   PORT_DIPSETTING(    0x38, "1 Coin / 500 Credits" )
232   PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW4:7" )
233   PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW4:8" )
234INPUT_PORTS_END
235
236static const gfx_layout tiles16x8_layout =
237{
238   8,8,
239   RGN_FRAC(1,1),
240   4,
241   { 0, 1, 2, 3 },
242   { 8, 0, 12, 4, 24, 16, 28, 20 },
243   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
244   32*8
245};
246
247static GFXDECODE_START( d9final )
248   GFXDECODE_ENTRY( "gfx1", 0, tiles16x8_layout, 0, 16*4 )
249GFXDECODE_END
250
251static MACHINE_RESET( d9final )
252{
253   UINT8 *ROM = memory_region(machine, "maincpu");
254
255   memory_set_bankptr(machine, 1, &ROM[0x10000]);
256}
257
258static MACHINE_DRIVER_START( d9final )
259   /* basic machine hardware */
260   MDRV_CPU_ADD("maincpu", Z80, 24000000/4)/* ? MHz */
261   MDRV_CPU_PROGRAM_MAP(d9final_map)
262   MDRV_CPU_IO_MAP(d9final_io)
263   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
264
265   MDRV_MACHINE_RESET( d9final )
266
267   /* video hardware */
268   MDRV_SCREEN_ADD("screen", RASTER)
269   MDRV_SCREEN_REFRESH_RATE(60)
270   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
271   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
272   MDRV_SCREEN_SIZE(512, 256)
273   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-16-1)
274
275   MDRV_GFXDECODE(d9final)
276   MDRV_PALETTE_LENGTH(0x400)
277   MDRV_PALETTE_INIT(all_black)
278
279   MDRV_VIDEO_START(d9final)
280   MDRV_VIDEO_UPDATE(d9final)
281
282   MDRV_SPEAKER_STANDARD_MONO("mono")
283
284   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
285   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
286MACHINE_DRIVER_END
287
288
289ROM_START( d9final )
290   ROM_REGION( 0x30000, "maincpu", 0 )
291   ROM_LOAD( "2.4h", 0x00000, 0x8000, CRC(a8d838c8) SHA1(85b2cd1b73569e0e4fc13bfff537cfc2b4d569a1)  )
292   ROM_CONTINUE(        0x10000, 0x08000 )
293   ROM_COPY( "maincpu", 0x10000, 0x18000, 0x08000 ) //or just 0xff
294   ROM_LOAD( "1.2h", 0x20000, 0x10000, CRC(901281ec) SHA1(7b4cae343f1b025d988a507141c0fa8229a0fea1)  )
295
296   ROM_REGION( 0x80000, "gfx1", 0 )
297   ROM_LOAD16_BYTE( "3.13h", 0x00001, 0x40000, CRC(a2de0cce) SHA1(d510671b75417c10ce479663f6f21367121384b4) )
298   ROM_LOAD16_BYTE( "4.15h", 0x00000, 0x40000, CRC(859b7105) SHA1(1b36f84706473afaa50b6546d7373a2ee6602b9a) )
299ROM_END
300
301
302
303GAME( 1992, d9final, 0, d9final, d9final, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", 0 )
src/mame/drivers/blueprnt.c
r6428r6429
11/***************************************************************************
22
3Blue Print memory map (preliminary)
3    Blue Print memory map (preliminary)
44
5driver by Nicola Salmoria
5    driver by Nicola Salmoria
66
77
8CPU #1
90000-4fff ROM
108000-87ff RAM
119000-93ff Video RAM
12b000-b0ff Sprite RAM
13f000-f3ff Color RAM
8    CPU #1
9    0000-4fff ROM
10    8000-87ff RAM
11    9000-93ff Video RAM
12    b000-b0ff Sprite RAM
13    f000-f3ff Color RAM
1414
15read:
16c000      IN0
17c001      IN1
18c003      read dip switches from the second CPU
15    read:
16    c000      IN0
17    c001      IN1
18    c003      read dip switches from the second CPU
1919
20e000      Watchdog reset
20    e000      Watchdog reset
2121
22write:
23c000      bit 0,1 = coin counters
24d000      command for the second CPU
25e000      bit 1 = flip screen
22    write:
23    c000      bit 0,1 = coin counters
24    d000      command for the second CPU
25    e000      bit 1 = flip screen
2626
27CPU #2
280000-0fff ROM
292000-2fff ROM
304000-43ff RAM
27    CPU #2
28    0000-0fff ROM
29    2000-2fff ROM
30    4000-43ff RAM
3131
32read:
336002      8910 #0 read
348002      8910 #1 read
32    read:
33    6002      8910 #0 read
34    8002      8910 #1 read
3535
36write:
376000      8910 #0 control
386001      8910 #0 write
398000      8910 #1 control
408001      8910 #1 write
36    write:
37    6000      8910 #0 control
38    6001      8910 #0 write
39    8000      8910 #1 control
40    8001      8910 #1 write
4141
42***************************************************************************/
4342
44/*
45
4643    TODO:
4744
4845    - the cross hatch pattern test in service mode is too fast, each phase
r6428r6429
5249    DIP locations verified for:
5350    - blueprnt (manual)
5451
55*/
52***************************************************************************/
5653
54
5755#include "driver.h"
5856#include "deprecat.h"
5957#include "cpu/z80/z80.h"
6058#include "sound/ay8910.h"
59#include "blueprnt.h"
6160
62extern UINT8 *blueprnt_scrollram;
61/*************************************
62 *
63 *  Memory handlers
64 *
65 *************************************/
6366
64extern WRITE8_HANDLER( blueprnt_videoram_w );
65extern WRITE8_HANDLER( blueprnt_colorram_w );
66extern WRITE8_HANDLER( blueprnt_flipscreen_w );
67
68extern PALETTE_INIT( blueprnt );
69extern VIDEO_START( blueprnt );
70extern VIDEO_UPDATE( blueprnt );
71
72/* Read/Write Handlers */
73
74static int dipsw;
75
7667static WRITE8_DEVICE_HANDLER( dipsw_w )
7768{
78   dipsw = data;
69   blueprnt_state *state = (blueprnt_state *)device->machine->driver_data;
70   state->dipsw = data;
7971}
8072
8173static READ8_HANDLER( blueprnt_sh_dipsw_r )
8274{
83   return dipsw;
75   blueprnt_state *state = (blueprnt_state *)space->machine->driver_data;
76   return state->dipsw;
8477}
8578
8679static WRITE8_HANDLER( blueprnt_sound_command_w )
r6428r6429
9588   coin_counter_w(1, data & 0x02);
9689}
9790
98/* Memory Maps */
91/*************************************
92 *
93 *  Address maps
94 *
95 *************************************/
9996
10097static ADDRESS_MAP_START( blueprnt_map, ADDRESS_SPACE_PROGRAM, 8 )
10198   AM_RANGE(0x0000, 0x7fff) AM_ROM // service mode checks for 8 chips = 64K
10299   AM_RANGE(0x8000, 0x87ff) AM_RAM
103   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(blueprnt_videoram_w) AM_MIRROR(0x400) AM_BASE(&videoram)
104   AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE(&blueprnt_scrollram)
105   AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
100   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(blueprnt_videoram_w) AM_MIRROR(0x400) AM_BASE_MEMBER(blueprnt_state, videoram)
101   AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE_MEMBER(blueprnt_state, scrollram)
102   AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_BASE_MEMBER(blueprnt_state, spriteram) AM_SIZE(&spriteram_size)
106103   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") AM_WRITE(blueprnt_coin_counter_w)
107104   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
108105   AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r)
109106   AM_RANGE(0xd000, 0xd000) AM_WRITE(blueprnt_sound_command_w)
110107   AM_RANGE(0xe000, 0xe000) AM_READWRITE(watchdog_reset_r, blueprnt_flipscreen_w)
111   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_BASE(&colorram)
108   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_BASE_MEMBER(blueprnt_state, colorram)
112109ADDRESS_MAP_END
113110
114111static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
121118   AM_RANGE(0x8002, 0x8002) AM_DEVREAD("ay2", ay8910_r)
122119ADDRESS_MAP_END
123120
124/* Input Ports */
125121
122/*************************************
123 *
124 *  Input ports
125 *
126 *************************************/
127
126128static INPUT_PORTS_START( blueprnt )
127129   PORT_START("P1")
128130   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
r6428r6429
223225   PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DILSW2:8" )
224226INPUT_PORTS_END
225227
226/* Graphics Layouts */
227228
229/*************************************
230 *
231 *  Graphics definitions
232 *
233 *************************************/
234
228235static const gfx_layout spritelayout =
229236{
230237   8,16,   /* 8*16 sprites */
r6428r6429
237244   16*8   /* every sprite takes 16 consecutive bytes */
238245};
239246
240/* Graphics Decode Info */
241247
242248static GFXDECODE_START( blueprnt )
243249   GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar,     0, 128 )
244250   GFXDECODE_ENTRY( "gfx2", 0, spritelayout,     128*4,   1 )
245251GFXDECODE_END
246252
247/* Sound Interfaces */
248253
254/*************************************
255 *
256 *  Sound interfaces
257 *
258 *************************************/
259
249260static const ay8910_interface ay8910_interface_1 =
250261{
251262   AY8910_LEGACY_OUTPUT,
r6428r6429
266277   DEVCB_NULL
267278};
268279
269/* Machine Driver */
270280
281/*************************************
282 *
283 *  Machine driver
284 *
285 *************************************/
286
287static MACHINE_START( blueprnt )
288{
289   blueprnt_state *state = (blueprnt_state *)machine->driver_data;
290
291   state_save_register_global(machine, state->dipsw);
292}
293
294static MACHINE_RESET( blueprnt )
295{
296   blueprnt_state *state = (blueprnt_state *)machine->driver_data;
297
298   state->gfx_bank = 0;
299   state->dipsw = 0;
300}
301
302
271303static MACHINE_DRIVER_START( blueprnt )
272   // basic machine hardware
304
305   /* driver data */
306   MDRV_DRIVER_DATA(blueprnt_state)
307
308   /* basic machine hardware */
273309   MDRV_CPU_ADD("maincpu", Z80, 7000000/2)   // 3.5 MHz
274310   MDRV_CPU_PROGRAM_MAP(blueprnt_map)
275311   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
r6428r6429
277313   MDRV_CPU_ADD("audiocpu", Z80, 10000000/2/2/2)   // 1.25 MHz (2H)
278314   MDRV_CPU_PROGRAM_MAP(sound_map)
279315   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold, 4)   // IRQs connected to 32V
280                                 // NMIs are caused by the main CPU
281   // video hardware
316                           // NMIs are caused by the main CPU
282317
318   MDRV_MACHINE_START(blueprnt)
319   MDRV_MACHINE_RESET(blueprnt)
320
321   /* video hardware */
283322   MDRV_SCREEN_ADD("screen", RASTER)
284323   MDRV_SCREEN_REFRESH_RATE(60)
285324   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
r6428r6429
294333   MDRV_VIDEO_START(blueprnt)
295334   MDRV_VIDEO_UPDATE(blueprnt)
296335
297   // sound hardware
336   /* sound hardware */
298337   MDRV_SPEAKER_STANDARD_MONO("mono")
299338
300339   MDRV_SOUND_ADD("ay1", AY8910, 10000000/2/2/2)
r6428r6429
306345   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
307346MACHINE_DRIVER_END
308347
309/* ROMs */
310348
349/*************************************
350 *
351 *  ROM definition(s)
352 *
353 *************************************/
354
311355ROM_START( blueprnt )
312356   ROM_REGION( 0x10000, "maincpu", 0 )
313357   ROM_LOAD( "bp-1.1m",   0x0000, 0x1000, CRC(b20069a6) SHA1(aa0a61c898ec58fc4872a24666f422e1abdc09f3) )
r6428r6429
375419   ROM_LOAD( "r13",          0x2000, 0x1000, CRC(8b3e8c32) SHA1(65e2bf4a9f45be39419d85b2ee46b9c5eeff8f57) )
376420ROM_END
377421
378/* Game Drivers */
379422
380GAME( 1982, blueprnt, 0,        blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Bally Midway", "Blue Print (Midway)", 0 )
381GAME( 1982, blueprntj,blueprnt, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Jaleco", "Blue Print (Jaleco)", 0 )
382GAME( 1983, saturn,   0,        blueprnt, saturn,   0, ROT270, "[Zilec Electronics] Jaleco", "Saturn", 0 )
423/*************************************
424 *
425 *  Game driver(s)
426 *
427 *************************************/
428
429GAME( 1982, blueprnt,  0,        blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Bally Midway", "Blue Print (Midway)", GAME_SUPPORTS_SAVE )
430GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Jaleco",       "Blue Print (Jaleco)", GAME_SUPPORTS_SAVE )
431GAME( 1983, saturn,    0,        blueprnt, saturn,   0, ROT270, "[Zilec Electronics] Jaleco",       "Saturn", GAME_SUPPORTS_SAVE )
src/mame/drivers/gotcha.c
r6428r6429
128128
129129static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
130130   AM_RANGE(0x0000, 0x7fff) AM_ROM
131   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
131   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
132132   AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("oki", okim6295_w)   // TWO addresses!
133133   AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_r)
134134   AM_RANGE(0xd000, 0xd7ff) AM_RAM
r6428r6429
287287   /* sound hardware */
288288   MDRV_SPEAKER_STANDARD_MONO("mono")
289289
290   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
290   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
291291   MDRV_SOUND_CONFIG(ym2151_config)
292292   MDRV_SOUND_ROUTE(0, "mono", 0.80)
293293   MDRV_SOUND_ROUTE(1, "mono", 0.80)
src/mame/drivers/taito_f2.c
r6428r6429
11661166   AM_RANGE(0x0000, 0x3fff) AM_ROM
11671167   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
11681168   AM_RANGE(0xc000, 0xdfff) AM_RAM
1169   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
1169   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
11701170   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
11711171   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
11721172   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
11821182static ADDRESS_MAP_START( cameltrya_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
11831183   AM_RANGE(0x0000, 0x7fff) AM_ROM      // I can't see a bank control, but there ARE some bytes past 0x8000
11841184   AM_RANGE(0x8000, 0x8fff) AM_RAM
1185   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
1185   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
11861186   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
11871187   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
11881188//  AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w)    // probably controlling sample player?
r6428r6429
31963196   /* sound hardware */
31973197   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
31983198
3199   MDRV_SOUND_ADD("ym", YM2610, 24000000/3) /* Was 16000000/2, but only a 24Mhz OSC */
3199   MDRV_SOUND_ADD("ymsnd", YM2610, 24000000/3) /* Was 16000000/2, but only a 24Mhz OSC */
32003200   MDRV_SOUND_CONFIG(ym2610_config)
32013201   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
32023202   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
36413641   /* sound hardware */
36423642   MDRV_SPEAKER_STANDARD_MONO("mono")
36433643
3644   MDRV_SOUND_ADD("ym", YM2203, 24000000/8) /* verified on pcb  */
3644   MDRV_SOUND_ADD("ymsnd", YM2203, 24000000/8) /* verified on pcb  */
36453645   MDRV_SOUND_CONFIG(ym2203_config)
36463646   MDRV_SOUND_ROUTE(0, "mono", 0.20)
36473647   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
37173717   ROM_LOAD( "b82_10.16",   0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) )
37183718   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
37193719
3720   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3720   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
37213721   ROM_LOAD( "b82-02.1",    0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) )
37223722
37233723   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
37553755   ROM_LOAD( "b82_10.16",   0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) )
37563756   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
37573757
3758   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3758   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
37593759   ROM_LOAD( "b82-02.1",    0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) )
37603760
37613761   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
37943794   ROM_LOAD( "b82_10.16",   0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) )
37953795   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
37963796
3797   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3797   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
37983798   ROM_LOAD( "b82-02.1",    0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) )
37993799
38003800   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
38283828   ROM_LOAD( "b95-08.bin",  0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) )
38293829   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
38303830
3831   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3831   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
38323832   ROM_LOAD( "b95-04.bin",  0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) )
38333833
38343834   /* no Delta-T samples */
r6428r6429
38543854   ROM_LOAD( "b95-08.bin",  0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) )
38553855   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
38563856
3857   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3857   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
38583858   ROM_LOAD( "b95-04.bin",  0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) )
38593859
38603860   /* no Delta-T samples */
r6428r6429
38803880   ROM_LOAD( "b95-08.bin",  0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) )
38813881   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
38823882
3883   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3883   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
38843884   ROM_LOAD( "b95-04.bin",  0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) )
38853885
38863886   /* no Delta-T samples */
r6428r6429
39043904   ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) )
39053905   ROM_CONTINUE(       0x10000, 0x0c000 )   /* banked stuff */
39063906
3907   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3907   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
39083908   ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) )
39093909
39103910   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
39373937   ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) )
39383938   ROM_CONTINUE(       0x10000, 0x0c000 )   /* banked stuff */
39393939
3940   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3940   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
39413941   ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) )
39423942
39433943   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
39653965   ROM_LOAD( "c28-14.3",  0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) )
39663966   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
39673967
3968   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3968   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
39693969   ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) )
39703970
39713971   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
40014001   ROM_LOAD( "c28-14.3",  0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) )
40024002   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
40034003
4004   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4004   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
40054005   ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) )
40064006
40074007   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
40314031   ROM_LOAD( "c28-14.3",  0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) )
40324032   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
40334033
4034   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4034   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
40354035   ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) )
40364036
40374037   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
40594059   ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) )
40604060   ROM_CONTINUE(           0x10000, 0x0c000 ) /* banked stuff */
40614061
4062   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4062   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
40634063   ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) )
40644064   /* no Delta-T samples */
40654065ROM_END
r6428r6429
41334133   ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) )
41344134   ROM_CONTINUE(           0x10000, 0x0c000 ) /* banked stuff */
41354135
4136   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4136   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
41374137   ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) )
41384138
41394139   /* no Delta-T samples */
r6428r6429
41574157   ROM_LOAD( "c41-06.bin",    0x00000, 0x04000, CRC(753a98d8) SHA1(a832a4789194a67a2201da4e4484ab08210e5ccc) )
41584158   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
41594159
4160   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4160   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
41614161   ROM_LOAD( "c41-03.bin",  0x000000, 0x020000, CRC(b2c18e89) SHA1(32eca1721cd8f47e9a6dcb553208ddd0daa67f83) )
41624162
41634163   /* no Delta-T samples */
r6428r6429
41814181   ROM_LOAD( "c49-08.9",    0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) )
41824182   ROM_CONTINUE(            0x10000, 0x0c000 )   /* banked stuff */
41834183
4184   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4184   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
41854185   ROM_LOAD( "lk_snd.bin",  0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) )
41864186
41874187   /* no Delta-T samples */
r6428r6429
42054205   ROM_LOAD( "c49-08.9",    0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) )
42064206   ROM_CONTINUE(            0x10000, 0x0c000 )   /* banked stuff */
42074207
4208   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4208   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
42094209   ROM_LOAD( "lk_snd.bin",  0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) )
42104210
42114211   /* no Delta-T samples */
r6428r6429
42294229   ROM_LOAD( "c49-08.9",    0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) )
42304230   ROM_CONTINUE(            0x10000, 0x0c000 )   /* banked stuff */
42314231
4232   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4232   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
42334233   ROM_LOAD( "lk_snd.bin",  0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) )
42344234
42354235   /* no Delta-T samples */
r6428r6429
42554255   ROM_LOAD( "c53-08.bin",    0x00000, 0x04000, CRC(25187e81) SHA1(c549fbfff6963be93aaf349b240f15b1d578d1f1) )
42564256   ROM_CONTINUE(          0x10000, 0x0c000 )   /* banked stuff */
42574257
4258   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4258   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
42594259   ROM_LOAD( "c53-04.bin",  0x000000, 0x020000, CRC(99890ad4) SHA1(c9be9d21dc72059c39de81e1b73849cc77d6b95d) )
42604260
42614261   /* no Delta-T samples */
r6428r6429
42764276   ROM_LOAD( "c64-09.13",    0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) )
42774277   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
42784278
4279   ROM_REGION( 0x20000, "ym", 0 )   /* ADPCM samples */
4279   ROM_REGION( 0x20000, "ymsnd", 0 )   /* ADPCM samples */
42804280   ROM_LOAD( "c64-02.2",     0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) )
42814281
42824282   /* no Delta-T samples */
r6428r6429
42994299   ROM_LOAD( "c64-09.13",    0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) )
43004300   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
43014301
4302   ROM_REGION( 0x20000, "ym", 0 )   /* ADPCM samples */
4302   ROM_REGION( 0x20000, "ymsnd", 0 )   /* ADPCM samples */
43034303   ROM_LOAD( "c64-02.2",     0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) )
43044304
43054305   /* no Delta-T samples */
r6428r6429
43904390   ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) )
43914391   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
43924392
4393   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4393   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
43944394   ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) )
43954395
43964396   /* no Delta-T samples */
r6428r6429
44174417   ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) )
44184418   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
44194419
4420   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4420   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
44214421   ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) )
44224422
44234423   /* no Delta-T samples */
r6428r6429
44414441   ROM_LOAD( "c74-12.ic62",   0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) )
44424442   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
44434443
4444   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4444   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
44454445   ROM_LOAD( "c74-04.ic28",   0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) )
44464446
44474447   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
44684468   ROM_LOAD( "c74-12.ic62",   0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) )
44694469   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
44704470
4471   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4471   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
44724472   ROM_LOAD( "c74-04.ic28",   0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) )
44734473
44744474   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
44934493   ROM_LOAD( "c74-12.ic62",   0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) )
44944494   ROM_CONTINUE(            0x10000, 0x0c000 ) /* banked stuff */
44954495
4496   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4496   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
44974497   ROM_LOAD( "c74-04.ic28",   0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) )
44984498
44994499   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
45174517   ROM_LOAD( "c77-10",    0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) )
45184518   ROM_CONTINUE(          0x10000, 0x0c000 )   /* banked stuff */
45194519
4520   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4520   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
45214521   ROM_LOAD( "c77-03",  0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) )
45224522
45234523   /* no Delta-T samples */
r6428r6429
45404540   ROM_LOAD( "c77-10",    0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) )
45414541   ROM_CONTINUE(          0x10000, 0x0c000 )   /* banked stuff */
45424542
4543   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4543   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
45444544   ROM_LOAD( "c77-03",  0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) )
45454545
45464546   /* no Delta-T samples */
r6428r6429
45654565   ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) )
45664566   ROM_CONTINUE(          0x10000, 0x0c000 )   /* banked stuff */
45674567
4568   ROM_REGION( 0x100000, "ym", 0 )     /* YM2610 samples */
4568   ROM_REGION( 0x100000, "ymsnd", 0 )     /* YM2610 samples */
45694569   ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) )
45704570
45714571   /* no Delta-T samples */
r6428r6429
45924592   ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) )
45934593   ROM_CONTINUE(          0x10000, 0x0c000 )   /* banked stuff */
45944594
4595   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4595   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
45964596   ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) )
45974597
45984598   /* no Delta-T samples */
r6428r6429
46174617   ROM_LOAD( "ec92_27.rom", 0x00000, 0x04000, CRC(2db48e65) SHA1(43a47ebc91c043a996e966cf808d71256e158494) )
46184618   ROM_CONTINUE(            0x10000, 0x0c000 )
46194619
4620   ROM_REGION( 0x100000, "ym", 0 )   /* YM2610 samples */
4620   ROM_REGION( 0x100000, "ymsnd", 0 )   /* YM2610 samples */
46214621   ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) )   // ec92_03.rom
46224622
46234623   /* no Delta-T samples */
r6428r6429
46404640   ROM_LOAD( "c81-12.bin", 0x00000, 0x04000, CRC(6e8625b6) SHA1(212d384aa6ed43f5389739863afecbf0ad68af14) )
46414641   ROM_CONTINUE(           0x10000, 0x0c000 ) /* banked stuff */
46424642
4643   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4643   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
46444644   ROM_LOAD( "c81-05.bin",  0x00000, 0x80000, CRC(9c3d71be) SHA1(79f1bb40d8356d9fc93b569c20be15e7fbf34580) )
46454645
46464646   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
46724672   ROM_LOAD( "c83-11.1"  , 0x00000, 0x04000, CRC(461e702a) SHA1(f1f4294a7e8acc50473df15a167ba84595c9eb15) )
46734673   ROM_CONTINUE(           0x10000, 0x0c000 ) /* banked stuff */
46744674
4675   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4675   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
46764676   ROM_LOAD( "c83-04.5",  0x000000, 0x100000, CRC(2600093a) SHA1(824fde078e0ded58037bd06f888eac4e7487ac82) )
46774677
46784678   /* no Delta-T samples */
r6428r6429
46974697   ROM_LOAD( "c85-14.ic54",     0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */
46984698   ROM_CONTINUE(             0x10000, 0x0c000 ) /* banked stuff */
46994699
4700   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4700   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
47014701   ROM_LOAD( "c85-04.ic31",    0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */
47024702
47034703   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
47234723   ROM_LOAD( "c85-14.ic54",     0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */
47244724   ROM_CONTINUE(             0x10000, 0x0c000 ) /* banked stuff */
47254725
4726   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4726   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
47274727   ROM_LOAD( "c85-04.ic31",    0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */
47284728
47294729   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
47494749   ROM_LOAD( "c85-14.ic54",     0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */
47504750   ROM_CONTINUE(             0x10000, 0x0c000 ) /* banked stuff */
47514751
4752   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4752   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
47534753   ROM_LOAD( "c85-04.ic31",    0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */
47544754
47554755   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
47724772   ROM_LOAD( "c91-07.62", 0x00000, 0x04000, CRC(e471a05a) SHA1(4d9c2b734aac27819673094dc1843e1ca5fe6994) )
47734773   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
47744774
4775   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4775   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
47764776   ROM_LOAD( "c91-04.28", 0x00000, 0x80000, CRC(390b1065) SHA1(ee7ba77634854e4896528ff1bbc308de92a5815b) )   /* Channel A */
47774777
47784778   /* no Delta-T samples */
r6428r6429
47974797   ROM_LOAD( "c92-07.5",  0x00000, 0x04000, CRC(3e313db9) SHA1(44f781c7d3df8eacd745dc0af180cec9e1164b89) )
47984798   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
47994799
4800   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
4800   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
48014801   ROM_LOAD( "c92-04.9",  0x000000, 0x080000, CRC(e421bb43) SHA1(a89157e65b537b31f5837435dae848adde8a86d1) )
48024802
48034803   /* no Delta-T samples */
r6428r6429
48244824   ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) )
48254825   ROM_CONTINUE(           0x10000, 0x1c000 ) /* banked stuff */
48264826
4827   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4827   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
48284828   ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) )
48294829
48304830   /* no Delta-T samples */
r6428r6429
48514851   ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) )
48524852   ROM_CONTINUE(           0x10000, 0x1c000 ) /* banked stuff */
48534853
4854   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4854   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
48554855   ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) )
48564856
48574857   /* no Delta-T samples */
r6428r6429
48754875   ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) )
48764876   ROM_CONTINUE(         0x10000, 0x1c000 ) /* banked stuff */
48774877
4878   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4878   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
48794879   ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) )
48804880
48814881   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
49004900   ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) )
49014901   ROM_CONTINUE(         0x10000, 0x1c000 ) /* banked stuff */
49024902
4903   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4903   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
49044904   ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) )
49054905
49064906   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
49234923   ROM_LOAD( "d19-07.5",   0x00000, 0x04000, CRC(a8935f84) SHA1(6f264cf7a52dfb8248b8aeb4ff34477d7ccb0b6d) )
49244924   ROM_CONTINUE(         0x10000, 0x0c000 ) /* banked stuff */
49254925
4926   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4926   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
49274927   ROM_LOAD( "d19-04.9",   0x000000, 0x080000, CRC(d3c44905) SHA1(d00bd4f11523b2123383dd852ee5484d907ff904) )
49284928
49294929   /* no Delta-T samples */
r6428r6429
49744974   ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) )
49754975   ROM_CONTINUE(         0x10000, 0x0c000 )   /* banked stuff */
49764976
4977   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4977   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
49784978   ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) )
49794979
49804980   /* no Delta-T samples */
r6428r6429
49994999   ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) )
50005000   ROM_CONTINUE(         0x10000, 0x0c000 )   /* banked stuff */
50015001
5002   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5002   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
50035003   ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) )
50045004
50055005   /* no Delta-T samples */
r6428r6429
50245024   ROM_LOAD( "d39-12.5",   0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) )
50255025   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
50265026
5027   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5027   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
50285028   ROM_LOAD( "d39-07.10",   0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) )
50295029
50305030   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
50505050   ROM_LOAD( "d39-12.5",   0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) )
50515051   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
50525052
5053   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5053   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
50545054   ROM_LOAD( "d39-07.10",   0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) )
50555055
50565056   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
50765076   ROM_LOAD( "d39-12.5",   0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) )
50775077   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
50785078
5079   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5079   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
50805080   ROM_LOAD( "d39-07.10",   0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) )
50815081
50825082   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
51005100   ROM_LOAD( "d48-11",    0x00000, 0x04000, CRC(656c5b54) SHA1(650bcc5920838db5c6613bcf30468d6e296ea017) )
51015101   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
51025102
5103   ROM_REGION( 0x080000, "ym", 0 )   /* ADPCM samples */
5103   ROM_REGION( 0x080000, "ymsnd", 0 )   /* ADPCM samples */
51045104   ROM_LOAD( "d48-05",  0x000000, 0x080000, CRC(3fefd058) SHA1(338c35c3a086041d28708d4b17e208b590c926d5) )
51055105
51065106   /* no Delta-T samples */
r6428r6429
51265126   ROM_LOAD( "d55-15",  0x00000, 0x04000, CRC(ba782eff) SHA1(ce24654db49b9694e444e93b9a8d529a86729e03) )
51275127   ROM_CONTINUE(        0x10000, 0x0c000 )   /* banked stuff */
51285128
5129   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5129   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
51305130   ROM_LOAD( "d55-01",  0x000000, 0x100000, CRC(a8309af4) SHA1(dc30b2e019003c58aecaf899668b36dea6e1274e) )
51315131
51325132   /* no Delta-T samples */
r6428r6429
51515151   ROM_LOAD( "d63-11",    0x00000, 0x04000, CRC(2c7ac9e5) SHA1(2477fb4415781afddc2f4084eca52f53b7d40480) )
51525152   ROM_CONTINUE(          0x10000, 0x0c000 ) /* banked stuff */
51535153
5154   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
5154   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
51555155   ROM_LOAD( "d63-02",  0x000000, 0x100000, CRC(162ae165) SHA1(8b503d096640ec91cf55e05374b293937965c672) )
51565156
51575157   /* no Delta-T samples */
r6428r6429
51755175   ROM_LOAD( "do_50.rom",  0x00000, 0x04000, CRC(ffe10124) SHA1(a47dfedfa7b352a5db39e7e1ccc666d3c5fb0d75) )
51765176   ROM_CONTINUE(           0x10000, 0x0c000 )   /* banked stuff */
51775177
5178   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
5178   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
51795179   ROM_LOAD( "do_snd.rom", 0x00000, 0x80000, CRC(f2deb82b) SHA1(55e39173a475f5ab0b5f573a678a493fb6eefe64) )
51805180
51815181   /* no Delta-T samples */
src/mame/drivers/pandoras.c
r6428r6429
2424#include "sound/ay8910.h"
2525#include "sound/dac.h"
2626#include "konamipt.h"
27#include "pandoras.h"
2728
28static int irq_enable_a, irq_enable_b;
29static int firq_old_data_a, firq_old_data_b;
30static int i8039_status;
31
32/* from video */
33PALETTE_INIT( pandoras );
34WRITE8_HANDLER( pandoras_vram_w );
35WRITE8_HANDLER( pandoras_cram_w );
36WRITE8_HANDLER( pandoras_flipscreen_w );
37WRITE8_HANDLER( pandoras_scrolly_w );
38VIDEO_START( pandoras );
39VIDEO_UPDATE( pandoras );
40
4129static INTERRUPT_GEN( pandoras_master_interrupt )
4230{
43   if (irq_enable_a)
31   pandoras_state *state = (pandoras_state *)device->machine->driver_data;
32
33   if (state->irq_enable_a)
4434      cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE);
4535}
4636
4737static INTERRUPT_GEN( pandoras_slave_interrupt )
4838{
49   if (irq_enable_b)
39   pandoras_state *state = (pandoras_state *)device->machine->driver_data;
40
41   if (state->irq_enable_b)
5042      cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE);
5143}
5244
r6428r6429
6153
6254        other bytes unknown */
6355
56   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
57
6458   switch (offset)
6559   {
66      case 0x00:   if (!data) cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
67               irq_enable_a = data;
68               break;
60      case 0x00:   if (!data)
61               cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
62            state->irq_enable_a = data;
63            break;
6964      case 0x02:   coin_counter_w(0,data & 0x01);
70               break;
65            break;
7166      case 0x03:   coin_counter_w(1,data & 0x01);
72               break;
67            break;
7368      case 0x05:   pandoras_flipscreen_w(space, 0, data);
74               break;
75      case 0x06:   if (!data) cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
76               irq_enable_b = data;
77               break;
69            break;
70      case 0x06:   if (!data)
71               cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
72            state->irq_enable_b = data;
73            break;
7874      case 0x07:   cputag_set_input_line(space->machine, "sub",INPUT_LINE_NMI,PULSE_LINE);
79               break;
75            break;
8076
81      default:
82         logerror("%04x: (irq_ctrl) write %02x to %02x\n",cpu_get_pc(space->cpu), data, offset);
77      default:   logerror("%04x: (irq_ctrl) write %02x to %02x\n",cpu_get_pc(space->cpu), data, offset);
78            break;
8379   }
8480}
8581
8682static WRITE8_HANDLER( pandoras_cpua_irqtrigger_w )
8783{
88   if (!firq_old_data_a && data)
84   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
85
86   if (!state->firq_old_data_a && data)
8987   {
9088      cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
9189   }
9290
93   firq_old_data_a = data;
91   state->firq_old_data_a = data;
9492}
9593
9694static WRITE8_HANDLER( pandoras_cpub_irqtrigger_w )
9795{
98   if (!firq_old_data_b && data)
96   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
97
98   if (!state->firq_old_data_b && data)
9999   {
100100      cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE);
101101   }
102102
103   firq_old_data_b = data;
103   state->firq_old_data_b = data;
104104}
105105
106106static WRITE8_HANDLER( pandoras_i8039_irqtrigger_w )
r6428r6429
110110
111111static WRITE8_HANDLER( i8039_irqen_and_status_w )
112112{
113   pandoras_state *state = (pandoras_state *)space->machine->driver_data;
114
113115   /* bit 7 enables IRQ */
114116   if ((data & 0x80) == 0)
115117      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
116118
117119   /* bit 5 goes to 8910 port A */
118   i8039_status = (data & 0x20) >> 5;
120   state->i8039_status = (data & 0x20) >> 5;
119121}
120122
121123static WRITE8_HANDLER( pandoras_z80_irqtrigger_w )
r6428r6429
126128
127129
128130static ADDRESS_MAP_START( pandoras_master_map, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram)                   /* Work RAM (Shared with CPU B) */
130   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2) AM_BASE(&colorram)   /* Color RAM (shared with CPU B) */
131   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3) AM_BASE(&videoram)   /* Video RAM (shared with CPU B) */
131   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1) AM_BASE_MEMBER(pandoras_state, spriteram)             /* Work RAM (Shared with CPU B) */
132   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2) AM_BASE_MEMBER(pandoras_state, colorram)   /* Color RAM (shared with CPU B) */
133   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3) AM_BASE_MEMBER(pandoras_state, videoram)   /* Video RAM (shared with CPU B) */
132134   AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w)                        /* INT control */
133135   AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w)                           /* bg scroll */
134136   AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w)                     /* cause INT on the Z80 */
r6428r6429
141143ADDRESS_MAP_END
142144
143145static ADDRESS_MAP_START( pandoras_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)                                    /* Work RAM (Shared with CPU A) */
146   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)                              /* Work RAM (Shared with CPU A) */
145147   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2)                   /* Color RAM (shared with CPU A) */
146148   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3)                   /* Video RAM (shared with CPU A) */
147149   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW1")
r6428r6429
162164   AM_RANGE(0x0000, 0x1fff) AM_ROM                                             /* ROM */
163165   AM_RANGE(0x2000, 0x23ff) AM_RAM                                             /* RAM */
164166   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r)                                 /* soundlatch_r */
165   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay", ay8910_address_w)                     /* AY-8910 */
166   AM_RANGE(0x6001, 0x6001) AM_DEVREAD("ay", ay8910_r)                              /* AY-8910 */
167   AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("ay", ay8910_data_w)                        /* AY-8910 */
167   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_address_w)                     /* AY-8910 */
168   AM_RANGE(0x6001, 0x6001) AM_DEVREAD("aysnd", ay8910_r)                              /* AY-8910 */
169   AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("aysnd", ay8910_data_w)                        /* AY-8910 */
168170   AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w)                     /* cause INT on the 8039 */
169171   AM_RANGE(0xa000, 0xa000) AM_WRITE(soundlatch2_w)                              /* sound command to the 8039 */
170172ADDRESS_MAP_END
r6428r6429
289291
290292***************************************************************************/
291293
294static MACHINE_START( pandoras )
295{
296   pandoras_state *state = (pandoras_state *)machine->driver_data;
297
298   state_save_register_global(machine, state->firq_old_data_a);
299   state_save_register_global(machine, state->firq_old_data_b);
300   state_save_register_global(machine, state->irq_enable_a);
301   state_save_register_global(machine, state->irq_enable_b);
302   state_save_register_global(machine, state->i8039_status);
303}
304
292305static MACHINE_RESET( pandoras )
293306{
294   firq_old_data_a = firq_old_data_b = 0;
295   irq_enable_a = irq_enable_b = 0;
307   pandoras_state *state = (pandoras_state *)machine->driver_data;
308
309   state->firq_old_data_a = 0;
310   state->firq_old_data_b = 0;
311   state->irq_enable_a = 0;
312   state->irq_enable_b = 0;
313   state->i8039_status = 0;
314
315   state->flipscreen = 0;
296316}
297317
298318static READ8_DEVICE_HANDLER( pandoras_portA_r )
299319{
300   return i8039_status;
320   pandoras_state *state = (pandoras_state *)device->machine->driver_data;
321   return state->i8039_status;
301322}
302323
303324static READ8_DEVICE_HANDLER( pandoras_portB_r )
r6428r6429
317338
318339static MACHINE_DRIVER_START( pandoras )
319340
341   /* driver data */
342   MDRV_DRIVER_DATA(pandoras_state)
343
320344   /* basic machine hardware */
321345   MDRV_CPU_ADD("maincpu", M6809,18432000/6)   /* CPU A */
322346   MDRV_CPU_PROGRAM_MAP(pandoras_master_map)
r6428r6429
335359
336360   MDRV_QUANTUM_TIME(HZ(3000))   /* slices per frame */
337361
362   MDRV_MACHINE_START(pandoras)
338363   MDRV_MACHINE_RESET(pandoras)
339364
340365   /* video hardware */
r6428r6429
355380   /* sound hardware */
356381   MDRV_SPEAKER_STANDARD_MONO("mono")
357382
358   MDRV_SOUND_ADD("ay", AY8910, 14318000/8)
383   MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8)
359384   MDRV_SOUND_CONFIG(ay8910_config)
360385   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
361386
r6428r6429
402427ROM_END
403428
404429
405GAME( 1984, pandoras, 0, pandoras, pandoras, 0, ROT90, "Konami/Interlogic", "Pandora's Palace", 0 )
430GAME( 1984, pandoras, 0, pandoras, pandoras, 0, ROT90, "Konami/Interlogic", "Pandora's Palace", GAME_SUPPORTS_SAVE )
src/mame/drivers/gottlieb.c
r6428r6429
339339
340340static CUSTOM_INPUT( stooges_joystick_r )
341341{
342   static const char *const joyport[] = { "P1JOY", "P2JOY", "P3JOY", NULL };
342   static const char *const joyport[] = { "P2JOY", "P3JOY", "P1JOY", NULL };
343343   return (joyport[joystick_select & 3] != NULL) ? input_port_read(field->port->machine, joyport[joystick_select & 3]) : 0xff;
344344}
345345
src/mame/drivers/ddragon.c
r6428r6429
586586   AM_RANGE(0x0000, 0x0fff) AM_RAM
587587   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
588588   AM_RANGE(0x1800, 0x1800) AM_READ(dd_adpcm_status_r)
589   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fm", ym2151_r, ym2151_w)
589   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fmsnd", ym2151_r, ym2151_w)
590590   AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w)
591591   AM_RANGE(0x8000, 0xffff) AM_ROM
592592ADDRESS_MAP_END
r6428r6429
595595static ADDRESS_MAP_START( dd2_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
596596   AM_RANGE(0x0000, 0x7fff) AM_ROM
597597   AM_RANGE(0x8000, 0x87ff) AM_RAM
598   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fm", ym2151_r, ym2151_w)
598   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fmsnd", ym2151_r, ym2151_w)
599599   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
600600   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r)
601601ADDRESS_MAP_END
r6428r6429
995995   /* sound hardware */
996996   MDRV_SPEAKER_STANDARD_MONO("mono")
997997
998   MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK)
998   MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
999999   MDRV_SOUND_CONFIG(ym2151_config)
10001000   MDRV_SOUND_ROUTE(0, "mono", 0.60)
10011001   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
10611061   /* sound hardware */
10621062   MDRV_SPEAKER_STANDARD_MONO("mono")
10631063
1064   MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK)
1064   MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
10651065   MDRV_SOUND_CONFIG(ym2151_config)
10661066   MDRV_SOUND_ROUTE(0, "mono", 0.60)
10671067   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
11081108   /* sound hardware */
11091109   MDRV_SPEAKER_STANDARD_MONO("mono")
11101110
1111   MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK)
1111   MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
11121112   MDRV_SOUND_CONFIG(ym2151_config)
11131113   MDRV_SOUND_ROUTE(0, "mono", 0.60)
11141114   MDRV_SOUND_ROUTE(1, "mono", 0.60)
src/mame/drivers/asterix.c
r6428r6429
202202static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
203203   AM_RANGE(0x0000, 0xefff) AM_ROM
204204   AM_RANGE(0xf000, 0xf7ff) AM_RAM
205   AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ym", ym2151_status_port_r, ym2151_data_port_w)
205   AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_status_port_r, ym2151_data_port_w)
206206   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
207207   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
208   AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ym", ym2151_register_port_w)
208   AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_register_port_w)
209209ADDRESS_MAP_END
210210
211211
r6428r6429
255255   /* sound hardware */
256256   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
257257
258   MDRV_SOUND_ADD("ym", YM2151, 4000000)
258   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
259259   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
260260   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
261261
src/mame/drivers/ppmast93.c
r6428r6429
196196   switch(offset&0xff)
197197   {
198198      case 0:
199      case 1: ym2413_w(devtag_get_device(space->machine, "ym"),offset,data); break;
199      case 1: ym2413_w(devtag_get_device(space->machine, "ymsnd"),offset,data); break;
200200      case 2: dac_data_w(devtag_get_device(space->machine, "dac"),data);break;
201201      default: logerror("%x %x - %x\n",offset,data,cpu_get_previouspc(space->cpu));
202202   }
r6428r6429
369369
370370   MDRV_SPEAKER_STANDARD_MONO("mono")
371371
372   MDRV_SOUND_ADD("ym", YM2413, 5000000/2)
372   MDRV_SOUND_ADD("ymsnd", YM2413, 5000000/2)
373373   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
374374
375375   MDRV_SOUND_ADD("dac", DAC, 0)
src/mame/drivers/hyhoo.c
r6428r6429
6464   ADDRESS_MAP_GLOBAL_MASK(0xff)
6565//  AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
6666   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
67   AM_RANGE(0x81, 0x81) AM_DEVREAD("ay", ay8910_r)
68   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ay", ay8910_data_address_w)
67   AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_r)
68   AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_data_address_w)
6969   AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
7070   AM_RANGE(0x90, 0x97) AM_WRITE(hyhoo_blitter_w)
7171   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r, nb1413m3_inputportsel_w)
r6428r6429
277277   /* sound hardware */
278278   MDRV_SPEAKER_STANDARD_MONO("mono")
279279
280   MDRV_SOUND_ADD("ay", AY8910, 1250000)
280   MDRV_SOUND_ADD("aysnd", AY8910, 1250000)
281281   MDRV_SOUND_CONFIG(ay8910_config)
282282   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
283283
src/mame/drivers/moo.c
r6428r6429
404404   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
405405   AM_RANGE(0xc000, 0xdfff) AM_RAM
406406   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r,k054539_w)
407   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
407   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
408408   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w)
409409   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
410410   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
r6428r6429
506506   /* sound hardware */
507507   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
508508
509   MDRV_SOUND_ADD("ym", YM2151, 4000000)
509   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
510510   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
511511   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
512512
src/mame/drivers/taito_l.c
r6428r6429
652652   AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w)
653653
654654#define COMMON_SINGLE_MAP \
655   AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ym", extport_select_and_ym2203_r, ym2203_w)   \
655   AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", extport_select_and_ym2203_r, ym2203_w)   \
656656   AM_RANGE(0x8000, 0x9fff) AM_RAM
657657
658658
r6428r6429
685685   AM_RANGE(0x8000, 0x9fff) AM_RAM
686686   AM_RANGE(0xe000, 0xe000) AM_READNOP AM_WRITE(taitosound_slave_port_w)
687687   AM_RANGE(0xe001, 0xe001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
688   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
688   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
689689ADDRESS_MAP_END
690690
691691
r6428r6429
718718   AM_RANGE(0x0000, 0x3fff) AM_ROM
719719   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(7)
720720   AM_RANGE(0xc000, 0xdfff) AM_RAM
721   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
721   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
722722   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
723723   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
724724   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
755755   AM_RANGE(0x0000, 0x3fff) AM_ROM
756756   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(7)
757757   AM_RANGE(0x8000, 0x8fff) AM_RAM
758   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
758   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
759759   AM_RANGE(0xa000, 0xa000) AM_READNOP AM_WRITE(taitosound_slave_port_w)
760760   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
761761   AM_RANGE(0xb000, 0xb000) AM_WRITE(champwr_msm5205_hi_w)
r6428r6429
778778   AM_RANGE(0x0000, 0x7fff) AM_ROM
779779   AM_RANGE(0xc000, 0xdfff) AM_RAM
780780   AM_RANGE(0xe000, 0xe7ff) AM_READWRITE(shared_r, shared_w)
781   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
781   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
782782#if 0
783783   AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
784784   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA")
r6428r6429
886886   AM_RANGE(0x0000, 0xbfff) AM_ROM
887887   AM_RANGE(0xc000, 0xdfff) AM_RAM
888888   AM_RANGE(0xe000, 0xe7ff) AM_READWRITE(shared_r, shared_w)
889   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
889   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
890890   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK(7)
891891ADDRESS_MAP_END
892892
r6428r6429
19821982   /* sound hardware */
19831983   MDRV_SPEAKER_STANDARD_MONO("mono")
19841984
1985   MDRV_SOUND_ADD("ym", YM2203, 3000000) /* verified on pcb */
1985   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* verified on pcb */
19861986   MDRV_SOUND_CONFIG(ym2203_interface_triple)
19871987   MDRV_SOUND_ROUTE(0, "mono", 0.20)
19881988   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
20072007   MDRV_MACHINE_RESET(champwr)
20082008
20092009   /* sound hardware */
2010   MDRV_SOUND_MODIFY("ym")
2010   MDRV_SOUND_MODIFY("ymsnd")
20112011   MDRV_SOUND_CONFIG(ym2203_interface_champwr)
20122012   MDRV_SOUND_ROUTE(0, "mono", 0.20)
20132013   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
20372037   MDRV_MACHINE_RESET(raimais)
20382038
20392039   /* sound hardware */
2040   MDRV_SOUND_REPLACE("ym", YM2610, 8000000) /* verified on pcb (8Mhz OSC is also for the 2nd z80) */
2040   MDRV_SOUND_REPLACE("ymsnd", YM2610, 8000000) /* verified on pcb (8Mhz OSC is also for the 2nd z80) */
20412041   MDRV_SOUND_CONFIG(ym2610_config)
20422042   MDRV_SOUND_ROUTE(0, "mono", 0.25)
20432043   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
20782078   /* sound hardware */
20792079   MDRV_SPEAKER_STANDARD_MONO("mono")
20802080
2081   MDRV_SOUND_ADD("ym", YM2203, 3000000) /* verified on pcb */
2081   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* verified on pcb */
20822082   MDRV_SOUND_ROUTE(0, "mono", 0.20)
20832083   MDRV_SOUND_ROUTE(1, "mono", 0.20)
20842084   MDRV_SOUND_ROUTE(2, "mono", 0.20)
r6428r6429
21232123   /* sound hardware */
21242124   MDRV_SPEAKER_STANDARD_MONO("mono")
21252125
2126   MDRV_SOUND_ADD("ym", YM2203, 3330000) /* verified on pcb */
2126   MDRV_SOUND_ADD("ymsnd", YM2203, 3330000) /* verified on pcb */
21272127   MDRV_SOUND_CONFIG(ym2203_interface_single)
21282128   MDRV_SOUND_ROUTE(0, "mono", 0.20)
21292129   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
22182218   /* sound hardware */
22192219   MDRV_SPEAKER_STANDARD_MONO("mono")
22202220
2221   MDRV_SOUND_ADD("ym", YM2203, 12000000/4) /* not verified */
2221   MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/4) /* not verified */
22222222   MDRV_SOUND_ROUTE(0, "mono", 0.00)
22232223   MDRV_SOUND_ROUTE(1, "mono", 0.00)
22242224   MDRV_SOUND_ROUTE(2, "mono", 0.00)
r6428r6429
22452245   ROM_LOAD( "b36-01.bin",   0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) )
22462246   ROM_LOAD( "b36-02.bin",   0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) )
22472247
2248   ROM_REGION( 0x80000, "ym", 0 )
2248   ROM_REGION( 0x80000, "ymsnd", 0 )
22492249   ROM_LOAD( "b36-03.bin",   0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) )
22502250ROM_END
22512251
r6428r6429
22662266   ROM_LOAD( "b36-01.bin",   0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) )
22672267   ROM_LOAD( "b36-02.bin",   0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) )
22682268
2269   ROM_REGION( 0x80000, "ym", 0 )
2269   ROM_REGION( 0x80000, "ymsnd", 0 )
22702270   ROM_LOAD( "b36-03.bin",   0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) )
22712271ROM_END
22722272
r6428r6429
22872287   ROM_LOAD( "b36-01.bin",   0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) )
22882288   ROM_LOAD( "b36-02.bin",   0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) )
22892289
2290   ROM_REGION( 0x80000, "ym", 0 )
2290   ROM_REGION( 0x80000, "ymsnd", 0 )
22912291   ROM_LOAD( "b36-03.bin",   0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) )
22922292ROM_END
22932293
src/mame/drivers/srmp5.c
r6428r6429
330330static ADDRESS_MAP_START( st0016_mem, ADDRESS_SPACE_PROGRAM, 8 )
331331   AM_RANGE(0x0000, 0x7fff) AM_ROM
332332   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
333   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w)
333   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_snd_r, st0016_snd_w)
334334   AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
335335   AM_RANGE(0xf000, 0xffff) AM_RAM
336336ADDRESS_MAP_END
r6428r6429
541541
542542   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
543543
544   MDRV_SOUND_ADD("st", ST0016, 0)
544   MDRV_SOUND_ADD("stsnd", ST0016, 0)
545545   MDRV_SOUND_CONFIG(st0016_config)
546546   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
547547   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/m92.c
r6428r6429
422422   AM_RANGE(0x9ff00, 0x9ffff) AM_WRITENOP /* Irq controller? */
423423   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
424424   AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", irem_ga20_r, irem_ga20_w, 0x00ff)
425   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
425   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
426426   AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m92_soundlatch_r, m92_sound_irq_ack_w)
427427   AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m92_sound_status_w)
428428   AM_RANGE(0xffff0, 0xfffff) AM_ROM
r6428r6429
949949   /* sound hardware */
950950   MDRV_SPEAKER_STANDARD_MONO("mono")
951951
952   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
952   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
953953   MDRV_SOUND_CONFIG(ym2151_config)
954954   MDRV_SOUND_ROUTE(0, "mono", 0.40)
955955   MDRV_SOUND_ROUTE(1, "mono", 0.40)
src/mame/drivers/m58.c
r6428r6429
1212#include "driver.h"
1313#include "cpu/z80/z80.h"
1414#include "iremipt.h"
15#include "m58.h"
16#include "audio/irem.h"
15#include "includes/iremz80.h"
1716
1817#define MASTER_CLOCK      XTAL_18_432MHz
1918
r6428r6429
2625
2726static ADDRESS_MAP_START( yard_map, ADDRESS_SPACE_PROGRAM, 8 )
2827   AM_RANGE(0x0000, 0x5fff) AM_ROM
29   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_BASE(&videoram)
28   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
3029   AM_RANGE(0x9000, 0x9fff) AM_WRITE(yard_scroll_panel_w)
31   AM_RANGE(0xc820, 0xc87f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
32   AM_RANGE(0xa000, 0xa000) AM_RAM AM_BASE(&yard_scroll_x_low)
33   AM_RANGE(0xa200, 0xa200) AM_RAM AM_BASE(&yard_scroll_x_high)
34   AM_RANGE(0xa400, 0xa400) AM_RAM AM_BASE(&yard_scroll_y_low)
35   AM_RANGE(0xa800, 0xa800) AM_RAM AM_BASE(&yard_score_panel_disabled)
30   AM_RANGE(0xc820, 0xc87f) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
31   AM_RANGE(0xa000, 0xa000) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_x_low)
32   AM_RANGE(0xa200, 0xa200) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_x_high)
33   AM_RANGE(0xa400, 0xa400) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_y_low)
34   AM_RANGE(0xa800, 0xa800) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_score_panel_disabled)
3635   AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w)
3736   AM_RANGE(0xd001, 0xd001) AM_WRITE(yard_flipscreen_w)   /* + coin counters */
3837   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
r6428r6429
190189
191190static MACHINE_DRIVER_START( yard )
192191
192   /* driver data */
193   MDRV_DRIVER_DATA(irem_z80_state)
194
193195   /* basic machine hardware */
194196   MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2)
195197   MDRV_CPU_PROGRAM_MAP(yard_map)
r6428r6429
363365 *
364366 *************************************/
365367
366GAME( 1983, 10yard,   0,        yard,     yard,     0, ROT0, "Irem", "10-Yard Fight (World)", 0 )
367GAME( 1983, 10yardj,  10yard,   yard,     yard,     0, ROT0, "Irem", "10-Yard Fight (Japan)", 0 )
368GAME( 1984, vs10yard, 10yard,   yard,     vs10yard, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", 0 )
369GAME( 1984, vs10yardj,10yard,   yard,     vs10yarj, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", 0 )
368GAME( 1983, 10yard,   0,        yard,     yard,     0, ROT0, "Irem", "10-Yard Fight (World)", GAME_SUPPORTS_SAVE )
369GAME( 1983, 10yardj,  10yard,   yard,     yard,     0, ROT0, "Irem", "10-Yard Fight (Japan)", GAME_SUPPORTS_SAVE )
370GAME( 1984, vs10yard, 10yard,   yard,     vs10yard, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", GAME_SUPPORTS_SAVE )
371GAME( 1984, vs10yardj,10yard,   yard,     vs10yarj, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", GAME_SUPPORTS_SAVE )
src/mame/drivers/wwfwfest.c
r6428r6429
8888static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
8989   AM_RANGE(0x0000, 0xbfff) AM_ROM
9090   AM_RANGE(0xc000, 0xc7ff) AM_RAM
91   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
91   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
9292   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
9393   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
9494   AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("oki", oki_bankswitch_w)
r6428r6429
417417   /* sound hardware */
418418   MDRV_SPEAKER_STANDARD_MONO("mono")
419419
420   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
420   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
421421   MDRV_SOUND_CONFIG(ym2151_config)
422422   MDRV_SOUND_ROUTE(0, "mono", 0.45)
423423   MDRV_SOUND_ROUTE(1, "mono", 0.45)
src/mame/drivers/shangha3.c
r6428r6429
134134   AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
135135   AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP   /* irq ack? */
136136   AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
137   AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
138   AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("ay", ay8910_data_w, 0x00ff)
139   AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("ay", ay8910_address_w, 0x00ff)
137   AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
138   AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ay8910_data_w, 0x00ff)
139   AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("aysnd", ay8910_address_w, 0x00ff)
140140   AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
141141   AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
142142   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
r6428r6429
184184
185185static ADDRESS_MAP_START( heberpop_sound_io_map, ADDRESS_SPACE_IO, 8 )
186186   ADDRESS_MAP_GLOBAL_MASK(0xff)
187   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
187   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_r, ym3438_w)
188188   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
189189   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
190190ADDRESS_MAP_END
r6428r6429
502502   /* sound hardware */
503503   MDRV_SPEAKER_STANDARD_MONO("mono")
504504
505   MDRV_SOUND_ADD("ay", AY8910, 1500000)
505   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
506506   MDRV_SOUND_CONFIG(ay8910_config)
507507   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
508508
r6428r6429
542542   /* sound hardware */
543543   MDRV_SPEAKER_STANDARD_MONO("mono")
544544
545   MDRV_SOUND_ADD("ym", YM3438, 8000000)
545   MDRV_SOUND_ADD("ymsnd", YM3438, 8000000)
546546   MDRV_SOUND_CONFIG(ym3438_config)
547547   MDRV_SOUND_ROUTE(0, "mono", 0.40)
548548   MDRV_SOUND_ROUTE(1, "mono", 0.40)
r6428r6429
583583   /* sound hardware */
584584   MDRV_SPEAKER_STANDARD_MONO("mono")
585585
586   MDRV_SOUND_ADD("ym", YM3438, 8000000)
586   MDRV_SOUND_ADD("ymsnd", YM3438, 8000000)
587587   MDRV_SOUND_CONFIG(ym3438_config)
588588   MDRV_SOUND_ROUTE(0, "mono", 0.40)
589589   MDRV_SOUND_ROUTE(1, "mono", 0.40)
src/mame/drivers/vastar.c
r6428r6429
153153
154154static ADDRESS_MAP_START( cpu2_port_map, ADDRESS_SPACE_IO, 8 )
155155   ADDRESS_MAP_GLOBAL_MASK(0xff)
156   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
157   AM_RANGE(0x02, 0x02) AM_DEVREAD("ay", ay8910_r)
156   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
157   AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_r)
158158ADDRESS_MAP_END
159159
160160
r6428r6429
339339   /* sound hardware */
340340   MDRV_SPEAKER_STANDARD_MONO("mono")
341341
342   MDRV_SOUND_ADD("ay", AY8910, 1500000)
342   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
343343   MDRV_SOUND_CONFIG(ay8910_config)
344344   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
345345MACHINE_DRIVER_END
src/mame/drivers/pkscram.c
r6428r6429
9898   AM_RANGE(0x049018, 0x049019) AM_WRITENOP
9999   AM_RANGE(0x04901c, 0x04901d) AM_WRITENOP
100100   AM_RANGE(0x049020, 0x049021) AM_WRITENOP
101   AM_RANGE(0x04900c, 0x04900f) AM_DEVREADWRITE8("ym", ym2203_r, ym2203_w, 0x00ff)
101   AM_RANGE(0x04900c, 0x04900f) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
102102   AM_RANGE(0x052086, 0x052087) AM_WRITENOP
103103ADDRESS_MAP_END
104104
r6428r6429
297297   /* sound hardware */
298298   MDRV_SPEAKER_STANDARD_MONO("mono")
299299
300   MDRV_SOUND_ADD("ym", YM2203, 12000000/4)
300   MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/4)
301301   MDRV_SOUND_CONFIG(ym2203_config)
302302   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
303303MACHINE_DRIVER_END
src/mame/drivers/fortecar.c
r6428r6429
44
55TODO:
66-eeprom
7-bankswitch
87-inputs
98-missing color proms?
109
10bp 529 do pc=53e
11
1112-----------------------------------------------------
1213
1314Forte Card (POKER GAME)
r6428r6429
2829#include "machine/eeprom.h"
2930#include "sound/ay8910.h"
3031#include "machine/8255ppi.h"
32#include "video/mc6845.h"
3133
3234static UINT8 *fortecar_ram;
3335static int bank;
3436
35static WRITE8_HANDLER( fortecar_videoregs_w )
37static VIDEO_START(fortecar)
3638{
37   static UINT8 address;
39}
3840
39   if(offset == 0)
40      address = data;
41   else
41static VIDEO_UPDATE(fortecar)
42{
43   int x,y,count;
44   count = 0;
45
46   for (y=0;y<0x1e;y++)
4247   {
43      switch(address)
48      for(x=0;x<0x4b;x++)
4449      {
45         default:
46            logerror("Video Register %02x called with %02x data\n",address,data);
50         int tile,color;
51
52         tile = (fortecar_ram[(count*4)+1] | (fortecar_ram[(count*4)+2]<<8)) & 0xfff;
53         color = fortecar_ram[(count*4)+3] & 3;
54
55         drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[0],tile,color,0,0,x*8,y*8);
56         count++;
57
4758      }
4859   }
60
61   return 0;
4962}
5063
5164static WRITE8_DEVICE_HANDLER( ppi0_portc_w )
r6428r6429
6780   DEVCB_NULL,               DEVCB_NULL,               DEVCB_HANDLER(ppi0_portc_w)
6881};
6982
70static WRITE8_HANDLER( rom_bank_w )
71{
72   int new_bank = (data&0xff)>>0;
7383
74   if(bank!=new_bank) {
75      UINT8 *ROM = memory_region(space->machine, "maincpu");
76      UINT32 bankaddress;
77
78      bank = new_bank;
79      bankaddress = 0x10000 + 0x40 * bank;
80      memory_set_bankptr(space->machine, 1, &ROM[bankaddress]);
81   }
82}
83
8484static WRITE8_DEVICE_HANDLER( ayporta_w )
8585{
86   logerror("AY port A write %02x\n",data);
87
88   /*
89    lamps for POST?
90    0x01: RAM test d000-d7ff
91    0x02: VRAM test d800-ffff
92    0x04: Video SYNC test
93    0x08: ROM check
94    0x10: NVRAM check
95    0x20: IRQ test
96    0x40: Stack RAM check
97    */
8698}
8799
100/* lamps? */
88101static WRITE8_DEVICE_HANDLER( ayportb_w )
89102{
103   //logerror("AY port B write %02x\n",data);
90104}
91105
92106static const ay8910_interface ay8910_config =
r6428r6429
101115
102116static ADDRESS_MAP_START( fortecar_map, ADDRESS_SPACE_PROGRAM, 8 )
103117   AM_RANGE(0x0000, 0xbfff) AM_ROM
104   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(SMH_BANK(1), SMH_ROM) //bank
118   AM_RANGE(0xc000, 0xc7ff) AM_ROM
105119   AM_RANGE(0xd000, 0xd7ff) AM_RAM
106120   AM_RANGE(0xd800, 0xffff) AM_RAM AM_BASE(&fortecar_ram)
107121ADDRESS_MAP_END
108122
109123static ADDRESS_MAP_START( fortecar_ports, ADDRESS_SPACE_IO, 8 )
110124   ADDRESS_MAP_GLOBAL_MASK(0xff)
111   AM_RANGE(0x20, 0x21) AM_WRITE(fortecar_videoregs_w) // MC6845?
112   AM_RANGE(0x40, 0x40) AM_DEVREAD("ay", ay8910_r)
113   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_address_data_w)
114   AM_RANGE(0x60, 0x62) AM_DEVREADWRITE("fcppi0", ppi8255_r, ppi8255_w)//M5L8255AP
115   AM_RANGE(0x81, 0x81) AM_WRITE(rom_bank_w) //completely wrong,might not be there...
125   AM_RANGE(0x20, 0x20) AM_DEVWRITE("crtc", mc6845_address_w)
126   AM_RANGE(0x21, 0x21) AM_DEVWRITE("crtc", mc6845_register_w)
127   AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_r)
128   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_address_data_w)
129   AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("fcppi0", ppi8255_r, ppi8255_w)//M5L8255AP
130//  AM_RANGE(0x80, 0x81) //8251A UART
116131    AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0") //written too,multiplexer?
117132    AM_RANGE(0xa1, 0xa1) AM_READ_PORT("IN1")
118133ADDRESS_MAP_END
r6428r6429
178193   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
179194   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
180195   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
181   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
182   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
183   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
184   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
185   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
186   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
187   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
188   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
189   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
190   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
191   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
192   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
193   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
194   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
195   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
196   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
197   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
198   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
196   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
197   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
198   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
199   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
200   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
201   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
199202
200203   PORT_START("DSW1")   /* 8bit */
201204   PORT_DIPNAME( 0x01, 0x01, "DSW1" )
r6428r6429
227230static const gfx_layout tiles8x8_layout =
228231{
229232   8,8,
230   RGN_FRAC(1,1),
231   2,
232   { 0,4 },
233   RGN_FRAC(1,3),
234   6,
235   { 0,4, RGN_FRAC(1,3)+0, RGN_FRAC(1,3)+4, RGN_FRAC(2,3)+0, RGN_FRAC(2,3)+4 },
233236   { 8,9,10,11,0, 1, 2, 3 },
234237   { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
235238   16*8
236239};
237240
238241static GFXDECODE_START( fortecar )
239   GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
242   GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 4 )
240243GFXDECODE_END
241244
242static VIDEO_START(fortecar)
245static MACHINE_RESET(fortecar)
243246{
247   bank = -1;
244248}
245249
246static VIDEO_UPDATE(fortecar)
250/* WRONG, just to see something */
251static PALETTE_INIT( fortecar )
247252{
248   int x,y,count;
249   count = 0;
253   int i,r,g,b;
250254
251   for (y=0;y<0x1e;y++)
255   for (i = 0; i < 0x40*4; i++ )
252256   {
253      for(x=0;x<0x4b;x++)
254      {
255         int tile,color;
257      g = (i >> 0) & 3;
258      b = (i >> 2) & 3;
259      r = (i >> 4) & 3;
256260
257         tile = fortecar_ram[(count*4)+1] | (fortecar_ram[(count*4)+2]<<8);
258         color = fortecar_ram[(count*4)+3];
259
260         drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[0],tile,color,0,0,x*8,y*8);
261         count++;
262
263      }
261      palette_set_color(machine, i, MAKE_RGB(pal2bit(r), pal2bit(g), pal2bit(b)));
264262   }
265   return 0;
266263}
267264
268static MACHINE_RESET(fortecar)
265static const mc6845_interface mc6845_intf =
269266{
270   bank = -1;
267   "screen",   /* screen we are acting on */
268   8,         /* number of pixels per video memory address */
269   NULL,      /* before pixel update callback */
270   NULL,      /* row update callback */
271   NULL,      /* after pixel update callback */
272   DEVCB_NULL,   /* callback for display state changes */
273   DEVCB_NULL,   /* callback for cursor state changes */
274   DEVCB_NULL,   /* HSYNC callback */
275   DEVCB_NULL,   /* VSYNC callback */
276   NULL      /* update address callback */
277};
278
279//51f
280static const UINT8 default_eeprom[128]=
281{
282   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
283   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
284   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
285   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
286   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
287   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
288   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
289   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
290};
291
292static NVRAM_HANDLER(fortecar)
293{
294   if (read_or_write)
295      eeprom_save(file);
296   else
297   {
298      eeprom_init(machine, &eeprom_interface_93C46);
299
300      if (file)
301         eeprom_load(file);
302      else
303         eeprom_set_data(default_eeprom,128);
304   }
271305}
272306
273307static MACHINE_DRIVER_START( fortecar )
r6428r6429
286320   MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
287321
288322   MDRV_MACHINE_RESET(fortecar)
289   MDRV_NVRAM_HANDLER(93C46) //GOLDSTAR GM76C256ALL-70
323   MDRV_NVRAM_HANDLER(fortecar)
290324
291325   MDRV_PPI8255_ADD("fcppi0", ppi0intf)
292326
293327   MDRV_GFXDECODE(fortecar)
294328   MDRV_PALETTE_LENGTH(0x100)
329   MDRV_PALETTE_INIT(fortecar)
295330
296331   MDRV_VIDEO_START(fortecar)
297332   MDRV_VIDEO_UPDATE(fortecar)
298333
334   MDRV_MC6845_ADD("crtc", MC6845, 6000000/4, mc6845_intf)   /* unknown type / hand tuned to get ~60 fps */
335
299336   MDRV_SPEAKER_STANDARD_MONO("mono")
300337
301   MDRV_SOUND_ADD("ay", AY8910, 1500000)
338   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
302339   MDRV_SOUND_CONFIG(ay8910_config)
303340   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
304341MACHINE_DRIVER_END
305342
306343ROM_START( fortecar )
307   ROM_REGION( 0x14000, "maincpu", 0 )
308   ROM_LOAD( "fortecar.u7", 0x00000, 0x0c000, CRC(2a4b3429) SHA1(8fa630dac949e758678a1a36b05b3412abe8ae16)  )
309   ROM_CONTINUE(          0x10000, 0x04000 )
344   ROM_REGION( 0x10000, "maincpu", 0 )
345   ROM_LOAD( "fortecar.u7", 0x00000, 0x010000, CRC(2a4b3429) SHA1(8fa630dac949e758678a1a36b05b3412abe8ae16)  )
310346
311347   ROM_REGION( 0x30000, "gfx1", 0 )
312348   ROM_LOAD( "fortecar.u38", 0x00000, 0x10000, CRC(c2090690) SHA1(f0aa8935b90a2ab6043555ece69f926372246648) )
313349   ROM_LOAD( "fortecar.u39", 0x10000, 0x10000, CRC(fc3ddf4f) SHA1(4a95b24c4edb67f6d59f795f86dfbd12899e01b0) )
314350   ROM_LOAD( "fortecar.u40", 0x20000, 0x10000, CRC(9693bb83) SHA1(e3e3bc750c89a1edd1072ce3890b2ce498dec633) )
351
352   ROM_REGION( 0x200, "prom", 0 )
353   ROM_LOAD( "prom.x", 0x000, 0x200, NO_DUMP )
315354ROM_END
316355
317356static DRIVER_INIT( fortecar )
src/mame/drivers/guab.c
r6428r6429
623623      }
624624      case 0x30:
625625      {
626         sn76496_w(devtag_get_device(space->machine, "sn"), 0, data & 0xff);
626         sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data & 0xff);
627627         break;
628628      }
629629      case 0x31:
r6428r6429
784784   MDRV_SPEAKER_STANDARD_MONO("mono")
785785
786786   /* TODO: Verify clock */
787   MDRV_SOUND_ADD("sn", SN76489, 2000000)
787   MDRV_SOUND_ADD("snsnd", SN76489, 2000000)
788788   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
789789
790790   /* 6840 PTM */
src/mame/drivers/matmania.c
r6428r6429
101101
102102static ADDRESS_MAP_START( maniach_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
103103   AM_RANGE(0x0000, 0x0fff) AM_RAM
104   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym", ym3526_w)
104   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_w)
105105   AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_signed_w)
106106   AM_RANGE(0x2004, 0x2004) AM_READ(soundlatch_r)
107107   AM_RANGE(0x4000, 0xffff) AM_ROM
r6428r6429
357357   /* sound hardware */
358358   MDRV_SPEAKER_STANDARD_MONO("mono")
359359
360   MDRV_SOUND_ADD("ym", YM3526, 3600000)
360   MDRV_SOUND_ADD("ymsnd", YM3526, 3600000)
361361   MDRV_SOUND_CONFIG(ym3526_config)
362362   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
363363
src/mame/drivers/chqflag.c
r6428r6429
195195   AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w)   /* 007232 (chip 1) */
196196   AM_RANGE(0xa01c, 0xa01c) AM_DEVWRITE("konami2", k007232_extvolume_w)   /* extra volume, goes to the 007232 w/ A11 */
197197   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r, k007232_w)   /* 007232 (chip 2) */
198   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   /* YM2151 */
198   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   /* YM2151 */
199199   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)         /* soundlatch_r */
200200   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_r)         /* engine sound volume */
201201   AM_RANGE(0xf000, 0xf000) AM_WRITENOP               /* ??? */
r6428r6429
355355   /* sound hardware */
356356   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
357357
358   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
358   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
359359   MDRV_SOUND_CONFIG(ym2151_config)
360360   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
361361   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
src/mame/drivers/lsasquad.c
r6428r6429
192192static ADDRESS_MAP_START( lsasquad_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
193193   AM_RANGE(0x0000, 0x7fff) AM_ROM
194194   AM_RANGE(0x8000, 0x87ff) AM_RAM
195   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
196   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay", ay8910_address_data_w)
195   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_r,ym2203_w)
196   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
197197   AM_RANGE(0xd000, 0xd000) AM_READWRITE(lsasquad_sh_sound_command_r,lsasquad_sh_result_w)
198198   AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w)
199199   AM_RANGE(0xd800, 0xd800) AM_WRITE(lsasquad_sh_nmi_enable_w)
r6428r6429
361361static ADDRESS_MAP_START( daikaiju_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
362362   AM_RANGE(0x0000, 0x7fff) AM_ROM
363363   AM_RANGE(0x8000, 0x87ff) AM_RAM
364   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
365   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay", ay8910_address_data_w)
364   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
365   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
366366   AM_RANGE(0xd000, 0xd000) AM_READ(daikaiju_sh_sound_command_r)
367367   AM_RANGE(0xd400, 0xd400) AM_WRITENOP
368368   AM_RANGE(0xd800, 0xd800) AM_READ(daikaiju_sound_status_r) AM_WRITENOP
r6428r6429
562562   /* sound hardware */
563563   MDRV_SPEAKER_STANDARD_MONO("mono")
564564
565   MDRV_SOUND_ADD("ay", AY8910, 3000000)
565   MDRV_SOUND_ADD("aysnd", AY8910, 3000000)
566566   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12)
567567
568   MDRV_SOUND_ADD("ym", YM2203, 3000000)
568   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
569569   MDRV_SOUND_CONFIG(ym2203_config)
570570   MDRV_SOUND_ROUTE(0, "mono", 0.12)
571571   MDRV_SOUND_ROUTE(1, "mono", 0.12)
r6428r6429
607607   /* sound hardware */
608608   MDRV_SPEAKER_STANDARD_MONO("mono")
609609
610   MDRV_SOUND_ADD("ay", AY8910, 3000000)
610   MDRV_SOUND_ADD("aysnd", AY8910, 3000000)
611611   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12)
612612
613   MDRV_SOUND_ADD("ym", YM2203, 3000000)
613   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
614614   MDRV_SOUND_CONFIG(ym2203_config)
615615   MDRV_SOUND_ROUTE(0, "mono", 0.12)
616616   MDRV_SOUND_ROUTE(1, "mono", 0.12)
src/mame/drivers/dooyong.c
r6428r6429
271271   AM_RANGE(0x0000, 0xefff) AM_ROM
272272   AM_RANGE(0xf000, 0xf7ff) AM_RAM
273273   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
274   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
274   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
275275   AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
276276ADDRESS_MAP_END
277277
r6428r6429
789789static MACHINE_DRIVER_START( sound_2151 )
790790   MDRV_SPEAKER_STANDARD_MONO("mono")
791791
792   MDRV_SOUND_ADD("ym", YM2151, 3579545)
792   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
793793   MDRV_SOUND_CONFIG(ym2151_config)
794794   MDRV_SOUND_ROUTE(0, "mono", 0.50)
795795   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
802802static MACHINE_DRIVER_START( sound_2151_m68k )
803803   MDRV_SPEAKER_STANDARD_MONO("mono")
804804
805   MDRV_SOUND_ADD("ym", YM2151, 4000000)
805   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
806806   MDRV_SOUND_CONFIG(ym2151_config)
807807   MDRV_SOUND_ROUTE(0, "mono", 0.50)
808808   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/brkthru.c
r6428r6429
11/***************************************************************************
2Break Thru Doc. Data East (1986)
32
4driver by Phil Stroffolino
3    Break Thru Doc. Data East (1986)
54
6UNK-1.1    (16Kb)  Code (4000-7FFF)
7UNK-1.2    (32Kb)  Main 6809 (8000-FFFF)
8UNK-1.3    (32Kb)  Mapped (2000-3FFF)
9UNK-1.4    (32Kb)  Mapped (2000-3FFF)
5    driver by Phil Stroffolino
106
11UNK-1.5    (32Kb)  Sound 6809 (8000-FFFF)
7    UNK-1.1    (16Kb)  Code (4000-7FFF)
8    UNK-1.2    (32Kb)  Main 6809 (8000-FFFF)
9    UNK-1.3    (32Kb)  Mapped (2000-3FFF)
10    UNK-1.4    (32Kb)  Mapped (2000-3FFF)
1211
13Background has 4 banks, with 256 16x16x8 tiles in each bank.
14UNK-1.6    (32Kb)  GFX Background
15UNK-1.7    (32Kb)  GFX Background
16UNK-1.8    (32Kb)  GFX Background
12    UNK-1.5    (32Kb)  Sound 6809 (8000-FFFF)
1713
18UNK-1.9    (32Kb)  GFX Sprites
19UNK-1.10   (32Kb)  GFX Sprites
20UNK-1.11   (32Kb)  GFX Sprites
14    Background has 4 banks, with 256 16x16x8 tiles in each bank.
15    UNK-1.6    (32Kb)  GFX Background
16    UNK-1.7    (32Kb)  GFX Background
17    UNK-1.8    (32Kb)  GFX Background
2118
22Text has 256 8x8x4 characters.
23UNK-1.12   (8Kb)   GFX Text
19    UNK-1.9    (32Kb)  GFX Sprites
20    UNK-1.10   (32Kb)  GFX Sprites
21    UNK-1.11   (32Kb)  GFX Sprites
2422
25**************************************************************************
26Memory Map for Main CPU by Carlos A. Lozano
27**************************************************************************
23    Text has 256 8x8x4 characters.
24    UNK-1.12   (8Kb)   GFX Text
2825
29MAIN CPU
300000-03FF                                   W                   Plane0
310400-0BFF                                  R/W                  RAM
320C00-0FFF                                   W                   Plane2(Background)
331000-10FF                                   W                   Plane1(sprites)
341100-17FF                                  R/W                  RAM
351800-180F                                  R/W                  In/Out
361810-1FFF                                  R/W                  RAM (unmapped?)
372000-3FFF                                   R                   ROM Mapped(*)
384000-7FFF                                   R                   ROM(UNK-1.1)
398000-FFFF                                   R                   ROM(UNK-1.2)
26    **************************************************************************
27    Memory Map for Main CPU by Carlos A. Lozano
28    **************************************************************************
4029
41Interrupts: Reset, NMI, IRQ
42The test routine is at F000
30    MAIN CPU
31    0000-03FF                                   W                   Plane0
32    0400-0BFF                                  R/W                  RAM
33    0C00-0FFF                                   W                   Plane2(Background)
34    1000-10FF                                   W                   Plane1(sprites)
35    1100-17FF                                  R/W                  RAM
36    1800-180F                                  R/W                  In/Out
37    1810-1FFF                                  R/W                  RAM (unmapped?)
38    2000-3FFF                                   R                   ROM Mapped(*)
39    4000-7FFF                                   R                   ROM(UNK-1.1)
40    8000-FFFF                                   R                   ROM(UNK-1.2)
4341
44Sound: YM2203 and YM3526 driven by 6809.  Sound added by Bryan McPhail, 1/4/98.
42    Interrupts: Reset, NMI, IRQ
43    The test routine is at F000
4544
462008-07
47Dip locations verified with manual for brkthru (US conv. kit) and darwin
45    Sound: YM2203 and YM3526 driven by 6809.  Sound added by Bryan McPhail, 1/4/98.
4846
47    2008-07
48    Dip locations verified with manual for brkthru (US conv. kit) and darwin
49
4950***************************************************************************/
5051
5152#include "driver.h"
5253#include "cpu/m6809/m6809.h"
5354#include "sound/2203intf.h"
5455#include "sound/3526intf.h"
56#include "brkthru.h"
5557
5658
5759#define MASTER_CLOCK      XTAL_12MHz
5860
5961
60//UINT8 *brkthru_nmi_enable; /* needs to be tracked down */
61extern UINT8 *brkthru_videoram;
62extern size_t brkthru_videoram_size;
62/*************************************
63 *
64 *  Memory handlers
65 *
66 *************************************/
6367
64WRITE8_HANDLER( brkthru_1800_w );
65WRITE8_HANDLER( brkthru_bgram_w );
66WRITE8_HANDLER( brkthru_fgram_w );
67VIDEO_START( brkthru );
68PALETTE_INIT( brkthru );
69VIDEO_UPDATE( brkthru );
70
71
7268static WRITE8_HANDLER( brkthru_1803_w )
7369{
7470   /* bit 0 = NMI enable */
r6428r6429
8783
8884static WRITE8_HANDLER( brkthru_soundlatch_w )
8985{
90   soundlatch_w(space,offset,data);
86   soundlatch_w(space, offset, data);
9187   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9288}
9389
r6428r6429
9894}
9995
10096
97/*************************************
98 *
99 *  Address maps
100 *
101 *************************************/
101102
102103static ADDRESS_MAP_START( brkthru_map, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE(&brkthru_videoram) AM_SIZE(&brkthru_videoram_size)
104   AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE_MEMBER(brkthru_state, fg_videoram) AM_SIZE_MEMBER(brkthru_state, fg_videoram_size)
104105   AM_RANGE(0x0400, 0x0bff) AM_RAM
105   AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
106   AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
106   AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE_MEMBER(brkthru_state, videoram) AM_SIZE(&videoram_size)
107   AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE_MEMBER(brkthru_state, spriteram) AM_SIZE(&spriteram_size)
107108   AM_RANGE(0x1100, 0x17ff) AM_RAM
108109   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
109110   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("P2")
r6428r6429
116117   AM_RANGE(0x4000, 0xffff) AM_ROM
117118ADDRESS_MAP_END
118119
119
120120/* same as brktrhu, but xor 0x1000 below 8k */
121121static ADDRESS_MAP_START( darwin_map, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE(&brkthru_videoram) AM_SIZE(&brkthru_videoram_size)
122   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE_MEMBER(brkthru_state, fg_videoram) AM_SIZE_MEMBER(brkthru_state, fg_videoram_size)
123123   AM_RANGE(0x1400, 0x1bff) AM_RAM
124   AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
125   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
124   AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE_MEMBER(brkthru_state, videoram) AM_SIZE(&videoram_size)
125   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_BASE_MEMBER(brkthru_state, spriteram) AM_SIZE(&spriteram_size)
126126   AM_RANGE(0x0100, 0x01ff) AM_WRITENOP /*tidyup, nothing realy here?*/
127127   AM_RANGE(0x0800, 0x0800) AM_READ_PORT("P1")
128128   AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2")
r6428r6429
145145ADDRESS_MAP_END
146146
147147
148/*************************************
149 *
150 *  Input ports
151 *
152 *************************************/
148153
149154static INPUT_PORTS_START( brkthru )
150155   PORT_START("P1")
r6428r6429
258263INPUT_PORTS_END
259264
260265
266/*************************************
267 *
268 *  Graphics definitions
269 *
270 *************************************/
271
261272static const gfx_layout charlayout =
262273{
263274   8,8,   /* 8*8 chars */
r6428r6429
321332   GFXDECODE_ENTRY( "gfx3", 0x00000, spritelayout, 0x40,  8 )   /* use colors 0x40-0x7f */
322333GFXDECODE_END
323334
335
336/*************************************
337 *
338 *  Sound interface
339 *
340 *************************************/
341
324342/* handler called by the 3812 emulator when the internal timers cause an IRQ */
325343static void irqhandler(const device_config *device, int linestate)
326344{
r6428r6429
334352
335353
336354
355/*************************************
356 *
357 *  Machine driver
358 *
359 *************************************/
360
361static MACHINE_RESET( brkthru )
362{
363   brkthru_state *state = (brkthru_state *)machine->driver_data;
364
365   state->bgscroll = 0;
366   state->bgbasecolor = 0;
367   state->flipscreen = 0;
368}
369
337370static MACHINE_DRIVER_START( brkthru )
338371
372   /* driver data */
373   MDRV_DRIVER_DATA(brkthru_state)
374
339375   /* basic machine hardware */
340376   MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8)        /* 1.5 MHz ? */
341377   MDRV_CPU_PROGRAM_MAP(brkthru_map)
r6428r6429
344380   MDRV_CPU_ADD("audiocpu", M6809, MASTER_CLOCK/8)      /* 1.5 MHz ? */
345381   MDRV_CPU_PROGRAM_MAP(sound_map)
346382
383   MDRV_MACHINE_RESET(brkthru)
384
347385   /* video hardware */
348386   MDRV_GFXDECODE(brkthru)
349387   MDRV_PALETTE_LENGTH(256)
r6428r6429
374412
375413static MACHINE_DRIVER_START( darwin )
376414
415   /* driver data */
416   MDRV_DRIVER_DATA(brkthru_state)
417
377418   /* basic machine hardware */
378419   MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8)        /* 1.5 MHz ? */
379420   MDRV_CPU_PROGRAM_MAP(darwin_map)
r6428r6429
382423   MDRV_CPU_ADD("audiocpu", M6809, MASTER_CLOCK/8)      /* 1.5 MHz ? */
383424   MDRV_CPU_PROGRAM_MAP(sound_map)
384425
426   MDRV_MACHINE_RESET(brkthru)
427
385428   /* video hardware */
386429   MDRV_GFXDECODE(brkthru)
387430   MDRV_PALETTE_LENGTH(256)
r6428r6429
399442                  = HSync / (VDisplay + VBlank)
400443                  = 15.625kHz / (240 + 32)
401444                  = 57.444855Hz
402    tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */
445        tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */
403446   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
404447
405448   MDRV_PALETTE_INIT(brkthru)
r6428r6429
422465
423466
424467
425/***************************************************************************
468/*************************************
469 *
470 *  ROM definition(s)
471 *
472 *************************************/
426473
427  Game driver(s)
428
429***************************************************************************/
430
431474ROM_START( brkthru )
432475   ROM_REGION( 0x20000, "maincpu", 0 )     /* 64k for main CPU + 64k for banked ROMs */
433476   ROM_LOAD( "brkthru.1",    0x04000, 0x4000, CRC(cfb4265f) SHA1(4cd748fa06fd2727de1694196912d605672d4883) )
r6428r6429
590633ROM_END
591634
592635
636/*************************************
637 *
638 *  Driver initialization
639 *
640 *************************************/
593641
594GAME( 1986, brkthru,  0,       brkthru, brkthru,  0, ROT0,   "Data East USA", "Break Thru (US)", 0 )
595GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, 0, ROT0,   "Data East Corporation", "Kyohkoh-Toppa (Japan)", 0 )
596GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, 0, ROT0,   "bootleg", "Force Break (bootleg)", 0 )
597GAME( 1986, darwin,   0,       darwin,  darwin,   0, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", 0 )
642static DRIVER_INIT( brkthru )
643{
644   UINT8 *ROM = memory_region(machine, "maincpu");
645   memory_configure_bank(machine, 1, 0, 8, &ROM[0x10000], 0x2000);
646}
647
648/*************************************
649 *
650 *  Game driver(s)
651 *
652 *************************************/
653
654GAME( 1986, brkthru,  0,       brkthru, brkthru,  brkthru, ROT0,   "Data East USA",         "Break Thru (US)", GAME_SUPPORTS_SAVE )
655GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, brkthru, ROT0,   "Data East Corporation", "Kyohkoh-Toppa (Japan)", GAME_SUPPORTS_SAVE )
656GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, brkthru, ROT0,   "bootleg",               "Force Break (bootleg)", GAME_SUPPORTS_SAVE )
657GAME( 1986, darwin,   0,       darwin,  darwin,   brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", GAME_SUPPORTS_SAVE )
src/mame/drivers/trvmadns.c
r6428r6429
210210
211211static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
212212   ADDRESS_MAP_GLOBAL_MASK(0xff)
213   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
213   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
214214   AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
215215   AM_RANGE(0x80, 0x80) AM_WRITE(trvmadns_banking_w)
216216ADDRESS_MAP_END
r6428r6429
308308   /* sound hardware */
309309   MDRV_SPEAKER_STANDARD_MONO("mono")
310310
311   MDRV_SOUND_ADD("ay", AY8910, 10000000/2/4) //?
311   MDRV_SOUND_ADD("aysnd", AY8910, 10000000/2/4) //?
312312   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
313313MACHINE_DRIVER_END
314314
src/mame/drivers/rpunch.c
r6428r6429
270270
271271static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
272272   AM_RANGE(0x0000, 0xefff) AM_ROM
273   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
273   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
274274   AM_RANGE(0xf200, 0xf200) AM_READ(sound_command_r)
275275   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("upd", upd_control_w)
276276   AM_RANGE(0xf600, 0xf600) AM_DEVWRITE("upd", upd_data_w)
r6428r6429
506506   /* sound hardware */
507507   MDRV_SPEAKER_STANDARD_MONO("mono")
508508
509   MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK/4)
509   MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK/4)
510510   MDRV_SOUND_CONFIG(ym2151_config)
511511   MDRV_SOUND_ROUTE(0, "mono", 0.50)
512512   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/albazg.c
r6428r6429
254254   ADDRESS_MAP_GLOBAL_MASK(0xff)
255255   AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_address_w)
256256   AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_register_w)
257   AM_RANGE(0x40, 0x40) AM_DEVREAD("ay", ay8910_r)
258   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_address_data_w)
257   AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_r)
258   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_address_data_w)
259259   AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
260260   AM_RANGE(0xc0, 0xc0) AM_WRITE(watchdog_reset_w)
261261ADDRESS_MAP_END
r6428r6429
301301   /* sound hardware */
302302   MDRV_SPEAKER_STANDARD_MONO("mono")
303303
304   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/16) /* guessed to use the same xtal as the crtc */
304   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/16) /* guessed to use the same xtal as the crtc */
305305   MDRV_SOUND_CONFIG(ay8910_config)
306306   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
307307MACHINE_DRIVER_END
src/mame/drivers/bingoc.c
r6428r6429
110110
111111static ADDRESS_MAP_START( sound_io, ADDRESS_SPACE_IO, 8 )
112112   ADDRESS_MAP_GLOBAL_MASK(0xff)
113   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
113   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
114114   AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", bingoc_play_w)
115115   AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", upd7759_port_w)
116116#if !SOUND_TEST
r6428r6429
153153
154154   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") //might just be mono...
155155
156   MDRV_SOUND_ADD("ym", YM2151, 7159160/2)
156   MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2)
157157   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
158158   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
159159
src/mame/drivers/mosaic.c
r6428r6429
116116   ADDRESS_MAP_GLOBAL_MASK(0xff)
117117   AM_RANGE(0x00, 0x3f) AM_WRITENOP   /* Z180 internal registers */
118118   AM_RANGE(0x30, 0x30) AM_READNOP   /* Z180 internal registers */
119   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
119   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
120120   AM_RANGE(0x72, 0x72) AM_READWRITE(protection_r, protection_w)
121121   AM_RANGE(0x74, 0x74) AM_READ_PORT("P1")
122122   AM_RANGE(0x76, 0x76) AM_READ_PORT("P2")
r6428r6429
126126   ADDRESS_MAP_GLOBAL_MASK(0xff)
127127   AM_RANGE(0x00, 0x3f) AM_WRITENOP   /* Z180 internal registers */
128128   AM_RANGE(0x30, 0x30) AM_READNOP   /* Z180 internal registers */
129   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
129   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
130130   AM_RANGE(0x72, 0x72) AM_READWRITE(gfire2_protection_r, gfire2_protection_w)
131131   AM_RANGE(0x74, 0x74) AM_READ_PORT("P1")
132132   AM_RANGE(0x76, 0x76) AM_READ_PORT("P2")
r6428r6429
281281   /* sound hardware */
282282   MDRV_SPEAKER_STANDARD_MONO("mono")
283283
284   MDRV_SOUND_ADD("ym", YM2203, 3000000)
284   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
285285   MDRV_SOUND_CONFIG(ym2203_config)
286286   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
287287MACHINE_DRIVER_END
src/mame/drivers/segas18.c
r6428r6429
605605   ADDRESS_MAP_UNMAP_HIGH
606606   AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x10000)
607607   AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(1)
608   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rf", rf5c68_w)
609   AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rf", rf5c68_mem_r, rf5c68_mem_w)
608   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_w)
609   AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_mem_r, rf5c68_mem_w)
610610   AM_RANGE(0xe000, 0xffff) AM_RAM
611611ADDRESS_MAP_END
612612
r6428r6429
12931293   MDRV_SOUND_ADD("ym2", YM3438, 8000000)
12941294   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
12951295
1296   MDRV_SOUND_ADD("rf", RF5C68, 10000000)
1296   MDRV_SOUND_ADD("rfsnd", RF5C68, 10000000)
12971297   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
12981298MACHINE_DRIVER_END
12991299
src/mame/drivers/ltcasino.c
r6428r6429
6969   AM_RANGE(0xec10, 0xec10) AM_READ_PORT("IN4")
7070   AM_RANGE(0xec12, 0xec12) AM_READ_PORT("IN5")
7171
72   AM_RANGE(0xec20, 0xec20) AM_DEVREAD("ay", ay8910_r)
72   AM_RANGE(0xec20, 0xec20) AM_DEVREAD("aysnd", ay8910_r)
7373   AM_RANGE(0xec21, 0xec21) AM_READ_PORT("BUTTONS") //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service)
74   AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("ay", ay8910_data_address_w)
74   AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("aysnd", ay8910_data_address_w)
7575   AM_RANGE(0xec3e, 0xec3e) AM_READNOP //not used
7676   AM_RANGE(0xec30, 0xec3f) AM_RAM
7777   AM_RANGE(0xf000, 0xffff) AM_ROM
r6428r6429
649649   /* sound hardware */
650650   MDRV_SPEAKER_STANDARD_MONO("mono")
651651
652   MDRV_SOUND_ADD("ay", AY8910, 1000000)
652   MDRV_SOUND_ADD("aysnd", AY8910, 1000000)
653653   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4)
654654MACHINE_DRIVER_END
655655
src/mame/drivers/meijinsn.c
r6428r6429
162162
163163static ADDRESS_MAP_START( meijinsn_sound_io_map, ADDRESS_SPACE_IO, 8 )
164164   ADDRESS_MAP_GLOBAL_MASK(0xff)
165   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
166   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
165   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
166   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
167167   AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_clear_w)
168168   AM_RANGE(0x06, 0x06) AM_WRITENOP
169169ADDRESS_MAP_END
r6428r6429
335335   /* sound hardware */
336336   MDRV_SPEAKER_STANDARD_MONO("mono")
337337
338   MDRV_SOUND_ADD("ay", AY8910, 2000000)
338   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
339339   MDRV_SOUND_CONFIG(ay8910_config)
340340   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
341341
src/mame/drivers/rainbow.c
r6428r6429
419419   AM_RANGE(0x0000, 0x3fff) AM_ROM
420420   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
421421   AM_RANGE(0x8000, 0x8fff) AM_RAM
422   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
422   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
423423   AM_RANGE(0x9002, 0x9100) AM_READNOP
424424   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
425425   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
r6428r6429
677677   /* sound hardware */
678678   MDRV_SPEAKER_STANDARD_MONO("mono")
679679
680   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */
680   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */
681681   MDRV_SOUND_CONFIG(ym2151_config)
682682   MDRV_SOUND_ROUTE(0, "mono", 0.50)
683683   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/galspnbl.c
r6428r6429
7272   AM_RANGE(0x0000, 0xefff) AM_ROM
7373   AM_RANGE(0xf000, 0xf7ff) AM_RAM
7474   AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
75   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym", ym3812_w)
75   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_w)
7676   AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(SMH_NOP, SMH_NOP)   /* irq ack ?? */
7777   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
7878ADDRESS_MAP_END
r6428r6429
234234   /* sound hardware */
235235   MDRV_SPEAKER_STANDARD_MONO("mono")
236236
237   MDRV_SOUND_ADD("ym", YM3812, 3579545)
237   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
238238   MDRV_SOUND_CONFIG(ym3812_config)
239239   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
240240
src/mame/drivers/tryout.c
r6428r6429
8686
8787static ADDRESS_MAP_START( sound_cpu, ADDRESS_SPACE_PROGRAM, 8 )
8888   AM_RANGE(0x0000, 0x07ff) AM_RAM
89   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
89   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
9090   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
9191   AM_RANGE(0xd000, 0xd000) AM_WRITE(tryout_sound_irq_ack_w)
9292   AM_RANGE(0xc000, 0xffff) AM_ROM
r6428r6429
223223   /* sound hardware */
224224   MDRV_SPEAKER_STANDARD_MONO("mono")
225225
226   MDRV_SOUND_ADD("ym", YM2203, 1500000)
226   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
227227   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
228228MACHINE_DRIVER_END
229229
src/mame/drivers/photoply.c
r6428r6429
114114DMA8237 Controller
115115******************/
116116
117static int dma_channel;
117118static UINT8 dma_offset[2][4];
118119static UINT8 at_pages[0x10];
119120
120static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
121static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
121122{
122123   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
123124
124125   /* Assert HLDA */
125   dma8237_set_hlda( device, state );
126   i8237_hlda_w( device, state );
126127}
127128
128129
129static DMA8237_MEM_READ( pc_dma_read_byte )
130static READ8_HANDLER( pc_dma_read_byte )
130131{
131   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
132   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
132   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
133133      & 0xFF0000;
134134
135135   return memory_read_byte(space, page_offset + offset);
136136}
137137
138138
139static DMA8237_MEM_WRITE( pc_dma_write_byte )
139static WRITE8_HANDLER( pc_dma_write_byte )
140140{
141   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
142   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
141   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
143142      & 0xFF0000;
144143
145144   memory_write_byte(space, page_offset + offset, data);
r6428r6429
189188   }
190189}
191190
192
193static const struct dma8237_interface dma8237_1_config =
191static void set_dma_channel(const device_config *device, int channel, int state)
194192{
195   XTAL_14_31818MHz/3,
193   if (!state) dma_channel = channel;
194}
196195
197   pc_dma_hrq_changed,
198   pc_dma_read_byte,
199   pc_dma_write_byte,
196static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
197static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
198static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
199static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
200200
201   { NULL, NULL, NULL, NULL },
202   { NULL, NULL, NULL, NULL },
203   NULL
201static I8237_INTERFACE( dma8237_1_config )
202{
203   DEVCB_LINE(pc_dma_hrq_changed),
204   DEVCB_NULL,
205   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
206   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
207   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
208   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
209   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
204210};
205211
206static const struct dma8237_interface dma8237_2_config =
212static I8237_INTERFACE( dma8237_2_config )
207213{
208   XTAL_14_31818MHz/3,
209
210   NULL,
211   NULL,
212   NULL,
213
214   { NULL, NULL, NULL, NULL },
215   { NULL, NULL, NULL, NULL },
216   NULL
214   DEVCB_NULL,
215   DEVCB_NULL,
216   DEVCB_NULL,
217   DEVCB_NULL,
218   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
219   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
220   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
217221};
218222
219223
r6428r6429
349353}
350354
351355static ADDRESS_MAP_START( photoply_io, ADDRESS_SPACE_IO, 32 )
352   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
356   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
353357   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
354358   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
355359   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
356360   AM_RANGE(0x0070, 0x007f) AM_RAM//READWRITE(mc146818_port32le_r,     mc146818_port32le_w)
357361   AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO
358362   AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff)
359   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", dma8237_r, dma8237_w, 0xffff)
363   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", i8237_r, i8237_w, 0xffff)
360364   AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2
361365   AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port
362366   AM_RANGE(0x03c0, 0x03c3) AM_RAM
r6428r6429
513517//  MDRV_IMPORT_FROM( at_kbdc8042 )
514518   MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
515519   MDRV_PIC8259_ADD( "pic8259_2", pic8259_2_config )
516   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
517   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
520   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
521   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
518522   MDRV_PIT8254_ADD( "pit8254", at_pit8254_config )
519523
520524   MDRV_PALETTE_INIT(pcat_286)
src/mame/drivers/chinsan.c
r6428r6429
212212   AM_RANGE(0x00, 0x00) AM_WRITE(chinsan_port00_w)
213213   AM_RANGE(0x01, 0x01) AM_READ(chinsan_input_port_0_r)
214214   AM_RANGE(0x02, 0x02) AM_READ(chinsan_input_port_1_r)
215   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
215   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
216216   AM_RANGE(0x20, 0x20) AM_DEVWRITE("adpcm", chin_adpcm_w)
217217   AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w)   // ROM bank + unknown stuff (input mutliplex?)
218218ADDRESS_MAP_END
r6428r6429
542542   // sound hardware
543543   MDRV_SPEAKER_STANDARD_MONO("mono")
544544
545   MDRV_SOUND_ADD("ym", YM2203, 1500000) /* ? Mhz */
545   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) /* ? Mhz */
546546   MDRV_SOUND_CONFIG(ym2203_config)
547547   MDRV_SOUND_ROUTE(0, "mono", 0.15)
548548   MDRV_SOUND_ROUTE(1, "mono", 0.15)
src/mame/drivers/aerofgt.c
r6428r6429
399399   ADDRESS_MAP_GLOBAL_MASK(0xff)
400400   AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w)
401401   AM_RANGE(0x14, 0x14) AM_READWRITE(soundlatch_r, pending_command_clear_w)
402   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
402   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
403403ADDRESS_MAP_END
404404
405405static ADDRESS_MAP_START( aerofgt_sound_portmap, ADDRESS_SPACE_IO, 8 )
406406   ADDRESS_MAP_GLOBAL_MASK(0xff)
407   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
407   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
408408   AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w)
409409   AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
410410   AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r)
r6428r6429
422422   AM_RANGE(0x0000, 0xefff) AM_ROM
423423   AM_RANGE(0xf000, 0xf7ff) AM_RAM
424424   AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
425   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym", ym3812_w)
425   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_w)
426426   AM_RANGE(0xfc00, 0xfc00) AM_NOP
427427   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
428428ADDRESS_MAP_END
r6428r6429
13071307static MACHINE_DRIVER_START( pspikes )
13081308
13091309   /* basic machine hardware */
1310   MDRV_CPU_ADD("maincpu",M68000,20000000/2)   /* 10 MHz (?) */
1310   MDRV_CPU_ADD("maincpu",M68000,XTAL_20MHz/2)    /* verified on pcb */
13111311   MDRV_CPU_PROGRAM_MAP(pspikes_map)
13121312   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)/* all irq vectors are the same */
13131313
1314   MDRV_CPU_ADD("audiocpu",Z80,8000000/2) /* 4 MHz ??? */
1314   MDRV_CPU_ADD("audiocpu",Z80,XTAL_20MHz/4) /* verified on pcb */
13151315   MDRV_CPU_PROGRAM_MAP(sound_map)
13161316   MDRV_CPU_IO_MAP(turbofrc_sound_portmap)
13171317                        /* IRQs are triggered by the YM2610 */
r6428r6429
13211321
13221322   /* video hardware */
13231323   MDRV_SCREEN_ADD("screen", RASTER)
1324   MDRV_SCREEN_REFRESH_RATE(60)
1324    MDRV_SCREEN_REFRESH_RATE(61.31)  /* verified on pcb */
13251325   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
13261326   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
13271327   MDRV_SCREEN_SIZE(64*8, 32*8)
r6428r6429
13361336   /* sound hardware */
13371337   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
13381338
1339   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1339   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
13401340   MDRV_SOUND_CONFIG(ym2610_config)
13411341   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
13421342   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
14621462   /* sound hardware */
14631463   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
14641464
1465   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1465    MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz ) /* verified on pcb */
14661466   MDRV_SOUND_CONFIG(ym2610_config)
14671467   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
14681468   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
15011501   /* sound hardware */
15021502   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15031503
1504   MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz)   /* verified on pcb */
1504   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)   /* verified on pcb */
15051505   MDRV_SOUND_CONFIG(ym2610_config)
15061506   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
15071507   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
15261526
15271527   /* video hardware */
15281528   MDRV_SCREEN_ADD("screen", RASTER)
1529   MDRV_SCREEN_REFRESH_RATE(60)
1529    MDRV_SCREEN_REFRESH_RATE(61.31)  /* verified on pcb */
15301530   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
15311531   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
15321532   MDRV_SCREEN_SIZE(64*8, 32*8)
r6428r6429
15401540   /* sound hardware */
15411541   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15421542
1543   MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz)   /* verified on pcb */
1543   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)   /* verified on pcb */
15441544   MDRV_SOUND_CONFIG(ym2610_config)
15451545   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
15461546   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
15801580   /* sound hardware */
15811581   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15821582
1583   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1583   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
15841584   MDRV_SOUND_CONFIG(ym2610_config)
15851585   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
15861586   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
15951595   MDRV_CPU_PROGRAM_MAP(aerofgt_map)
15961596   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)/* all irq vectors are the same */
15971597
1598   MDRV_CPU_ADD("audiocpu",Z80,5000000) /* 5 MHz (verified on pcb) */
1598    MDRV_CPU_ADD("audiocpu",Z80,XTAL_20MHz/4) /* 5 MHz verified on pcb */
15991599   MDRV_CPU_PROGRAM_MAP(sound_map)
16001600   MDRV_CPU_IO_MAP(aerofgt_sound_portmap)
16011601                        /* IRQs are triggered by the YM2610 */
r6428r6429
16051605
16061606   /* video hardware */
16071607   MDRV_SCREEN_ADD("screen", RASTER)
1608   MDRV_SCREEN_REFRESH_RATE(60)
1608    MDRV_SCREEN_REFRESH_RATE(61.31)  /* verified on pcb */
16091609   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400))
16101610            /* wrong but improves sprite-background synchronization */
16111611   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
r6428r6429
16201620   /* sound hardware */
16211621   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
16221622
1623   MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz)   /* verified on pcb */
1623   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)   /* verified on pcb */
16241624   MDRV_SOUND_CONFIG(ym2610_config)
16251625   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
16261626   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
17191719   /* sound hardware */
17201720   MDRV_SPEAKER_STANDARD_MONO("mono")
17211721
1722   MDRV_SOUND_ADD("ym", YM3812, 3579545)
1722   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
17231723   MDRV_SOUND_CONFIG(ym3812_config)
17241724   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
17251725
r6428r6429
17541754   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
17551755   ROM_LOAD( "a47",          0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
17561756
1757   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
1757   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
17581758   ROM_LOAD( "o5b",          0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
17591759
17601760   ROM_REGION( 0x0200, "plds", 0 )
r6428r6429
17791779   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
17801780   ROM_LOAD( "a47",          0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
17811781
1782   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
1782   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
17831783   ROM_LOAD( "o5b",          0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
17841784
17851785   ROM_REGION( 0x0400, "plds", 0 )
r6428r6429
18051805   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
18061806   ROM_LOAD( "a47",          0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
18071807
1808   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
1808   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
18091809   ROM_LOAD( "o5b",          0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
18101810ROM_END
18111811
r6428r6429
19881988
19891989   /* no "ym.deltat" */
19901990
1991   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
1991   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
19921992   ROM_LOAD( "ic166",        0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
19931993   ROM_LOAD( "ic163",        0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) )   //FIRST AND SECOND HALF IDENTICAL
19941994
r6428r6429
20382038
20392039   /* no "ym.deltat" */
20402040
2041   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2041   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
20422042   ROM_LOAD( "ic166",        0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
20432043   ROM_LOAD( "ic163",        0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) )   //FIRST AND SECOND HALF IDENTICAL
20442044
r6428r6429
20882088
20892089   /* no "ym.deltat" */
20902090
2091   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2091   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
20922092   ROM_LOAD( "ic166",        0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
20932093   ROM_LOAD( "ic163",        0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) )   //FIRST AND SECOND HALF IDENTICAL
20942094
r6428r6429
21292129   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
21302130   ROM_LOAD( "u105.gh8",     0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
21312131
2132   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2132   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
21332133   ROM_LOAD( "u104",         0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
21342134ROM_END
21352135
r6428r6429
21612161   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
21622162   ROM_LOAD( "u105.gh8",     0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
21632163
2164   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2164   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
21652165   ROM_LOAD( "u104",         0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
21662166ROM_END
21672167
r6428r6429
21932193   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
21942194   ROM_LOAD( "u105.gh8",     0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
21952195
2196   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2196   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
21972197   ROM_LOAD( "u104",         0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
21982198ROM_END
21992199
r6428r6429
22282228   ROM_REGION( 0x20000, "ym.deltat", 0 ) /* sound samples */
22292229   ROM_LOAD( "tfrcu180.bin",   0x00000, 0x20000, CRC(39c7c7d5) SHA1(66ee9f7cbc18ffab2c70f77ab0edead6bb018ca9) )
22302230
2231   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2231   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
22322232   ROM_LOAD( "tfrcu179.bin", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) )
22332233ROM_END
22342234
r6428r6429
22532253   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
22542254   ROM_LOAD( "it-19-01",     0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
22552255
2256   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2256   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
22572257   ROM_LOAD( "it-19-06",     0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
22582258ROM_END
22592259
r6428r6429
22832283   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
22842284   ROM_LOAD( "it-19-01",     0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
22852285
2286   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2286   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
22872287   ROM_LOAD( "it-19-06",     0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
22882288ROM_END
22892289
r6428r6429
23142314   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
23152315   ROM_LOAD( "it-19-01",     0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
23162316
2317   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2317   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
23182318   ROM_LOAD( "it-19-06",     0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
23192319ROM_END
23202320
r6428r6429
23452345   ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */
23462346   ROM_LOAD( "it-19-01",     0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
23472347
2348   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
2348   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
23492349   ROM_LOAD( "it-19-06",     0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
23502350ROM_END
23512351
src/mame/drivers/maygay1b.c
r6428r6429
760760
761761   AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE( "duart68681", duart68681_r, duart68681_w )
762762
763   AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("ay", ay8910_address_data_w)
764   AM_RANGE(0x20B0, 0x20B0) AM_DEVREAD("ay", ay8910_r)
763   AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_address_data_w)
764   AM_RANGE(0x20B0, 0x20B0) AM_DEVREAD("aysnd", ay8910_r)
765765
766766   AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_w)
767767   AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_r)
768768
769769   AM_RANGE(0x20C0, 0x20C7) AM_WRITE(m1_latch_w)
770770
771   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE( "ym", ym2413_w )
771   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE( "ymsnd", ym2413_w )
772772
773773   AM_RANGE(0x2800, 0xffff) AM_ROM
774774ADDRESS_MAP_END
r6428r6429
804804   MDRV_PIA6821_ADD("pia", m1_pia_intf)
805805
806806   MDRV_SPEAKER_STANDARD_MONO("mono")
807   MDRV_SOUND_ADD("ay",AY8913, M1_MASTER_CLOCK)
807   MDRV_SOUND_ADD("aysnd",AY8913, M1_MASTER_CLOCK)
808808   MDRV_SOUND_CONFIG(ay8910_config)
809809   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
810810
811   MDRV_SOUND_ADD("ym", YM2413, M1_MASTER_CLOCK/4)
811   MDRV_SOUND_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4)
812812
813813   MDRV_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //?
814814   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
src/mame/drivers/mhavoc.c
r6428r6429
388388   PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
389389   PORT_DIPSETTING(    0x01, DEF_STR( Free_Play ) )
390390   PORT_DIPNAME( 0x0c, 0x0c, "Right Coin Mechanism" )   PORT_DIPLOCATION("SW2:5,6")
391   PORT_DIPSETTING(    0x0c, "x1" )
391   PORT_DIPSETTING(    0x0c, "x1snd" )
392392   PORT_DIPSETTING(    0x08, "x4" )
393393   PORT_DIPSETTING(    0x04, "x5" )
394394   PORT_DIPSETTING(    0x00, "x6" )
395395   PORT_DIPNAME( 0x10, 0x10, "Left Coin Mechanism" )   PORT_DIPLOCATION("SW2:4")
396   PORT_DIPSETTING(    0x10, "x1" )
396   PORT_DIPSETTING(    0x10, "x1snd" )
397397   PORT_DIPSETTING(    0x00, "x2" )
398398   PORT_DIPNAME( 0xe0, 0xe0, "Bonus Credits" )         PORT_DIPLOCATION("SW2:1,2,3")
399399   PORT_DIPSETTING(    0x80, "2 each 4" )
src/mame/drivers/twinkle.c
r6428r6429
747747
748748static READ16_HANDLER( twinkle_waveram_r )
749749{
750   UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rf");
750   UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rfsnd");
751751
752752   return waveram[offset];
753753}
754754
755755static WRITE16_HANDLER( twinkle_waveram_w )
756756{
757   UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rf");
757   UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rfsnd");
758758
759759   COMBINE_DATA(&waveram[offset]);
760760}
r6428r6429
784784   AM_RANGE(0x280000, 0x280fff) AM_READWRITE( shared_68k_r, shared_68k_w )
785785   AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ide", twinkle_ide_r, twinkle_ide_w)
786786   // 34000E = ???
787   AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf", rf5c400_r, rf5c400_w)
787   AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_r, rf5c400_w)
788788   AM_RANGE(0x800000, 0xffffff) AM_READWRITE( twinkle_waveram_r, twinkle_waveram_w )   // 8 MB window wave RAM
789789ADDRESS_MAP_END
790790
r6428r6429
870870
871871static void scsi_irq(running_machine *machine)
872872{
873   psx_irq_set(machine, PSX_IRQ_EXTCD);
873   psx_irq_set(machine, 0x400);
874874}
875875
876876static const SCSIConfigTable dev_table =
r6428r6429
962962   MDRV_SOUND_ROUTE( 0, "speakerleft", 0.75 )
963963   MDRV_SOUND_ROUTE( 1, "speakerright", 0.75 )
964964
965   MDRV_SOUND_ADD("rf", RF5C400, 32000000/2)
965   MDRV_SOUND_ADD("rfsnd", RF5C400, 32000000/2)
966966   MDRV_SOUND_ROUTE(0, "speakerleft", 1.0)
967967   MDRV_SOUND_ROUTE(1, "speakerright", 1.0)
968968
r6428r6429
10261026   ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\
10271027   ROM_LOAD16_WORD_SWAP( "863a05.2x",    0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )\
10281028\
1029   ROM_REGION(0x1800000, "rf", ROMREGION_ERASE00)
1029   ROM_REGION(0x1800000, "rfsnd", ROMREGION_ERASE00)
10301030
10311031ROM_START( gq863 )
10321032   TWINKLE_BIOS
src/mame/drivers/artmagic.c
r6428r6429
152152static READ16_HANDLER( ultennis_hack_r )
153153{
154154   /* IRQ5 points to: jsr (a5); rte */
155   if (cpu_get_pc(space->cpu) == 0x18c2)
155   UINT32 pc = cpu_get_pc(space->cpu);
156   if (pc == 0x18c2 || pc == 0x18e4)
156157   {
157158      hack_irq = 1;
158159      update_irq_state(space->machine);
r6428r6429
791792ROM_END
792793
793794
795ROM_START( ultennisj )
796   ROM_REGION( 0x80000, "maincpu", 0 )   /* 64k for 68000 code */
797   ROM_LOAD16_BYTE( "a&m001d0194-13c-u102-japan.u102", 0x00000, 0x40000, CRC(65cee452) SHA1(49259e8faf289d6d80769f6d44e9d61d15e431c6) )
798   ROM_LOAD16_BYTE( "a&m001d0194-12c-u101-japan.u101", 0x00001, 0x40000, CRC(5f4b0ca0) SHA1(57e9ed60cc0e53eeb4e08c4003138d3bdaec3de7) )
799
800   ROM_REGION16_LE( 0x200000, "gfx1", 0 )
801   ROM_LOAD( "a&m-001-01-a.ic133", 0x000000, 0x200000, CRC(29d9204d) SHA1(0b2b77a55b8c2877c2e31b63156505584d4ee1f0) )
802
803   ROM_REGION( 0x40000, "oki", 0 )
804   ROM_LOAD( "a&m001c1293-14a-u151.u151", 0x00000,  0x40000, CRC(4e19ca89) SHA1(ac7e17631ec653f83c4912df6f458b0e1df88096) )
805ROM_END
806
807
794808/*
795809Stone Ball
796810Art & Magic, 1994
r6428r6429
932946 *
933947 *************************************/
934948
935GAME( 1993, ultennis, 0,        artmagic, ultennis, ultennis, ROT0, "Art & Magic", "Ultimate Tennis",       GAME_SUPPORTS_SAVE )
936GAME( 1994, cheesech, 0,        cheesech, cheesech, cheesech, ROT0, "Art & Magic", "Cheese Chase",          GAME_SUPPORTS_SAVE )
949GAME( 1993, ultennis, 0,        artmagic, ultennis, ultennis, ROT0, "Art & Magic", "Ultimate Tennis", GAME_SUPPORTS_SAVE )
950GAME( 1993, ultennisj,ultennis, artmagic, ultennis, ultennis, ROT0, "[Art & Magic] (Banpresto license)", "Ultimate Tennis (v 1.4, Japan)", GAME_SUPPORTS_SAVE )
951GAME( 1994, cheesech, 0,        cheesech, cheesech, cheesech, ROT0, "Art & Magic", "Cheese Chase", GAME_SUPPORTS_SAVE )
937952GAME( 1994, stonebal, 0,        stonebal, stonebal, stonebal, ROT0, "Art & Magic", "Stone Ball (4 Players)", GAME_SUPPORTS_SAVE )
938953GAME( 1994, stonebal2,stonebal, stonebal, stoneba2, stonebal, ROT0, "Art & Magic", "Stone Ball (2 Players)", GAME_SUPPORTS_SAVE )
src/mame/drivers/twincobr.c
r6428r6429
237237
238238static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
239239   ADDRESS_MAP_GLOBAL_MASK(0xff)
240   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
240   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
241241   AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM")         /* Twin Cobra - Coin/Start */
242242   AM_RANGE(0x20, 0x20) AM_WRITE(twincobr_coin_w)      /* Twin Cobra coin count-lockout */
243243   AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
r6428r6429
740740   /* sound hardware */
741741   MDRV_SPEAKER_STANDARD_MONO("mono")
742742
743   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
743   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
744744   MDRV_SOUND_CONFIG(ym3812_config)
745745   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
746746MACHINE_DRIVER_END
src/mame/drivers/multfish.c
r6428r6429
545545//  AM_RANGE(0x35, 0x35) AM_WRITE(multfish_port35_w)
546546//  AM_RANGE(0x36, 0x36) AM_WRITE(multfish_port36_w)
547547//  AM_RANGE(0x37, 0x37) AM_WRITE(multfish_watchdog_reset_w)
548   AM_RANGE(0x38, 0x38) AM_DEVWRITE("ay", ay8910_address_w)
549   AM_RANGE(0x39, 0x39) AM_DEVWRITE("ay", ay8910_data_w)
550   AM_RANGE(0x3a, 0x3a) AM_DEVREAD("ay", ay8910_r)
548   AM_RANGE(0x38, 0x38) AM_DEVWRITE("aysnd", ay8910_address_w)
549   AM_RANGE(0x39, 0x39) AM_DEVWRITE("aysnd", ay8910_data_w)
550   AM_RANGE(0x3a, 0x3a) AM_DEVREAD("aysnd", ay8910_r)
551551
552552   AM_RANGE(0x90, 0x90) AM_READ(ray_r)
553553
r6428r6429
630630   MDRV_VIDEO_UPDATE(multfish)
631631
632632   MDRV_SPEAKER_STANDARD_MONO("mono")
633   MDRV_SOUND_ADD("ay", AY8910, 6000000/4)
633   MDRV_SOUND_ADD("aysnd", AY8910, 6000000/4)
634634   MDRV_SOUND_CONFIG(ay8910_config)
635635   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
636636MACHINE_DRIVER_END
src/mame/drivers/86lions.c
r6428r6429
9494   AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
9595   AM_RANGE(0x5000, 0x500f) AM_MIRROR(0x0010) AM_READWRITE(lions_via_r, lions_via_w)
9696   AM_RANGE(0x5300, 0x5300) AM_READ(test_r)//AM_READ_PORT("IN0")
97   AM_RANGE(0x5382, 0x5383) AM_DEVWRITE("ay", ay8910_data_address_w)
97   AM_RANGE(0x5382, 0x5383) AM_DEVWRITE("aysnd", ay8910_data_address_w)
9898   AM_RANGE(0xe000, 0xffff) AM_ROM
9999ADDRESS_MAP_END
100100
r6428r6429
380380
381381   MDRV_SPEAKER_STANDARD_MONO("mono")
382382
383   MDRV_SOUND_ADD("ay", AY8910, MAIN_CLOCK/8)   /* 1.5 MHz.(guess) */
383   MDRV_SOUND_ADD("aysnd", AY8910, MAIN_CLOCK/8)   /* 1.5 MHz.(guess) */
384384   MDRV_SOUND_CONFIG(ay8910_config)
385385   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
386386MACHINE_DRIVER_END
src/mame/drivers/exterm.c
r6428r6429
342342
343343static ADDRESS_MAP_START( sound_master_map, ADDRESS_SPACE_PROGRAM, 8 )
344344   AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
345   AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("ym", ym2151_data_latch_w)
345   AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("ymsnd", ym2151_data_latch_w)
346346   AM_RANGE(0x6000, 0x67ff) AM_WRITE(sound_nmi_rate_w)
347347   AM_RANGE(0x6800, 0x6fff) AM_READ(sound_master_latch_r)
348348   AM_RANGE(0x7000, 0x77ff) AM_READ(sound_nmi_to_slave_r)
r6428r6429
507507   MDRV_SOUND_ADD("dac", DAC, 0)
508508   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
509509
510   MDRV_SOUND_ADD("ym", YM2151, 4000000)
510   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
511511   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
512512MACHINE_DRIVER_END
513513
src/mame/drivers/sauro.c
r6428r6429
172172static ADDRESS_MAP_START( sauro_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
173173   AM_RANGE(0x0000, 0x7fff) AM_ROM
174174   AM_RANGE(0x8000, 0x87ff) AM_RAM
175   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
175   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_w)
176176   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", adpcm_w)
177177   AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
178178   AM_RANGE(0xe000, 0xe006) AM_WRITENOP   /* echo from write to e0000 */
r6428r6429
190190   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
191191   AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
192192   AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
193   AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym", ym3812_w)
193   AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_w)
194194   AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
195195   AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w)
196196   AM_RANGE(0xf838, 0xf838) AM_WRITENOP            /* only written at startup */
r6428r6429
353353   /* sound hardware */
354354   MDRV_SPEAKER_STANDARD_MONO("mono")
355355
356   MDRV_SOUND_ADD("ym", YM3812, XTAL_20MHz/8)       /* verified on pcb */
356   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_20MHz/8)       /* verified on pcb */
357357   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
358358
359359MACHINE_DRIVER_END
src/mame/drivers/quizo.c
r6428r6429
128128   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
129129   AM_RANGE(0x10, 0x10) AM_READ_PORT("IN1")
130130   AM_RANGE(0x40, 0x40) AM_READ_PORT("IN2")
131   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ay", ay8910_address_data_w)
131   AM_RANGE(0x50, 0x51) AM_DEVWRITE("aysnd", ay8910_address_data_w)
132132   AM_RANGE(0x60, 0x60) AM_WRITE(port60_w)
133133   AM_RANGE(0x70, 0x70) AM_WRITE(port70_w)
134134ADDRESS_MAP_END
r6428r6429
206206
207207   /* sound hardware */
208208   MDRV_SPEAKER_STANDARD_MONO("mono")
209   MDRV_SOUND_ADD("ay", AY8910, XTAL2/16 )
209   MDRV_SOUND_ADD("aysnd", AY8910, XTAL2/16 )
210210   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
211211MACHINE_DRIVER_END
212212
src/mame/drivers/niyanpai.c
r6428r6429
404404   AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_0_dir_pc_r, tmpz84c011_0_dir_pc_w)
405405   AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_0_dir_pd_r, tmpz84c011_0_dir_pd_w)
406406   AM_RANGE(0x44, 0x44) AM_READWRITE(tmpz84c011_0_dir_pe_r, tmpz84c011_0_dir_pe_w)
407   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym", ym3812_w)
407   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym3812_w)
408408ADDRESS_MAP_END
409409
410410
r6428r6429
804804   /* sound hardware */
805805   MDRV_SPEAKER_STANDARD_MONO("mono")
806806
807   MDRV_SOUND_ADD("ym", YM3812, 4000000)
807   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
808808   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
809809
810810   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/bfm_sc2.c
r6428r6429
339339
340340   e2ram_reset();
341341
342   devtag_reset(machine, "ym");
342   devtag_reset(machine, "ymsnd");
343343
344344  // reset stepper motors /////////////////////////////////////////////////
345345   {
r6428r6429
698698
699699   if ( old != volume_override )
700700   {
701      const device_config *ym = devtag_get_device(space->machine, "ym");
701      const device_config *ym = devtag_get_device(space->machine, "ymsnd");
702702      const device_config *upd = devtag_get_device(space->machine, "upd");
703703      float percent = volume_override? 1.0f : (32-global_volume)/32.0f;
704704
r6428r6429
812812         }
813813
814814         {
815            const device_config *ym = devtag_get_device(space->machine, "ym");
815            const device_config *ym = devtag_get_device(space->machine, "ymsnd");
816816            const device_config *upd = devtag_get_device(space->machine, "upd");
817817            float percent = volume_override ? 1.0f : (32-global_volume)/32.0f;
818818
r6428r6429
15441544   AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w)         // this is where it reads?
15451545   AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w)         // upd7759 reset line
15461546   AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w)            // custom chip unlock
1547   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ym", ym2413_w)
1547   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_w)
15481548   AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w)         // write bank (rom page select for 0x6000 - 0x7fff )
15491549   AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)         // vfd2 data
15501550
r6428r6429
22482248   MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
22492249   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
22502250
2251   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
2251   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
22522252   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
22532253MACHINE_DRIVER_END
22542254
r6428r6429
27842784   AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w)
27852785   AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w)
27862786   AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w)                  /* custom chip unlock */
2787   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ym", ym2413_w)
2787   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_w)
27882788   AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w)               /* write bank (rom page select for 0x6000 - 0x7fff ) */
27892789   AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)               /* vfd2 data */
27902790
r6428r6429
28332833   AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w)
28342834   AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w)
28352835   AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w)
2836   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ym", ym2413_w)
2836   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_w)
28372837   AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w)
28382838   AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)
28392839   AM_RANGE(0x3FFF, 0x3FFF) AM_READ( coin_input_r)
r6428r6429
28822882   AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w)
28832883   AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w)
28842884   AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w)
2885   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ym", ym2413_w)
2885   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_w)
28862886   AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w)
28872887   AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)
28882888   AM_RANGE(0x3FFE, 0x3FFE) AM_READ( direct_input_r)
r6428r6429
39773977   MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK)
39783978   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
39793979
3980   MDRV_SOUND_ADD("ym",YM2413, XTAL_3_579545MHz)
3980   MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_3_579545MHz)
39813981   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
39823982
39833983   MDRV_NVRAM_HANDLER(bfm_sc2)
r6428r6429
40044004   MDRV_CPU_PERIODIC_INT(timer_irq, 1000 )
40054005
40064006   MDRV_SPEAKER_STANDARD_MONO("mono")
4007   MDRV_SOUND_ADD("ym",YM2413, XTAL_3_579545MHz)
4007   MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_3_579545MHz)
40084008   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
40094009
40104010   MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK)
r6428r6429
41934193   Scorpion2_SetSwitchState(7,3,0);
41944194}
41954195
4196/*********************************************
4197The Big Breakfast
4198*********************************************/
4199
41964200ROM_START( m_brkfst )
41974201   ROM_REGION( 0x12000, "maincpu", 0 )
41984202   ROM_LOAD("big-breakfast_std_ar_var_a.bin",   0x00000, 0x10000, CRC(5f016daa) SHA1(25ee10138bddf453588e3c458268533a88a51217) )
r6428r6429
42014205   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
42024206ROM_END
42034207
4208ROM_START( m_brkfs1 )
4209   ROM_REGION( 0x12000, "maincpu", 0 )
4210   ROM_LOAD("big-breakfast_std_ss_var_a.bin",   0x00000, 0x10000, CRC(08d1fa7d) SHA1(a3dba79eef32835f0b46dbd7b376b797324df904) )
4211
4212   ROM_REGION( 0x80000, "upd", 0 )
4213   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
4214ROM_END
4215
4216ROM_START( m_brkfs2 )
4217   ROM_REGION( 0x12000, "maincpu", 0 )
4218   ROM_LOAD("big-breakfast_std_ac_var_jp-8_a.bin",   0x00000, 0x10000, CRC(2671af1b) SHA1(0a34dd2953a99be9fb2a128f9d1f7ddc0fc8242a) )
4219
4220   ROM_REGION( 0x80000, "upd", 0 )
4221   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
4222ROM_END
4223
4224ROM_START( m_brkfs3 )
4225   ROM_REGION( 0x12000, "maincpu", 0 )
4226   ROM_LOAD("big-breakfast_std_ac_8pnd20p_a.bin",   0x00000, 0x10000, CRC(054c38ad) SHA1(f4ab55f977848e3d2a933bba1ab619ffa3e14db6) )
4227
4228   ROM_REGION( 0x80000, "upd", 0 )
4229   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
4230ROM_END
4231
4232ROM_START( m_brkfs4 )
4233   ROM_REGION( 0x12000, "maincpu", 0 )
4234   ROM_LOAD("big-breakfast_std_ac_var_10pnd-20p_a.bin",   0x00000, 0x10000, CRC(d879feaa) SHA1(2656fbe018fe40194c2b77d289b77fabbc9e537c) )
4235
4236   ROM_REGION( 0x80000, "upd", 0 )
4237   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
4238ROM_END
4239
4240ROM_START( m_brkfs5 )
4241   ROM_REGION( 0x12000, "maincpu", 0 )
4242   ROM_LOAD("big-breakfast_std_ac_10pnd-20p_a.bin",   0x00000, 0x10000, CRC(55d7321c) SHA1(0b4a6b66aa64fbb3238539a2167f761d0910b814) )
4243
4244   ROM_REGION( 0x80000, "upd", 0 )
4245   ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5))
4246ROM_END
4247
42044248/*********************************************
42054249Dr.Who The Timelord
42064250*********************************************/
r6428r6429
44084452ROM_END
44094453
44104454/*     year, name,     parent,    machine,       input,     init,       monitor, company,    fullname */
4411GAME( 1994, m_brkfst, 0,        scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (UK, Game Card 95-750-524 )",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
44124455
44134456GAMEL( 1994, m_bdrwho, 0,        scorpion2,    drwho,      drwho,      0,       "BFM",      "Dr.Who The Timelord (set 1, UK, Game Card 95-750-288)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK,layout_drwho)
44144457GAMEL( 1994, m_bdrwh1, m_bdrwho,  scorpion2,    drwho,      drwho,      0,       "BFM",      "Dr.Who The Timelord (set 2, UK, Game Card 95-750-661)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK,layout_drwho)
r6428r6429
44294472GAMEL( 1994, m_bdrw16, m_bdrwho,  scorpion2,    drwho,      drwho,      0,       "BFM",      "Dr.Who The Timelord (set 17)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK,layout_drwho)
44304473GAMEL( 1994, m_bdrw17, m_bdrwho,  scorpion2,    drwho,      drwhon,      0,       "BFM",      "Dr.Who The Timelord (set 18, not encrypted)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK,layout_drwho)
44314474
4475GAME( 1994, m_brkfst, 0,        scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 1 UK, Game Card 95-750-524)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4476GAME( 1994, m_brkfs1, m_brkfst,     scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 2)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4477GAME( 1994, m_brkfs2, m_brkfst,     scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 3)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4478GAME( 1994, m_brkfs3, m_brkfst,     scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 4)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4479GAME( 1994, m_brkfs4, m_brkfst,     scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 5)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4480GAME( 1994, m_brkfs5, m_brkfst,     scorpion2,    bbrkfst,   bbrkfst,   0,       "BFM",      "The Big Breakfast (Set 6)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING)
4481
44324482GAME ( 1995, m_bfocus, 0,        scorpion3,    scorpion3,   focus,      0,       "BFM/ELAM", "Focus (Dutch, Game Card 95-750-347)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK)
44334483
44344484GAME ( 1996, m_bcgslm, 0,        scorpion2,    bfmcgslm,   bfmcgslm,   0,       "BFM",       "Club Grandslam (UK, Game Card 95-750-843)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK)
44354485
4436GAME ( 1996, m_luvjub,   0,        scorpion2_dm01,luvjub,   luvjub,      0,       "BFM",       "Luvvly Jubbly (UK Multisite 10/25p, Game Card 95-750-808)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK)
4486GAME ( 1996, m_luvjub, 0,        scorpion2_dm01,luvjub,   luvjub,      0,       "BFM",       "Luvvly Jubbly (UK Multisite 10/25p, Game Card 95-750-808)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK)
44374487
4438GAME ( 1996, m_cpeno1,   0,        scorpion2_dm01,cpeno1,    cpeno1,     0,       "BFM",      "Club Public Enemy No.1 (UK, Game Card 95-750-846)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK)
4439
4488GAME ( 1996, m_cpeno1, 0,        scorpion2_dm01,cpeno1,    cpeno1,     0,       "BFM",      "Club Public Enemy No.1 (UK, Game Card 95-750-846)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK)
src/mame/drivers/suprnova.c
r6428r6429
11151115   /* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
11161116   /* 0x040000 - 0x3fffff empty? */
11171117
1118   ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
1118   ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ /* Gals Panic 4 (Korea) uses different sound samples (not dumped)?? or mapped different?? */
11191119   ROM_LOAD( "gp430000.u4", 0x000000, 0x200000, CRC(8374663a) SHA1(095512564f4de25dc3752d9fbd254b9dabd16d1b) )
11201120ROM_END
11211121
r6428r6429
11441144   ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
11451145ROM_END
11461146
1147ROM_START( galpanisk )
1148   ROM_REGION( 0x080000, "maincpu", 0 ) /* SH-2 Code */
1149   ROM_LOAD       ( "sknsk1.u10",   0x000000, 0x080000, CRC(ff1c9f79) SHA1(a51e598d43e76d37da69b1f094c111273bdfc94a) ) /* Korean BIOS */
1150
1151   ROM_REGION32_BE( 0x200000, "user1", 0 ) /* SH-2 Code mapped at 0x04000000 */
1152   ROM_LOAD16_BYTE( "gps-000-k1.u10", 0x000000, 0x100000, CRC(c9ff3d8a) SHA1(edfec265654aaa8cb307424e5b2899e708392cd0) )
1153   ROM_LOAD16_BYTE( "gps-001-k1.u8",  0x000001, 0x100000, CRC(354e601d) SHA1(4d176f2337a3b0b63548b2e542f9fa87d0a1ef7b) )
1154
1155   ROM_REGION( 0x1000000, "gfx1", 0 )
1156   ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
1157   ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
1158   ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
1159
1160   ROM_REGION( 0x800000, "gfx2", 0 )
1161   ROM_LOAD( "gps20000.u16", 0x000000, 0x400000, CRC(c146a09e) SHA1(5af5a7b9d9a55ec7aba3fd85a3a0211b92b1b84f) )
1162   ROM_LOAD( "gps20100.u13", 0x400000, 0x400000, CRC(9dfa2dc6) SHA1(a058c42fd76c23c0e5c8c11f5617fd29e056be7d) )
1163
1164   ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */
1165   /* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */
1166   /* 0x040000 - 0x3fffff empty? */
1167
1168   ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
1169   ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) )
1170ROM_END
1171
11471172ROM_START( galpans2 )
11481173   ROM_REGION( 0x080000, "maincpu", 0 ) /* SH-2 Code */
11491174   ROM_LOAD       ( "sknsj1.u10",   0x000000, 0x080000, CRC(7e2b836c) SHA1(92c5a7a2472496028bff0e5980d41dd294f42144) ) /* Japan BIOS */
r6428r6429
16571682GAME( 1996, skns,      0,        skns, skns,     0,         ROT0,  "Kaneko", "Super Kaneko Nova System BIOS", GAME_IS_BIOS_ROOT )
16581683
16591684GAME( 1996, galpani4,  skns,     skns, cyvern,   galpani4,  ROT0,  "Kaneko", "Gals Panic 4 (Japan)", GAME_IMPERFECT_GRAPHICS )
1660GAME( 1996, galpani4k, galpani4, skns, cyvern,   galpani4,  ROT0,  "Kaneko", "Gals Panic 4 (Korea)", GAME_IMPERFECT_GRAPHICS )
1685GAME( 1996, galpani4k, galpani4, skns, cyvern,   galpani4,  ROT0,  "Kaneko", "Gals Panic 4 (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND ) /* sound samples are different / missing? */
16611686GAME( 1996, jjparads,  skns,     skns, skns_1p,  jjparads,  ROT0,  "Electro Design", "Jan Jan Paradise", GAME_IMPERFECT_GRAPHICS )
16621687GAME( 1997, galpanis,  skns,     skns, galpanis, galpanis,  ROT0,  "Kaneko", "Gals Panic S - Extra Edition (Japan)", GAME_IMPERFECT_GRAPHICS )
1688GAME( 1997, galpanisk, galpanis, skns, galpanis, galpanis,  ROT0,  "Kaneko", "Gals Panic S - Extra Edition (Korea)", GAME_IMPERFECT_GRAPHICS )
16631689GAME( 1997, jjparad2,  skns,     skns, skns_1p,  jjparad2,  ROT0,  "Electro Design", "Jan Jan Paradise 2", GAME_IMPERFECT_GRAPHICS )
16641690GAME( 1997, sengekis,  skns,     skns, skns,     sengekis,  ROT90, "Kaneko / Warashi", "Sengeki Striker (Asia)", GAME_IMPERFECT_GRAPHICS )
16651691GAME( 1997, sengekisj, sengekis, skns, skns,     sengekij,  ROT90, "Kaneko / Warashi", "Sengeki Striker (Japan)", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/witch.c
r6428r6429
460460   AM_RANGE(0x0000, 0x7fff) AM_ROM
461461   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
462462   AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_r, ym2203_w)
463   AM_RANGE(0x8010, 0x8016) AM_DEVREADWRITE("es", read_8010, es8712_w)
463   AM_RANGE(0x8010, 0x8016) AM_DEVREADWRITE("essnd", read_8010, es8712_w)
464464   AM_RANGE(0xa000, 0xa00f) AM_READWRITE(read_a00x, write_a00x)
465465   AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE(1)
466466   AM_RANGE(0xf180, 0xffff) AM_RAM AM_SHARE(2)
r6428r6429
786786   /* sound hardware */
787787   MDRV_SPEAKER_STANDARD_MONO("mono")
788788
789   MDRV_SOUND_ADD("es", ES8712, 8000)
789   MDRV_SOUND_ADD("essnd", ES8712, 8000)
790790   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
791791
792792   MDRV_SOUND_ADD("ym1", YM2203, 1500000)
r6428r6429
814814   ROM_REGION( 0x40000, "gfx2", 0 )
815815   ROM_LOAD( "rom.a1", 0x00000, 0x40000,  CRC(512300a5) SHA1(1e9ba58d1ddbfb8276c68f6d5c3591e6b77abf21)  )
816816
817   ROM_REGION( 0x40000, "es", 0 )
817   ROM_REGION( 0x40000, "essnd", 0 )
818818   ROM_LOAD( "rom.v10", 0x00000, 0x40000, CRC(62e42371) SHA1(5042abc2176d0c35fd6b698eca4145f93b0a3944) )
819819ROM_END
820820
r6428r6429
833833   ROM_REGION( 0x40000, "gfx2", 0 )
834834   ROM_LOAD( "1.bin", 0x00000, 0x40000,  CRC(f6cf7ed6) SHA1(327580a17eb2740fad974a01d97dad0a4bef9881)  )
835835
836   ROM_REGION( 0x40000, "es", 0 )
836   ROM_REGION( 0x40000, "essnd", 0 )
837837   ROM_LOAD( "5.bin", 0x00000, 0x40000, CRC(62e42371) SHA1(5042abc2176d0c35fd6b698eca4145f93b0a3944) )
838838ROM_END
839839
src/mame/drivers/dynax.c
r6428r6429
540540   AM_RANGE( 0x74, 0x74 ) AM_WRITE      ( dynax_blitter_ack_w      )   // Blitter IRQ Ack
541541   AM_RANGE( 0x76, 0x76 ) AM_WRITE      ( dynax_blit_palbank_w      )   // Layers Palettes (High Bit)
542542   AM_RANGE( 0x77, 0x77 ) AM_WRITE      ( hanamai_layer_half_w      )   // half of the interleaved layer to write to
543   AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w   )   // 2 x DSW
544   AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE   ( "ay", ay8910_address_data_w   )   // AY8910
543   AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w   )   // 2 x DSW
544   AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE   ( "aysnd", ay8910_address_data_w   )   // AY8910
545545//  AM_RANGE( 0x7c, 0x7c ) AM_WRITE     ( SMH_NOP                  )   // CRT Controller
546546//  AM_RANGE( 0x7d, 0x7d ) AM_WRITE     ( SMH_NOP                  )   //
547547   AM_RANGE( 0x7e, 0x7e ) AM_WRITE      ( dynax_blit_romregion_w   )   // Blitter ROM bank
r6428r6429
562562   AM_RANGE( 0x26, 0x26 ) AM_READ_PORT   ( "DSW2"            )   // DSW3
563563   AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE   ( "msm", adpcm_reset_w    )   // MSM5205 reset
564564   AM_RANGE( 0x32, 0x32 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
565   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ym", ym2413_w   )   //
566   AM_RANGE( 0x36, 0x36 ) AM_DEVREAD   ( "ay", ay8910_r         )   // AY8910, DSW1
567   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "ay", ay8910_data_w   )   // AY8910
568   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "ay", ay8910_address_w   )   //
565   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
566   AM_RANGE( 0x36, 0x36 ) AM_DEVREAD   ( "aysnd", ay8910_r         )   // AY8910, DSW1
567   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w   )   // AY8910
568   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "aysnd", ay8910_address_w   )   //
569569   AM_RANGE( 0x40, 0x40 ) AM_WRITE   ( dynax_blit_pen_w         )   // Destination Pen
570570   AM_RANGE( 0x41, 0x41 ) AM_WRITE   ( dynax_blit_dest_w         )   // Destination Layer
571571   AM_RANGE( 0x42, 0x42 ) AM_WRITE   ( dynax_blit_palette01_w   )   // Layers Palettes
r6428r6429
645645
646646   AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE   ( "msm", adpcm_reset_w    )   // MSM5205 reset
647647   AM_RANGE( 0x32, 0x32 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
648   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ym", ym2413_w         )   //
648   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w         )   //
649649
650   AM_RANGE( 0x36, 0x36 ) AM_DEVREAD   ( "ay", ay8910_r      )   // AY8910, DSW1
651   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "ay", ay8910_data_w   )   // AY8910
652   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "ay", ay8910_address_w)   //
650   AM_RANGE( 0x36, 0x36 ) AM_DEVREAD   ( "aysnd", ay8910_r      )   // AY8910, DSW1
651   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w   )   // AY8910
652   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "aysnd", ay8910_address_w)   //
653653
654654   AM_RANGE( 0x40, 0x40 ) AM_WRITE   ( dynax_blit_pen_w         )   // Destination Pen
655655   AM_RANGE( 0x41, 0x41 ) AM_WRITE   ( dynax_blit_dest_w         )   // Destination Layer
r6428r6429
781781   AM_RANGE( 0x11, 0x17 ) AM_WRITE   ( dynax_blitter_rev2_w      )   // Blitter
782782   AM_RANGE( 0x20, 0x20 ) AM_DEVWRITE   ( "msm", adpcm_reset_w   )   // MSM5205 reset
783783   AM_RANGE( 0x22, 0x22 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
784   AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE( "ym", ym2413_w   )   //
785   AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE   ( "ay", ay8910_data_w   )   // AY8910
786   AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE   ( "ay", ay8910_address_w   )   //
784   AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
785   AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w   )   // AY8910
786   AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE   ( "aysnd", ay8910_address_w   )   //
787787   AM_RANGE( 0x48, 0x48 ) AM_WRITE   ( dynax_extra_scrollx_w      )   // screen scroll X
788788   AM_RANGE( 0x49, 0x49 ) AM_WRITE   ( dynax_extra_scrolly_w      )   // screen scroll Y
789789   AM_RANGE( 0x4a, 0x4a ) AM_WRITE   ( yarunara_rombank_w      )   // BANK ROM Select
r6428r6429
820820   AM_RANGE( 0x26, 0x26 ) AM_READ_PORT   ( "DSW1"            )   // DSW3
821821   AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE   ( "msm", adpcm_reset_w   )   // MSM5205 reset
822822   AM_RANGE( 0x32, 0x32 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
823   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ym", ym2413_w   )   //
824   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "ay", ay8910_data_w   )   // AY8910
825   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "ay", ay8910_address_w   )   //
823   AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
824   AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w   )   // AY8910
825   AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE   ( "aysnd", ay8910_address_w   )   //
826826   AM_RANGE( 0x40, 0x40 ) AM_WRITE   ( dynax_blit_pen_w         )   // Destination Pen
827827   AM_RANGE( 0x41, 0x41 ) AM_WRITE   ( dynax_blit_dest_w         )   // Destination Layer
828828   AM_RANGE( 0x42, 0x42 ) AM_WRITE   ( dynax_blit_palette01_w   )   // Layers Palettes
r6428r6429
848848static ADDRESS_MAP_START( sprtmtch_io_map, ADDRESS_SPACE_IO, 8 )
849849   ADDRESS_MAP_GLOBAL_MASK(0xff)
850850   AM_RANGE( 0x01, 0x07 ) AM_WRITE      ( dynax_blitter_rev2_w      )   // Blitter
851   AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w   )   // 2 x DSW
851   AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w   )   // 2 x DSW
852852//  AM_RANGE( 0x12, 0x12 ) AM_WRITE     ( SMH_NOP                   )   // CRT Controller
853853//  AM_RANGE( 0x13, 0x13 ) AM_WRITE     ( SMH_NOP                   )   // CRT Controller
854854   AM_RANGE( 0x20, 0x20 ) AM_READ_PORT   ( "P1"                  )   // P1
r6428r6429
894894   AM_RANGE( 0x63, 0x63 ) AM_READ   ( hanamai_keyboard_0_r      )   // P1
895895   AM_RANGE( 0x64, 0x64 ) AM_READ_PORT   ( "DSW0"            )   // DSW
896896   AM_RANGE( 0x67, 0x67 ) AM_READ_PORT   ( "DSW1"            )   // DSW
897   AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE ( "ym", ym2413_w )   //
897   AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE ( "ymsnd", ym2413_w )   //
898898//  AM_RANGE( 0x80, 0x80 ) AM_WRITE ( SMH_NOP                   )   // IRQ ack?
899899ADDRESS_MAP_END
900900
r6428r6429
903903   ADDRESS_MAP_GLOBAL_MASK(0xff)
904904   AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE   ( "msm", adpcm_reset_w   )   // MSM5205 reset
905905   AM_RANGE( 0x02, 0x02 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
906   AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ym", ym2413_w   )   //
907   AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE   ( "ay", ay8910_data_w   )   // AY8910
908   AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE   ( "ay", ay8910_address_w   )   //
906   AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
907   AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w   )   // AY8910
908   AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE   ( "aysnd", ay8910_address_w   )   //
909909   AM_RANGE( 0x10, 0x10 ) AM_WRITE   ( hanamai_keyboard_w      )   // keyboard row select
910910   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT   ( "COINS"            )   // Coins
911911   AM_RANGE( 0x12, 0x12 ) AM_READ   ( hanamai_keyboard_1_r      )   // P2
r6428r6429
10311031   ADDRESS_MAP_GLOBAL_MASK(0xff)
10321032   AM_RANGE( 0x00, 0x00 ) AM_WRITE      ( jantouki_sound_rombank_w      )   // BANK ROM Select
10331033   AM_RANGE( 0x10, 0x10 ) AM_WRITE      ( jantouki_sound_vblank_ack_w   )   // VBlank IRQ Ack
1034   AM_RANGE( 0x21, 0x21 ) AM_DEVREAD   ( "ay", ay8910_r         )   // AY8910
1035   AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE   ( "ay", ay8910_data_address_w )   //
1036   AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   //
1034   AM_RANGE( 0x21, 0x21 ) AM_DEVREAD   ( "aysnd", ay8910_r         )   // AY8910
1035   AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE   ( "aysnd", ay8910_data_address_w )   //
1036   AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)   //
10371037   AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE   ( "msm", adpcm_reset_w   )   // MSM5205 reset
10381038   AM_RANGE( 0x40, 0x40 ) AM_WRITE      ( adpcm_data_w               )   // MSM5205 data
10391039   AM_RANGE( 0x50, 0x50 ) AM_READ      ( jantouki_soundlatch_status_r   )   // Soundlatch status
r6428r6429
10691069   ADDRESS_MAP_GLOBAL_MASK(0xff)
10701070   AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE   ( "msm", adpcm_reset_w   )   // MSM5205 reset
10711071   AM_RANGE( 0x02, 0x02 ) AM_WRITE   ( adpcm_data_w            )   // MSM5205 data
1072   AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ym", ym2413_w   )   //
1073   AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE( "ay", ay8910_data_w   )   // AY8910
1074   AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE( "ay", ay8910_address_w   )   //
1072   AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
1073   AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE( "aysnd", ay8910_data_w   )   // AY8910
1074   AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE( "aysnd", ay8910_address_w   )   //
10751075   AM_RANGE( 0x11, 0x12 ) AM_WRITE   ( mjelctrn_blitter_ack_w   )   //?
10761076//  AM_RANGE( 0x20, 0x20 ) AM_WRITE ( SMH_NOP                  )   // CRT Controller
10771077//  AM_RANGE( 0x21, 0x21 ) AM_WRITE ( SMH_NOP                  )   // CRT Controller
r6428r6429
12131213   AM_RANGE( 0x21, 0x21 ) AM_WRITE ( htengoku_coin_w         )   //
12141214   AM_RANGE( 0x22, 0x22 ) AM_READ   ( htengoku_coin_r         )   //
12151215   AM_RANGE( 0x23, 0x23 ) AM_READ   ( htengoku_input_r         )   //
1216   AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE   ( "ay", ay8910_address_w   )   // AY8910
1217   AM_RANGE( 0x42, 0x42 ) AM_DEVREAD  ( "ay", ay8910_r      )   //
1218   AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE   ( "ay", ay8910_data_w)   //
1219   AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE( "ym", ym2413_w   )   //
1216   AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE   ( "aysnd", ay8910_address_w   )   // AY8910
1217   AM_RANGE( 0x42, 0x42 ) AM_DEVREAD  ( "aysnd", ay8910_r      )   //
1218   AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE   ( "aysnd", ay8910_data_w)   //
1219   AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE( "ymsnd", ym2413_w   )   //
12201220   AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
12211221   AM_RANGE( 0xa0, 0xa3 ) AM_WRITE ( ddenlovr_palette_base_w      )   // ddenlovr mixer chip
12221222   AM_RANGE( 0xa4, 0xa7 ) AM_WRITE ( ddenlovr_palette_mask_w      )
r6428r6429
14871487   AM_RANGE(  0x6000,  0x6fff ) AM_RAM
14881488   AM_RANGE(  0x7000,  0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
14891489   AM_RANGE(  0x8000,  0xffff ) AM_READWRITE( tenkai_8000_r, tenkai_8000_w )
1490   AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD ( "ay", ay8910_r         )   // AY8910
1491   AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE( "ay", ay8910_data_w   )   //
1492   AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE( "ay", ay8910_address_w   )   //
1493   AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ym", ym2413_w   )   //
1490   AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD ( "aysnd", ay8910_r         )   // AY8910
1491   AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE( "aysnd", ay8910_data_w   )   //
1492   AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE( "aysnd", ay8910_address_w   )   //
1493   AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ymsnd", ym2413_w   )   //
14941494   AM_RANGE( 0x10040, 0x10040 ) AM_WRITE( dynax_blit_pen_w         )   // Destination Pen
14951495   AM_RANGE( 0x10044, 0x10044 ) AM_WRITE( tenkai_blit_dest_w      )   // Destination Layer
14961496   AM_RANGE( 0x10048, 0x10048 ) AM_WRITE( tenkai_blit_palette23_w   )   // Layers Palettes
r6428r6429
16361636         case 0x8050:   // CRT controller
16371637         case 0x8051:   return;
16381638
1639         case 0x8070:   ym2413_register_port_w(devtag_get_device(space->machine, "ym"), 0, data);   return;
1640         case 0x8071:   ym2413_data_port_w    (devtag_get_device(space->machine, "ym"), 0, data);   return;
1639         case 0x8070:   ym2413_register_port_w(devtag_get_device(space->machine, "ymsnd"), 0, data);   return;
1640         case 0x8071:   ym2413_data_port_w    (devtag_get_device(space->machine, "ymsnd"), 0, data);   return;
16411641
16421642         case 0x8060:   keyb = data;   return;
16431643
r6428r6429
42084208   /* sound hardware */
42094209   MDRV_SPEAKER_STANDARD_MONO("mono")
42104210
4211   MDRV_SOUND_ADD("ay", AY8910, 22000000 / 8)
4211   MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 8)
42124212   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
42134213
4214   MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8)
4214   MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8)
42154215   MDRV_SOUND_CONFIG(hanamai_ym2203_interface)
42164216   MDRV_SOUND_ROUTE(0, "mono", 0.20)
42174217   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
42644264   /* sound hardware */
42654265   MDRV_SPEAKER_STANDARD_MONO("mono")
42664266
4267   MDRV_SOUND_ADD("ay", AY8910, 22000000 / 16)
4267   MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 16)
42684268   MDRV_SOUND_CONFIG(hnoridur_ay8910_interface)
42694269   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
42704270
4271   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4271   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
42724272   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
42734273
42744274   MDRV_SOUND_ADD("msm", MSM5205, 384000)
r6428r6429
43094309   /* sound hardware */
43104310   MDRV_SPEAKER_STANDARD_MONO("mono")
43114311
4312   MDRV_SOUND_ADD("ay", AY8910, XTAL_22MHz / 16)
4312   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_22MHz / 16)
43134313   MDRV_SOUND_CONFIG(hnoridur_ay8910_interface)
43144314   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
43154315
4316   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz )
4316   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz )
43174317   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
43184318
43194319   MDRV_SOUND_ADD("msm", MSM5205, XTAL_384kHz )
r6428r6429
43664366   /* sound hardware */
43674367   MDRV_SPEAKER_STANDARD_MONO("mono")
43684368
4369   MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8)
4369   MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8)
43704370   MDRV_SOUND_CONFIG(sprtmtch_ym2203_interface)
43714371   MDRV_SOUND_ROUTE(0, "mono", 0.20)
43724372   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
44064406   /* sound hardware */
44074407   MDRV_SPEAKER_STANDARD_MONO("mono")
44084408
4409   MDRV_SOUND_ADD("ym", YM2413, 24000000/6)
4409   MDRV_SOUND_ADD("ymsnd", YM2413, 24000000/6)
44104410   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
44114411MACHINE_DRIVER_END
44124412
r6428r6429
45614561   /* sound hardware */
45624562   MDRV_SPEAKER_STANDARD_MONO("mono")
45634563
4564   MDRV_SOUND_ADD("ay", AY8910, 22000000 / 8)
4564   MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 8)
45654565   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
45664566
4567   MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8)
4567   MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8)
45684568   MDRV_SOUND_CONFIG(jantouki_ym2203_interface)
45694569   MDRV_SOUND_ROUTE(0, "mono", 0.20)
45704570   MDRV_SOUND_ROUTE(1, "mono", 0.20)
r6428r6429
47154715   /* sound hardware */
47164716   MDRV_SPEAKER_STANDARD_MONO("mono")
47174717
4718   MDRV_SOUND_ADD("ay", AY8910, 20000000 / 16)
4718   MDRV_SOUND_ADD("aysnd", AY8910, 20000000 / 16)
47194719   MDRV_SOUND_CONFIG(htengoku_ay8910_interface)
47204720   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
47214721
4722   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4722   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
47234723   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
47244724
47254725   /* devices */
r6428r6429
47764776   /* sound hardware */
47774777   MDRV_SPEAKER_STANDARD_MONO("mono")
47784778
4779   MDRV_SOUND_ADD("ay", AY8910, 22000000 / 16)
4779   MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 16)
47804780   MDRV_SOUND_CONFIG(tenkai_ay8910_interface)
47814781   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
47824782
4783   MDRV_SOUND_ADD("ym", YM2413, 3579545)
4783   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
47844784   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
47854785
47864786   /* devices */
r6428r6429
48304830   /* sound hardware */
48314831   MDRV_SPEAKER_STANDARD_MONO("mono")
48324832
4833   MDRV_SOUND_ADD("ay", AY8910, XTAL_24MHz / 16)   // ?
4833   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_24MHz / 16)   // ?
48344834   MDRV_SOUND_CONFIG(tenkai_ay8910_interface)
48354835   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
48364836
4837   MDRV_SOUND_ADD("ym", YM2413, XTAL_24MHz / 8)   // ?
4837   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_24MHz / 8)   // ?
48384838   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
48394839MACHINE_DRIVER_END
48404840
src/mame/drivers/shootout.c
r6428r6429
9595   AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2")
9696   AM_RANGE(0x1800, 0x1800) AM_WRITE(shootout_coin_counter_w)
9797   AM_RANGE(0x2000, 0x21ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
98   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
98   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym2203_r,ym2203_w)
9999   AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram)
100100   AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(shootout_videoram_w) AM_BASE(&videoram)
101101   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
r6428r6429
106106
107107static ADDRESS_MAP_START( shootout_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
108108   AM_RANGE(0x0000, 0x07ff) AM_RAM
109   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
109   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_r,ym2203_w)
110110   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
111111   AM_RANGE(0xc000, 0xffff) AM_ROM
112112   AM_RANGE(0xd000, 0xd000) AM_WRITE(interrupt_enable_w)
r6428r6429
296296   /* sound hardware */
297297   MDRV_SPEAKER_STANDARD_MONO("mono")
298298
299   MDRV_SOUND_ADD("ym", YM2203, 1500000)
299   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
300300   MDRV_SOUND_CONFIG(ym2203_config)
301301   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
302302MACHINE_DRIVER_END
r6428r6429
326326   /* sound hardware */
327327   MDRV_SPEAKER_STANDARD_MONO("mono")
328328
329   MDRV_SOUND_ADD("ym", YM2203, 1500000)
329   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
330330   MDRV_SOUND_CONFIG(ym2203_interface2)
331331   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
332332MACHINE_DRIVER_END
src/mame/drivers/volfied.c
r6428r6429
9191   AM_RANGE(0x8000, 0x87ff) AM_RAM
9292   AM_RANGE(0x8800, 0x8800) AM_WRITE(taitosound_slave_port_w)
9393   AM_RANGE(0x8801, 0x8801) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
94   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
94   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
9595   AM_RANGE(0x9800, 0x9800) AM_WRITENOP    /* ? */
9696ADDRESS_MAP_END
9797
r6428r6429
272272   /* sound hardware */
273273   MDRV_SPEAKER_STANDARD_MONO("mono")
274274
275   MDRV_SOUND_ADD("ym", YM2203, 4000000)
275   MDRV_SOUND_ADD("ymsnd", YM2203, 4000000)
276276   MDRV_SOUND_CONFIG(ym2203_config)
277277   MDRV_SOUND_ROUTE(0, "mono", 0.15)
278278   MDRV_SOUND_ROUTE(1, "mono", 0.15)
src/mame/drivers/megadriv.c
r6428r6429
983983      case 0x12:
984984      case 0x14:
985985      case 0x16:
986         if (ACCESSING_BITS_0_7) sn76496_w(devtag_get_device(space->machine, "sn"), 0, data & 0xff);
987         //if (ACCESSING_BITS_8_15) sn76496_w(devtag_get_device(space->machine, "sn"), 0, (data >>8) & 0xff);
986         if (ACCESSING_BITS_0_7) sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data & 0xff);
987         //if (ACCESSING_BITS_8_15) sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, (data >>8) & 0xff);
988988         break;
989989
990990      default:
r6428r6429
19681968
19691969   AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram,megadriv_68k_write_z80_ram)
19701970   AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
1971   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ym", megadriv_68k_YM2612_read,megadriv_68k_YM2612_write, 0xffff)
1971   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ymsnd", megadriv_68k_YM2612_read,megadriv_68k_YM2612_write, 0xffff)
19721972
19731973   AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
19741974
r6428r6429
20872087   {
20882088      devtag_reset( machine, "genesis_snd_z80" );
20892089      cputag_suspend( machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
2090      devtag_reset( machine, "ym" );
2090      devtag_reset( machine, "ymsnd" );
20912091   }
20922092   else
20932093   {
r6428r6429
22492249      case 0x13:
22502250      case 0x15:
22512251      case 0x17:
2252         sn76496_w(devtag_get_device(space->machine, "sn"), 0, data);
2252         sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data);
22532253         break;
22542254
22552255      default:
r6428r6429
22802280   else if (fulladdress == 0xc00011)
22812281   {
22822282      /* quite a few early games write here, most of the later ones don't */
2283      sn76496_w(devtag_get_device(space->machine, "sn"), 0, data);
2283      sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data);
22842284   }
22852285   else
22862286   {
r6428r6429
23032303
23042304static ADDRESS_MAP_START( megadriv_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
23052305   AM_RANGE(0x0000, 0x1fff) AM_RAMBANK(1) AM_MIRROR(0x2000) // RAM can be accessed by the 68k
2306   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ym", ym2612_r,ym2612_w)
2306   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ymsnd", ym2612_r,ym2612_w)
23072307
23082308   AM_RANGE(0x6000, 0x6000) AM_WRITE(megadriv_z80_z80_bank_w)
23092309   AM_RANGE(0x6001, 0x6001) AM_WRITE(megadriv_z80_z80_bank_w) // wacky races uses this address
r6428r6429
23302330
23312331   AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram)
23322332   AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
2333   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ym", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
2333   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ymsnd", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
23342334   AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
23352335
23362336   AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write)
r6428r6429
60906090   /* sound hardware */
60916091   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
60926092
6093   MDRV_SOUND_ADD("ym", YM2612, MASTER_CLOCK_NTSC/7) /* 7.67 MHz */
6093   MDRV_SOUND_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7) /* 7.67 MHz */
60946094   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
60956095   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
60966096
60976097   /* sound hardware */
6098   MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK_NTSC/15)
6098   MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK_NTSC/15)
60996099   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */
61006100   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */
61016101MACHINE_DRIVER_END
r6428r6429
61346134   /* sound hardware */
61356135   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
61366136
6137   MDRV_SOUND_ADD("ym", YM2612, MASTER_CLOCK_PAL/7) /* 7.67 MHz */
6137   MDRV_SOUND_ADD("ymsnd", YM2612, MASTER_CLOCK_PAL/7) /* 7.67 MHz */
61386138   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
61396139   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
61406140
61416141   /* sound hardware */
6142   MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK_PAL/15)
6142   MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK_PAL/15)
61436143   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */
61446144   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */
61456145MACHINE_DRIVER_END
r6428r6429
64026402/* sets the megadrive z80 to it's normal ports / map */
64036403void megatech_set_megadrive_z80_as_megadrive_z80(running_machine *machine, const char* tag)
64046404{
6405   const device_config *ym = devtag_get_device(machine, "ym");
6405   const device_config *ym = devtag_get_device(machine, "ymsnd");
64066406
64076407   /* INIT THE PORTS *********************************************************************************************/
64086408   memory_install_readwrite8_handler(cputag_get_address_space(machine, tag, ADDRESS_SPACE_IO), 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w);
src/mame/drivers/mexico86.c
r6428r6429
8686   AM_RANGE(0x0000, 0x7fff) AM_ROM
8787   AM_RANGE(0x8000, 0xa7ff) AM_RAM AM_SHARE(1)
8888   AM_RANGE(0xa800, 0xbfff) AM_RAM
89   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", kiki_ym2203_r,ym2203_w)
89   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", kiki_ym2203_r,ym2203_w)
9090ADDRESS_MAP_END
9191
9292static ADDRESS_MAP_START( mexico86_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
430430   /* sound hardware */
431431   MDRV_SPEAKER_STANDARD_MONO("mono")
432432
433   MDRV_SOUND_ADD("ym", YM2203, 3000000)
433   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
434434   MDRV_SOUND_CONFIG(ym2203_config)
435435   MDRV_SOUND_ROUTE(0, "mono", 0.30)
436436   MDRV_SOUND_ROUTE(1, "mono", 0.30)
src/mame/drivers/calchase.c
r6428r6429
148148
149149static READ8_DEVICE_HANDLER(at_dma8237_2_r)
150150{
151   return dma8237_r(device, offset / 2);
151   return i8237_r(device, offset / 2);
152152}
153153
154154static WRITE8_DEVICE_HANDLER(at_dma8237_2_w)
155155{
156   dma8237_w(device, offset / 2, data);
156   i8237_w(device, offset / 2, data);
157157}
158158
159159static READ32_DEVICE_HANDLER(at32_dma8237_2_r)
r6428r6429
166166   write32le_with_write8_device_handler(at_dma8237_2_w, device, offset, data, mem_mask);
167167}
168168
169static int dma_channel;
169170static UINT8 dma_offset[2][4];
170171static UINT8 at_pages[0x10];
171172
r6428r6429
213214}
214215
215216
216static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
217static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
217218{
218219   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
219220
220221   /* Assert HLDA */
221   dma8237_set_hlda( device, state );
222   i8237_hlda_w( device, state );
222223}
223224
224225
225static DMA8237_MEM_READ( pc_dma_read_byte )
226static READ8_HANDLER( pc_dma_read_byte )
226227{
227   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
228   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
228   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
229229      & 0xFF0000;
230230
231231   return memory_read_byte(space, page_offset + offset);
232232}
233233
234234
235static DMA8237_MEM_WRITE( pc_dma_write_byte )
235static WRITE8_HANDLER( pc_dma_write_byte )
236236{
237   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
238   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
237   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
239238      & 0xFF0000;
240239
241240   memory_write_byte(space, page_offset + offset, data);
242241}
243242
244
245static const struct dma8237_interface dma8237_1_config =
243static void set_dma_channel(const device_config *device, int channel, int state)
246244{
247   XTAL_14_31818MHz/3,
245   if (!state) dma_channel = channel;
246}
248247
249   pc_dma_hrq_changed,
250   pc_dma_read_byte,
251   pc_dma_write_byte,
248static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
249static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
250static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
251static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
252252
253   { NULL, NULL, NULL, NULL },
254   { NULL, NULL, NULL, NULL },
255   NULL
253static I8237_INTERFACE( dma8237_1_config )
254{
255   DEVCB_LINE(pc_dma_hrq_changed),
256   DEVCB_NULL,
257   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
258   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
259   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
260   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
261   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
256262};
257263
258
259static const struct dma8237_interface dma8237_2_config =
264static I8237_INTERFACE( dma8237_2_config )
260265{
261   XTAL_14_31818MHz/3,
262
263   NULL,
264   NULL,
265   NULL,
266
267   { NULL, NULL, NULL, NULL },
268   { NULL, NULL, NULL, NULL },
269   NULL
266   DEVCB_NULL,
267   DEVCB_NULL,
268   DEVCB_NULL,
269   DEVCB_NULL,
270   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
271   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
272   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
270273};
271274
272275static READ32_HANDLER(at_page32_r)
r6428r6429
471474ADDRESS_MAP_END
472475
473476static ADDRESS_MAP_START( calchase_io, ADDRESS_SPACE_IO, 32)
474   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
477   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
475478   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
476479   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
477480   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r6428r6429
660663   MDRV_MACHINE_RESET(calchase)
661664
662665   MDRV_PIT8254_ADD( "pit8254", calchase_pit8254_config )
663   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
664   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
666   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
667   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
665668   MDRV_PIC8259_ADD( "pic8259_1", calchase_pic8259_1_config )
666669   MDRV_PIC8259_ADD( "pic8259_2", calchase_pic8259_2_config )
667670   MDRV_IDE_CONTROLLER_ADD("ide", ide_interrupt)
src/mame/drivers/ashnojoe.c
r6428r6429
163163
164164static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
165165   ADDRESS_MAP_GLOBAL_MASK(0xff)
166   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
166   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
167167   AM_RANGE(0x02, 0x02) AM_WRITE(adpcm_w)
168168   AM_RANGE(0x04, 0x04) AM_READ(sound_latch_r)
169169   AM_RANGE(0x06, 0x06) AM_READ(sound_latch_status_r)
r6428r6429
378378   /* sound hardware */
379379   MDRV_SPEAKER_STANDARD_MONO("mono")
380380
381   MDRV_SOUND_ADD("ym", YM2203, 4000000)
381   MDRV_SOUND_ADD("ymsnd", YM2203, 4000000)
382382   MDRV_SOUND_CONFIG(ym2203_config)
383383   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1)
384384
src/mame/drivers/gaiden.c
r6428r6429
434434
435435static ADDRESS_MAP_START( drgnbowl_sound_port_map, ADDRESS_SPACE_IO, 8 )
436436   ADDRESS_MAP_GLOBAL_MASK(0xff)
437   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
437   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
438438   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
439439   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
440440ADDRESS_MAP_END
r6428r6429
932932   /* sound hardware */
933933   MDRV_SPEAKER_STANDARD_MONO("mono")
934934
935   MDRV_SOUND_ADD("ym", YM2151, 4000000)
935   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
936936   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
937937
938938   MDRV_SOUND_ADD("oki", OKIM6295, 1000000)
src/mame/drivers/aleck64.c
r6428r6429
473473   ROM_REGION32_BE( 0x4000000, "user2", ROMREGION_ERASE00 )
474474   ROM_REGION32_BE( 0x100000, "user3", ROMREGION_ERASE00 )
475475   ROM_REGION32_BE( 0x80, "user4", ROMREGION_ERASE00 )
476
477   ROM_REGION16_BE( 0x80, "normpoint", 0 )
478    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
479
480   ROM_REGION16_BE( 0x80, "normslope", 0 )
481    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
476482ROM_END
477483
478484ROM_START( 11beat )
r6428r6429
481487
482488   ROM_REGION32_BE( 0x4000000, "user2", 0 )
483489   ROM_LOAD16_WORD_SWAP( "nus-zhaj.u3", 0x000000, 0x0800000,  CRC(95258ba2) SHA1(0299b8fb9a8b1b24428d0f340f6bf1cfaf99c672) )
490
491   ROM_REGION16_BE( 0x80, "normpoint", 0 )
492    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
493
494   ROM_REGION16_BE( 0x80, "normslope", 0 )
495    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
484496ROM_END
485497
486498ROM_START( mtetrisc )
r6428r6429
495507
496508   ROM_REGION32_BE( 0x80, "user4", 0 )
497509   ROM_LOAD ( "at24c01.u34", 0x000000, 0x80,  CRC(ba7e503f) SHA1(454aa4fdde7d8694d1affaf25cd750fa678686bb) )
510
511   ROM_REGION16_BE( 0x80, "normpoint", 0 )
512    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
513
514   ROM_REGION16_BE( 0x80, "normslope", 0 )
515    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
498516ROM_END
499517
500518
r6428r6429
513531   ROM_REGION32_BE( 0x4000000, "user2", 0 )
514532   ROM_LOAD16_WORD_SWAP( "nus-zhbj-0.u3", 0x000000, 0xc00000,  CRC(a4edac93) SHA1(3794606c008fb69f5d16dcccece94d03da23bf8a) )
515533
534   ROM_REGION16_BE( 0x80, "normpoint", 0 )
535    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
536
537   ROM_REGION16_BE( 0x80, "normslope", 0 )
538    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
539
516540ROM_END
517541
518542ROM_START( srmvs )
r6428r6429
522546   ROM_REGION32_BE( 0x4000000, "user2", 0 )
523547   ROM_LOAD16_WORD_SWAP( "nus-zsej-0.u2", 0x000000, 0x2000000,  CRC(44f40102) SHA1(a78de955f2fcd99dda14e782984368b320eb5415) )
524548
549   ROM_REGION16_BE( 0x80, "normpoint", 0 )
550    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
551
552   ROM_REGION16_BE( 0x80, "normslope", 0 )
553    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
554
525555ROM_END
526556
527557
r6428r6429
540570   ROM_REGION32_BE( 0x4000000, "user2", 0 )
541571   ROM_LOAD16_WORD_SWAP( "nus-zsaj-0.u3", 0x000000, 0x800000,  CRC(f3220e29) SHA1(06d8b808cc19378b046803f4dc75c7d791b7767f) )
542572
573   ROM_REGION16_BE( 0x80, "normpoint", 0 )
574    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
575
576   ROM_REGION16_BE( 0x80, "normslope", 0 )
577    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
578
543579ROM_END
544580
545581
r6428r6429
564600
565601   ROM_REGION32_BE( 0x800000, "user3", 0 )
566602   ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000,  CRC(2389576f) SHA1(dc22b2eab4d7a02cb918827a62e6c120b3a84e6c) )
603
604   ROM_REGION16_BE( 0x80, "normpoint", 0 )
605    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
606
607   ROM_REGION16_BE( 0x80, "normslope", 0 )
608    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
567609ROM_END
568610
569611
r6428r6429
577619
578620   ROM_REGION32_BE( 0x800000, "user3", 0 )
579621   ROM_LOAD16_WORD_SWAP( "nus-nsij-0.u1", 0x000000, 0x800000,  CRC(94cf9f8d) SHA1(cd624d1f5de2be3bec3ece06556a2e39bef66d77) )
622
623   ROM_REGION16_BE( 0x80, "normpoint", 0 )
624    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
625
626   ROM_REGION16_BE( 0x80, "normslope", 0 )
627    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
580628ROM_END
581629
582630
r6428r6429
590638
591639   ROM_REGION32_BE( 0x800000, "user3", 0 )
592640   ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000,   CRC(2389576f) SHA1(dc22b2eab4d7a02cb918827a62e6c120b3a84e6c) ) // same as tower & shaft
641
642   ROM_REGION16_BE( 0x80, "normpoint", 0 )
643    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
644
645   ROM_REGION16_BE( 0x80, "normslope", 0 )
646    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
593647ROM_END
594648
595649ROM_START( kurufev )
r6428r6429
602656
603657   ROM_REGION32_BE( 0x800000, "user3", 0 )
604658   ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000, CRC(547d8122) SHA1(347f0785767265acb0f0c21646e06cbe6f561821) )
659
660   ROM_REGION16_BE( 0x80, "normpoint", 0 )
661    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
662
663   ROM_REGION16_BE( 0x80, "normslope", 0 )
664    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
605665ROM_END
606666
607667
r6428r6429
612672   ROM_REGION32_BE( 0x4000000, "user2", 0 )
613673   ROM_LOAD16_WORD_SWAP( "nus-zscj.u3", 0x000000, 0x800000,  CRC(8b36eb91) SHA1(179745625c16c6813d5f8d29bfd7628783d55806) )
614674
675   ROM_REGION16_BE( 0x80, "normpoint", 0 )
676    ROM_LOAD( "normpnt.rom", 0x00, 0x80, CRC(e7f2a005) SHA1(c27b4a364a24daeee6e99fd286753fd6216362b4) )
677
678   ROM_REGION16_BE( 0x80, "normslope", 0 )
679    ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) )
680
615681ROM_END
616682
617683
src/mame/drivers/trackfld.c
r6428r6429
222222   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_r)
223223   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(trackfld_sh_timer_r)
224224   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
225   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn", konami_SN76496_w)
225   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("snsnd", konami_SN76496_w)
226226   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_w)
227227   AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP         /* watch dog ?; reaktor reads here */
228228   AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("vlm", trackfld_speech_r)
r6428r6429
236236   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_r)
237237   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(trackfld_sh_timer_r)
238238   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w)
239   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn", konami_SN76496_w)
239   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("snsnd", konami_SN76496_w)
240240   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_w)
241241   AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP         /* watch dog ?; reaktor reads here */
242242   AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_READ(hyprolyb_adpcm_busy_r)
r6428r6429
723723   MDRV_SOUND_ADD("dac", DAC, 0)
724724   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
725725
726   MDRV_SOUND_ADD("sn", SN76496, SOUND_CLOCK/8)
726   MDRV_SOUND_ADD("snsnd", SN76496, SOUND_CLOCK/8)
727727   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
728728
729729   MDRV_SOUND_ADD("vlm", VLM5030, VLM_CLOCK)
src/mame/drivers/astrof.c
r6428r6429
6363
6464
6565
66static UINT8 *astrof_videoram;
67static size_t astrof_videoram_size;
68static UINT8 *astrof_colorram;
69static UINT8 *tomahawk_protection;
70
71static UINT8 *astrof_color;
72static UINT8 astrof_palette_bank;
73static UINT8 red_on;
74static UINT8 flipscreen;
75static UINT8 screen_off;
76
77static UINT16 abattle_count;
78
79
80
8166/*************************************
8267 *
8368 *  IRQ generation
r6428r6429
145130static CUSTOM_INPUT( tomahawk_controls_r )
146131{
147132   UINT32 ret;
133   astrof_state *state = (astrof_state *)field->port->machine->driver_data;
148134
149135   /* on a cocktail cabinet, two sets of controls are
150136       multiplexed on a single set of inputs
151137         (not verified on pcb) */
152138
153   if (flipscreen)
139   if (state->flipscreen)
154140      ret = input_port_read(field->port->machine, "P2");
155141   else
156142      ret = input_port_read(field->port->machine, "P1");
r6428r6429
172158
173159static VIDEO_START( astrof )
174160{
161   astrof_state *state = (astrof_state *)machine->driver_data;
162
175163   /* allocate the color RAM -- half the size of the video RAM as A0 is not connected */
176   astrof_colorram = auto_alloc_array(machine, UINT8, astrof_videoram_size / 2);
177   state_save_register_global_pointer(machine, astrof_colorram, astrof_videoram_size / 2);
164   state->colorram = auto_alloc_array(machine, UINT8, state->videoram_size / 2);
165   state_save_register_global_pointer(machine, state->colorram, state->videoram_size / 2);
178166}
179167
180168
181static rgb_t make_pen(UINT8 data)
169static rgb_t make_pen( running_machine *machine, UINT8 data )
182170{
183   UINT8 r1_bit = red_on ? 0x01 : (data >> 0) & 0x01;
184   UINT8 r2_bit = red_on ? 0x01 : (data >> 1) & 0x01;
185   UINT8 g1_bit =                 (data >> 2) & 0x01;
186   UINT8 g2_bit =                 (data >> 3) & 0x01;
187   UINT8 b1_bit =                 (data >> 4) & 0x01;
188   UINT8 b2_bit =                 (data >> 5) & 0x01;
171   astrof_state *state = (astrof_state *)machine->driver_data;
189172
173   UINT8 r1_bit = state->red_on ? 0x01 : (data >> 0) & 0x01;
174   UINT8 r2_bit = state->red_on ? 0x01 : (data >> 1) & 0x01;
175   UINT8 g1_bit = (data >> 2) & 0x01;
176   UINT8 g2_bit = (data >> 3) & 0x01;
177   UINT8 b1_bit = (data >> 4) & 0x01;
178   UINT8 b2_bit = (data >> 5) & 0x01;
179
190180   /* this is probably not quite right, but I don't have the
191181       knowledge to figure out the actual weights - ZV */
192182   UINT8 r = (0xc0 * r1_bit) + (0x3f * r2_bit);
r6428r6429
197187}
198188
199189
200static void astrof_get_pens(running_machine *machine, pen_t *pens)
190static void astrof_get_pens( running_machine *machine, pen_t *pens )
201191{
192   astrof_state *state = (astrof_state *)machine->driver_data;
202193   offs_t i;
203194   UINT8 *prom = memory_region(machine, "proms");
204195
205196   for (i = 0; i < ASTROF_NUM_PENS; i++)
206197   {
207      UINT8 data = prom[(astrof_palette_bank ? 0x10 : 0x00) | i];
198      UINT8 data = prom[(state->astrof_palette_bank ? 0x10 : 0x00) | i];
208199
209      pens[i] = make_pen(data);
200      pens[i] = make_pen(machine, data);
210201   }
211202}
212203
213204
214static void tomahawk_get_pens(running_machine *machine, pen_t *pens)
205static void tomahawk_get_pens( running_machine *machine, pen_t *pens )
215206{
216207   offs_t i;
217208   UINT8 *prom = memory_region(machine, "proms");
r6428r6429
220211   {
221212      UINT8 data = prom[i];
222213
223      pens[i] = make_pen(data);
214      pens[i] = make_pen(machine, data);
224215   }
225216}
226217
227218
228219static WRITE8_HANDLER( astrof_videoram_w )
229220{
230   astrof_videoram[offset] = data;
231   astrof_colorram[offset >> 1] = *astrof_color & 0x0e;
221   astrof_state *state = (astrof_state *)space->machine->driver_data;
222
223   state->videoram[offset] = data;
224   state->colorram[offset >> 1] = *state->astrof_color & 0x0e;
232225}
233226
234227
235228static WRITE8_HANDLER( tomahawk_videoram_w )
236229{
237   astrof_videoram[offset] = data;
238   astrof_colorram[offset >> 1] = (*astrof_color & 0x0e) | ((*astrof_color & 0x01) << 4);
230   astrof_state *state = (astrof_state *)space->machine->driver_data;
231
232   state->videoram[offset] = data;
233   state->colorram[offset >> 1] = (*state->astrof_color & 0x0e) | ((*state->astrof_color & 0x01) << 4);
239234}
240235
241236
242237static WRITE8_HANDLER( video_control_1_w )
243238{
244   flipscreen = ((data >> 0) & 0x01) & input_port_read(space->machine, "CAB");
239   astrof_state *state = (astrof_state *)space->machine->driver_data;
245240
241   state->flipscreen = ((data >> 0) & 0x01) & input_port_read(space->machine, "CAB");
242
246243   /* this ties to the CLR pin of the shift registers */
247   screen_off = (data & 0x02) ? TRUE : FALSE;
244   state->screen_off = (data & 0x02) ? TRUE : FALSE;
248245
249246   /* D2 - not connected in the schematics, but at one point Astro Fighter sets it to 1 */
250247   /* D3-D7 - not connected */
r6428r6429
253250}
254251
255252
256static void astrof_set_video_control_2(UINT8 data)
253static void astrof_set_video_control_2( running_machine *machine, UINT8 data )
257254{
255   astrof_state *state = (astrof_state *)machine->driver_data;
256
258257   /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */
259258   /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */
260259
261260   /* D2 - selects one of the two palette banks */
262   astrof_palette_bank = (data & 0x04) ? TRUE : FALSE;
261   state->astrof_palette_bank = (data & 0x04) ? TRUE : FALSE;
263262
264263   /* D3 - turns on the red color gun regardless of the value in the color PROM */
265   red_on = (data & 0x08) ? TRUE : FALSE;
264   state->red_on = (data & 0x08) ? TRUE : FALSE;
266265
267266   /* D4-D7 - not connected */
268267}
269268
270269static WRITE8_HANDLER( astrof_video_control_2_w )
271270{
272   astrof_set_video_control_2(data);
271   astrof_set_video_control_2(space->machine, data);
273272   video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen));
274273}
275274
276275
277static void spfghmk2_set_video_control_2(UINT8 data)
276static void spfghmk2_set_video_control_2( running_machine *machine, UINT8 data )
278277{
278   astrof_state *state = (astrof_state *)machine->driver_data;
279
279280   /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */
280281   /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */
281282
282283   /* D2 - selects one of the two palette banks */
283   astrof_palette_bank = (data & 0x04) ? TRUE : FALSE;
284   state->astrof_palette_bank = (data & 0x04) ? TRUE : FALSE;
284285
285286   /* D3-D7 - not connected */
286287}
287288
288289static WRITE8_HANDLER( spfghmk2_video_control_2_w )
289290{
290   spfghmk2_set_video_control_2(data);
291   spfghmk2_set_video_control_2(space->machine, data);
291292   video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen));
292293}
293294
294295
295static void tomahawk_set_video_control_2(UINT8 data)
296static void tomahawk_set_video_control_2( running_machine *machine, UINT8 data )
296297{
298   astrof_state *state = (astrof_state *)machine->driver_data;
299
297300   /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */
298301   /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */
299302   /* D2 - not connected */
300303
301304   /* D3 - turns on the red color gun regardless of the value in the color PROM */
302   red_on = (data & 0x08) ? TRUE : FALSE;
305   state->red_on = (data & 0x08) ? TRUE : FALSE;
303306}
304307
305308static WRITE8_HANDLER( tomahawk_video_control_2_w )
306309{
307   tomahawk_set_video_control_2(data);
310   tomahawk_set_video_control_2(space->machine, data);
308311   video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen));
309312}
310313
311314
312static void video_update_common(bitmap_t *bitmap, const rectangle *cliprect, pen_t *pens)
315static void video_update_common( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, pen_t *pens )
313316{
317   astrof_state *state = (astrof_state *)machine->driver_data;
314318   offs_t offs;
315319
316   for (offs = 0; offs < astrof_videoram_size; offs++)
320   for (offs = 0; offs < state->videoram_size; offs++)
317321   {
318322      UINT8 data;
319323      int i;
320324
321      UINT8 color = astrof_colorram[offs >> 1];
325      UINT8 color = state->colorram[offs >> 1];
322326
323327      pen_t back_pen = pens[color | 0x00];
324328      pen_t fore_pen = pens[color | 0x01];
r6428r6429
326330      UINT8 y = offs;
327331      UINT8 x = offs >> 8 << 3;
328332
329      if (!flipscreen)
333      if (!state->flipscreen)
330334         y = ~y;
331335
332336      if ((y <= cliprect->min_y) || (y >= cliprect->max_y))
333337         continue;
334338
335      if (screen_off)
339      if (state->screen_off)
336340         data = 0;
337341      else
338         data = astrof_videoram[offs];
342         data = state->videoram[offs];
339343
340344      for (i = 0; i < 8; i++)
341345      {
342346         pen_t pen = (data & 0x01) ? fore_pen : back_pen;
343347
344         if (flipscreen)
348         if (state->flipscreen)
345349            *BITMAP_ADDR32(bitmap, y, 255 - x) = pen;
346350         else
347351            *BITMAP_ADDR32(bitmap, y, x) = pen;
r6428r6429
359363
360364   astrof_get_pens(screen->machine, pens);
361365
362   video_update_common(bitmap, cliprect, pens);
366   video_update_common(screen->machine, bitmap, cliprect, pens);
363367
364368   return 0;
365369}
r6428r6429
371375
372376   tomahawk_get_pens(screen->machine, pens);
373377
374   video_update_common(bitmap, cliprect, pens);
378   video_update_common(screen->machine, bitmap, cliprect, pens);
375379
376380   return 0;
377381}
r6428r6429
393397
394398static READ8_HANDLER( abattle_coin_prot_r )
395399{
396   abattle_count = (abattle_count + 1) % 0x0101;
400   astrof_state *state = (astrof_state *)space->machine->driver_data;
397401
398   return abattle_count ? 0x07 : 0x00;
402   state->abattle_count = (state->abattle_count + 1) % 0x0101;
403   return state->abattle_count ? 0x07 : 0x00;
399404}
400405
401406
402407static READ8_HANDLER( afire_coin_prot_r )
403408{
404   abattle_count = abattle_count ^ 0x01;
409   astrof_state *state = (astrof_state *)space->machine->driver_data;
405410
406   return abattle_count ? 0x07 : 0x00;
411   state->abattle_count = state->abattle_count ^ 0x01;
412   return state->abattle_count ? 0x07 : 0x00;
407413}
408414
409415
410416static READ8_HANDLER( tomahawk_protection_r )
411417{
418   astrof_state *state = (astrof_state *)space->machine->driver_data;
419
412420   /* flip the byte */
413   return BITSWAP8(*tomahawk_protection, 0, 1, 2, 3, 4, 5, 6, 7);
421   return BITSWAP8(*state->tomahawk_protection, 0, 1, 2, 3, 4, 5, 6, 7);
414422}
415423
416424
r6428r6429
423431
424432static MACHINE_START( astrof )
425433{
434   astrof_state *state = (astrof_state *)machine->driver_data;
435
426436   /* the 74175 outputs all HI's if not otherwise set */
427   astrof_set_video_control_2(0xff);
437   astrof_set_video_control_2(machine, 0xff);
428438
439   state->samples = devtag_get_device(machine, "samples");
440
429441   /* register for state saving */
430   state_save_register_global(machine, red_on);
431   state_save_register_global(machine, flipscreen);
432   state_save_register_global(machine, screen_off);
433   state_save_register_global(machine, astrof_palette_bank);
434
435   MACHINE_START_CALL(astrof_audio);
442   state_save_register_global(machine, state->red_on);
443   state_save_register_global(machine, state->flipscreen);
444   state_save_register_global(machine, state->screen_off);
445   state_save_register_global(machine, state->astrof_palette_bank);
446   state_save_register_global(machine, state->port_1_last);
447   state_save_register_global(machine, state->port_2_last);
448   state_save_register_global(machine, state->astrof_start_explosion);
449   state_save_register_global(machine, state->astrof_death_playing);
450   state_save_register_global(machine, state->astrof_bosskill_playing);
436451}
437452
438453
439454static MACHINE_START( abattle )
440455{
456   astrof_state *state = (astrof_state *)machine->driver_data;
457
441458   /* register for state saving */
442   state_save_register_global(machine, abattle_count);
459   state_save_register_global(machine, state->abattle_count);
443460
444461   MACHINE_START_CALL(astrof);
445462}
r6428r6429
447464
448465static MACHINE_START( spfghmk2 )
449466{
467   astrof_state *state = (astrof_state *)machine->driver_data;
468
450469   /* the 74175 outputs all HI's if not otherwise set */
451   spfghmk2_set_video_control_2(0xff);
470   spfghmk2_set_video_control_2(machine, 0xff);
452471
453472   /* the red background circuit is disabled */
454   red_on = FALSE;
473   state->red_on = FALSE;
455474
456475   /* register for state saving */
457   state_save_register_global(machine, flipscreen);
458   state_save_register_global(machine, screen_off);
459   state_save_register_global(machine, astrof_palette_bank);
476   state_save_register_global(machine, state->flipscreen);
477   state_save_register_global(machine, state->screen_off);
478   state_save_register_global(machine, state->astrof_palette_bank);
460479}
461480
462481
463482static MACHINE_START( tomahawk )
464483{
484   astrof_state *state = (astrof_state *)machine->driver_data;
485
465486   /* the 74175 outputs all HI's if not otherwise set */
466   tomahawk_set_video_control_2(0xff);
487   tomahawk_set_video_control_2(machine, 0xff);
467488
489   state->sn = devtag_get_device(machine, "snsnd");
490
468491   /* register for state saving */
469   state_save_register_global(machine, red_on);
470   state_save_register_global(machine, flipscreen);
471   state_save_register_global(machine, screen_off);
492   state_save_register_global(machine, state->red_on);
493   state_save_register_global(machine, state->flipscreen);
494   state_save_register_global(machine, state->screen_off);
472495}
473496
474497
r6428r6429
481504
482505static MACHINE_RESET( abattle )
483506{
484   abattle_count = 0;
507   astrof_state *state = (astrof_state *)machine->driver_data;
508   state->abattle_count = 0;
485509}
486510
487511
r6428r6429
495519static ADDRESS_MAP_START( astrof_map, ADDRESS_SPACE_PROGRAM, 8 )
496520   AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
497521   AM_RANGE(0x2000, 0x3fff) AM_NOP
498   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE(&astrof_videoram) AM_SIZE(&astrof_videoram_size)
522   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE_MEMBER(astrof_state, videoram) AM_SIZE_MEMBER(astrof_state, videoram_size)
499523   AM_RANGE(0x6000, 0x7fff) AM_NOP
500524   AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
501   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE(&astrof_color)
525   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color)
502526   AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
503527   AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_video_control_2_w)
504528   AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_1_w)
r6428r6429
514538static ADDRESS_MAP_START( spfghmk2_map, ADDRESS_SPACE_PROGRAM, 8 )
515539   AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
516540   AM_RANGE(0x2000, 0x3fff) AM_NOP
517   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE(&astrof_videoram) AM_SIZE(&astrof_videoram_size)
541   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE_MEMBER(astrof_state, videoram) AM_SIZE_MEMBER(astrof_state, videoram_size)
518542   AM_RANGE(0x6000, 0x7fff) AM_NOP
519543   AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
520   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE(&astrof_color)
544   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color)
521545   AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
522546   AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_video_control_2_w)
523547   AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_audio_w)
r6428r6429
533557static ADDRESS_MAP_START( tomahawk_map, ADDRESS_SPACE_PROGRAM, 8 )
534558   AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
535559   AM_RANGE(0x2000, 0x3fff) AM_NOP
536   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_BASE(&astrof_videoram) AM_SIZE(&astrof_videoram_size)
560   AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_BASE_MEMBER(astrof_state, videoram) AM_SIZE_MEMBER(astrof_state, videoram_size)
537561   AM_RANGE(0x6000, 0x7fff) AM_NOP
538562   AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP
539   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE(&astrof_color)
563   AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color)
540564   AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w)
541565   AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_video_control_2_w)
542566   AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_audio_w)
543   AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE(&tomahawk_protection)
567   AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, tomahawk_protection)
544568   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
545569   AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
546570   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP
r6428r6429
844868
845869static MACHINE_DRIVER_START( base )
846870
871   /* driver data */
872   MDRV_DRIVER_DATA(astrof_state)
873
847874   /* basic machine hardware */
848875   MDRV_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK)
849876   MDRV_TIMER_ADD_SCANLINE("vblank", irq_callback, "screen", VBSTART, 0)
src/mame/drivers/tecmo.c
r6428r6429
234234static ADDRESS_MAP_START( rygar_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
235235   AM_RANGE(0x0000, 0x3fff) AM_ROM
236236   AM_RANGE(0x4000, 0x47ff) AM_RAM
237   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym", ym3812_w)
237   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_w)
238238   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) AM_DEVWRITE("msm", tecmo_adpcm_start_w)
239239   AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w)
240240   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", tecmo_adpcm_vol_w)
r6428r6429
246246                                    /* writes code to this area */
247247   AM_RANGE(0x0000, 0x7fff) AM_ROM
248248   AM_RANGE(0x8000, 0x87ff) AM_RAM
249   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym3812_w)
249   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_w)
250250   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) AM_DEVWRITE("msm", tecmo_adpcm_start_w)
251251   AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w)
252252   AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("msm", tecmo_adpcm_vol_w)
r6428r6429
704704   /* sound hardware */
705705   MDRV_SPEAKER_STANDARD_MONO("mono")
706706
707   MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz) /* verified on pcb */
707   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
708708   MDRV_SOUND_CONFIG(ym3812_config)
709709   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
710710
r6428r6429
763763   /* sound hardware */
764764   MDRV_SPEAKER_STANDARD_MONO("mono")
765765
766   MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz) /* verified on pcb */
766   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
767767   MDRV_SOUND_CONFIG(ym3812_config)
768768   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
769769
src/mame/drivers/finalizr.c
r6428r6429
117117   AM_RANGE(0x0813, 0x0813) AM_READ_PORT("DSW1")
118118   AM_RANGE(0x0818, 0x0818) AM_WRITE(watchdog_reset_w)
119119   AM_RANGE(0x0819, 0x0819) AM_WRITE(finalizr_coin_w)
120   AM_RANGE(0x081a, 0x081a) AM_DEVWRITE("sn", sn76496_w)   /* This address triggers the SN chip to read the data port. */
120   AM_RANGE(0x081a, 0x081a) AM_DEVWRITE("snsnd", sn76496_w)   /* This address triggers the SN chip to read the data port. */
121121   AM_RANGE(0x081b, 0x081b) AM_WRITENOP      /* Loads the snd command into the snd latch */
122122   AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w)   /* custom sound chip */
123123   AM_RANGE(0x081d, 0x081d) AM_WRITE(soundlatch_w)         /* custom sound chip */
r6428r6429
276276   /* sound hardware */
277277   MDRV_SPEAKER_STANDARD_MONO("mono")
278278
279   MDRV_SOUND_ADD("sn", SN76489A, XTAL_18_432MHz/12)
279   MDRV_SOUND_ADD("snsnd", SN76489A, XTAL_18_432MHz/12)
280280   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
281281
282282   MDRV_SOUND_ADD("dac", DAC, 0)
src/mame/drivers/enigma2.c
r6428r6429
445445   AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM AM_WRITENOP
446446   AM_RANGE(0x2000, 0x7fff) AM_NOP
447447   AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM
448   AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_address_data_w)
449   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVREAD("ay", ay8910_r)
448   AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_address_data_w)
449   AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_r)
450450   AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ffc) AM_NOP
451451   AM_RANGE(0xc000, 0xffff) AM_NOP
452452ADDRESS_MAP_END
r6428r6429
584584   /* audio hardware */
585585   MDRV_SPEAKER_STANDARD_MONO("mono")
586586
587   MDRV_SOUND_ADD("ay", AY8910, AY8910_CLOCK)
587   MDRV_SOUND_ADD("aysnd", AY8910, AY8910_CLOCK)
588588   MDRV_SOUND_CONFIG(ay8910_config)
589589   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
590590MACHINE_DRIVER_END
r6428r6429
614614   /* audio hardware */
615615   MDRV_SPEAKER_STANDARD_MONO("mono")
616616
617   MDRV_SOUND_ADD("ay", AY8910, AY8910_CLOCK)
617   MDRV_SOUND_ADD("aysnd", AY8910, AY8910_CLOCK)
618618   MDRV_SOUND_CONFIG(ay8910_config)
619619   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
620620MACHINE_DRIVER_END
src/mame/drivers/igspoker.c
r6428r6429
312312   AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w)
313313   AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE( igs_lamps_w )         /* Keyboard */
314314   AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")         /* Not connected */
315   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ym", ym2413_w)
315   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_w)
316316   AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
317317   AM_RANGE(0x6800, 0x6fff) AM_RAM_WRITE( bg_tile_w )  AM_BASE( &bg_tile_ram )
318318   AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE( fg_tile_w )  AM_BASE( &fg_tile_ram )
r6428r6429
15821582
15831583   /* sound hardware */
15841584   MDRV_SPEAKER_STANDARD_MONO("mono")
1585   MDRV_SOUND_ADD("ym", YM2413, 3579545)
1585   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
15861586   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
15871587
15881588MACHINE_DRIVER_END
src/mame/drivers/cowrace.c
r6428r6429
107107
108108static ADDRESS_MAP_START( io_map_sound_cowrace, ADDRESS_SPACE_IO, 8 )
109109   ADDRESS_MAP_GLOBAL_MASK(0xff)
110   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym", ym2203_w)
110   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym2203_w)
111111ADDRESS_MAP_END
112112
113113
r6428r6429
225225   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
226226   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
227227
228   MDRV_SOUND_ADD("ym", YM2203, 3000000)
228   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
229229   MDRV_SOUND_CONFIG(ym2203_interface_1)
230230   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
231231   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
src/mame/drivers/segaorun.c
r6428r6429
553553static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
554554   ADDRESS_MAP_UNMAP_HIGH
555555   ADDRESS_MAP_GLOBAL_MASK(0xff)
556   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
556   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
557557   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
558558ADDRESS_MAP_END
559559
r6428r6429
836836   /* sound hardware */
837837   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
838838
839   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4)
839   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
840840   MDRV_SOUND_ROUTE(0, "lspeaker", 0.43)
841841   MDRV_SOUND_ROUTE(1, "rspeaker", 0.43)
842842
src/mame/drivers/videopkr.c
r6428r6429
327327static void count_7dig(unsigned long data, UINT8 index)
328328{
329329   UINT8 i;
330   char strn[7];
330   char strn[8];
331331   sprintf(strn,"%7lu",data);
332332
333333   for (i = 0; i < 7; i++)
r6428r6429
906906   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE(baby_sound_p0_r, baby_sound_p0_w)
907907   AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(baby_sound_p1_r, baby_sound_p1_w)
908908   AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READ(baby_sound_p2_r) AM_DEVWRITE("dac", baby_sound_p2_w)
909   AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_DEVREADWRITE("ay", baby_sound_p3_r, baby_sound_p3_w)
909   AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_DEVREADWRITE("aysnd", baby_sound_p3_r, baby_sound_p3_w)
910910ADDRESS_MAP_END
911911
912912
r6428r6429
12391239   MDRV_GFXDECODE(videodad)
12401240   MDRV_VIDEO_START(vidadcba)
12411241
1242   MDRV_SOUND_ADD("ay", AY8910, CPU_CLOCK / 6)
1242   MDRV_SOUND_ADD("aysnd", AY8910, CPU_CLOCK / 6)
12431243   MDRV_SOUND_CONFIG(ay8910_config)
12441244   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
12451245MACHINE_DRIVER_END
src/mame/drivers/koikoi.c
r6428r6429
130130static ADDRESS_MAP_START( koikoi_io_map, ADDRESS_SPACE_IO, 8 )
131131   ADDRESS_MAP_GLOBAL_MASK(0xff)
132132   AM_RANGE(0x02, 0x02) AM_WRITENOP //unknown , many writes
133   AM_RANGE(0x03, 0x03) AM_DEVREAD("ay", ay8910_r)
134   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay", ay8910_data_address_w)
133   AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_r)
134   AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_data_address_w)
135135ADDRESS_MAP_END
136136
137137static INPUT_PORTS_START( koikoi )
r6428r6429
267267   /* sound hardware */
268268   MDRV_SPEAKER_STANDARD_MONO("mono")
269269
270   MDRV_SOUND_ADD("ay", AY8910, KOIKOI_CRYSTAL/8)
270   MDRV_SOUND_ADD("aysnd", AY8910, KOIKOI_CRYSTAL/8)
271271   MDRV_SOUND_CONFIG(ay8910_config)
272272   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
273273MACHINE_DRIVER_END
src/mame/drivers/hexa.c
r6428r6429
11/****************************************************************************
22
3  This hardware is derived from Arkanoid's hardware.  The 1986 date found in
4  the roms probably comes from Arkanoid.  This is a Columns style game and
5  the original Columns wasn't released until 1990 and I find it hard to
6  believe that this would pre-date Columns.
3    This hardware is derived from Arkanoid's hardware.  The 1986 date found in
4    the roms probably comes from Arkanoid.  This is a Columns style game and
5    the original Columns wasn't released until 1990 and I find it hard to
6    believe that this would pre-date Columns.
77
8HEXA
8    HEXA
99
10driver by Howie Cohen
10    driver by Howie Cohen
1111
12Memory map (prelim)
130000 7fff ROM
148000 bfff bank switch rom space??
15c000 c7ff RAM
16e000 e7ff video ram
17e800-efff unused RAM
12    Memory map (prelim)
13    0000 7fff ROM
14    8000 bfff bank switch rom space??
15    c000 c7ff RAM
16    e000 e7ff video ram
17    e800-efff unused RAM
1818
19read:
20d001      AY8910 read
21f000      ???????
19    read:
20    d001      AY8910 read
21    f000      ???????
2222
23write:
24d000      AY8910 control
25d001      AY8910 write
26d008      bit0/1 = flip screen x/y
27          bit 4 = ROM bank??
28          bit 5 = char bank
29          other bits????????
30d010      watchdog reset, or IRQ acknowledge, or both
31f000      ????????
23    write:
24    d000      AY8910 control
25    d001      AY8910 write
26    d008      bit0/1 = flip screen x/y
27              bit 4 = ROM bank??
28              bit 5 = char bank
29              other bits????????
30    d010      watchdog reset, or IRQ acknowledge, or both
31    f000      ????????
3232
3333*************************************************************************
3434
35main hardware consists of.....
35    main hardware consists of.....
3636
37sub board with Z80 x2, 2 ROMs and a scratched 18 pin chip (probably a PIC)
37    sub board with Z80 x2, 2 ROMs and a scratched 18 pin chip (probably a PIC)
3838
39main board has....
4012MHz xtal
41ay3-8910
428 position DSW x1
43ROMs x4
446116 SRAM x3
4582S123 PROMs x3
39    main board has....
40    12MHz xtal
41    ay3-8910
42    8 position DSW x1
43    ROMs x4
44    6116 SRAM x3
45    82S123 PROMs x3
4646
4747*************************************************************************/
4848
4949#include "driver.h"
5050#include "cpu/z80/z80.h"
5151#include "sound/ay8910.h"
52#include "hexa.h"
5253
5354
54
55VIDEO_START( hexa );
56VIDEO_UPDATE( hexa );
57WRITE8_HANDLER( hexa_videoram_w );
58WRITE8_HANDLER( hexa_d008_w );
59
60
61
6255static ADDRESS_MAP_START( hexa_map, ADDRESS_SPACE_PROGRAM, 8 )
6356   AM_RANGE(0x0000, 0x7fff) AM_ROM
6457   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
6558   AM_RANGE(0xc000, 0xc7ff) AM_RAM
66   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("ay", ay8910_r)
67   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
59   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_r)
60   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
6861   AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w)
6962   AM_RANGE(0xd010, 0xd010) AM_WRITE(watchdog_reset_w)   /* or IRQ acknowledge, or both */
70   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
63   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE_MEMBER(hexa_state, videoram) AM_SIZE(&videoram_size)
7164ADDRESS_MAP_END
7265
7366
7467
7568static INPUT_PORTS_START( hexa )
76   PORT_START("INPUTS")   /* IN0 */
69   PORT_START("INPUTS")
7770   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
7871   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
7972   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
r6428r6429
8376   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
8477   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
8578
86   PORT_START("DSW")   /* DSW */
79   PORT_START("DSW")
8780   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
8881   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
8982   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
r6428r6429
141134
142135
143136
137static MACHINE_START( hexa )
138{
139   hexa_state *state = (hexa_state *)machine->driver_data;
140
141   state_save_register_global(machine, state->charbank);
142}
143
144static MACHINE_RESET( hexa )
145{
146   hexa_state *state = (hexa_state *)machine->driver_data;
147
148   state->charbank = 0;
149}
150
144151static MACHINE_DRIVER_START( hexa )
145152
153   /* driver data */
154   MDRV_DRIVER_DATA(hexa_state)
155
146156   /* basic machine hardware */
147157   MDRV_CPU_ADD("maincpu", Z80, 4000000)      /* 4 MHz ??????? */
148158   MDRV_CPU_PROGRAM_MAP(hexa_map)
149159   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
150160
161   MDRV_MACHINE_START(hexa)
162   MDRV_MACHINE_RESET(hexa)
163
151164   /* video hardware */
152165   MDRV_SCREEN_ADD("screen", RASTER)
153166   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
165178
166179   /* sound hardware */
167180   MDRV_SPEAKER_STANDARD_MONO("mono")
168   MDRV_SOUND_ADD("ay", AY8910, 1500000)
181   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
169182   MDRV_SOUND_CONFIG(ay8910_config)
170183   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
171184MACHINE_DRIVER_END
r6428r6429
197210
198211static DRIVER_INIT( hexa )
199212{
213   UINT8 *RAM = memory_region(machine, "maincpu");
200214#if 0
201   UINT8 *RAM = memory_region(machine, "maincpu");
202215
203216
204217   /* Hexa is not protected or anything, but it keeps writing 0x3f to register */
r6428r6429
210223   RAM[0x0125] = 0x00;
211224   RAM[0x0126] = 0x00;
212225#endif
226
227   memory_configure_bank(machine, 1, 0, 2, &RAM[0x10000], 0x4000);
213228}
214229
215230
216GAME( 199?, hexa, 0, hexa, hexa, hexa, ROT0, "D. R. Korea", "Hexa", 0 )
231GAME( 199?, hexa, 0, hexa, hexa, hexa, ROT0, "D. R. Korea", "Hexa", GAME_SUPPORTS_SAVE )
src/mame/drivers/gticlub.c
r6428r6429
628628   AM_RANGE(0x000000, 0x07ffff) AM_ROM
629629   AM_RANGE(0x200000, 0x20ffff) AM_RAM
630630   AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w)
631   AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
631   AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
632632   AM_RANGE(0x580000, 0x580001) AM_WRITENOP
633633   AM_RANGE(0x600000, 0x600001) AM_WRITENOP
634634ADDRESS_MAP_END
r6428r6429
937937
938938   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
939939
940   MDRV_SOUND_ADD("rf", RF5C400, 64000000/4)
940   MDRV_SOUND_ADD("rfsnd", RF5C400, 64000000/4)
941941   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
942942   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
943943MACHINE_DRIVER_END
r6428r6429
10031003
10041004   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10051005
1006   MDRV_SOUND_ADD("rf", RF5C400, 64000000/4)
1006   MDRV_SOUND_ADD("rfsnd", RF5C400, 64000000/4)
10071007   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
10081008   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
10091009MACHINE_DRIVER_END
r6428r6429
10241024   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program */
10251025   ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
10261026
1027   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1027   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
10281028   ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
10291029   ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
10301030   ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
r6428r6429
10511051   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program */
10521052   ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
10531053
1054   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1054   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
10551055   ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
10561056   ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
10571057   ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
r6428r6429
10781078   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program */
10791079   ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
10801080
1081   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1081   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
10821082   ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
10831083   ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
10841084   ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
r6428r6429
11081108   ROM_REGION(0x20000, "dsp", 0)      /* 68k program for outboard sound? network? board */
11091109   ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) )
11101110
1111   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1111   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
11121112   ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) )
11131113   ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) )
11141114   ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) )
r6428r6429
11381138   ROM_REGION(0x20000, "dsp", 0)      /* 68k program for outboard sound? network? board */
11391139   ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) )
11401140
1141   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1141   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
11421142   ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) )
11431143   ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) )
11441144   ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) )
r6428r6429
11651165   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program */
11661166   ROM_LOAD16_WORD_SWAP( "792a07.10k", 0x000000, 0x080000, CRC(89a65ad1) SHA1(d814ef0b560c8e68da57ad5c6096e4fc05e9913e) )
11671167
1168   ROM_REGION(0x800000, "rf", 0)   /* sound roms */
1168   ROM_REGION(0x800000, "rfsnd", 0)   /* sound roms */
11691169   ROM_LOAD( "792a09.9s", 0x000000, 0x200000, CRC(7d7ea427) SHA1(a9a311a7c17223cc87140fe2890e20a321464831) )
11701170   ROM_LOAD( "792a10.7s", 0x200000, 0x200000, CRC(e585e5d9) SHA1(ec44ad324a66eeea4c45933dda5a8a9a4398879d) )
11711171   ROM_LOAD( "792a11.5s", 0x400000, 0x200000, CRC(c9c3a04c) SHA1(f834659f67712c9fcd93b7407669d7f35517b790) )
r6428r6429
11921192   ROM_REGION(0x80000, "audiocpu", 0)   /* 68k program */
11931193   ROM_LOAD16_WORD_SWAP( "685a07.13k", 0x000000, 0x080000, CRC(5b72fd80) SHA1(a150837fa0d66dc0c3832495a4c8ce4f9b92cd98) )
11941194
1195   ROM_REGION(0x1000000, "rf", 0)   /* sound roms */
1195   ROM_REGION(0x1000000, "rfsnd", 0)   /* sound roms */
11961196   ROM_LOAD( "685a09.9s", 0x000000, 0x400000, CRC(b8ae40aa) SHA1(eee27a8929e0e805f1045fd9638e661b36a1e3c7) )
11971197   ROM_LOAD( "685a10.7s", 0x400000, 0x400000, CRC(fef3dc36) SHA1(566c7469fc452b5965a31fa42291082ec8e48a24) )
11981198
src/mame/drivers/bsktball.c
r6428r6429
9090   AM_RANGE(0x102c, 0x102d) AM_DEVWRITE("discrete", bsktball_noise_reset_w) /* Noise Reset */
9191   AM_RANGE(0x102e, 0x102f) AM_WRITE(bsktball_nmion_w) /* NMI On */
9292   AM_RANGE(0x1030, 0x1030) AM_DEVWRITE("discrete", bsktball_note_w) /* Music Ckt Note Dvsr */
93   AM_RANGE(0x1800, 0x1bbf) AM_RAM_WRITE(bsktball_videoram_w) AM_BASE(&videoram) /* DISPLAY */
94   AM_RANGE(0x1bc0, 0x1bff) AM_RAM AM_BASE(&bsktball_motion)
93   AM_RANGE(0x1800, 0x1bbf) AM_RAM_WRITE(bsktball_videoram_w) AM_BASE_MEMBER(bsktball_state, videoram) /* DISPLAY */
94   AM_RANGE(0x1bc0, 0x1bff) AM_RAM AM_BASE_MEMBER(bsktball_state, motion)
9595   AM_RANGE(0x1c00, 0x1cff) AM_RAM
9696   AM_RANGE(0x2000, 0x3fff) AM_ROM /* PROGRAM */
9797ADDRESS_MAP_END
r6428r6429
210210 *
211211 *************************************/
212212
213static MACHINE_START( bsktball )
214{
215   bsktball_state *state = (bsktball_state *)machine->driver_data;
216
217   state_save_register_global(machine, state->nmi_on);
218   state_save_register_global(machine, state->i256v);
219   state_save_register_global(machine, state->ld1);
220   state_save_register_global(machine, state->ld2);
221   state_save_register_global(machine, state->dir0);
222   state_save_register_global(machine, state->dir1);
223   state_save_register_global(machine, state->dir2);
224   state_save_register_global(machine, state->dir3);
225   state_save_register_global(machine, state->last_p1_horiz);
226   state_save_register_global(machine, state->last_p1_vert);
227   state_save_register_global(machine, state->last_p2_horiz);
228   state_save_register_global(machine, state->last_p2_vert);
229}
230
231static MACHINE_RESET( bsktball )
232{
233   bsktball_state *state = (bsktball_state *)machine->driver_data;
234
235   state->nmi_on = 0;
236   state->i256v = 0;
237   state->ld1 = 0;
238   state->ld2 = 0;
239   state->dir0 = 0;
240   state->dir1 = 0;
241   state->dir2 = 0;
242   state->dir3 = 0;
243   state->last_p1_horiz = 0;
244   state->last_p1_vert = 0;
245   state->last_p2_horiz = 0;
246   state->last_p2_vert = 0;
247}
248
249
213250static MACHINE_DRIVER_START( bsktball )
214251
252   /* driver data */
253   MDRV_DRIVER_DATA(bsktball_state)
254
215255   /* basic machine hardware */
216256   MDRV_CPU_ADD("maincpu", M6502,750000)
217257   MDRV_CPU_PROGRAM_MAP(main_map)
218258   MDRV_CPU_VBLANK_INT_HACK(bsktball_interrupt,8)
219259
260   MDRV_MACHINE_START(bsktball)
261   MDRV_MACHINE_RESET(bsktball)
262
220263   /* video hardware */
221264   MDRV_SCREEN_ADD("screen", RASTER)
222265   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
268311 *
269312 *************************************/
270313
271GAME( 1979, bsktball, 0, bsktball, bsktball, 0, ROT0, "Atari", "Basketball", 0 )
314GAME( 1979, bsktball, 0, bsktball, bsktball, 0, ROT0, "Atari", "Basketball", GAME_SUPPORTS_SAVE )
src/mame/drivers/armedf.c
r6428r6429
427427
428428static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
429429   ADDRESS_MAP_GLOBAL_MASK(0xff)
430   AM_RANGE(0x0, 0x1) AM_DEVWRITE("ym", ym3812_w)
430   AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_w)
431431     AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w)
432432     AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_signed_w)
433433   AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r)
r6428r6429
758758   /* sound hardware */
759759   MDRV_SPEAKER_STANDARD_MONO("mono")
760760
761   MDRV_SOUND_ADD("ym", YM3812, 4000000)
761   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
762762   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
763763
764764   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
805805   /* sound hardware */
806806   MDRV_SPEAKER_STANDARD_MONO("mono")
807807
808   MDRV_SOUND_ADD("ym", YM3812, 4000000)
808   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
809809   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
810810
811811   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
846846   /* sound hardware */
847847   MDRV_SPEAKER_STANDARD_MONO("mono")
848848
849   MDRV_SOUND_ADD("ym", YM3812, 4000000)
849   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
850850   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
851851
852852   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
887887   /* sound hardware */
888888   MDRV_SPEAKER_STANDARD_MONO("mono")
889889
890   MDRV_SOUND_ADD("ym", YM3812, 4000000)
890   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
891891   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
892892
893893   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
928928   /* sound hardware */
929929   MDRV_SPEAKER_STANDARD_MONO("mono")
930930
931   MDRV_SOUND_ADD("ym", YM3812, 4000000)
931   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
932932   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
933933
934934   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
969969   /* sound hardware */
970970   MDRV_SPEAKER_STANDARD_MONO("mono")
971971
972   MDRV_SOUND_ADD("ym", YM3812, 4000000)
972   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
973973   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
974974
975975   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
10101010   /* sound hardware */
10111011   MDRV_SPEAKER_STANDARD_MONO("mono")
10121012
1013   MDRV_SOUND_ADD("ym", YM3812, 4000000)
1013   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
10141014   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
10151015
10161016   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/pcat_dyn.c
r6428r6429
11/********************************************************************************************************************
22
3Tournament Solitaire (c) 199x Dynamo
3Tournament Solitaire (c) 1995 Dynamo
44
5An (un?)-modified 486 PC-AT HW. Input uses a trackball device that isn't PC standard afaik.
5Unmodified 486 PC-AT HW. Input uses a trackball device that isn't PC standard afaik.
66
7Jet Way Information Co. OP495SLC motherboard
8 - AMD Am486-DX40 CPU
9 - Trident TVGA9000i video card
10
711preliminary driver by Angelo Salese
812
13- Gets stuck on 640K DRAM banking, beeps endlessly once it gets to memory test.
14
915********************************************************************************************************************/
1016
1117#include "driver.h"
r6428r6429
2127#include "machine/8042kbdc.h"
2228#include "machine/pckeybrd.h"
2329#include "machine/idectrl.h"
30#include "sound/beep.h"
2431
2532static UINT32 *vga_vram;
2633static UINT8 vga_regs[0x19];
r6428r6429
111118DMA8237 Controller
112119******************/
113120
121static int dma_channel;
114122static UINT8 dma_offset[2][4];
115123static UINT8 at_pages[0x10];
116124
117static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
118{
119   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
120125
121   /* Assert HLDA */
122   dma8237_set_hlda( device, state );
123}
124
125
126static DMA8237_MEM_READ( pc_dma_read_byte )
127{
128   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
129   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
130      & 0xFF0000;
131
132   return memory_read_byte(space, page_offset + offset);
133}
134
135
136static DMA8237_MEM_WRITE( pc_dma_write_byte )
137{
138   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
139   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
140      & 0xFF0000;
141
142   memory_write_byte(space, page_offset + offset, data);
143}
144
145126static READ8_HANDLER(dma_page_select_r)
146127{
147128   UINT8 data = at_pages[offset % 0x10];
r6428r6429
187168}
188169
189170
190static const struct dma8237_interface dma8237_1_config =
171static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
191172{
192   XTAL_14_31818MHz/3,
173   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
193174
194   pc_dma_hrq_changed,
195   pc_dma_read_byte,
196   pc_dma_write_byte,
175   /* Assert HLDA */
176   i8237_hlda_w( device, state );
177}
197178
198   { NULL, NULL, NULL, NULL },
199   { NULL, NULL, NULL, NULL },
200   NULL
201};
202179
203static const struct dma8237_interface dma8237_2_config =
180static READ8_HANDLER( pc_dma_read_byte )
204181{
205   XTAL_14_31818MHz/3,
182   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
183      & 0xFF0000;
206184
207   NULL,
208   NULL,
209   NULL,
185   return memory_read_byte(space, page_offset + offset);
186}
210187
211   { NULL, NULL, NULL, NULL },
212   { NULL, NULL, NULL, NULL },
213   NULL
188
189static WRITE8_HANDLER( pc_dma_write_byte )
190{
191   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
192      & 0xFF0000;
193
194   memory_write_byte(space, page_offset + offset, data);
195}
196
197static void set_dma_channel(const device_config *device, int channel, int state)
198{
199   if (!state) dma_channel = channel;
200}
201
202static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
203static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
204static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
205static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
206
207static I8237_INTERFACE( dma8237_1_config )
208{
209   DEVCB_LINE(pc_dma_hrq_changed),
210   DEVCB_NULL,
211   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
212   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
213   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
214   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
215   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
214216};
215217
218static I8237_INTERFACE( dma8237_2_config )
219{
220   DEVCB_NULL,
221   DEVCB_NULL,
222   DEVCB_NULL,
223   DEVCB_NULL,
224   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
225   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
226   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
227};
216228
229
217230/******************
2182318259 IRQ controller
219232******************/
r6428r6429
290303//  AM_RANGE(0x000e0000, 0x000effff) AM_ROM AM_REGION("game_prg", 0)
291304   AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 )
292305   AM_RANGE(0x00100000, 0x001fffff) AM_RAM //AM_REGION("game_prg", 0)
306   AM_RANGE(0x00200000, 0x00ffffff) AM_RAM
307   AM_RANGE(0x01000000, 0x01ffffff) AM_RAM
293308   AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 )
294309ADDRESS_MAP_END
295310
r6428r6429
352367}
353368
354369static ADDRESS_MAP_START( pcat_io, ADDRESS_SPACE_IO, 32 )
355   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
370   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
356371   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
357372   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
358373   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
359374   AM_RANGE(0x0070, 0x007f) AM_RAM//READWRITE(mc146818_port32le_r,     mc146818_port32le_w)
360   AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO
375   AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)
361376   AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff)
362   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", dma8237_r, dma8237_w, 0xffff)
377   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", i8237_r, i8237_w, 0xffff)
378   AM_RANGE(0x0220, 0x022f) AM_RAM //Sound card, according to ROMs
363379   AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2
364380   AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port
365381   AM_RANGE(0x03c0, 0x03c3) AM_RAM
r6428r6429
494510
495511static MACHINE_DRIVER_START( pcat_dyn )
496512   /* basic machine hardware */
497   MDRV_CPU_ADD("maincpu", I486, 14318180*2)   /* I486 ?? Mhz */
513   MDRV_CPU_ADD("maincpu", I486, 40000000)   /* Am486 DX-40 */
498514   MDRV_CPU_PROGRAM_MAP(pcat_map)
499515   MDRV_CPU_IO_MAP(pcat_io)
500516
r6428r6429
513529//  MDRV_IMPORT_FROM( at_kbdc8042 )
514530   MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
515531   MDRV_PIC8259_ADD( "pic8259_2", pic8259_2_config )
516   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
517   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
532   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
533   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
518534   MDRV_PIT8254_ADD( "pit8254", at_pit8254_config )
519535
520536   MDRV_PALETTE_INIT(pcat_286)
r6428r6429
540556   ROM_CONTINUE(            0x00001, 0x04000 )
541557
542558   ROM_REGION32_LE(0x100000, "game_prg", 0)   /* PromStor 32, mapping unknown */
559   ROM_LOAD("sol.u21", 0x00000, 0x40000, CRC(e97724d9) SHA1(995b89d129c371b815c6b498093bd1bbf9fd8755))
560   ROM_LOAD("sol.u22", 0x40000, 0x40000, CRC(69d42f50) SHA1(737fe62f3827b00b4f6f3b72ef6c7b6740947e95))
561   ROM_LOAD("sol.u23", 0x80000, 0x40000, CRC(d1e39bd4) SHA1(39c7ee43cddb53fba0f7c0572ddc40289c4edd07))
562   ROM_LOAD("sol.u24", 0xa0000, 0x40000, CRC(555341e0) SHA1(81fee576728855e234ff7aae06f54ae9705c3ab5))
563   ROM_LOAD("sol.u28", 0xe0000, 0x02000, CRC(c9374d50) SHA1(49173bc69f70bb2a7e8af9d03e2538b34aa881d8))
564ROM_END
565
566
567ROM_START(toursol1)
568   ROM_REGION32_LE(0x10000, "bios", 0)   /* Motherboard BIOS */
569   ROM_LOAD("prom.mb", 0x000000, 0x10000, CRC(e44bfd3c) SHA1(c07ec94e11efa30e001f39560010112f73cc0016) )
570
571   ROM_REGION(0x20000, "video_bios", 0)   /* Trident TVGA9000 BIOS */
572   ROM_LOAD16_BYTE("prom.vid", 0x00000, 0x04000, CRC(ad7eadaf) SHA1(ab379187914a832284944e81e7652046c7d938cc) )
573   ROM_CONTINUE(            0x00001, 0x04000 )
574
575   ROM_REGION32_LE(0x100000, "game_prg", 0)   /* PromStor 32, mapping unknown */
543576   ROM_LOAD("prom.0", 0x00000, 0x40000, CRC(f26ce73f) SHA1(5516c31aa18716a47f46e412fc273ae8784d2061))
544577   ROM_LOAD("prom.1", 0x40000, 0x40000, CRC(8f96e2a8) SHA1(bc3ce8b99e6ff40e355df2c3f797f1fe88b3b219))
545578   ROM_LOAD("prom.2", 0x80000, 0x40000, CRC(8b0ac5cf) SHA1(1c2b6a53c9ff4d18a5227d899facbbc719f40205))
r6428r6429
547580   ROM_LOAD("prom.7", 0xe0000, 0x02000, CRC(154c8092) SHA1(4439ee82f36d5d5c334494ba7bb4848e839213a7))
548581ROM_END
549582
550GAME( 199?, toursol,    0,         pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo",  "Tournament Solitaire", GAME_NOT_WORKING|GAME_NO_SOUND )
583GAME( 1995, toursol,  0,       pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", GAME_NOT_WORKING|GAME_NO_SOUND )
584GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", GAME_NOT_WORKING|GAME_NO_SOUND )
585
src/mame/drivers/dkong.c
r6428r6429
324324 *
325325 *************************************/
326326
327static READ8_DEVICE_HANDLER( hb_dma_read_byte );
328static WRITE8_DEVICE_HANDLER( hb_dma_write_byte );
329static READ8_DEVICE_HANDLER( dk_dma_read_byte );
330static WRITE8_DEVICE_HANDLER( dk_dma_write_byte );
327static READ8_HANDLER( hb_dma_read_byte );
328static WRITE8_HANDLER( hb_dma_write_byte );
331329static READ8_DEVICE_HANDLER( p8257_ctl_r );
332330static WRITE8_DEVICE_HANDLER( p8257_ctl_w );
333331
r6428r6429
337335 *
338336 *************************************/
339337
340static const z80dma_interface dk3_dma =
338static Z80DMA_INTERFACE( dk3_dma )
341339{
342    "maincpu",
343
344    dk_dma_read_byte,
345    dk_dma_write_byte,
346    0, 0, 0, 0,
347    NULL
340   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT),
341   DEVCB_NULL,
342   DEVCB_NULL,
343   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte),
344   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte),
345   DEVCB_NULL,
346   DEVCB_NULL
348347};
349348
350static const dma8257_interface dk_dma =
349static I8257_INTERFACE( dk_dma )
351350{
352    "maincpu",
353
354    dk_dma_read_byte,
355    dk_dma_write_byte,
356
357    { 0, p8257_ctl_r, 0, 0 },
358    { p8257_ctl_w, 0, 0, 0 },
359    { 0, 0, 0, 0 }
351   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT),
352   DEVCB_NULL,
353   DEVCB_NULL,
354   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte),
355   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte),
356    { DEVCB_NULL, DEVCB_HANDLER(p8257_ctl_r), DEVCB_NULL, DEVCB_NULL },
357    { DEVCB_HANDLER(p8257_ctl_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
360358};
361359
362static const dma8257_interface hb_dma =
360static I8257_INTERFACE( hb_dma )
363361{
364    "maincpu",
365
366    hb_dma_read_byte,
367    hb_dma_write_byte,
368
369    { 0, p8257_ctl_r, 0, 0 },
370    { p8257_ctl_w, 0, 0, 0 },
371    { 0, 0, 0, 0 }
362   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT),
363   DEVCB_NULL,
364   DEVCB_NULL,
365   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, hb_dma_read_byte),
366   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, hb_dma_write_byte),
367    { DEVCB_NULL, DEVCB_HANDLER(p8257_ctl_r), DEVCB_NULL, DEVCB_NULL },
368    { DEVCB_HANDLER(p8257_ctl_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
372369};
373370
374371/*************************************
r6428r6429
494491 *
495492 *************************************/
496493
497static READ8_DEVICE_HANDLER( dk_dma_read_byte )
494static READ8_HANDLER( hb_dma_read_byte )
498495{
499    const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
500    return memory_read_byte(space, offset);
501}
502
503static WRITE8_DEVICE_HANDLER( dk_dma_write_byte )
504{
505    const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
506    memory_write_byte(space, offset, data);
507}
508
509static READ8_DEVICE_HANDLER( hb_dma_read_byte )
510{
511    const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
512    dkong_state *state = (dkong_state *)device->machine->driver_data;
496    dkong_state *state = (dkong_state *)space->machine->driver_data;
513497    int   bucket = state->rev_map[(offset>>10) & 0x1ff];
514498    int   addr;
515499
r6428r6429
521505    return memory_read_byte(space, addr);
522506}
523507
524static WRITE8_DEVICE_HANDLER( hb_dma_write_byte )
508static WRITE8_HANDLER( hb_dma_write_byte )
525509{
526    const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
527    dkong_state *state = (dkong_state *)device->machine->driver_data;
510    dkong_state *state = (dkong_state *)space->machine->driver_data;
528511    int   bucket = state->rev_map[(offset>>10) & 0x1ff];
529512    int   addr;
530513
r6428r6429
562545
563546static WRITE8_DEVICE_HANDLER( p8257_drq_w )
564547{
565    dma8257_drq_w(device, 0, data & 0x01);
566    dma8257_drq_w(device, 1, data & 0x01);
548    i8257_drq0_w(device, data & 0x01);
549    i8257_drq1_w(device, data & 0x01);
567550}
568551
569552static READ8_HANDLER( dkong_in2_r )
r6428r6429
750733    }
751734}
752735
736static WRITE8_DEVICE_HANDLER( dkong_z80dma_rdy_w )
737{
738   z80dma_rdy_w(device, data & 0x01);
739}
753740
741
754742/*************************************
755743 *
756744 *  Main CPU memory handlers
r6428r6429
764752                                    AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* sprite set 1 */
765753    AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w)
766754                                    AM_BASE_MEMBER(dkong_state, video_ram)
767    AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", dma8257_r, dma8257_w)   /* P8257 control registers */
755    AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_r, i8257_w)   /* P8257 control registers */
768756    AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls175.3d")    /* IN0, sound CPU intf */
769757    AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */
770758
r6428r6429
788776                                    AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* sprite set 1 */
789777    AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w)
790778                                    AM_BASE_MEMBER(dkong_state, video_ram)
791    AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", dma8257_r, dma8257_w)   /* P8257 control registers */
779    AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_r, i8257_w)   /* P8257 control registers */
792780
793781    AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls174.3d")    /* IN0, sound interface */
794782
r6428r6429
828816    AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w)
829817    AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w)                 /* 2 PSL Signal */
830818    AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w)
831    AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", z80dma_rdy_w)  /* ==> DMA Chip */
819    AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", dkong_z80dma_rdy_w)  /* ==> DMA Chip */
832820    AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w)
833821    AM_RANGE(0x8000, 0x9fff) AM_ROM                                       /* DK3 and bootleg DKjr only */
834822ADDRESS_MAP_END
r6428r6429
865853    AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(dkong_videoram_w)
866854                                    AM_BASE_MEMBER(dkong_state, video_ram)        /* 0x7400 */
867855    AM_RANGE(0x1C00, 0x1f7f) AM_RAM                                               /* 0x6000 */
868    AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", dma8257_r, dma8257_w)   /* P8257 control registers */
856    AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i8257_r, i8257_w)   /* P8257 control registers */
869857    /* 0x6800 not remapped */
870858    AM_RANGE(0x2000, 0x2fff) AM_ROM
871859    AM_RANGE(0x3000, 0x3fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w)
r6428r6429
15941582    MDRV_MACHINE_START(dkong2b)
15951583    MDRV_MACHINE_RESET(dkong)
15961584
1597    MDRV_DMA8257_ADD("dma8257", CLOCK_1H, dk_dma)
1585    MDRV_I8257_ADD("dma8257", CLOCK_1H, dk_dma)
15981586
15991587    /* video hardware */
16001588    MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/appoooh.c
r6428r6429
11/***************************************************************************
22
3Appoooh memory map (preliminary)
4Similar to Bank Panic
3    Appoooh memory map (preliminary)
4    Similar to Bank Panic
55
6driver by Tatsuyuki Satoh
6    driver by Tatsuyuki Satoh
77
88
90000-9fff ROM
10a000-dfff BANKED ROM
11e000-e7ff RAM
12e800-efff RAM??
9    0000-9fff ROM
10    a000-dfff BANKED ROM
11    e000-e7ff RAM
12    e800-efff RAM??
1313
14write:
15f000-f01f Sprite RAM #1
16f020-f3ff Video  RAM #1
17f420-f7ff Color  RAM #1
18f800-f81f Sprite RAM #2
19f820-fbff Video  RAM #2
20fc20-ffff Color  RAM #2
14    write:
15    f000-f01f Sprite RAM #1
16    f020-f3ff Video  RAM #1
17    f420-f7ff Color  RAM #1
18    f800-f81f Sprite RAM #2
19    f820-fbff Video  RAM #2
20    fc20-ffff Color  RAM #2
2121
22I/O
22    I/O
2323
24read:
2500  IN0
2601  IN1
2703  DSW
2804  IN2
24    read:
25    00  IN0
26    01  IN1
27    03  DSW
28    04  IN2
2929
30write:
3100  SN76496 #1
3201  SN76496 #2
3302  SN76496 #3
3403  MSM5205 address write
3504  bit 0   = NMI enable
36    bit 1   = flipscreen
37    bit 2-3 = ?
38    bit 4-5 = priority
39    bit 6   = bank rom select
40    bit 7   = ?
4105  horizontal scroll ??
30    write:
31    00  SN76496 #1
32    01  SN76496 #2
33    02  SN76496 #3
34    03  MSM5205 address write
35    04  bit 0   = NMI enable
36        bit 1   = flipscreen
37        bit 2-3 = ?
38        bit 4-5 = priority
39        bit 6   = bank rom select
40        bit 7   = ?
41    05  horizontal scroll ??
4242
43Credits:
44- Tatsuyuki Satoh: MAME driver
43    Credits:
44    - Tatsuyuki Satoh: MAME driver
4545
4616.08.2004 - TS - Added 'Robo Wres 2001'
46    16.08.2004 - TS - Added 'Robo Wres 2001' (see details below)
4747
48****************************************************************************
49
50    Robo Wres 2001
51    Sega, (198x, possibly 1986?)
52
53    Top Board
54    =========
55    PCB No: 834-5990 SEGA 1986
56    CPU   : NEC D315-5179 (Z80?)
57    SOUND : OKI MSM5205 + Resonator 384kHz, SN76489 (x3)
58    RAM   : MB8128 (x1)
59    OTHER : Volume Pot (x2, labelled VOICE and SOUND)
60    PALs  : (x1, near EPR-7542.15D, labelled 315-5056)
61    PROMs : (x1, near EPR-7543.12B, labelled PR7571)
62    DIPSW : 8 position (x1)
63    DIPSW Info:
64
65                    1   2   3   4   5   6   7   8
66-----------------------------------------------------------------------------------
67Coin1
68    1Coin 1Credit   OFF OFF OFF
69    2Coin 1Credit   ON  OFF OFF
70    3Coin 1Credit   OFF ON  OFF
71    4Coin 1Credit   ON  ON  OFF
72    1Coin 2Credit   OFF OFF ON
73    1Coin 3Credit   ON  OFF ON
74    1Coin 4Credit   OFF ON  ON
75    2Coin 3Credit   ON  ON  ON
76-----------------------------------------------------------------------------------
77Coin2
78    1Coin 1Credit               OFF OFF
79    1Coin 2Credit               ON  OFF
80    2Coin 1Credit               OFF ON
81    3Coin 1Credit               ON  ON
82-----------------------------------------------------------------------------------
83Demo Sound
84    Off                                 OFF
85    On                                  ON
86-----------------------------------------------------------------------------------
87Not Used                                    OFF
88-----------------------------------------------------------------------------------
89Language
90    Japanese                                    OFF
91    English                                     ON
92-----------------------------------------------------------------------------------
93
94
95    PCB Edge Connector Pinout
96    -------------------------
97
98    Parts               Solder
99    Side                Side
100    --------------------------------
101    GND         A  1    GND
102    GND         B  2    GND
103    COIN 2      C  3    -
104    1P HOLD     D  4    2P HOLD
105    1P PUNCH    E  5    2P PUNCH
106    -           F  6    -
107    1P START    H  7    2P START
108    1P KICK     J  8    2P KICK
109    1P UP       K  9    2P UP
110    1P DOWN     L  10   2P DOWN
111    1P LEFT     M  11   2P LEFT
112    1P RIGHT    N  12   2P RIGHT
113    COUNTER 1   P  13   COIN 1
114    COUNTER 2   R  14   SERVICE
115    RED         S  15   GREEN
116    BLUE        T  16   SYNC
117    -           U  17   -
118    +5          V  18   +5
119    +5          W  19   +5
120    +12         X  20   +12
121    SPEAKER 1   Y  21   SPEAKER 2
122    SPEAKER GND Z  22   SPEAKER GND
123
124
125    Controls via 8-way Joystick and 3 buttons (Punch, Hold, Kick)
126
127
128
129                    Byte
130    ROMs  :         C'sum (for Mike ;-)
131    ----------------------------------------
132    EPR-7540.13D    27C256  6A13h
133    EPR-7541.14D      " 2723h
134    EPR-7542.15D      " 01E7h
135    EPR-7543.12B      " 6558h
136
137    PR7571.10A      82s123  0A9Fh
138
139
140    Lower Board
141    ===========
142
143    PCB No: 837-5992
144    XTAL  : 18.432MHz
145    RAM   : MB8128 (x2), SONY CXK5813D-55 (x2)
146    PALs  : (x3, labelled 315-5054, 315-5053, 315-5203)
147    PROMs : (x2, one near EPR-7547.7D labelled PR7572, one near EPR-7544.7H labelled PR7573)
148
149                        Byte
150    ROMs  :             C'Sum
151    -------------------------------------
152    EPR-7544.7H    27C256  \    ED1Ah
153    EPR-7545.6H      "      |   E6CAh
154    EPR-7546.5H      "      |   55EAh
155    EPR-7547.7D      "      | Gfx   EA3Fh
156    EPR-7548.6D      "      |   5D1Fh
157    EPR-7549.5D      "     /    16D1h
158
159    PR7572.7F      82s129       06F1h  \ Both have
160    PR7573.7G      82s129       06F1h  / identical contents
161
48162***************************************************************************/
49163
50164#include "driver.h"
51165#include "cpu/z80/z80.h"
52166#include "appoooh.h"
53#include "machine/segacrpt.h"
167#include "machine/segacrpt.h"      // needed for robowres_decode
54168#include "sound/msm5205.h"
55169#include "sound/sn76496.h"
56170
57static UINT32 appoooh_adpcm_data;
58static UINT32 appoooh_adpcm_address;
59171
60172static void appoooh_adpcm_int(const device_config *device)
61173{
62   if(appoooh_adpcm_address != 0xffffffff)
174   appoooh_state *state = (appoooh_state *)device->machine->driver_data;
175
176   if (state->adpcm_address != 0xffffffff)
63177   {
64      if(appoooh_adpcm_data == 0xffffffff)
178      if (state->adpcm_data == 0xffffffff)
65179      {
66            UINT8 *RAM = memory_region(device->machine, "adpcm");
67            appoooh_adpcm_data = RAM[appoooh_adpcm_address++];
68         msm5205_data_w(device, appoooh_adpcm_data >> 4);
69         if(appoooh_adpcm_data == 0x70)
180         UINT8 *RAM = memory_region(device->machine, "adpcm");
181
182         state->adpcm_data = RAM[state->adpcm_address++];
183         msm5205_data_w(device, state->adpcm_data >> 4);
184
185         if (state->adpcm_data == 0x70)
70186         {
71                appoooh_adpcm_address = 0xffffffff;
72            msm5205_reset_w(device,1);
187            state->adpcm_address = 0xffffffff;
188            msm5205_reset_w(device, 1);
73189         }
74190      }
75        else
76        {
77         msm5205_data_w(device,appoooh_adpcm_data & 0x0f );
78         appoooh_adpcm_data = -1;
191      else
192      {
193         msm5205_data_w(device, state->adpcm_data & 0x0f );
194         state->adpcm_data = -1;
79195      }
80196   }
81197}
198
82199/* adpcm address write */
83200static WRITE8_HANDLER( appoooh_adpcm_w )
84201{
85   const device_config *adpcm = devtag_get_device(space->machine, "msm");
86    appoooh_adpcm_address = data << 8;
87   msm5205_reset_w(adpcm,0);
88   appoooh_adpcm_data = 0xffffffff;
202   appoooh_state *state = (appoooh_state *)space->machine->driver_data;
203
204   state->adpcm_address = data << 8;
205   msm5205_reset_w(state->adpcm, 0);
206   state->adpcm_data = 0xffffffff;
89207}
90208
91209
210/*************************************
211 *
212 *  Address maps
213 *
214 *************************************/
92215
93216static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
94217   AM_RANGE(0x0000, 0x7fff) AM_ROM
r6428r6429
97220   AM_RANGE(0xe000, 0xe7ff) AM_RAM
98221   AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM ? */
99222
100   AM_RANGE(0xf000, 0xf01f) AM_BASE(&spriteram)
101   AM_RANGE(0xf020, 0xf3ff) AM_WRITE(appoooh_fg_videoram_w) AM_BASE(&appoooh_fg_videoram)
102   AM_RANGE(0xf420, 0xf7ff) AM_WRITE(appoooh_fg_colorram_w) AM_BASE(&appoooh_fg_colorram)
103   AM_RANGE(0xf800, 0xf81f) AM_BASE(&spriteram_2)
104   AM_RANGE(0xf820, 0xfbff) AM_WRITE(appoooh_bg_videoram_w) AM_BASE(&appoooh_bg_videoram)
105   AM_RANGE(0xfc20, 0xffff) AM_WRITE(appoooh_bg_colorram_w) AM_BASE(&appoooh_bg_colorram)
223   AM_RANGE(0xf000, 0xf01f) AM_BASE_MEMBER(appoooh_state, spriteram)
224   AM_RANGE(0xf020, 0xf3ff) AM_WRITE(appoooh_fg_videoram_w) AM_BASE_MEMBER(appoooh_state, fg_videoram)
225   AM_RANGE(0xf420, 0xf7ff) AM_WRITE(appoooh_fg_colorram_w) AM_BASE_MEMBER(appoooh_state, fg_colorram)
226   AM_RANGE(0xf800, 0xf81f) AM_BASE_MEMBER(appoooh_state, spriteram_2)
227   AM_RANGE(0xf820, 0xfbff) AM_WRITE(appoooh_bg_videoram_w) AM_BASE_MEMBER(appoooh_state, bg_videoram)
228   AM_RANGE(0xfc20, 0xffff) AM_WRITE(appoooh_bg_colorram_w) AM_BASE_MEMBER(appoooh_state, bg_colorram)
106229   AM_RANGE(0xf000, 0xffff) AM_RAM
107230ADDRESS_MAP_END
108231
r6428r6429
117240ADDRESS_MAP_END
118241
119242
243/*************************************
244 *
245 *  Input ports
246 *
247 *************************************/
120248
121249static INPUT_PORTS_START( appoooh )
122250   PORT_START("P1")
r6428r6429
171299   PORT_DIPSETTING(    0x80, DEF_STR( Hard ) )
172300INPUT_PORTS_END
173301
302static INPUT_PORTS_START( robowres )
303   PORT_INCLUDE( appoooh )
174304
305   PORT_MODIFY("DSW1")
306   PORT_DIPUNUSED_DIPLOC(0x40,0x40, "SW1:7" )         /* Listed as "Unused" */
307   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Language ) )      PORT_DIPLOCATION("SW1:8")
308   PORT_DIPSETTING(    0x00, DEF_STR( Japanese ) )
309   PORT_DIPSETTING(    0x80, DEF_STR( English ) )
310INPUT_PORTS_END
175311
312
313/*************************************
314 *
315 *  Graphics definitions
316 *
317 *************************************/
318
176319static const gfx_layout charlayout =
177320{
178321   8,8,   /* 8*8 characters */
r6428r6429
205348GFXDECODE_END
206349
207350
351static const gfx_layout robowres_charlayout =
352{
353   8,8,
354   RGN_FRAC(1,3),
355   3,
356   { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
357   { 7,6,5,4, 3,2,1,0 },
358   { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
359   8*8
360};
208361
362static const gfx_layout robowres_spritelayout =
363{
364   16,16,
365   RGN_FRAC(1,3),
366   3,
367   { RGN_FRAC(2,3),RGN_FRAC(1,3),RGN_FRAC(0,3) },
368   { 7, 6, 5, 4, 3, 2, 1, 0 ,
369     8*8+7,8*8+6,8*8+5,8*8+4,8*8+3,8*8+2,8*8+1,8*8+0},
370   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
371     16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
372   32*8   /* every char takes 8 consecutive bytes */
373};
374
375
376static GFXDECODE_START( robowres )
377   GFXDECODE_ENTRY( "gfx1", 0, robowres_charlayout,        0, 32 )
378   GFXDECODE_ENTRY( "gfx2", 0, robowres_charlayout,         0, 32 )
379   GFXDECODE_ENTRY( "gfx1", 0, robowres_spritelayout,      0, 32 )
380   GFXDECODE_ENTRY( "gfx2", 0, robowres_spritelayout,       0, 32 )
381GFXDECODE_END
382
383
384/*************************************
385 *
386 *  Sound interface
387 *
388 *************************************/
389
209390static const msm5205_interface msm5205_config =
210391{
211392   appoooh_adpcm_int,/* interrupt function */
r6428r6429
213394};
214395
215396
397/*************************************
398 *
399 *  Machine driver
400 *
401 *************************************/
216402
217403static MACHINE_START( appoooh )
218404{
219   appoooh_adpcm_address = 0xffffffff;
220   state_save_register_global(machine, appoooh_adpcm_data);
221   state_save_register_global(machine, appoooh_adpcm_address);
405   appoooh_state *state = (appoooh_state *)machine->driver_data;
406
407   state->adpcm = devtag_get_device(machine, "msm");
408
409   state_save_register_global(machine, state->adpcm_data);
410   state_save_register_global(machine, state->adpcm_address);
222411}
223412
224413
414static MACHINE_RESET( appoooh )
415{
416   appoooh_state *state = (appoooh_state *)machine->driver_data;
225417
226static MACHINE_DRIVER_START( appoooh )
418   state->adpcm_address = 0xffffffff;
419   state->adpcm_data = 0;
420   state->scroll_x = 0;
421   state->priority = 0;
422}
227423
424static MACHINE_DRIVER_START( appoooh_common )
425
426   /* driver data */
427   MDRV_DRIVER_DATA(appoooh_state)
428
228429   /* basic machine hardware */
229430   MDRV_CPU_ADD("maincpu", Z80,18432000/6)   /* ??? the main xtal is 18.432 MHz */
230431   MDRV_CPU_PROGRAM_MAP(main_map)
231432   MDRV_CPU_IO_MAP(main_portmap)
232433   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
233434
234    MDRV_MACHINE_START(appoooh)
435   MDRV_MACHINE_START(appoooh)
436   MDRV_MACHINE_RESET(appoooh)
235437
236   /* video hardware */
237   MDRV_SCREEN_ADD("screen", RASTER)
238   MDRV_SCREEN_REFRESH_RATE(60)
239   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
240   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
241   MDRV_SCREEN_SIZE(32*8, 32*8)
242   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
243   MDRV_GFXDECODE(appoooh)
244   MDRV_PALETTE_LENGTH(32*8+32*8)
245
246   MDRV_PALETTE_INIT(appoooh)
247   MDRV_VIDEO_START(appoooh)
248   MDRV_VIDEO_UPDATE(appoooh)
249
250438   /* sound hardware */
251439   MDRV_SPEAKER_STANDARD_MONO("mono")
252440
r6428r6429
264452   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
265453MACHINE_DRIVER_END
266454
267/*
268455
269Robo Wres 2001
270Sega, (198x, possibly 1986?)
456static MACHINE_DRIVER_START( appoooh )
271457
272Top Board
273---------
274PCB No: 834-5990 SEGA 1986
275CPU   : NEC D315-5179 (Z80?)
276SOUND : OKI MSM5205 + Resonator 384kHz, SN76489 (x3)
277RAM   : MB8128 (x1)
278OTHER : Volume Pot (x2, labelled VOICE and SOUND)
279PALs  : (x1, near EPR-7542.15D, labelled 315-5056)
280PROMs : (x1, near EPR-7543.12B, labelled PR7571)
281DIPSW : 8 position (x1)
282DIPSW Info:
458   /* common machine hardware */
459   MDRV_IMPORT_FROM(appoooh_common)
283460
284                    1   2   3   4   5   6   7   8
285-----------------------------------------------------------------------------------
286Coin1
287    1Coin 1Credit   OFF OFF OFF
288    2Coin 1Credit   ON  OFF OFF
289    3Coin 1Credit   OFF ON  OFF
290    4Coin 1Credit   ON  ON  OFF
291    1Coin 2Credit   OFF OFF ON
292    1Coin 3Credit   ON  OFF ON
293    1Coin 4Credit   OFF ON  ON
294    2Coin 3Credit   ON  ON  ON
295-----------------------------------------------------------------------------------
296Coin2
297    1Coin 1Credit               OFF OFF
298    1Coin 2Credit               ON  OFF
299    2Coin 1Credit               OFF ON
300    3Coin 1Credit               ON  ON
301-----------------------------------------------------------------------------------
302Demo Sound
303    Off                                 OFF
304    On                                  ON
305-----------------------------------------------------------------------------------
306Not Used                                    OFF
307-----------------------------------------------------------------------------------
308Language
309    Japanese                                    OFF
310    English                                     ON
311-----------------------------------------------------------------------------------
461   /* video hardware */
462   MDRV_SCREEN_ADD("screen", RASTER)
463   MDRV_SCREEN_REFRESH_RATE(60)
464   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
465   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
466   MDRV_SCREEN_SIZE(32*8, 32*8)
467   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
468   MDRV_GFXDECODE(appoooh)
469   MDRV_PALETTE_LENGTH(32*8+32*8)
312470
471   MDRV_PALETTE_INIT(appoooh)
472   MDRV_VIDEO_START(appoooh)
473   MDRV_VIDEO_UPDATE(appoooh)
474MACHINE_DRIVER_END
313475
314476
315
316PCB Edge Connector Pinout
317-------------------------
318
319Parts               Solder
320Side                Side
321--------------------------------
322GND         A  1    GND
323GND         B  2    GND
324COIN 2      C  3    -
3251P HOLD     D  4    2P HOLD
3261P PUNCH    E  5    2P PUNCH
327-           F  6    -
3281P START    H  7    2P START
3291P KICK     J  8    2P KICK
3301P UP       K  9    2P UP
3311P DOWN     L  10   2P DOWN
3321P LEFT     M  11   2P LEFT
3331P RIGHT    N  12   2P RIGHT
334COUNTER 1   P  13   COIN 1
335COUNTER 2   R  14   SERVICE
336RED         S  15   GREEN
337BLUE        T  16   SYNC
338-           U  17   -
339+5          V  18   +5
340+5          W  19   +5
341+12         X  20   +12
342SPEAKER 1   Y  21   SPEAKER 2
343SPEAKER GND Z  22   SPEAKER GND
344
345
346
347Controls via 8-way Joystick and 3 buttons (Punch, Hold, Kick)
348
349
350
351            Byte
352ROMs  :         C'sum (for Mike ;-)
353----------------------------------------
354EPR-7540.13D    27C256  6A13h
355EPR-7541.14D      " 2723h
356EPR-7542.15D      " 01E7h
357EPR-7543.12B      " 6558h
358
359PR7571.10A      82s123  0A9Fh
360
361
362
363
364Lower Board
365-----------
366
367PCB No: 837-5992
368XTAL  : 18.432MHz
369RAM   : MB8128 (x2), SONY CXK5813D-55 (x2)
370PALs  : (x3, labelled 315-5054, 315-5053, 315-5203)
371PROMs : (x2, one near EPR-7547.7D labelled PR7572, one near EPR-7544.7H labelled PR7573)
372
373                Byte
374ROMs  :             C'Sum
375-------------------------------------
376EPR-7544.7H    27C256  \    ED1Ah
377EPR-7545.6H      "      |   E6CAh
378EPR-7546.5H      "      |   55EAh
379EPR-7547.7D      "      | Gfx   EA3Fh
380EPR-7548.6D      "      |   5D1Fh
381EPR-7549.5D      "     /    16D1h
382
383PR7572.7F      82s129       06F1h  \ Both have
384PR7573.7G      82s129       06F1h  / identical contents
385
386*/
387
388static INPUT_PORTS_START( robowres )
389   PORT_INCLUDE( appoooh )
390
391   PORT_MODIFY("DSW1")
392   PORT_DIPUNUSED_DIPLOC(0x40,0x40, "SW1:7" )         /* Listed as "Unused" */
393   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Language ) )      PORT_DIPLOCATION("SW1:8")
394   PORT_DIPSETTING(    0x00, DEF_STR( Japanese ) )
395   PORT_DIPSETTING(    0x80, DEF_STR( English ) )
396INPUT_PORTS_END
397
398static const gfx_layout robowres_charlayout =
399{
400   8,8,
401   RGN_FRAC(1,3),
402   3,
403   { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
404   { 7,6,5,4, 3,2,1,0 },
405   { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
406   8*8
407};
408
409static const gfx_layout robowres_spritelayout =
410{
411   16,16,
412   RGN_FRAC(1,3),
413   3,
414   { RGN_FRAC(2,3),RGN_FRAC(1,3),RGN_FRAC(0,3) },
415   { 7, 6, 5, 4, 3, 2, 1, 0 ,
416     8*8+7,8*8+6,8*8+5,8*8+4,8*8+3,8*8+2,8*8+1,8*8+0},
417   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
418     16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
419   32*8   /* every char takes 8 consecutive bytes */
420};
421
422
423static GFXDECODE_START( robowres )
424   GFXDECODE_ENTRY( "gfx1", 0, robowres_charlayout,        0, 32 )
425   GFXDECODE_ENTRY( "gfx2", 0, robowres_charlayout,         0, 32 )
426   GFXDECODE_ENTRY( "gfx1", 0, robowres_spritelayout,      0, 32 )
427   GFXDECODE_ENTRY( "gfx2", 0, robowres_spritelayout,       0, 32 )
428GFXDECODE_END
429
430477static MACHINE_DRIVER_START( robowres )
431478
432   /* basic machine hardware */
433   MDRV_CPU_ADD("maincpu", Z80,18432000/6)   /* ??? the main xtal is 18.432 MHz */
434   MDRV_CPU_PROGRAM_MAP(main_map)
435   MDRV_CPU_IO_MAP(main_portmap)
436   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
479   /* common machine hardware */
480   MDRV_IMPORT_FROM(appoooh_common)
437481
438    MDRV_MACHINE_START(appoooh)
439
440482   /* video hardware */
441483   MDRV_SCREEN_ADD("screen", RASTER)
442484   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
450492   MDRV_PALETTE_INIT(robowres)
451493   MDRV_VIDEO_START(appoooh)
452494   MDRV_VIDEO_UPDATE(robowres)
453
454   /* sound hardware */
455   MDRV_SPEAKER_STANDARD_MONO("mono")
456
457   MDRV_SOUND_ADD("sn1", SN76489, 18432000/6)
458   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
459
460   MDRV_SOUND_ADD("sn2", SN76489, 18432000/6)
461   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
462
463   MDRV_SOUND_ADD("sn3", SN76489, 18432000/6)
464   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
465
466   MDRV_SOUND_ADD("msm", MSM5205, 384000)
467   MDRV_SOUND_CONFIG(msm5205_config)
468   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
469495MACHINE_DRIVER_END
470496
471/***************************************************************************
497/*************************************
498 *
499 *  ROM definition(s)
500 *
501 *************************************/
472502
473  Game driver(s)
474
475***************************************************************************/
476
477503ROM_START( appoooh )
478504   ROM_REGION( 0x14000, "maincpu", 0 )   /* 64k for code + 16k bank */
479505   ROM_LOAD( "epr-5906.bin", 0x00000, 0x2000, CRC(fffae7fe) SHA1(b4bb60eb6331e503759bd963eafefa69331d6b86) )
r6428r6429
566592
567593
568594
569static DRIVER_INIT(robowres){
595/*************************************
596 *
597 *  Driver initialization
598 *
599 *************************************/
600
601static DRIVER_INIT(robowres)
602{
570603   robowres_decode(machine, "maincpu");
571604}
572605
573static DRIVER_INIT(robowrb){
606static DRIVER_INIT(robowrb)
607{
574608   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
575609   memory_set_decrypted_region(space, 0x0000, 0x7fff, memory_region(machine, "maincpu") + 0x1c000);
576610}
577611
578612
579GAME( 1984, appoooh,  0,        appoooh,  appoooh,  0,        ROT0, "[Sanritsu] Sega", "Appoooh", GAME_SUPPORTS_SAVE )
580GAME( 1986, robowres, 0,        robowres, robowres, robowres, ROT0, "Sega", "Robo Wres 2001", GAME_SUPPORTS_SAVE )
581GAME( 1986, robowresb,robowres, robowres, robowres, robowrb,  ROT0, "bootleg", "Robo Wres 2001 (bootleg)", GAME_SUPPORTS_SAVE )
613/*************************************
614 *
615 *  Game driver(s)
616 *
617 *************************************/
618
619GAME( 1984, appoooh,   0,        appoooh,  appoooh,  0,        ROT0, "[Sanritsu] Sega", "Appoooh", GAME_SUPPORTS_SAVE )
620GAME( 1986, robowres,  0,        robowres, robowres, robowres, ROT0, "Sega",            "Robo Wres 2001", GAME_SUPPORTS_SAVE )
621GAME( 1986, robowresb, robowres, robowres, robowres, robowrb,  ROT0, "bootleg",         "Robo Wres 2001 (bootleg)", GAME_SUPPORTS_SAVE )
src/mame/drivers/travrusa.c
r6428r6429
4949
5050#include "driver.h"
5151#include "cpu/z80/z80.h"
52#include "audio/irem.h"
52#include "includes/iremz80.h"
5353
54extern UINT8 *travrusa_videoram;
5554
56PALETTE_INIT( travrusa );
57PALETTE_INIT( shtrider );
58VIDEO_START( travrusa );
59WRITE8_HANDLER( travrusa_videoram_w );
60WRITE8_HANDLER( travrusa_scroll_x_low_w );
61WRITE8_HANDLER( travrusa_scroll_x_high_w );
62WRITE8_HANDLER( travrusa_flipscreen_w );
63VIDEO_UPDATE( travrusa );
64
65
66
6755static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
6856   AM_RANGE(0x0000, 0x7fff) AM_ROM
69   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_BASE(&travrusa_videoram)
57   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
7058   AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w)
7159   AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w)
72   AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
60   AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
7361   AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w)
7462   AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w)   /* + coin counters - not written by shtrider */
7563   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM")      /* IN0 */
r6428r6429
300288   GFXDECODE_ENTRY( "gfx2", 0, shtrider_spritelayout, 16*8, 16 )
301289GFXDECODE_END
302290
291static MACHINE_RESET( travrusa )
292{
293   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
303294
295   state->scrollx[0] = 0;
296   state->scrollx[1] = 0;
297}
304298
305299static MACHINE_DRIVER_START( travrusa )
306300
301   /* driver data */
302   MDRV_DRIVER_DATA(irem_z80_state)
303
307304   /* basic machine hardware */
308305   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz (?) */
309306   MDRV_CPU_PROGRAM_MAP(main_map)
310307   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
311308
309   MDRV_MACHINE_RESET(travrusa)
310
312311   /* video hardware */
313312   MDRV_SCREEN_ADD("screen", RASTER)
314313   MDRV_SCREEN_REFRESH_RATE(56.75)
r6428r6429
458457
459458static DRIVER_INIT( motorace )
460459{
461   int A,j;
460   int A, j;
462461   UINT8 *rom = memory_region(machine, "maincpu");
463462   UINT8 *buffer = alloc_array_or_die(UINT8, 0x2000);
464463
465      memcpy(buffer,rom,0x2000);
464      memcpy(buffer, rom, 0x2000);
466465
467466      /* The first CPU ROM has the address and data lines scrambled */
468      for (A = 0;A < 0x2000;A++)
467      for (A = 0; A < 0x2000; A++)
469468      {
470469         j = BITSWAP16(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11);
471470         rom[j] = BITSWAP8(buffer[A],2,7,4,1,6,3,0,5);
r6428r6429
486485
487486
488487
489GAME( 1983, travrusa, 0,        travrusa, travrusa, 0,        ROT270, "Irem", "Traverse USA / Zippy Race", 0 )
490GAME( 1983, motorace, travrusa, travrusa, motorace, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", 0 )
491GAME( 1985, shtrider, 0,        shtrider, shtrider, 0,        ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", 0 )
492GAME( 1984, shtridera,shtrider, shtrider, shtrider, shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", 0 )
488GAME( 1983, travrusa, 0,        travrusa, travrusa, 0,        ROT270, "Irem", "Traverse USA / Zippy Race", GAME_SUPPORTS_SAVE )
489GAME( 1983, motorace, travrusa, travrusa, motorace, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", GAME_SUPPORTS_SAVE )
490GAME( 1985, shtrider, 0,        shtrider, shtrider, 0,        ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", GAME_SUPPORTS_SAVE )
491GAME( 1984, shtridera,shtrider, shtrider, shtrider, shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", GAME_SUPPORTS_SAVE )
src/mame/drivers/goldstar.c
r6428r6429
187187   AM_RANGE(0xf810, 0xf810) AM_READ_PORT("UNK1")
188188   AM_RANGE(0xf811, 0xf811) AM_READ_PORT("UNK2")
189189   AM_RANGE(0xf820, 0xf820) AM_READ_PORT("DSW2")
190   AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
191   AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("ay", ay8910_address_w)
190   AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
191   AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_address_w)
192192   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(goldstar_fa00_w)
193193   AM_RANGE(0xfb00, 0xfb00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
194194   AM_RANGE(0xfd00, 0xfdff) AM_READWRITE(SMH_RAM,paletteram_BBGGGRRR_w) AM_BASE(&paletteram)
r6428r6429
225225   AM_RANGE(0xf822, 0xf822) AM_WRITE(goldstar_fa00_w) // hack (connected to ppi output port?, needed for colour banking)
226226   AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w)   /* Input/Output Ports */
227227
228   AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
229   AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("ay", ay8910_address_w)
228   AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
229   AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_address_w)
230230//  AM_RANGE(0xf850, 0xf850) AM_WRITE(ncb3_p1_flip_w)   // need flip?
231231//  AM_RANGE(0xf860, 0xf860) AM_WRITE(ncb3_p2_flip_w)   // need flip?
232   AM_RANGE(0xf870, 0xf870) AM_DEVWRITE("sn", sn76496_w)   /* guess... device is initialized, but doesn't seems to be used.*/
232   AM_RANGE(0xf870, 0xf870) AM_DEVWRITE("snsnd", sn76496_w)   /* guess... device is initialized, but doesn't seems to be used.*/
233233ADDRESS_MAP_END
234234
235235static ADDRESS_MAP_START( ncb3_readwriteport, ADDRESS_SPACE_IO, 8 )
r6428r6429
326326
327327static ADDRESS_MAP_START( cm_portmap, ADDRESS_SPACE_IO, 8 )
328328   ADDRESS_MAP_GLOBAL_MASK(0xff)
329   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
330   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
329   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
330   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
331331   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
332332   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DIP switches */
333333   AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w)   /* output port */
r6428r6429
342342   ADDRESS_MAP_GLOBAL_MASK(0xff)
343343   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
344344   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DIP switches */
345   AM_RANGE(0x21, 0x21) AM_DEVREAD("ay", ay8910_r)
346   AM_RANGE(0x22, 0x23) AM_DEVWRITE("ay", ay8910_data_address_w)
345   AM_RANGE(0x21, 0x21) AM_DEVREAD("aysnd", ay8910_r)
346   AM_RANGE(0x22, 0x23) AM_DEVWRITE("aysnd", ay8910_data_address_w)
347347ADDRESS_MAP_END
348348
349349
350350static ADDRESS_MAP_START( amcoe1_portmap, ADDRESS_SPACE_IO, 8 )
351351   ADDRESS_MAP_GLOBAL_MASK(0xff)
352   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
353   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
352   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
353   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
354354   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
355355   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DIP switches */
356356   AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w)   /* output port */
r6428r6429
362362
363363static ADDRESS_MAP_START( amcoe2_portmap, ADDRESS_SPACE_IO, 8 )
364364   ADDRESS_MAP_GLOBAL_MASK(0xff)
365   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
366   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
365   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
366   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
367367   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
368368   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DIP switches */
369369   AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w)   /* output port */
r6428r6429
393393   AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
394394   AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* Input Ports */
395395   AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w)   /* Input/Output Ports */
396   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
397   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("ay", ay8910_address_w)   /* no sound... only use both ports for DSWs */
396   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
397   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_address_w)   /* no sound... only use both ports for DSWs */
398398   AM_RANGE(0xb850, 0xb850) AM_WRITE(lucky8_outport_w)
399   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("sn", sn76496_w)   /* sound */
399   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76496_w)   /* sound */
400400   AM_RANGE(0xf800, 0xffff) AM_RAM
401401ADDRESS_MAP_END
402402
r6428r6429
418418   AM_RANGE(0xb830, 0xb830) AM_WRITENOP      /* no ay8910 */
419419   AM_RANGE(0xb840, 0xb840) AM_WRITENOP      /* no ay8910 */
420420   AM_RANGE(0xb850, 0xb850) AM_WRITE(lucky8_outport_w)
421   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("sn", sn76496_w)   /* sound */
421   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76496_w)   /* sound */
422422   AM_RANGE(0xf800, 0xffff) AM_RAM
423423ADDRESS_MAP_END
424424
r6428r6429
453453
454454   AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
455455   AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DSW bank */
456   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
457   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("ay", ay8910_address_w)   /* no sound... only use ports */
456   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
457   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_address_w)   /* no sound... only use ports */
458458   AM_RANGE(0xb850, 0xb850) AM_WRITENOP   /* just turn off the lamps, if exist */
459   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("sn", sn76496_w)   /* sound */
459   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76496_w)   /* sound */
460460   AM_RANGE(0xf800, 0xffff) AM_RAM
461461ADDRESS_MAP_END
462462
r6428r6429
475475   AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
476476   AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* Input Ports */
477477   AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w)   /* Input/Output Ports */
478   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
479   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("ay", ay8910_address_w)   /* no sound... only use both ports for DSWs */
478   AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
479   AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_address_w)   /* no sound... only use both ports for DSWs */
480480   AM_RANGE(0xb850, 0xb850) AM_WRITE(lucky8_outport_w)
481   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("sn", sn76496_w)   /* sound */
481   AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76496_w)   /* sound */
482482//  AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", ppi8255_r, ppi8255_w) /* Other PPI initialized? */
483483   AM_RANGE(0xd000, 0xefff) AM_ROM
484484   AM_RANGE(0xf000, 0xffff) AM_RAM
r6428r6429
518518
519519static ADDRESS_MAP_START( unkch_portmap, ADDRESS_SPACE_IO, 8 )
520520   ADDRESS_MAP_GLOBAL_MASK(0xff)
521//  AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
522//  AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
521//  AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_r)
522//  AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
523523//  AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */
524524//  AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* DIP switches */
525525//  AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w)   /* output port */
r6428r6429
46844684
46854685   /* sound hardware */
46864686   MDRV_SPEAKER_STANDARD_MONO("mono")
4687   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4687   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
46884688   MDRV_SOUND_CONFIG(ay8910_config)
46894689   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
46904690
r6428r6429
47204720
47214721   /* sound hardware */
47224722   MDRV_SPEAKER_STANDARD_MONO("mono")
4723   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4723   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
47244724   MDRV_SOUND_CONFIG(ay8910_config)
47254725   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
47264726
r6428r6429
47554755
47564756   /* sound hardware */
47574757   MDRV_SPEAKER_STANDARD_MONO("mono")
4758   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4758   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
47594759   MDRV_SOUND_CONFIG(ay8910_config)
47604760   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
47614761
r6428r6429
48584858   /* sound hardware */
48594859   MDRV_SPEAKER_STANDARD_MONO("mono")
48604860
4861   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
4861   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
48624862   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
48634863
4864   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4864   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
48654865   MDRV_SOUND_CONFIG(ay8910_config)
48664866   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
48674867MACHINE_DRIVER_END
r6428r6429
49014901   /* sound hardware */
49024902   MDRV_SPEAKER_STANDARD_MONO("mono")
49034903
4904   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
4904   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
49054905   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
49064906
4907   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4907   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
49084908   MDRV_SOUND_CONFIG(ay8910_config)
49094909   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
49104910MACHINE_DRIVER_END
r6428r6429
49404940
49414941   /* sound hardware */
49424942   MDRV_SPEAKER_STANDARD_MONO("mono")
4943   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4943   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
49444944   MDRV_SOUND_CONFIG(cm_ay8910_config)
49454945   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
49464946MACHINE_DRIVER_END
r6428r6429
49824982
49834983   /* sound hardware */
49844984   MDRV_SPEAKER_STANDARD_MONO("mono")
4985   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4985   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
49864986   MDRV_SOUND_CONFIG(cm_ay8910_config)
49874987   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
49884988MACHINE_DRIVER_END
r6428r6429
50175017
50185018   /* sound hardware */
50195019   MDRV_SPEAKER_STANDARD_MONO("mono")
5020   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5020   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
50215021   MDRV_SOUND_CONFIG(cm_ay8910_config)
50225022   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
50235023MACHINE_DRIVER_END
r6428r6429
50545054   /* sound hardware */
50555055   MDRV_SPEAKER_STANDARD_MONO("mono")
50565056
5057   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
5057   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
50585058   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
50595059
5060   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5060   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
50615061   MDRV_SOUND_CONFIG(lucky8_ay8910_config)
50625062   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
50635063
r6428r6429
50965096   /* sound hardware */
50975097   MDRV_SPEAKER_STANDARD_MONO("mono")
50985098
5099   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
5099   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
51005100   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
51015101
51025102MACHINE_DRIVER_END
r6428r6429
51335133   /* sound hardware */
51345134   MDRV_SPEAKER_STANDARD_MONO("mono")//set up a standard mono speaker called 'mono'
51355135
5136   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
5136   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
51375137   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
51385138
5139   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5139   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
51405140   MDRV_SOUND_CONFIG(ladylinr_ay8910_config)
51415141   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
51425142MACHINE_DRIVER_END
r6428r6429
51745174   /* sound hardware */
51755175   MDRV_SPEAKER_STANDARD_MONO("mono")
51765176
5177   MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK)
5177   MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
51785178   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
51795179
5180   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5180   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
51815181   MDRV_SOUND_CONFIG(lucky8_ay8910_config)
51825182   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
51835183
r6428r6429
52155215
52165216   /* sound hardware */
52175217   MDRV_SPEAKER_STANDARD_MONO("mono")
5218   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5218   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
52195219   MDRV_SOUND_CONFIG(cm_ay8910_config)
52205220   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
52215221
r6428r6429
52565256
52575257   /* sound hardware */
52585258   MDRV_SPEAKER_STANDARD_MONO("mono")
5259   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5259   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
52605260   MDRV_SOUND_CONFIG(cm_ay8910_config)
52615261   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
52625262
r6428r6429
52975297
52985298   /* sound hardware */
52995299   MDRV_SPEAKER_STANDARD_MONO("mono")
5300   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5300   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
53015301   MDRV_SOUND_CONFIG(cm_ay8910_config)
53025302   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)   /* analyzed for clips */
53035303MACHINE_DRIVER_END
r6428r6429
53325332
53335333   /* sound hardware */
53345334   MDRV_SPEAKER_STANDARD_MONO("mono")
5335   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5335   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
53365336   MDRV_SOUND_CONFIG(cm_ay8910_config)
53375337   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)   /* analyzed for clips */
53385338MACHINE_DRIVER_END
r6428r6429
53655365   /* sound hardware */
53665366   MDRV_SPEAKER_STANDARD_MONO("mono")
53675367
5368   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
5368   MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
53695369   MDRV_SOUND_CONFIG(ay8910_config)
53705370   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
53715371MACHINE_DRIVER_END
r6428r6429
84178417GAME( 1989, lucky8,    0,        lucky8,   lucky8,   0,         ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 1)",                   0 )
84188418GAME( 1989, lucky8a,   lucky8,   lucky8,   lucky8a,  lucky8a,   ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 2)",                   0 )
84198419GAME( 1989, lucky8b,   lucky8,   lucky8,   ns8lines, 0,         ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 3, extended gfx)",     0 )
8420GAME( 198?, ns8lines,  0,        lucky8,   ns8lines, 0,         ROT0, "Unknown",           "New Lucky 8 Lines / New Super 8 Lines",       0 )
8420GAME( 198?, ns8lines,  0,        lucky8,   ns8lines, 0,         ROT0, "<unknown>",         "New Lucky 8 Lines / New Super 8 Lines",       0 )
84218421GAME( 198?, ladylinr,  0,        ladylinr, ladylinr, 0,         ROT0, "TAB Austria",       "Lady Liner",                                  0 )
84228422GAME( 198?, kkojnoli,  0,        kkojnoli, kkojnoli, 0,         ROT0, "south korean hack", "Kkoj Noli (Kill the Bees)",                   GAME_IMPERFECT_COLORS )
84238423GAME( 198?, wcat3,     0,        wcat3,    lucky8,   0,         ROT0, "E.A.I.",            "Wild Cat 3",                                  GAME_NOT_WORKING )
src/mame/drivers/dbz.c
r6428r6429
171171static ADDRESS_MAP_START( dbz_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
172172   AM_RANGE(0x0000, 0x7fff) AM_ROM
173173   AM_RANGE(0x8000, 0xbfff) AM_RAM
174   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
174   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
175175   AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
176176   AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_r)
177177ADDRESS_MAP_END
r6428r6429
348348   /* sound hardware */
349349   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
350350
351   MDRV_SOUND_ADD("ym", YM2151, 4000000)
351   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
352352   MDRV_SOUND_CONFIG(ym2151_config)
353353   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
354354   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/skylncr.c
r6428r6429
377377
378378   AM_RANGE(0x20, 0x20) AM_WRITE( skylncr_coin_w )
379379
380   AM_RANGE(0x30, 0x31) AM_DEVWRITE( "ay", ay8910_address_data_w )
381   AM_RANGE(0x31, 0x31) AM_DEVREAD( "ay", ay8910_r )
380   AM_RANGE(0x30, 0x31) AM_DEVWRITE( "aysnd", ay8910_address_data_w )
381   AM_RANGE(0x31, 0x31) AM_DEVREAD( "aysnd", ay8910_r )
382382
383383   AM_RANGE(0x40, 0x41) AM_WRITE( skylncr_paletteram_w )
384384   AM_RANGE(0x50, 0x51) AM_WRITE( skylncr_paletteram2_w )
r6428r6429
527527   PORT_DIPSETTING(    0x00, "24" )
528528   PORT_DIPNAME( 0x80, 0x00, "Key Out" )
529529   PORT_DIPSETTING(    0x80, "x100" )
530   PORT_DIPSETTING(    0x00, "x1" )
530   PORT_DIPSETTING(    0x00, "x1snd" )
531531
532532   PORT_START("DSW2")   /* $10 (PPI1 port A) */
533533   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
r6428r6429
686686
687687   /* sound hardware */
688688   MDRV_SPEAKER_STANDARD_MONO("mono")
689   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8)
689   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8)
690690   MDRV_SOUND_CONFIG(ay8910_config)
691691   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
692692MACHINE_DRIVER_END
src/mame/drivers/20pacgal.c
r6428r6429
3737
3838#include "driver.h"
3939#include "cpu/z180/z180.h"
40#include "machine/eeprom.h"
40#include "machine/eepromdev.h"
4141#include "sound/namco.h"
4242#include "sound/dac.h"
4343#include "20pacgal.h"
r6428r6429
6969   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
7070
7171   if (!bit)
72      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE );
72      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
7373}
7474
7575
r6428r6429
9494 *
9595 *************************************/
9696
97static const eeprom_interface eeprom_intf =
97static const eeprom_interface _20pacgal_eeprom_intf =
9898{
99   7,            /* address bits */
100   8,            /* data bits */
101   "*110",         /* read command */
102   "*101",         /* write command */
103   0,            /* erase command */
104   "*10000xxxxx",   /* lock command */
105   "*10011xxxxx",   /* unlock command */
99   7,                /* address bits */
100   8,                /* data bits */
101   "*110",           /* read command */
102   "*101",           /* write command */
103   0,                /* erase command */
104   "*10000xxxxx",    /* lock command */
105   "*10011xxxxx",    /* unlock command */
106106};
107107
108108
109static NVRAM_HANDLER( eeprom )
109static READ8_DEVICE_HANDLER( eeprom_r )
110110{
111   if (read_or_write)
112      eeprom_save(file);
113   else
114   {
115      eeprom_init(machine, &eeprom_intf);
111   _20pacgal_state *state = (_20pacgal_state *)device->machine->driver_data;
116112
117      if (file)
118         eeprom_load(file);
119   }
113   /* bit 7 is EEPROM data */
114   return eepromdev_read_bit(state->eeprom) << 7;
120115}
121116
122117
123static READ8_HANDLER( eeprom_r )
118static WRITE8_DEVICE_HANDLER( eeprom_w )
124119{
125   /* bit 7 is EEPROM data */
126   return eeprom_read_bit() << 7;
127}
120   _20pacgal_state *state = (_20pacgal_state *)device->machine->driver_data;
128121
129
130static WRITE8_HANDLER( eeprom_w )
131{
132122   /* bit 7 is data */
133123   /* bit 6 is clock (active high) */
134124   /* bit 5 is cs (active low) */
135   eeprom_write_bit(data & 0x80);
136   eeprom_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
137   eeprom_set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
125   eepromdev_write_bit(state->eeprom, data & 0x80);
126   eepromdev_set_cs_line(state->eeprom, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
127   eepromdev_set_clock_line(state->eeprom, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
138128}
139129
140130
r6428r6429
167157   if (state->game_selected == 0)
168158   {
169159      UINT8 *rom = memory_region(space->machine, "maincpu");
170      memcpy(rom+0x48000, rom+0x8000, 0x2000);
160      memcpy(rom + 0x48000, rom + 0x8000, 0x2000);
171161   }
172162}
173163
r6428r6429
229219   AM_RANGE(0x81, 0x81) AM_WRITENOP            /* ??? pulsed by the timer irq */
230220   AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w)
231221   AM_RANGE(0x85, 0x86) AM_WRITENOP            /* stars: rng seed (lo/hi) */
232   AM_RANGE(0x87, 0x87) AM_READWRITE(eeprom_r, eeprom_w)
222   AM_RANGE(0x87, 0x87) AM_DEVREADWRITE("eeprom", eeprom_r, eeprom_w)
233223   AM_RANGE(0x88, 0x88) AM_WRITE(rom_bank_select_w)
234224   AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_signed_w)
235225   AM_RANGE(0x8a, 0x8a) AM_WRITENOP            /* stars: bits 3-4 = active set; bit 5 = enable */
r6428r6429
285275 *
286276 *************************************/
287277
278static MACHINE_START( 20pacgal )
279{
280   _20pacgal_state *state = (_20pacgal_state *)machine->driver_data;
281
282   state->eeprom = devtag_get_device(machine, "eeprom");
283
284   state_save_register_global(machine, state->game_selected);
285}
286
287static MACHINE_RESET( 20pacgal )
288{
289   _20pacgal_state *state = (_20pacgal_state *)machine->driver_data;
290
291   state->game_selected = 0;
292}
293
288294static MACHINE_DRIVER_START( 20pacgal )
289295
290296   MDRV_DRIVER_DATA(_20pacgal_state)
r6428r6429
295301   MDRV_CPU_IO_MAP(20pacgal_io_map)
296302   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
297303
298   MDRV_NVRAM_HANDLER(eeprom)
304   MDRV_MACHINE_START(20pacgal)
305   MDRV_MACHINE_RESET(20pacgal)
299306
307   MDRV_EEPROM_NODEFAULT_ADD("eeprom", _20pacgal_eeprom_intf)
308
300309   /* video hardware */
301310   MDRV_IMPORT_FROM(20pacgal_video)
302311
src/mame/drivers/seicross.c
r6428r6429
133133
134134static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
135135   ADDRESS_MAP_GLOBAL_MASK(0xff)
136   AM_RANGE(0x00, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("ay", ay8910_address_data_w)
137   AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVREAD("ay", ay8910_r)
136   AM_RANGE(0x00, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("aysnd", ay8910_address_data_w)
137   AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVREAD("aysnd", ay8910_r)
138138ADDRESS_MAP_END
139139
140140
r6428r6429
431431   /* sound hardware */
432432   MDRV_SPEAKER_STANDARD_MONO("mono")
433433
434   MDRV_SOUND_ADD("ay", AY8910, 1536000)
434   MDRV_SOUND_ADD("aysnd", AY8910, 1536000)
435435   MDRV_SOUND_CONFIG(ay8910_config)
436436   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
437437
src/mame/drivers/spbactn.c
r6428r6429
195195   AM_RANGE(0x0000, 0xefff) AM_ROM
196196   AM_RANGE(0xf000, 0xf7ff) AM_RAM
197197   AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
198   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym", ym3812_w)
198   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_w)
199199
200200   AM_RANGE(0xfc00, 0xfc00) AM_READNOP   AM_WRITENOP /* irq ack ?? */
201201   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
r6428r6429
364364   /* sound hardware */
365365   MDRV_SPEAKER_STANDARD_MONO("mono")
366366
367   MDRV_SOUND_ADD("ym", YM3812, 3579545)
367   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
368368   MDRV_SOUND_CONFIG(ym3812_config)
369369   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
370370
src/mame/drivers/system16.c
r6428r6429
223223
224224static ADDRESS_MAP_START( tturfbl_sound_io_map, ADDRESS_SPACE_IO, 8 )
225225   ADDRESS_MAP_GLOBAL_MASK(0xff)
226   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
226   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
227227   AM_RANGE(0x40, 0x40) AM_WRITENOP
228228   AM_RANGE(0x80, 0x80) AM_NOP
229229ADDRESS_MAP_END
r6428r6429
238238
239239static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
240240   ADDRESS_MAP_GLOBAL_MASK(0xff)
241   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
241   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
242242   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
243243ADDRESS_MAP_END
244244
r6428r6429
264264
265265static ADDRESS_MAP_START( sound_7759_io_map, ADDRESS_SPACE_IO, 8 )
266266   ADDRESS_MAP_GLOBAL_MASK(0xff)
267   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
267   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
268268   AM_RANGE(0x40, 0x40) AM_DEVWRITE("7759", upd7759_bank_w)
269269   AM_RANGE(0x80, 0x80) AM_DEVWRITE("7759", upd7759_port_w)
270270   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
r6428r6429
328328   /* sound hardware */
329329   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
330330
331   MDRV_SOUND_ADD("ym", YM2151, 4000000)
331   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
332332   MDRV_SOUND_ROUTE(0, "lspeaker", 0.32)
333333   MDRV_SOUND_ROUTE(1, "rspeaker", 0.32)
334334MACHINE_DRIVER_END
r6428r6429
11131113
11141114   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11151115
1116   MDRV_SOUND_ADD("ym", YM2151, 4000000)
1116   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
11171117   MDRV_SOUND_ROUTE(0, "lspeaker", 0.32)
11181118   MDRV_SOUND_ROUTE(1, "rspeaker", 0.32)
11191119
src/mame/drivers/prehisle.c
r6428r6429
6969
7070static ADDRESS_MAP_START( prehisle_sound_io_map, ADDRESS_SPACE_IO, 8 )
7171   ADDRESS_MAP_GLOBAL_MASK(0xff)
72   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ym", ym3812_status_port_r, ym3812_control_port_w)
73   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ym", ym3812_write_port_w)
72   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_status_port_r, ym3812_control_port_w)
73   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_write_port_w)
7474   AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", D7759_write_port_0_w)
7575   AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", D7759_upd_reset_w)
7676ADDRESS_MAP_END
r6428r6429
240240   /* sound hardware */
241241   MDRV_SPEAKER_STANDARD_MONO("mono")
242242
243   MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz)   /* verified on pcb */
243   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz)   /* verified on pcb */
244244   MDRV_SOUND_CONFIG(ym3812_config)
245245   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
246246
src/mame/drivers/simpsons.c
r6428r6429
137137   AM_RANGE(0x0000, 0x7fff) AM_ROM
138138   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2)
139139   AM_RANGE(0xf000, 0xf7ff) AM_RAM
140   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
140   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
141141   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
142142   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
143143   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
r6428r6429
288288   /* sound hardware */
289289   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
290290
291   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
291   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
292292   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)   /* only left channel is connected */
293293   MDRV_SOUND_ROUTE(0, "rspeaker", 1.0)
294294   MDRV_SOUND_ROUTE(1, "lspeaker", 0.0)
src/mame/drivers/model1.c
r6428r6429
997997   AM_RANGE(0xc50000, 0xc50001) AM_DEVWRITE( "sega1", m1_snd_mpcm_bnk_w )
998998   AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8( "sega2", multipcm_r, multipcm_w, 0x00ff )
999999   AM_RANGE(0xc70000, 0xc70001) AM_DEVWRITE( "sega2", m1_snd_mpcm_bnk_w )
1000   AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8( "ym", ym3438_r, ym3438_w, 0x00ff )
1000   AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8( "ymsnd", ym3438_r, ym3438_w, 0x00ff )
10011001   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM
10021002ADDRESS_MAP_END
10031003
r6428r6429
14741474
14751475   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
14761476
1477   MDRV_SOUND_ADD("ym", YM3438, 8000000)
1477   MDRV_SOUND_ADD("ymsnd", YM3438, 8000000)
14781478   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
14791479   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
14801480
r6428r6429
15171517
15181518   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15191519
1520   MDRV_SOUND_ADD("ym", YM3438, 8000000)
1520   MDRV_SOUND_ADD("ymsnd", YM3438, 8000000)
15211521   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
15221522   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
15231523
src/mame/drivers/polepos.c
r6428r6429
207207  136014-231 which matches Namco's PP1-27. The bad bit should cause a tiny gfx
208208  glitch, though it's difficult to notice.
209209
210- topracra: Use Service1 to start game
211210
212211Todo:
213212
214- topracra: Gear is not updated in artwork
215- bootlegs shouldn't be using NAMCO devices.
213- the bootlegs without Namco devices (topracern, polepos2bi) still still require
214  our 06xx and 51xx emulation to boot, this is incorrect.
215- these sets also don't update the ingame gear artwork
216216
217217***************************************************************************/
218218
r6428r6429
683683INPUT_PORTS_END
684684
685685
686static INPUT_PORTS_START( topracra )
687   // no coins ?!
686static INPUT_PORTS_START( topracern )
688687   PORT_START("IN0")
689688   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
690689   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
691   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(auto_start_r, NULL)   // start 1, program controlled
690   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
692691   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
693692   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Gear Change") PORT_CODE(KEYCODE_SPACE) POLEPOS_TOGGLE /* Gear */
694   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 )
693   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
695694   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
696695
697696   PORT_START("IN0L")
r6428r6429
981980   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77)
982981MACHINE_DRIVER_END
983982
983/* doesn't exist on the bootleg, but required for now or the game only boots in test mode!
984   - they probably simulate some of the logic */
985static const namco_51xx_interface namco_51xx_bl_intf =
986{
987   {   /* port read handlers */
988      DEVCB_NULL,
989      DEVCB_INPUT_PORT("IN0H"),
990      DEVCB_NULL,
991      DEVCB_NULL
992   },
993   {   /* port write handlers */
994      DEVCB_NULL,
995      DEVCB_NULL
996   }
997};
998
999
1000static MACHINE_DRIVER_START( topracern )
1001
1002   /* basic machine hardware */
1003   MDRV_CPU_ADD("maincpu", Z80, 24576000/8)   /* 3.072 MHz */
1004   MDRV_CPU_PROGRAM_MAP(z80_map)
1005   MDRV_CPU_IO_MAP(z80_io)
1006   MDRV_CPU_VBLANK_INT_HACK(irq0_line_assert,2)   /* 64V */
1007
1008   MDRV_CPU_ADD("sub", Z8000, 24576000/8)   /* 3.072 MHz */
1009   MDRV_CPU_PROGRAM_MAP(z8002_map)
1010   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
1011
1012   MDRV_CPU_ADD("sub2", Z8000, 24576000/8)   /* 3.072 MHz */
1013   MDRV_CPU_PROGRAM_MAP(z8002_map)
1014   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
1015
1016   /* todo, remove these devices too, this bootleg doesn't have them, but the emulation doesn't boot without them.. */
1017   MDRV_NAMCO_51XX_ADD("51xx", 18432000/6/2, namco_51xx_bl_intf)      /* 1.536 MHz */
1018   MDRV_NAMCO_06XX_ADD("06xx", 18432000/6/64, "maincpu", "51xx", NULL, NULL, NULL)
1019
1020   MDRV_WATCHDOG_VBLANK_INIT(16)   // 128V clocks the same as VBLANK
1021
1022   MDRV_QUANTUM_TIME(HZ(6000))   /* some interleaving */
1023
1024   MDRV_MACHINE_RESET(polepos)
1025   MDRV_NVRAM_HANDLER(generic_1fill)
1026
1027   /* video hardware */
1028   MDRV_SCREEN_ADD("screen", RASTER)
1029   MDRV_SCREEN_REFRESH_RATE(60.606060)
1030   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
1031   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1032   MDRV_SCREEN_SIZE(32*8, 32*8)
1033   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
1034
1035   MDRV_GFXDECODE(polepos)
1036   MDRV_PALETTE_LENGTH(0x0f00)
1037   MDRV_DEFAULT_LAYOUT(layout_polepos)
1038
1039   MDRV_PALETTE_INIT(polepos)
1040   MDRV_VIDEO_START(polepos)
1041   MDRV_VIDEO_UPDATE(polepos)
1042
1043   /* sound hardware */
1044   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
1045
1046   MDRV_SOUND_ADD("namco", NAMCO, 24576000/512)
1047   MDRV_SOUND_CONFIG(namco_config)
1048   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
1049   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
1050
1051   /* engine sound */
1052   MDRV_SOUND_ADD("polepos", POLEPOS, 0)
1053   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77)
1054   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77)
1055MACHINE_DRIVER_END
1056
1057
9841058static ADDRESS_MAP_START( sound_z80_bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
9851059   AM_RANGE(0x0000, 0x1fff) AM_ROM
9861060   AM_RANGE(0x2700, 0x27ff) AM_RAM
r6428r6429
9911065ADDRESS_MAP_END
9921066
9931067static MACHINE_DRIVER_START( polepos2bi )
994   MDRV_IMPORT_FROM(polepos)
1068   MDRV_IMPORT_FROM(topracern)
9951069
996   /* todo, remove namco devices! */
997
9981070   MDRV_CPU_ADD("soundz80bl", Z80, 24576000/8)   /*? MHz */
9991071   MDRV_CPU_PROGRAM_MAP(sound_z80_bootleg_map)
10001072   MDRV_CPU_IO_MAP(sound_z80_bootleg_iomap)
r6428r6429
14271499   ROM_LOAD( "7052-4.c14",   0x0000, 0x0100, CRC(0e742cb1) SHA1(3ae43270aab4848fdeece1648e7e040ab216b08e) )    /* sync chain */
14281500ROM_END
14291501
1430ROM_START( topracra )
1502ROM_START( topracera )
14311503   /* Z80 memory/ROM data */
14321504   ROM_REGION( 0x10000, "maincpu", 0 )
1433   ROM_LOAD( "pole-c2",      0x0000, 0x2000, CRC(caab829a) SHA1(826f25f5c792ab8b24e73ebb735aebcad552454f) )
1434   ROM_LOAD( "pole-h2",      0x2000, 0x1000, CRC(148f5000) SHA1(071f75518f06a317f53db78f11da3ee878569f86) )
1435
1436   /* Z8002 #1 memory/ROM data */
1437   ROM_REGION( 0x10000, "sub", 0 )
1438   ROM_LOAD16_BYTE( "tr1b.bin",     0x0001, 0x2000, CRC(127f0750) SHA1(97ae6c6f8086187c7cdb8bff5fec94914791890b) )
1439   ROM_LOAD16_BYTE( "tr2b.bin",     0x0000, 0x2000, CRC(6bd4ff6b) SHA1(cf992de39a8cf7804961a8e6773fc4f7feb1878b) )
1440
1441   /* Z8002 #2 memory/ROM data */
1442   ROM_REGION( 0x10000, "sub2", 0 )
1443   ROM_LOAD16_BYTE( "tr5b.bin",     0x0001, 0x2000, CRC(4e5f7b9c) SHA1(d26b1f24dd9ef00388987890bc5b95d4db403815) )
1444   ROM_LOAD16_BYTE( "pole-d",       0x0000, 0x2000, CRC(932bb5a7) SHA1(8045fe1f9b4b1973ec0d6705adf3ba3891bddaa1) )
1445
1446   /* graphics data */
1447   ROM_REGION( 0x01000, "gfx1", 0 )    /* 2bpp alpha layer */
1448   ROM_LOAD( "tr28.bin",     0x0000, 0x1000, CRC(b8217c96) SHA1(aba311bc3c4b118ba322a00e33e2d5cbe7bc6e4a) )
1449
1450   ROM_REGION( 0x01000, "gfx2", 0 )    /* 2bpp view layer */
1451   ROM_LOAD( "tr29.bin",     0x0000, 0x1000, CRC(c6e15c21) SHA1(e2a70b3f7ce51a003068eb75d9fe82548f0206d7) )
1452
1453   ROM_REGION( 0x04000, "gfx3", 0 )    /* 4bpp 16x16 sprites */
1454   ROM_LOAD( "pole-5",       0x0000, 0x2000, CRC(301117d2) SHA1(0d8be9e50da4601963a8392aa3e0f3414e721fa1) )    /* 4bpp sm sprites, planes 0+1 */
1455   ROM_LOAD( "pole-6",       0x2000, 0x2000, CRC(3c9db014) SHA1(c26098dd78803e699845fefa92bf034c38259cea) )    /* 4bpp sm sprites, planes 2+3 */
1456
1457   ROM_REGION( 0x10000, "gfx4", 0 )    /* 4bpp 32x32 sprites */
1458   ROM_LOAD( "pp17.bin",     0x0000, 0x2000, CRC(613ab0df) SHA1(88aa4500275aae010fc9783c1d8d843feab89afa) )    /* 4bpp lg sprites, planes 0+1 */
1459   ROM_LOAD( "tr19.bin",     0x2000, 0x2000, CRC(f8e7f551) SHA1(faa23c55bc43325e6f71936be970f2ca144697d8) )
1460   ROM_LOAD( "tr21.bin",     0x4000, 0x2000, CRC(17c798b0) SHA1(ae2047bc0e4e8c85e1de09c39c200ea8f7c6a72e) )
1461   ROM_LOAD( "pp18.bin",     0x8000, 0x2000, CRC(5fd933e3) SHA1(5b27a8519234c935308f943cd58abc1efc463726) )    /* 4bpp lg sprites, planes 2+3 */
1462   ROM_LOAD( "tr20.bin",     0xa000, 0x2000, CRC(7053e219) SHA1(97700fbe887e2d11c9f9a0937147725f6787f081) )
1463   ROM_LOAD( "pole-9",       0xc000, 0x2000, CRC(5fe9b365) SHA1(1a3ac099a6bb506a5f71c12c6fb14d014172371c) )
1464
1465   ROM_REGION( 0x5000, "gfx5", 0 )    /* road generation ROMs needed at runtime */
1466   ROM_LOAD( "136014.158",   0x0000, 0x2000, CRC(ee6b3315) SHA1(9cc26c6d3604c0f60d716f86e67e9d9c0487f87d) )    /* road control */
1467   ROM_LOAD( "136014.159",   0x2000, 0x2000, CRC(6d1e7042) SHA1(90113ff0c93ed86d95067290088705bb5e6608d1) )    /* road bits 1 */
1468   ROM_LOAD( "136014.134",   0x4000, 0x1000, CRC(4e97f101) SHA1(f377d053821c74aee93ebcd30a4d43e6156f3cfe) )    /* road bits 2 */
1469
1470   ROM_REGION( 0x1000, "gfx6", 0 )    /* sprite scaling */
1471   ROM_LOAD( "136014.231",   0x0000, 0x1000, CRC(a61bff15) SHA1(f7a59970831cdaaa7bf59c2221a38e4746c54244) )    /* vertical scaling */
1472
1473   /* graphics (P)ROM data */
1474   ROM_REGION( 0x1040, "proms", 0 )
1475   ROM_LOAD( "136014.137",   0x0000, 0x0100, CRC(f07ff2ad) SHA1(e1f3cb10a03d23f8c1d422acf271dba4e7b98cb1) )    /* red palette */
1476   ROM_LOAD( "136014.138",   0x0100, 0x0100, CRC(adbde7d7) SHA1(956ac5117c1e310f554ac705aa2dc24a796c36a5) )    /* green palette */
1477   ROM_LOAD( "136014.139",   0x0200, 0x0100, CRC(ddac786a) SHA1(d1860105bf91297533ccc4aa6775987df198d0fa) )    /* blue palette */
1478   ROM_LOAD( "10p.bin",      0x0300, 0x0100, CRC(5af3f710) SHA1(da13d17acf8abd0f6ebb4b51b23c3324c6197b7d) )    /* alpha color */
1479   ROM_LOAD( "7052-11.j15",  0x0400, 0x0100, CRC(8c90e36e) SHA1(2646288d9e0f86300da7f06e1dc0595673205bb4) )    /* background color */
1480   ROM_LOAD( "136014.142",   0x0500, 0x0100, CRC(2d502464) SHA1(682b7dd22e51d5db52c0804b7e27e47641dfa6bd) )    /* vertical position low */
1481   ROM_LOAD( "136014.143",   0x0600, 0x0100, CRC(027aa62c) SHA1(c7030d8b64b80e107c446f6fbdd63f560c0a91c0) )    /* vertical position med */
1482   ROM_LOAD( "136014.144",   0x0700, 0x0100, CRC(1f8d0df3) SHA1(b8f17758f114f5e247b65b3f2922ca2660757e66) )    /* vertical position hi */
1483   ROM_LOAD( "136014.145",   0x0800, 0x0400, CRC(7afc7cfc) SHA1(ba2407f6eff124e881b354f13205a4c058b7cf60) )    /* road color */
1484   ROM_LOAD( "pp1_6.bpr",    0x0c00, 0x0400, CRC(2f1079ee) SHA1(18a27998a78deff13dd198f3668a7e92f084f467) )    /* sprite color */
1485   ROM_LOAD( "136014.135",   0x1000, 0x0020, CRC(4330a51b) SHA1(9531d18ce2de4eda9913d47ef8c5cd8f05791716) )    /* video RAM address decoder (not used) */
1486   ROM_LOAD( "136014.136",   0x1020, 0x0020, CRC(4330a51b) SHA1(9531d18ce2de4eda9913d47ef8c5cd8f05791716) )    /* video RAM address decoder (not used) */
1487
1488   /* sound (P)ROM data */
1489   ROM_REGION( 0x0100, "namco", 0 )
1490   ROM_LOAD( "136014.118",   0x0000, 0x0100, CRC(8568decc) SHA1(0aac1fa082858d4d201e21511c609a989f9a1535) )    /* Namco sound */
1491
1492   ROM_REGION( 0x4000, "engine", 0 )
1493   ROM_LOAD( "136014.110",   0x0000, 0x2000, CRC(b5ad4d5f) SHA1(c07e77a050200d6fe9952031f971ca35f4d15ff8) )    /* engine sound */
1494   ROM_LOAD( "136014.111",   0x2000, 0x2000, CRC(8fdd2f6f) SHA1(3818dc94c60cd78c4212ab7a4367cf3d98166ee6) )    /* engine sound */
1495
1496   ROM_REGION( 0x8000, "52xx", 0 )
1497   ROM_LOAD( "pp1_11.2e",    0x0000, 0x2000, CRC(45b9bfeb) SHA1(ff8c690471944d414931fb88666594ef608997f8) )    /* voice */
1498   ROM_LOAD( "pp1_12.2f",    0x2000, 0x2000, CRC(a31b4be5) SHA1(38298093bb97ea8647fe187359cae05b65e1c616) )    /* voice */
1499   ROM_LOAD( "pp1_13.1e",    0x4000, 0x2000, CRC(a4237466) SHA1(88a397276038cc2fc05f2c18472e6b7cef167f2e) )    /* voice */
1500   ROM_LOAD( "pp1_14.1f",    0x6000, 0x2000, CRC(944580f9) SHA1(c76f529cae718674ce97a1a599a3c6eaf6bf561a) )    /* voice */
1501
1502   /* unknown or unused (P)ROM data */
1503   ROM_REGION( 0x0100, "user1", 0 )
1504   ROM_LOAD( "7052-4.c14",   0x0000, 0x0100, CRC(0e742cb1) SHA1(3ae43270aab4848fdeece1648e7e040ab216b08e) )    /* sync chain */
1505ROM_END
1506
1507ROM_START( topracrb )
1508   /* Z80 memory/ROM data */
1509   ROM_REGION( 0x10000, "maincpu", 0 )
15101505   ROM_LOAD( "tr9.f17",    0x0000, 0x2000, CRC(94436b70) SHA1(7495c2a8c3928c59146760d19e672afee01c5b17) )
15111506   ROM_LOAD( "tr10.f16",   0x2000, 0x1000, CRC(7174bcb7) SHA1(460326a6cea201db2df813013c95562a222ea95d) )
15121507
r6428r6429
15791574ROM_END
15801575
15811576
1577/* Top Racer (bootleg without MB8841 / MB8842)
1578
1579CPU Lower Board (label "1081-C")
15802x ZILOG Z8002PS (DIP40)
15811x NEC D708C-1 (DIP40)
1582
1583Upper Board (label "1080-C")
15841x oscillator 24.576 MHz
1585ROMs    Lower Board (label "1081-C")
15867x HN482764G (1a,a2,a3,a4,a5,a,b)
15871x HN482732G (a6)
15881x PROM 82S129
15892x PAL 12L6
15901x PAL 16L8
1591
1592Upper Board (label "1080-C")
15938x HN482764G (1,2,3,6,7,8,9,10)
15942x AM2764 (5,11)
15954x TMS2732JL (12,13,14,15)
15968x PROM 24S10
15972x PROM 7603
15982x PROM 7643
1599Note    Lower Board (label "1081-C")
16001x flat cable connector to upper
16011x 18x2 edge connector
1602
1603Upper Board (label "1080-C")
16041x flat cable connector to lower
16051x 18x2 edge connector
1606
1607*/
1608
1609ROM_START( topracern )
1610   /* Z80 memory/ROM data */
1611   ROM_REGION( 0x10000, "maincpu", 0 )
1612   ROM_LOAD( "a5.bin",      0x0000, 0x2000, CRC(caab829a) SHA1(826f25f5c792ab8b24e73ebb735aebcad552454f) )
1613   ROM_LOAD( "a6.bin",      0x2000, 0x1000, CRC(148f5000) SHA1(071f75518f06a317f53db78f11da3ee878569f86) )
1614
1615   /* Z8002 #1 memory/ROM data */
1616   ROM_REGION( 0x10000, "sub", 0 )
1617   ROM_LOAD16_BYTE( "a1.bin",     0x0001, 0x2000, CRC(127f0750) SHA1(97ae6c6f8086187c7cdb8bff5fec94914791890b) )
1618   ROM_LOAD16_BYTE( "a2.bin",     0x0000, 0x2000, CRC(6bd4ff6b) SHA1(cf992de39a8cf7804961a8e6773fc4f7feb1878b) )
1619
1620   /* Z8002 #2 memory/ROM data */
1621   ROM_REGION( 0x10000, "sub2", 0 )
1622   ROM_LOAD16_BYTE( "a3.bin",     0x0001, 0x2000, CRC(4e5f7b9c) SHA1(d26b1f24dd9ef00388987890bc5b95d4db403815) )
1623   //ROM_LOAD16_BYTE( "a4.bin",     0x0000, 0x2000, CRC(b3641d0c) SHA1(38ce172b2e38895749cbd3cc1c0e2c0fe8be744a) ) /* one set had this rom, which matches topracera */
1624   ROM_LOAD16_BYTE( "pole-d",       0x0000, 0x2000, CRC(932bb5a7) SHA1(8045fe1f9b4b1973ec0d6705adf3ba3891bddaa1) ) /* the other set had this one, what's the difference? */
1625
1626   /* graphics data */
1627   ROM_REGION( 0x01000, "gfx1", 0 )    /* 2bpp alpha layer */
1628   ROM_LOAD( "13.bin",     0x0000, 0x1000, CRC(b8217c96) SHA1(aba311bc3c4b118ba322a00e33e2d5cbe7bc6e4a) )
1629
1630   ROM_REGION( 0x01000, "gfx2", 0 )    /* 2bpp view layer */
1631   ROM_LOAD( "12.bin",     0x0000, 0x1000, CRC(c6e15c21) SHA1(e2a70b3f7ce51a003068eb75d9fe82548f0206d7) )
1632
1633   ROM_REGION( 0x04000, "gfx3", 0 )    /* 4bpp 16x16 sprites */
1634   ROM_LOAD( "5.bin",       0x0000, 0x2000, CRC(301117d2) SHA1(0d8be9e50da4601963a8392aa3e0f3414e721fa1) )    /* 4bpp sm sprites, planes 0+1 */
1635   ROM_LOAD( "6.bin",       0x2000, 0x2000, CRC(3c9db014) SHA1(c26098dd78803e699845fefa92bf034c38259cea) )    /* 4bpp sm sprites, planes 2+3 */
1636
1637   ROM_REGION( 0x10000, "gfx4", 0 )    /* 4bpp 32x32 sprites */
1638   ROM_LOAD( "1.bin",     0x0000, 0x2000, CRC(613ab0df) SHA1(88aa4500275aae010fc9783c1d8d843feab89afa) )    /* 4bpp lg sprites, planes 0+1 */
1639   ROM_LOAD( "2.bin",     0x2000, 0x2000, CRC(f8e7f551) SHA1(faa23c55bc43325e6f71936be970f2ca144697d8) )
1640   //ROM_LOAD( "3.bin",   0x4000, 0x2000, CRC(94d0b00c) SHA1(24e4004d1091292afda76bdfb007f08c13778675) ) // this one has more corrupt lines in one of the flags
1641   ROM_LOAD( "3.bin",     0x4000, 0x2000, CRC(17c798b0) SHA1(ae2047bc0e4e8c85e1de09c39c200ea8f7c6a72e) )
1642   ROM_LOAD( "7.bin",     0x8000, 0x2000, CRC(5fd933e3) SHA1(5b27a8519234c935308f943cd58abc1efc463726) )    /* 4bpp lg sprites, planes 2+3 */
1643   ROM_LOAD( "8.bin",     0xa000, 0x2000, CRC(7053e219) SHA1(97700fbe887e2d11c9f9a0937147725f6787f081) )
1644   ROM_LOAD( "9.bin",     0xc000, 0x2000, CRC(5fe9b365) SHA1(1a3ac099a6bb506a5f71c12c6fb14d014172371c) )
1645
1646   ROM_REGION( 0x5000, "gfx5", 0 )    /* road generation ROMs needed at runtime */
1647   ROM_LOAD( "11.bin",   0x0000, 0x2000, CRC(ee6b3315) SHA1(9cc26c6d3604c0f60d716f86e67e9d9c0487f87d) )    /* road control */
1648   ROM_LOAD( "10.bin",   0x2000, 0x2000, CRC(6d1e7042) SHA1(90113ff0c93ed86d95067290088705bb5e6608d1) )    /* road bits 1 */
1649   ROM_LOAD( "14.bin",   0x4000, 0x1000, CRC(4e97f101) SHA1(f377d053821c74aee93ebcd30a4d43e6156f3cfe) )    /* road bits 2 */
1650
1651   ROM_REGION( 0x1000, "gfx6", 0 )    /* sprite scaling */
1652   ROM_LOAD( "15.bin",   0x0000, 0x1000, CRC(a61bff15) SHA1(f7a59970831cdaaa7bf59c2221a38e4746c54244) )    /* vertical scaling */
1653
1654   /* graphics (P)ROM data */
1655   ROM_REGION( 0x1040, "proms", 0 )
1656   ROM_LOAD( "24s10.5",   0x0000, 0x0100, CRC(f07ff2ad) SHA1(e1f3cb10a03d23f8c1d422acf271dba4e7b98cb1) )    /* red palette */
1657   ROM_LOAD( "24s10.4",   0x0100, 0x0100, CRC(adbde7d7) SHA1(956ac5117c1e310f554ac705aa2dc24a796c36a5) )    /* green palette */
1658   ROM_LOAD( "24s10.3",   0x0200, 0x0100, CRC(ddac786a) SHA1(d1860105bf91297533ccc4aa6775987df198d0fa) )    /* blue palette */
1659   ROM_LOAD( "24s10.2",      0x0300, 0x0100, CRC(5af3f710) SHA1(da13d17acf8abd0f6ebb4b51b23c3324c6197b7d) )    /* alpha color */
1660   ROM_LOAD( "24s10.1",  0x0400, 0x0100, CRC(8c90e36e) SHA1(2646288d9e0f86300da7f06e1dc0595673205bb4) )    /* background color */
1661   ROM_LOAD( "24s10.8",   0x0500, 0x0100, CRC(2d502464) SHA1(682b7dd22e51d5db52c0804b7e27e47641dfa6bd) )    /* vertical position low */
1662   ROM_LOAD( "24s10.7",   0x0600, 0x0100, CRC(027aa62c) SHA1(c7030d8b64b80e107c446f6fbdd63f560c0a91c0) )    /* vertical position med */
1663   ROM_LOAD( "24s10.6",   0x0700, 0x0100, CRC(1f8d0df3) SHA1(b8f17758f114f5e247b65b3f2922ca2660757e66) )    /* vertical position hi */
1664   ROM_LOAD( "7643.1",   0x0800, 0x0400, CRC(7afc7cfc) SHA1(ba2407f6eff124e881b354f13205a4c058b7cf60) )    /* road color */
1665   ROM_LOAD( "7643.2",    0x0c00, 0x0400, CRC(2f1079ee) SHA1(18a27998a78deff13dd198f3668a7e92f084f467) )    /* sprite color */
1666   ROM_LOAD( "7603.1",   0x1000, 0x0020, CRC(4330a51b) SHA1(9531d18ce2de4eda9913d47ef8c5cd8f05791716) )    /* video RAM address decoder (not used) */
1667   ROM_LOAD( "7603.2",   0x1020, 0x0020, CRC(4330a51b) SHA1(9531d18ce2de4eda9913d47ef8c5cd8f05791716) )    /* video RAM address decoder (not used) */
1668
1669   /* sound (P)ROM data */
1670   ROM_REGION( 0x0100, "namco", 0 )
1671   ROM_LOAD( "136014.118",   0x0000, 0x0100, CRC(8568decc) SHA1(0aac1fa082858d4d201e21511c609a989f9a1535) )    /* Namco sound */
1672
1673   ROM_REGION( 0x4000, "engine", 0 )
1674   ROM_LOAD( "a.bin",   0x0000, 0x2000, CRC(b5ad4d5f) SHA1(c07e77a050200d6fe9952031f971ca35f4d15ff8) )    /* engine sound */
1675   ROM_LOAD( "b.bin",   0x2000, 0x2000, CRC(8fdd2f6f) SHA1(3818dc94c60cd78c4212ab7a4367cf3d98166ee6) )    /* engine sound */
1676
1677   /* unknown or unused (P)ROM data */
1678   ROM_REGION( 0x0100, "user1", 0 )
1679   ROM_LOAD( "7052-4.c14",   0x0000, 0x0100, CRC(0e742cb1) SHA1(3ae43270aab4848fdeece1648e7e040ab216b08e) )    /* sync chain */
1680ROM_END
1681
1682
15821683/*
1583    Pole Position - Namco Version
1684    Pole Position 2 - Namco Version
15841685*/
15851686
15861687ROM_START( polepos2 )
r6428r6429
19342035   polepos_gear_bit = 2;
19352036}
19362037
1937static DRIVER_INIT( topracra )
2038static DRIVER_INIT( topracern )
19382039{
19392040   polepos_gear_bit = 0x20;
19402041
r6428r6429
19612062GAME( 1982, polepos,    0,        polepos,    polepos,  polepos,  ROT0, "Namco", "Pole Position", 0 )
19622063GAME( 1982, poleposa,   polepos,  polepos,    poleposa, polepos,  ROT0, "Namco (Atari license)", "Pole Position (Atari version 2)", 0 )
19632064GAME( 1982, polepos1,   polepos,  polepos,    poleposa, polepos,  ROT0, "[Namco] (Atari license)", "Pole Position (Atari version 1)", 0 )
1964GAME( 1982, topracer,   polepos,  polepos,    polepos,  polepos,  ROT0, "bootleg", "Top Racer (set 1)", 0 )
1965GAME( 1982, topracra,   polepos,  polepos,    topracra, topracra, ROT0, "bootleg", "Top Racer (set 2)", 0 )
1966GAME( 1983, topracrb,   polepos,  polepos,    polepos,  polepos,  ROT0, "bootleg", "Top Racer (set 3)", 0 )
2065GAME( 1982, topracer,   polepos,  polepos,    polepos,  polepos,  ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, set 1)", 0 ) // the NAMCO customs have been cloned on these bootlegs
2066GAME( 1983, topracera,  polepos,  polepos,    polepos,  polepos,  ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, set 2)", 0 ) // ^
2067GAME( 1982, topracern,  polepos,  topracern,  topracern,topracern,ROT0, "bootleg", "Top Racer (no MB8841 + MB8842)", 0 )
2068
19672069GAME( 1983, polepos2,   0,        polepos,    polepos2, polepos2, ROT0, "Namco", "Pole Position II", 0 )
19682070GAME( 1983, polepos2a,  polepos2, polepos,    polepos2, polepos2, ROT0, "Namco (Atari license)", "Pole Position II (Atari)", 0 )
19692071GAME( 1983, polepos2b,  polepos2, polepos,    polepos2, polepos,  ROT0, "bootleg", "Pole Position II (bootleg)", 0 )
1970GAME( 1983, polepos2bi, polepos2, polepos2bi, topracra, topracra, ROT0, "bootleg", "Gran Premio F1 (Italian bootleg of Pole Position II)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND ) // should have italian voices
2072GAME( 1983, polepos2bi, polepos2, polepos2bi, topracern, topracern, ROT0, "bootleg", "Gran Premio F1 (Italian bootleg of Pole Position II)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND ) // should have italian voices
src/mame/drivers/yunsun16.c
r6428r6429
187187
188188static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
189189   ADDRESS_MAP_GLOBAL_MASK(0xff)
190   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w )
190   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w )
191191   AM_RANGE(0x18, 0x18) AM_READ(soundlatch_r )                  // From Main CPU
192192   AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w )      // M6295
193193ADDRESS_MAP_END
r6428r6429
609609   /* sound hardware */
610610   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
611611
612   MDRV_SOUND_ADD("ym", YM3812, 4000000)
612   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
613613   MDRV_SOUND_CONFIG(magicbub_ym3812_intf)
614614   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.20)
615615   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20)
src/mame/drivers/scobra.c
r6428r6429
344344
345345static ADDRESS_MAP_START( hustler_sound_io_map, ADDRESS_SPACE_IO, 8 )
346346   ADDRESS_MAP_GLOBAL_MASK(0xff)
347   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
348   AM_RANGE(0x80, 0x80) AM_DEVWRITE("ay", ay8910_address_w)
347   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
348   AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_address_w)
349349ADDRESS_MAP_END
350350
351351
352352static ADDRESS_MAP_START( hustlerb_sound_io_map, ADDRESS_SPACE_IO, 8 )
353353   ADDRESS_MAP_GLOBAL_MASK(0xff)
354   AM_RANGE(0x40, 0x40) AM_DEVWRITE("ay", ay8910_address_w)
355   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
354   AM_RANGE(0x40, 0x40) AM_DEVWRITE("aysnd", ay8910_address_w)
355   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
356356ADDRESS_MAP_END
357357
358358/* stratgyx coinage DIPs are spread accross two input ports */
r6428r6429
10061006
10071007   /* sound hardware */
10081008   MDRV_SPEAKER_STANDARD_MONO("mono")
1009   MDRV_SOUND_ADD("ay", AY8910, 14318000/8)
1009   MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8)
10101010   MDRV_SOUND_CONFIG(hustler_ay8910_interface)
10111011   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
10121012MACHINE_DRIVER_END
src/mame/drivers/itech8.c
r6428r6429
967967static ADDRESS_MAP_START( sound2203_map, ADDRESS_SPACE_PROGRAM, 8 )
968968   AM_RANGE(0x0000, 0x0000) AM_WRITENOP
969969   AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
970   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0002) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
970   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0002) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
971971   AM_RANGE(0x3000, 0x37ff) AM_RAM
972972   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
973973   AM_RANGE(0x8000, 0xffff) AM_ROM
r6428r6429
978978static ADDRESS_MAP_START( sound2608b_map, ADDRESS_SPACE_PROGRAM, 8 )
979979   AM_RANGE(0x1000, 0x1000) AM_WRITENOP
980980   AM_RANGE(0x2000, 0x2000) AM_READ(sound_data_r)
981   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ym", ym2608_r, ym2608_w)
981   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ymsnd", ym2608_r, ym2608_w)
982982   AM_RANGE(0x6000, 0x67ff) AM_RAM
983983   AM_RANGE(0x8000, 0xffff) AM_ROM
984984ADDRESS_MAP_END
r6428r6429
988988static ADDRESS_MAP_START( sound3812_map, ADDRESS_SPACE_PROGRAM, 8 )
989989   AM_RANGE(0x0000, 0x0000) AM_WRITENOP
990990   AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
991   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
991   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
992992   AM_RANGE(0x3000, 0x37ff) AM_RAM
993993   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
994994   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia", pia6821_r, pia6821_w)
r6428r6429
10001000static ADDRESS_MAP_START( sound3812_external_map, ADDRESS_SPACE_PROGRAM, 8 )
10011001   AM_RANGE(0x0000, 0x0000) AM_WRITENOP
10021002   AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r)
1003   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
1003   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
10041004   AM_RANGE(0x3000, 0x37ff) AM_RAM
10051005   AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
10061006   AM_RANGE(0x5000, 0x500f) AM_DEVREADWRITE("via6522_0", via_r, via_w)
r6428r6429
17631763   MDRV_CPU_PROGRAM_MAP(sound2203_map)
17641764
17651765   /* sound hardware */
1766   MDRV_SOUND_ADD("ym", YM2203, CLOCK_8MHz/2)
1766   MDRV_SOUND_ADD("ymsnd", YM2203, CLOCK_8MHz/2)
17671767   MDRV_SOUND_CONFIG(ym2203_config)
17681768   MDRV_SOUND_ROUTE(0, "mono", 0.07)
17691769   MDRV_SOUND_ROUTE(1, "mono", 0.07)
r6428r6429
17831783   MDRV_CPU_PROGRAM_MAP(sound2608b_map)
17841784
17851785   /* sound hardware */
1786   MDRV_SOUND_ADD("ym", YM2608, CLOCK_8MHz)
1786   MDRV_SOUND_ADD("ymsnd", YM2608, CLOCK_8MHz)
17871787   MDRV_SOUND_CONFIG(ym2608b_config)
17881788   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
17891789MACHINE_DRIVER_END
r6428r6429
17981798   MDRV_PIA6821_ADD("pia", pia_interface)
17991799
18001800   /* sound hardware */
1801   MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2)
1801   MDRV_SOUND_ADD("ymsnd", YM3812, CLOCK_8MHz/2)
18021802   MDRV_SOUND_CONFIG(ym3812_config)
18031803   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
18041804
r6428r6429
18151815   MDRV_CPU_PROGRAM_MAP(sound3812_external_map)
18161816
18171817   /* sound hardware */
1818   MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2)
1818   MDRV_SOUND_ADD("ymsnd", YM3812, CLOCK_8MHz/2)
18191819   MDRV_SOUND_CONFIG(ym3812_config)
18201820   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
18211821
r6428r6429
20782078   ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(37b47b2e) SHA1(352204d3e95e6db556aacf053c42d0d5871245a7) )
20792079   ROM_LOAD( "grom6.bin", 0xc0000, 0x20000, CRC(860ee822) SHA1(2ca821c2fa220065b99b99b7487fe9666f338c75) )
20802080
2081   ROM_REGION( 0x20000, "ym", 0 )
2081   ROM_REGION( 0x20000, "ymsnd", 0 )
20822082   ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(49bce954) SHA1(68a8b11c03722349d673f7383288c63054f0d6f6) )
20832083ROM_END
20842084
src/mame/drivers/galaxian.c
r6428r6429
884884         /* bit 0 = WRITE */
885885         /* bit 1 = C/D */
886886         if ((offset & 1) != 0)
887            ay8910_data_address_w(devtag_get_device(space->machine, "ay"), offset >> 1, zigzag_ay8910_latch);
887            ay8910_data_address_w(devtag_get_device(space->machine, "aysnd"), offset >> 1, zigzag_ay8910_latch);
888888         break;
889889
890890      case 0x100:
r6428r6429
976976static WRITE8_HANDLER( mshuttle_ay8910_control_w )
977977{
978978   if (!mshuttle_ay8910_cs)
979      ay8910_address_w(devtag_get_device(space->machine, "ay"), offset, data);
979      ay8910_address_w(devtag_get_device(space->machine, "aysnd"), offset, data);
980980}
981981
982982
983983static WRITE8_HANDLER( mshuttle_ay8910_data_w )
984984{
985985   if (!mshuttle_ay8910_cs)
986      ay8910_data_w(devtag_get_device(space->machine, "ay"), offset, data);
986      ay8910_data_w(devtag_get_device(space->machine, "aysnd"), offset, data);
987987}
988988
989989
990990static READ8_HANDLER( mshuttle_ay8910_data_r )
991991{
992992   if (!mshuttle_ay8910_cs)
993      return ay8910_r(devtag_get_device(space->machine, "ay"), offset);
993      return ay8910_r(devtag_get_device(space->machine, "aysnd"), offset);
994994   return 0xff;
995995}
996996
r6428r6429
13871387   AM_RANGE(0x4000, 0x47ff) AM_RAM
13881388   AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE(&videoram)
13891389   AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE(&spriteram)
1390   AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x00ff) AM_DEVWRITE("ay", ay8910_data_w)
1391   AM_RANGE(0x5900, 0x5900) AM_MIRROR(0x00ff) AM_DEVWRITE("ay", ay8910_address_w)
1390   AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x00ff) AM_DEVWRITE("aysnd", ay8910_data_w)
1391   AM_RANGE(0x5900, 0x5900) AM_MIRROR(0x00ff) AM_DEVWRITE("aysnd", ay8910_address_w)
13921392   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
13931393   AM_RANGE(0x6002, 0x6006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
13941394   AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
r6428r6429
15191519   ADDRESS_MAP_UNMAP_HIGH
15201520   ADDRESS_MAP_GLOBAL_MASK(0xff)
15211521   AM_RANGE(0x03, 0x03) AM_READ(soundlatch_r)
1522   AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay", ay8910_address_data_w)
1523   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
1522   AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_address_data_w)
1523   AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r)
15241524ADDRESS_MAP_END
15251525
15261526
r6428r6429
15291529   ADDRESS_MAP_UNMAP_HIGH
15301530   AM_RANGE(0x0000, 0x0fff) AM_ROM
15311531   AM_RANGE(0x8000, 0x83ff) AM_RAM
1532   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay", ay8910_address_data_w)
1533   AM_RANGE(0xa002, 0xa002) AM_DEVREAD("ay", ay8910_r)
1532   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
1533   AM_RANGE(0xa002, 0xa002) AM_DEVREAD("aysnd", ay8910_r)
15341534ADDRESS_MAP_END
15351535
15361536
r6428r6429
19131913   MDRV_CPU_PROGRAM_MAP(galaxian_map_base)  /* no discrete sound */
19141914
19151915   /* sound hardware */
1916   MDRV_SOUND_ADD("ay", AY8910, 1789750)
1916   MDRV_SOUND_ADD("aysnd", AY8910, 1789750)
19171917
19181918   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
19191919MACHINE_DRIVER_END
r6428r6429
19501950   MDRV_CPU_PROGRAM_MAP(jumpbug_map)
19511951
19521952   /* sound hardware */
1953   MDRV_SOUND_ADD("ay", AY8910, 1789750)
1953   MDRV_SOUND_ADD("aysnd", AY8910, 1789750)
19541954   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
19551955MACHINE_DRIVER_END
19561956
r6428r6429
19651965   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)   /* NMIs are triggered by the main CPU */
19661966
19671967   /* sound hardware */
1968   MDRV_SOUND_ADD("ay", AY8910, 1789750)
1968   MDRV_SOUND_ADD("aysnd", AY8910, 1789750)
19691969   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
19701970MACHINE_DRIVER_END
19711971
r6428r6429
19841984   MDRV_TIMER_ADD_SCANLINE("irq0", checkmaj_irq0_gen, "screen", 0, 8)
19851985
19861986   /* sound hardware */
1987   MDRV_SOUND_ADD("ay", AY8910, 1620000)
1987   MDRV_SOUND_ADD("aysnd", AY8910, 1620000)
19881988   MDRV_SOUND_CONFIG(checkmaj_ay8910_interface)
19891989   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2)
19901990MACHINE_DRIVER_END
r6428r6429
19991999   MDRV_CPU_IO_MAP(mshuttle_portmap)
20002000
20012001   /* sound hardware */
2002   MDRV_SOUND_ADD("ay", AY8910, GALAXIAN_PIXEL_CLOCK/3/4)
2002   MDRV_SOUND_ADD("aysnd", AY8910, GALAXIAN_PIXEL_CLOCK/3/4)
20032003   MDRV_SOUND_CONFIG(cclimber_ay8910_interface)
20042004   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
20052005
src/mame/drivers/bbusters.c
r6428r6429
378378
379379static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
380380   ADDRESS_MAP_GLOBAL_MASK(0xff)
381   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
381   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
382382   AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */
383383ADDRESS_MAP_END
384384
385385static ADDRESS_MAP_START( sounda_portmap, ADDRESS_SPACE_IO, 8 )
386386   ADDRESS_MAP_GLOBAL_MASK(0xff)
387   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2608_r, ym2608_w)
387   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2608_r, ym2608_w)
388388   AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */
389389ADDRESS_MAP_END
390390
r6428r6429
735735   /* sound hardware */
736736   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
737737
738   MDRV_SOUND_ADD("ym", YM2610, 8000000)
738   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
739739   MDRV_SOUND_CONFIG(ym2610_config)
740740   MDRV_SOUND_ROUTE(0, "lspeaker",  1.0)
741741   MDRV_SOUND_ROUTE(0, "rspeaker", 1.0)
r6428r6429
772772   /* sound hardware */
773773   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
774774
775   MDRV_SOUND_ADD("ym", YM2608, 8000000)
775   MDRV_SOUND_ADD("ymsnd", YM2608, 8000000)
776776   MDRV_SOUND_CONFIG(ym2608_config)
777777   MDRV_SOUND_ROUTE(0, "lspeaker",  0.50)
778778   MDRV_SOUND_ROUTE(0, "rspeaker", 0.50)
r6428r6429
820820   ROM_LOAD( "bb-8.a14",      0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
821821   ROM_LOAD( "bb-9.c14",      0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
822822
823   ROM_REGION( 0x80000, "ym", 0 )
823   ROM_REGION( 0x80000, "ymsnd", 0 )
824824   ROM_LOAD( "bb-pcma.l5",  0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) )
825825
826826   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
865865   ROM_LOAD( "bb-8.a14",      0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
866866   ROM_LOAD( "bb-9.c14",      0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
867867
868   ROM_REGION( 0x80000, "ym", 0 )
868   ROM_REGION( 0x80000, "ymsnd", 0 )
869869   ROM_LOAD( "bb-pcma.l5",  0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) )
870870
871871   ROM_REGION( 0x80000, "ym.deltat", 0 )
r6428r6429
901901   ROM_REGION( 0x80000, "gfx5", 0 )
902902   ROM_LOAD( "mab289c2.bin",  0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) )
903903
904   ROM_REGION( 0x20000, "ym", 0 )
904   ROM_REGION( 0x20000, "ymsnd", 0 )
905905   ROM_LOAD( "ma2.bin",       0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) )
906906
907907   ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */
r6428r6429
938938   ROM_REGION( 0x80000, "gfx5", 0 )
939939   ROM_LOAD( "mab289c2.bin",  0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) )
940940
941   ROM_REGION( 0x20000, "ym", 0 )
941   ROM_REGION( 0x20000, "ymsnd", 0 )
942942   ROM_LOAD( "ma2.bin",       0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) )
943943
944944   ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */
src/mame/drivers/hyprduel.c
r6428r6429
461461static ADDRESS_MAP_START( hyprduel_map2, ADDRESS_SPACE_PROGRAM, 16 )
462462   AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1)                  /* shadow ($c00000 - $c03fff : vector) */
463463   AM_RANGE(0x004000, 0x007fff) AM_RAM AM_WRITENOP AM_SHARE(3)         /* shadow ($fe4000 - $fe7fff : read only) */
464   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff )
464   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff )
465465   AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
466466   AM_RANGE(0x800000, 0x800001) AM_NOP
467467   AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE(1)
r6428r6429
508508   AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1)                  /* shadow ($c00000 - $c03fff : vector) */
509509   AM_RANGE(0x004000, 0x007fff) AM_RAM AM_WRITENOP AM_SHARE(3)         /* shadow ($fe4000 - $fe7fff : read only) */
510510   AM_RANGE(0x400000, 0x400003) AM_NOP
511   AM_RANGE(0x800000, 0x800003) AM_READNOP AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
511   AM_RANGE(0x800000, 0x800003) AM_READNOP AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
512512   AM_RANGE(0x800004, 0x800005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
513513   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE(1)
514514   AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2)
r6428r6429
729729   /* sound hardware */
730730   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
731731
732   MDRV_SOUND_ADD("ym", YM2151, 4000000)
732   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
733733   MDRV_SOUND_CONFIG(ym2151_config)
734734   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
735735   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
773773   /* sound hardware */
774774   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
775775
776   MDRV_SOUND_ADD("ym", YM2413, 3579545)
776   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
777777   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
778778   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
779779
src/mame/drivers/flstory.c
r6428r6429
233233static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
234234   AM_RANGE(0x0000, 0xbfff) AM_ROM
235235   AM_RANGE(0xc000, 0xc7ff) AM_RAM
236   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay", ay8910_address_data_w)
236   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
237237   AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w)
238238   AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("msm", sound_control_0_w)
239239   AM_RANGE(0xce00, 0xce00) AM_DEVWRITE("msm", sound_control_1_w)
r6428r6429
643643   AY8910_DEFAULT_LOADS,
644644   DEVCB_NULL,
645645   DEVCB_NULL,
646   DEVCB_DEVICE_HANDLER("ay", sound_control_2_w),
646   DEVCB_DEVICE_HANDLER("aysnd", sound_control_2_w),
647647   DEVCB_HANDLER(sound_control_3_w)
648648};
649649
r6428r6429
689689   /* sound hardware */
690690   MDRV_SPEAKER_STANDARD_MONO("mono")
691691
692   MDRV_SOUND_ADD("ay", AY8910, XTAL_8MHz/4) /* verified on pcb */
692   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */
693693   MDRV_SOUND_CONFIG(ay8910_config)
694694   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
695695
r6428r6429
746746   /* sound hardware */
747747   MDRV_SPEAKER_STANDARD_MONO("mono")
748748
749   MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
749   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
750750   MDRV_SOUND_CONFIG(ay8910_config)
751751   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
752752
r6428r6429
803803   /* sound hardware */
804804   MDRV_SPEAKER_STANDARD_MONO("mono")
805805
806   MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
806   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
807807   MDRV_SOUND_CONFIG(ay8910_config)
808808   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
809809
src/mame/drivers/suprslam.c
r6428r6429
165165   ADDRESS_MAP_GLOBAL_MASK(0xff)
166166   AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w)
167167   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, pending_command_clear_w)
168   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
168   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
169169ADDRESS_MAP_END
170170
171171/*** INPUT PORTS *************************************************************/
r6428r6429
324324
325325   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
326326
327   MDRV_SOUND_ADD("ym", YM2610, 8000000)
327   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
328328   MDRV_SOUND_CONFIG(ym2610_config)
329329   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
330330   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
343343   ROM_LOAD( "eb26ic38.bin", 0x000000, 0x020000, CRC(153f2c50) SHA1(b70f248cfb18239fcd26e36fb36159f219debf2c) )
344344   ROM_RELOAD(               0x010000, 0x020000 )
345345
346   ROM_REGION( 0x200000, "ym", 0 ) /* Samples */
346   ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
347347   ROM_LOAD( "eb26ic66.bin", 0x000000, 0x200000, CRC(8cb33682) SHA1(0e6189ef0673227d35b9a154e333cc6cf9b65df6) )
348348
349349   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* Samples */
src/mame/drivers/sangho.c
r6428r6429
7878
7979static ADDRESS_MAP_START( pzlestar_io_map, ADDRESS_SPACE_IO, 8 )
8080   ADDRESS_MAP_GLOBAL_MASK(0xff)
81   AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ym", ym2413_w )
81   AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ymsnd", ym2413_w )
8282   AM_RANGE( 0x91, 0x91) AM_WRITE( pzlestar_bank_w )
8383   AM_RANGE( 0x98, 0x98) AM_READWRITE( v9938_0_vram_r, v9938_0_vram_w )
8484   AM_RANGE( 0x99, 0x99) AM_READWRITE( v9938_0_status_r, v9938_0_command_w )
r6428r6429
9393
9494static ADDRESS_MAP_START( sexyboom_io_map, ADDRESS_SPACE_IO, 8 )
9595   ADDRESS_MAP_GLOBAL_MASK(0xff)
96   AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ym", ym2413_w )
96   AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE( "ymsnd", ym2413_w )
9797   AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1")
9898   AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2")
9999   AM_RANGE( 0xf0, 0xf0) AM_READWRITE( v9938_0_vram_r,v9938_0_vram_w )
r6428r6429
243243
244244
245245   MDRV_SPEAKER_STANDARD_MONO("mono")
246   MDRV_SOUND_ADD("ym", YM2413, 3580000)
246   MDRV_SOUND_ADD("ymsnd", YM2413, 3580000)
247247
248248   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
249249MACHINE_DRIVER_END
r6428r6429
275275   MDRV_VIDEO_UPDATE( generic_bitmapped )
276276
277277   MDRV_SPEAKER_STANDARD_MONO("mono")
278   MDRV_SOUND_ADD("ym", YM2413, 3580000)
278   MDRV_SOUND_ADD("ymsnd", YM2413, 3580000)
279279
280280   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
281281MACHINE_DRIVER_END
src/mame/drivers/bmcbowl.c
r6428r6429
338338   AM_RANGE(0x092000, 0x09201f) AM_READWRITE(bmcbowl_via_r, bmcbowl_via_w)
339339
340340   AM_RANGE(0x093000, 0x093003) AM_WRITENOP  // related to music
341   AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("ay", ay8910_data_address_w, 0xff00)
342   AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("ay", ay8910_r, 0xff00)
341   AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("aysnd", ay8910_data_address_w, 0xff00)
342   AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("aysnd", ay8910_r, 0xff00)
343343   AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0")
344344   AM_RANGE(0x095000, 0x095fff) AM_RAM AM_BASE((UINT16 **)&stats_ram) AM_SIZE(&stats_ram_size) /* 8 bit */
345345   AM_RANGE(0x097000, 0x097001) AM_READNOP
r6428r6429
517517
518518   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
519519
520   MDRV_SOUND_ADD("ay", AY8910, 3579545/2)
520   MDRV_SOUND_ADD("aysnd", AY8910, 3579545/2)
521521   MDRV_SOUND_CONFIG(ay8910_config)
522522   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
523523   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
src/mame/drivers/pcat_nit.c
r6428r6429
183183DMA8237 Controller
184184******************/
185185
186static int dma_channel;
186187static UINT8 dma_offset[2][4];
187188static UINT8 at_pages[0x10];
188189
189static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
190static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
190191{
191192   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
192193
193194   /* Assert HLDA */
194   dma8237_set_hlda( device, state );
195   i8237_hlda_w( device, state );
195196}
196197
197198
198static DMA8237_MEM_READ( pc_dma_read_byte )
199static READ8_HANDLER( pc_dma_read_byte )
199200{
200   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
201   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
201   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
202202      & 0xFF0000;
203203
204204   return memory_read_byte(space, page_offset + offset);
205205}
206206
207207
208static DMA8237_MEM_WRITE( pc_dma_write_byte )
208static WRITE8_HANDLER( pc_dma_write_byte )
209209{
210   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
211   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
210   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
212211      & 0xFF0000;
213212
214213   memory_write_byte(space, page_offset + offset, data);
r6428r6429
258257   }
259258}
260259
261
262static const struct dma8237_interface dma8237_1_config =
260static void set_dma_channel(const device_config *device, int channel, int state)
263261{
264   XTAL_14_31818MHz/3,
262   if (!state) dma_channel = channel;
263}
265264
266   pc_dma_hrq_changed,
267   pc_dma_read_byte,
268   pc_dma_write_byte,
265static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
266static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
267static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
268static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
269269
270   { NULL, NULL, NULL, NULL },
271   { NULL, NULL, NULL, NULL },
272   NULL
270static I8237_INTERFACE( dma8237_1_config )
271{
272   DEVCB_LINE(pc_dma_hrq_changed),
273   DEVCB_NULL,
274   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
275   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
276   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
277   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
278   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
273279};
274280
275static const struct dma8237_interface dma8237_2_config =
281static I8237_INTERFACE( dma8237_2_config )
276282{
277   XTAL_14_31818MHz/3,
278
279   NULL,
280   NULL,
281   NULL,
282
283   { NULL, NULL, NULL, NULL },
284   { NULL, NULL, NULL, NULL },
285   NULL
283   DEVCB_NULL,
284   DEVCB_NULL,
285   DEVCB_NULL,
286   DEVCB_NULL,
287   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
288   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
289   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
286290};
287291
288292
r6428r6429
424428}
425429
426430static ADDRESS_MAP_START( pcat_io, ADDRESS_SPACE_IO, 32 )
427   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
431   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
428432   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
429433   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
430434   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
431435   AM_RANGE(0x0070, 0x007f) AM_RAM//READWRITE(mc146818_port32le_r,     mc146818_port32le_w)
432436   AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO
433437   AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff)
434   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", dma8237_r, dma8237_w, 0xffff)
438   AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", i8237_r, i8237_w, 0xffff)
435439   AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2
436440   AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port
437441   AM_RANGE(0x03c0, 0x03c3) AM_RAM
r6428r6429
590594//  MDRV_IMPORT_FROM( at_kbdc8042 )
591595   MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config )
592596   MDRV_PIC8259_ADD( "pic8259_2", pic8259_2_config )
593   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
594   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
597   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
598   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
595599   MDRV_PIT8254_ADD( "pit8254", at_pit8254_config )
596600
597601   MDRV_PALETTE_INIT(pcat_286)
src/mame/drivers/blockade.c
r6428r6429
11/****************************************************************************
22
3Blockade/Comotion/Blasto/Hustle Memory MAP
4Frank Palazzolo (palazzol@comcast.net)
3    Blockade/Comotion/Blasto/Hustle Memory MAP
4    Frank Palazzolo (palazzol@comcast.net)
55
6CPU - Intel 8080A
6    CPU - Intel 8080A
77
8Memory Address              (Upper/Lower)
8    Memory Address              (Upper/Lower)
99
100xxx 00aa aaaa aaaa     ROM     U2/U3    R       1K for Blockade/Comotion/Blasto
110xxx 01aa aaaa aaaa     ROM     U4/U5    R       1K for Comotion/Blasto/Hustle Only
121xx0 xxaa aaaa aaaa    VRAM              W       1K playfield
13xxx1 xxxx aaaa aaaa     RAM              R/W     256 bytes
10    0xxx 00aa aaaa aaaa     ROM     U2/U3    R       1K for Blockade/Comotion/Blasto
11    0xxx 01aa aaaa aaaa     ROM     U4/U5    R       1K for Comotion/Blasto/Hustle Only
12    1xx0 xxaa aaaa aaaa    VRAM              W       1K playfield
13    xxx1 xxxx aaaa aaaa     RAM              R/W     256 bytes
1414
15                    CHAR ROM  U29/U43            256 bytes for Blockade/Comotion
16                                                 512 for Blasto/Hustle
15                        CHAR ROM  U29/U43            256 bytes for Blockade/Comotion
16                                                     512 for Blasto/Hustle
1717
18Ports    In            Out
191        Controls      bit 7 = Coin Latch Reset
20                       bit 5 = Pin 19?
212        Controls      Square Wave Pitch Register
224        Controls      Noise On
238        N/A           Noise Off
18    Ports    In            Out
19    1        Controls      bit 7 = Coin Latch Reset
20                           bit 5 = Pin 19?
21    2        Controls      Square Wave Pitch Register
22    4        Controls      Noise On
23    8        N/A           Noise Off
2424
2525
26Notes:  Support is complete with the exception of the noise generator.
27        Hopefully I can add this based on some measurements from a real board
26    Notes:  Support is complete with the exception of the noise generator.
27            Hopefully I can add this based on some measurements from a real board
2828
2929****************************************************************************/
3030
r6428r6429
3939
4040/* These are used to simulate coin latch circuitry */
4141
42static UINT8 coin_latch;  /* Active Low */
43static UINT8 just_been_reset;
44
45static DRIVER_INIT( blockade )
46{
47   coin_latch = 1;
48   just_been_reset = 0;
49}
50
5142/*************************************************************/
5243/*                                                           */
5344/* Inserting a coin should work like this:                   */
r6428r6429
6758
6859static INTERRUPT_GEN( blockade_interrupt )
6960{
61   blockade_state *state = (blockade_state *)device->machine->driver_data;
7062   cpu_resume(device, SUSPEND_ANY_REASON);
7163
7264   if ((input_port_read(device->machine, "IN0") & 0x80) == 0)
7365   {
74      just_been_reset = 1;
66      state->just_been_reset = 1;
7567      cpu_set_input_line(device, INPUT_LINE_RESET, PULSE_LINE);
7668   }
7769}
7870
71/*************************************
72 *
73 *  Memory handlers
74 *
75 *************************************/
76
7977static READ8_HANDLER( blockade_input_port_0_r )
8078{
81    /* coin latch is bit 7 */
79   blockade_state *state = (blockade_state *)space->machine->driver_data;
80   /* coin latch is bit 7 */
81   UINT8 temp = (input_port_read(space->machine, "IN0") & 0x7f);
8282
83    UINT8 temp = (input_port_read(space->machine, "IN0") & 0x7f);
84    return (coin_latch<<7) | (temp);
83   return (state->coin_latch << 7) | temp;
8584}
8685
8786static WRITE8_HANDLER( blockade_coin_latch_w )
8887{
89    if (data & 0x80)
90    {
91        if (BLOCKADE_LOG) mame_printf_debug("Reset Coin Latch\n");
92        if (just_been_reset)
93        {
94            just_been_reset = 0;
95            coin_latch = 0;
96        }
97        else
98            coin_latch = 1;
99    }
88   blockade_state *state = (blockade_state *)space->machine->driver_data;
10089
101    if (data & 0x20)
102    {
103        if (BLOCKADE_LOG) mame_printf_debug("Pin 19 High\n");
104    }
105    else
106    {
107        if (BLOCKADE_LOG) mame_printf_debug("Pin 19 Low\n");
108    }
90   if (data & 0x80)
91   {
92      if (BLOCKADE_LOG) mame_printf_debug("Reset Coin Latch\n");
93      if (state->just_been_reset)
94      {
95         state->just_been_reset = 0;
96         state->coin_latch = 0;
97      }
98      else
99         state->coin_latch = 1;
100   }
109101
102   if (data & 0x20)
103   {
104      if (BLOCKADE_LOG) mame_printf_debug("Pin 19 High\n");
105   }
106   else
107   {
108      if (BLOCKADE_LOG) mame_printf_debug("Pin 19 Low\n");
109   }
110
110111    return;
111112}
112113
113114
115/*************************************
116 *
117 *  Address maps
118 *
119 *************************************/
120
114121static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
115122    AM_RANGE(0x0000, 0x07ff) AM_ROM AM_MIRROR(0x6000)
116    AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(blockade_videoram_w) AM_BASE(&videoram) AM_MIRROR(0x6c00)
123    AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(blockade_videoram_w) AM_BASE_MEMBER(blockade_state, videoram) AM_MIRROR(0x6c00)
117124    AM_RANGE(0x9000, 0x90ff) AM_RAM AM_MIRROR(0x6f00)
118125ADDRESS_MAP_END
119126
r6428r6429
126133    AM_RANGE(0x08, 0x08) AM_WRITE(blockade_env_off_w)
127134ADDRESS_MAP_END
128135
136
137/*************************************
138 *
139 *  Input ports
140 *
141 *************************************/
142
129143/* These are not dip switches, they are mapped to */
130144/* connectors on the board.  Different games had  */
131145/* different harnesses which plugged in here, and */
132146/* some pins were unused.                         */
133147
134148static INPUT_PORTS_START( blockade )
135   PORT_START("IN0")      /* IN0 */
149   PORT_START("IN0")
136150   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
137151   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
138   PORT_DIPNAME( 0x04, 0x04, "Boom Switch" )
139   PORT_DIPSETTING(   0x00, DEF_STR( Off ) )
140   PORT_DIPSETTING(   0x04, DEF_STR( On ) )
152   PORT_CONFNAME( 0x04, 0x04, "Boom Switch" )
153   PORT_CONFSETTING(      0x00, DEF_STR( Off ) )
154   PORT_CONFSETTING(      0x04, DEF_STR( On ) )
141155   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
142   PORT_DIPNAME( 0x70, 0x70, DEF_STR( Lives ) )
143   PORT_DIPSETTING(   0x60, "3" )
144   PORT_DIPSETTING(   0x50, "4" )
145   PORT_DIPSETTING(   0x30, "5" )
146   PORT_DIPSETTING(   0x70, "6" )
156   PORT_CONFNAME( 0x70, 0x70, DEF_STR( Lives ) )
157   PORT_CONFSETTING(      0x60, "3" )
158   PORT_CONFSETTING(      0x50, "4" )
159   PORT_CONFSETTING(      0x30, "5" )
160   PORT_CONFSETTING(      0x70, "6" )
147161   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
148162                        /* this is really used for the coin latch,  */
149163                        /* see blockade_interrupt()                 */
150164
151   PORT_START("IN1")      /* IN1 */
165   PORT_START("IN1")
152166   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
153167   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
154168   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
r6428r6429
158172   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
159173   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1)
160174
161   PORT_START("IN2")      /* IN2 */
175   PORT_START("IN2")
162176   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
163177   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
164178   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
168182   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
169183   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
170184
171   PORT_START("IN3")      /* IN3 */
185   PORT_START("IN3")
172186   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
173187   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
174188INPUT_PORTS_END
175189
176190static INPUT_PORTS_START( comotion )
177   PORT_START("IN0")      /* IN0 */
191   PORT_START("IN0")
178192   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
179193   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
180   PORT_DIPNAME( 0x04, 0x04, "Boom Switch" )
181   PORT_DIPSETTING(   0x00, DEF_STR( Off ) )
182   PORT_DIPSETTING(   0x04, DEF_STR( On ) )
183   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
184   PORT_DIPSETTING(   0x00, "3" )
185   PORT_DIPSETTING(   0x08, "4" )
194   PORT_CONFNAME( 0x04, 0x04, "Boom Switch" )
195   PORT_CONFSETTING(      0x00, DEF_STR( Off ) )
196   PORT_CONFSETTING(      0x04, DEF_STR( On ) )
197   PORT_CONFNAME( 0x08, 0x00, DEF_STR( Lives ) )
198   PORT_CONFSETTING(      0x00, "3" )
199   PORT_CONFSETTING(      0x08, "4" )
186200   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
187201   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
188202   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
190204                        /* this is really used for the coin latch,  */
191205                        /* see blockade_interrupt()                 */
192206
193   PORT_START("IN1")      /* IN1 */
207   PORT_START("IN1")
194208   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
195209   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1)
196210   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
r6428r6429
200214   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3)
201215   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(3)
202216
203   PORT_START("IN2")      /* IN2 */
217   PORT_START("IN2")
204218   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
205219   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
206220   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
r6428r6429
210224   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4)
211225   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4)
212226
213   PORT_START("IN3")      /* IN3 */
227   PORT_START("IN3")
214228   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
215229   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
216230INPUT_PORTS_END
217231
218232static INPUT_PORTS_START( blasto )
219   PORT_START("IN0")      /* IN0 */
220   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
221   PORT_DIPSETTING(   0x00, DEF_STR( 4C_1C ) )
222   PORT_DIPSETTING(   0x01, DEF_STR( 3C_1C ) )
223   PORT_DIPSETTING(   0x02, DEF_STR( 2C_1C ) )
224   PORT_DIPSETTING(   0x03, DEF_STR( 1C_1C ) )
225   PORT_DIPNAME( 0x04, 0x04, "Attract Sound" )
226   PORT_DIPSETTING(   0x00, DEF_STR( Off ) )
227   PORT_DIPSETTING(   0x04, DEF_STR( On ) )
228   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Game_Time ) )
229   PORT_DIPSETTING(   0x00, "70 Secs" )
230   PORT_DIPSETTING(   0x08, "90 Secs" )
233   PORT_START("IN0")
234   PORT_CONFNAME( 0x03, 0x03, DEF_STR( Coinage ) )
235   PORT_CONFSETTING(    0x00, DEF_STR( 4C_1C ) )
236   PORT_CONFSETTING(    0x01, DEF_STR( 3C_1C ) )
237   PORT_CONFSETTING(    0x02, DEF_STR( 2C_1C ) )
238   PORT_CONFSETTING(    0x03, DEF_STR( 1C_1C ) )
239   PORT_CONFNAME( 0x04, 0x04, "Attract Sound" )
240   PORT_CONFSETTING(    0x00, DEF_STR( Off ) )
241   PORT_CONFSETTING(    0x04, DEF_STR( On ) )
242   PORT_CONFNAME( 0x08, 0x08, DEF_STR( Game_Time ) )
243   PORT_CONFSETTING(    0x00, "70 Secs" )
244   PORT_CONFSETTING(    0x08, "90 Secs" )
231245   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
232246   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
233247   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
235249                        /* this is really used for the coin latch,  */
236250                        /* see blockade_interrupt()                 */
237251
238   PORT_START("IN1")      /* IN1 */
252   PORT_START("IN1")
239253   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
240254   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
241255   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
245259   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
246260   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
247261
248   PORT_START("IN2")      /* IN2 */
262   PORT_START("IN2")
249263   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
250264   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
251265   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
r6428r6429
255269   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1)
256270   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
257271
258   PORT_START("IN3")      /* IN3 */
272   PORT_START("IN3")
259273   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
260274   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
261275INPUT_PORTS_END
262276
263277static INPUT_PORTS_START( hustle )
264   PORT_START("IN0")      /* IN0 */
265   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
266   PORT_DIPSETTING(   0x00, DEF_STR( 4C_1C ) )
267   PORT_DIPSETTING(   0x01, DEF_STR( 3C_1C ) )
268   PORT_DIPSETTING(   0x02, DEF_STR( 2C_1C ) )
269   PORT_DIPSETTING(   0x03, DEF_STR( 1C_1C ) )
270   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Game_Time ) )
271   PORT_DIPSETTING(   0x00, "1.5 mins" )
272   PORT_DIPSETTING(   0x04, "2 mins" )
278   PORT_START("IN0")
279   PORT_CONFNAME( 0x03, 0x03, DEF_STR( Coinage ) )
280   PORT_CONFSETTING(    0x00, DEF_STR( 4C_1C ) )
281   PORT_CONFSETTING(    0x01, DEF_STR( 3C_1C ) )
282   PORT_CONFSETTING(    0x02, DEF_STR( 2C_1C ) )
283   PORT_CONFSETTING(    0x03, DEF_STR( 1C_1C ) )
284   PORT_CONFNAME( 0x04, 0x04, DEF_STR( Game_Time ) )
285   PORT_CONFSETTING(    0x00, "1.5 mins" )
286   PORT_CONFSETTING(    0x04, "2 mins" )
273287   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
274288   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
275289   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
278292                        /* this is really used for the coin latch,  */
279293                        /* see blockade_interrupt()                 */
280294
281   PORT_START("IN1")      /* IN1 */
295   PORT_START("IN1")
282296   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
283297   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
284298   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
r6428r6429
288302   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
289303   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1)
290304
291   PORT_START("IN2")      /* IN2 */
292   PORT_DIPNAME( 0xf1, 0xf0, "Free Game" )
293   PORT_DIPSETTING(   0x71, "11000" )
294   PORT_DIPSETTING(   0xb1, "13000" )
295   PORT_DIPSETTING(   0xd1, "15000" )
296   PORT_DIPSETTING(   0xe1, "17000" )
297   PORT_DIPSETTING(   0xf0, "Disabled" )
305   PORT_START("IN2")
306   PORT_CONFNAME( 0xf1, 0xf0, "Free Game" )
307   PORT_CONFSETTING(    0x71, "11000" )
308   PORT_CONFSETTING(    0xb1, "13000" )
309   PORT_CONFSETTING(    0xd1, "15000" )
310   PORT_CONFSETTING(    0xe1, "17000" )
311   PORT_CONFSETTING(    0xf0, "Disabled" )
298312   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
299313   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
300314   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
301315
302   PORT_START("IN3")      /* IN3 */
316   PORT_START("IN3")
303317   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
304318   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
305319INPUT_PORTS_END
306320
307321static INPUT_PORTS_START( mineswpr )
308   PORT_START("IN0")      /* IN0 */
322   PORT_START("IN0")
309323   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
310324   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* This wiring selects upright mode */
311   PORT_DIPNAME( 0x04, 0x04, "Boom Switch" )
312   PORT_DIPSETTING(   0x00, DEF_STR( Off ) )
313   PORT_DIPSETTING(   0x04, DEF_STR( On ) )
325   PORT_CONFNAME( 0x04, 0x04, "Boom Switch" )
326   PORT_CONFSETTING(    0x00, DEF_STR( Off ) )
327   PORT_CONFSETTING(    0x04, DEF_STR( On ) )
314328   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
315   PORT_DIPNAME( 0x70, 0x70, DEF_STR( Lives ) )
316   PORT_DIPSETTING(   0x60, "3" )
317   PORT_DIPSETTING(   0x50, "4" )
318   PORT_DIPSETTING(   0x30, "5" )
319   PORT_DIPSETTING(   0x70, "6" )
329   PORT_CONFNAME( 0x70, 0x70, DEF_STR( Lives ) )
330   PORT_CONFSETTING(    0x60, "3" )
331   PORT_CONFSETTING(    0x50, "4" )
332   PORT_CONFSETTING(    0x30, "5" )
333   PORT_CONFSETTING(    0x70, "6" )
320334   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
321335                        /* this is really used for the coin latch,  */
322336                        /* see blockade_interrupt()                 */
323337
324   PORT_START("IN1")      /* IN1 */
338   PORT_START("IN1")
325339   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
326340   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1)
327341   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
r6428r6429
331345   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
332346   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
333347
334   PORT_START("IN2")      /* IN2 */
348   PORT_START("IN2")
335349   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
336350   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
337351   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
r6428r6429
341355   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
342356   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
343357
344   PORT_START("IN3")      /* IN3 */
358   PORT_START("IN3")
345359   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
346360   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
347361INPUT_PORTS_END
348362
349363static INPUT_PORTS_START( minesw4p )
350   PORT_START("IN0")      /* IN0 */
364   PORT_START("IN0")
351365   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
352366   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* This wiring selects cocktail mode */
353   PORT_DIPNAME( 0x04, 0x04, "Boom Switch" )
354   PORT_DIPSETTING(   0x00, DEF_STR( Off ) )
355   PORT_DIPSETTING(   0x04, DEF_STR( On ) )
367   PORT_CONFNAME( 0x04, 0x04, "Boom Switch" )
368   PORT_CONFSETTING(    0x00, DEF_STR( Off ) )
369   PORT_CONFSETTING(    0x04, DEF_STR( On ) )
356370   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
357   PORT_DIPNAME( 0x70, 0x70, DEF_STR( Lives ) )
358   PORT_DIPSETTING(   0x60, "3" )
359   PORT_DIPSETTING(   0x50, "4" )
360   PORT_DIPSETTING(   0x30, "5" )
361   PORT_DIPSETTING(   0x70, "6" )
371   PORT_CONFNAME( 0x70, 0x70, DEF_STR( Lives ) )
372   PORT_CONFSETTING(    0x60, "3" )
373   PORT_CONFSETTING(    0x50, "4" )
374   PORT_CONFSETTING(    0x30, "5" )
375   PORT_CONFSETTING(    0x70, "6" )
362376   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
363377                        /* this is really used for the coin latch,  */
364378                        /* see blockade_interrupt()                 */
365379
366   PORT_START("IN1")      /* IN1 */
380   PORT_START("IN1")
367381   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
368382   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1)
369383   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
r6428r6429
373387   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
374388   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
375389
376   PORT_START("IN2")      /* IN2 */
390   PORT_START("IN2")
377391   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(3)
378392   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(3)
379393   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3)
r6428r6429
383397   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4)
384398   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4)
385399
386   PORT_START("IN3")      /* IN3 */
400   PORT_START("IN3")
387401   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN )
388402   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
389403INPUT_PORTS_END
390404
391405
406/*************************************
407 *
408 *  Graphics definitions
409 *
410 *************************************/
411
392412static const gfx_layout blockade_layout =
393413{
394414   8,8,    /* 8*8 characters */
r6428r6429
438458}
439459
440460
461/*************************************
462 *
463 *  Machine driver
464 *
465 *************************************/
466
467static MACHINE_START( blockade )
468{
469   blockade_state *state = (blockade_state *)machine->driver_data;
470
471   state_save_register_global(machine, state->coin_latch);
472   state_save_register_global(machine, state->just_been_reset);
473}
474
475static MACHINE_RESET( blockade )
476{
477   blockade_state *state = (blockade_state *)machine->driver_data;
478
479   state->coin_latch = 1;
480   state->just_been_reset = 0;
481}
482
441483static MACHINE_DRIVER_START( blockade )
442484
485   /* driver data */
486   MDRV_DRIVER_DATA(blockade_state)
487
443488   /* basic machine hardware */
444489   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK/10)
445490   MDRV_CPU_PROGRAM_MAP(main_map)
446491   MDRV_CPU_IO_MAP(main_io_map)
447492   MDRV_CPU_VBLANK_INT("screen", blockade_interrupt)
448493
494   MDRV_MACHINE_START(blockade)
495   MDRV_MACHINE_RESET(blockade)
496
449497   /* video hardware */
450498   MDRV_SCREEN_ADD("screen", RASTER)
451499   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
490538   MDRV_PALETTE_INIT(yellow)
491539MACHINE_DRIVER_END
492540
493/***************************************************************************
541/*************************************
542 *
543 *  ROM definition(s)
544 *
545 *************************************/
494546
495  Game driver(s)
496
497***************************************************************************/
498
499547ROM_START( blockade )
500548    ROM_REGION( 0x10000, "maincpu", 0 )
501549    ROM_LOAD_NIB_HIGH( "316-04.u2", 0x0000, 0x0400, CRC(a93833e9) SHA1(e29e7b29900f8305effa700a53806a12bf9d37bd) )
r6428r6429
562610    ROM_LOAD_NIB_LOW(  "mineswee.cls", 0x0000, 0x0200, CRC(70959755) SHA1(f62d448742da3fae8bbd96eb3a2714db500cecce) )
563611ROM_END
564612
565GAME( 1976, blockade,  0,        blockade, blockade, blockade, ROT0, "Gremlin", "Blockade", GAME_IMPERFECT_SOUND )
566GAME( 1976, comotion,  0,        comotion, comotion, blockade, ROT0, "Gremlin", "Comotion", GAME_IMPERFECT_SOUND )
567GAME( 1978, blasto,    0,        blasto,   blasto,   blockade, ROT0, "Gremlin", "Blasto", GAME_IMPERFECT_SOUND )
568GAME( 1977, hustle,    0,        hustle,   hustle,   blockade, ROT0, "Gremlin", "Hustle", GAME_IMPERFECT_SOUND )
569GAME( 1977, mineswpr,  0,        blasto,   mineswpr, blockade, ROT0, "Amutech", "Minesweeper", GAME_IMPERFECT_SOUND )
570GAME( 1977, mineswpr4, mineswpr, blasto,   minesw4p, blockade, ROT0, "Amutech", "Minesweeper (4-Player)", GAME_IMPERFECT_SOUND )
613/*************************************
614 *
615 *  Game driver
616 *
617 *************************************/
618
619GAME( 1976, blockade,  0,        blockade, blockade, 0, ROT0, "Gremlin", "Blockade", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
620GAME( 1976, comotion,  0,        comotion, comotion, 0, ROT0, "Gremlin", "Comotion", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
621GAME( 1978, blasto,    0,        blasto,   blasto,   0, ROT0, "Gremlin", "Blasto", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
622GAME( 1977, hustle,    0,        hustle,   hustle,   0, ROT0, "Gremlin", "Hustle", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
623GAME( 1977, mineswpr,  0,        blasto,   mineswpr, 0, ROT0, "Amutech", "Minesweeper", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
624GAME( 1977, mineswpr4, mineswpr, blasto,   minesw4p, 0, ROT0, "Amutech", "Minesweeper (4-Player)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
src/mame/drivers/lordgun.c
r6428r6429
88
99
1010CPU     :   68000
11Custom  :   IGS005, IGS006, IGS007, IGS008
1112Sound   :   Z80 + M6295 [+ M6295] + YM3812
1213NVRAM   :   93C46
1314
r6428r6429
220221}
221222
222223static ADDRESS_MAP_START( lordgun_soundio_map, ADDRESS_SPACE_IO, 8 )
223   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE( "ym", ym3812_w )
224   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE( "ymsnd", ym3812_w )
224225   AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w )
225226   AM_RANGE(0x3000, 0x3000) AM_READ( soundlatch2_r )
226227   AM_RANGE(0x4000, 0x4000) AM_READ( soundlatch_r )
r6428r6429
233234   AM_RANGE(0x3000, 0x3000) AM_READ( soundlatch2_r )
234235   AM_RANGE(0x4000, 0x4000) AM_READ( soundlatch_r )
235236   AM_RANGE(0x5000, 0x5000) AM_READ( SMH_NOP )
236   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE( "ym", ym3812_w )
237   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE( "ymsnd", ym3812_w )
237238   AM_RANGE(0x7400, 0x7400) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w )
238239   AM_RANGE(0x7800, 0x7800) AM_DEVREADWRITE( "oki2", okim6295_r, okim6295_w )
239240ADDRESS_MAP_END
r6428r6429
440441   // sound hardware
441442   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
442443
443   MDRV_SOUND_ADD("ym", YM3812, 3579545)
444   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
444445   MDRV_SOUND_CONFIG(lordgun_ym3812_interface)
445446   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
446447   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
r6428r6429
683684
684685/*
685686
686    Huang Fei Hong
687    Huang Fei Hong (Alien Challenge?)
687688
688689*/
689690
r6428r6429
717718
718719***************************************************************************/
719720
720GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun, ROT0, "IGS", "Lord of Gun (USA)", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
721GAME( 199?, hfh,     0, hfh,     lordgun, 0,       ROT0, "IGS", "Huang Fei Hong",    GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
721GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun, ROT0, "IGS", "Lord of Gun (USA)",                 GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
722GAME( 199?, hfh,     0, hfh,     lordgun, 0,       ROT0, "IGS", "Huang Fei Hong (Alien Challenge?)", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
src/mame/drivers/lemmings.c
r6428r6429
108108
109109static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
110110   AM_RANGE(0x0000, 0x07ff) AM_RAM
111   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
111   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
112112   AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
113113   AM_RANGE(0x1800, 0x1800) AM_READWRITE(soundlatch_r,lemmings_sound_ack_w)
114114   AM_RANGE(0x8000, 0xffff) AM_ROM
r6428r6429
277277   /* sound hardware */
278278   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
279279
280   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
280   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
281281   MDRV_SOUND_CONFIG(ym2151_config)
282282   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
283283   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/espial.c
r6428r6429
1414#include "sound/ay8910.h"
1515
1616
17static UINT8 sound_nmi_enabled;
18
1917static TIMER_CALLBACK( interrupt_disable )
2018{
2119   //interrupt_enable = 0;
r6428r6429
2422
2523MACHINE_RESET( espial )
2624{
25   espial_state *state = (espial_state *)machine->driver_data;
26
27   state->flipscreen = 0;
28
2729   /* we must start with NMI interrupts disabled */
2830   timer_call_after_resynch(machine, NULL, 0, interrupt_disable);
29   sound_nmi_enabled = FALSE;
31   state->sound_nmi_enabled = FALSE;
3032}
3133
3234MACHINE_START( espial )
3335{
34    //state_save_register_global_array(machine, mcu_out[1]);
35    state_save_register_global(machine, sound_nmi_enabled);
36   espial_state *state = (espial_state *)machine->driver_data;
37
38   //state_save_register_global_array(machine, mcu_out[1]);
39   state_save_register_global(machine, state->sound_nmi_enabled);
3640}
3741
3842
3943WRITE8_HANDLER( zodiac_master_interrupt_enable_w )
4044{
41   interrupt_enable_w(space,offset,~data & 1);
45   interrupt_enable_w(space, offset, ~data & 1);
4246}
4347
4448
4549WRITE8_HANDLER( espial_sound_nmi_enable_w )
4650{
47   sound_nmi_enabled = data & 1;
51   espial_state *state = (espial_state *)space->machine->driver_data;
52   state->sound_nmi_enabled = data & 1;
4853}
4954
5055
5156INTERRUPT_GEN( espial_sound_nmi_gen )
5257{
53   if (sound_nmi_enabled)
58   espial_state *state = (espial_state *)device->machine->driver_data;
59
60   if (state->sound_nmi_enabled)
5461      nmi_line_pulse(device);
5562}
5663
r6428r6429
8289   AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)
8390   AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
8491   AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
85   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE(&espial_spriteram_1)
92   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram_1)
8693   AM_RANGE(0x8020, 0x803f) AM_READ(SMH_RAM)
87   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
88   AM_RANGE(0x8800, 0x880f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_3)
89   AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
90   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE(&espial_spriteram_2)
91   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
92   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
94   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE_MEMBER(espial_state, videoram)
95   AM_RANGE(0x8800, 0x880f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(espial_state, spriteram_3)
96   AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE_MEMBER(espial_state, attributeram)
97   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram_2)
98   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE_MEMBER(espial_state, scrollram)
99   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE_MEMBER(espial_state, colorram)
93100   AM_RANGE(0xc000, 0xcfff) AM_ROM
94101ADDRESS_MAP_END
95102
r6428r6429
107114   AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)
108115   AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
109116   AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
110   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE(&espial_spriteram_1)
111   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
112   AM_RANGE(0x8800, 0x880f) AM_RAM AM_BASE(&espial_spriteram_3)
113   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
114   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE(&espial_spriteram_2)
115   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
116   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
117   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram_1)
118   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE_MEMBER(espial_state, videoram)
119   AM_RANGE(0x8800, 0x880f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram_3)
120   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE_MEMBER(espial_state, attributeram)
121   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram_2)
122   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE_MEMBER(espial_state, scrollram)
123   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE_MEMBER(espial_state, colorram)
117124ADDRESS_MAP_END
118125
119126
r6428r6429
126133
127134static ADDRESS_MAP_START( espial_sound_io_map, ADDRESS_SPACE_IO, 8 )
128135   ADDRESS_MAP_GLOBAL_MASK(0xff)
129   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
136   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
130137ADDRESS_MAP_END
131138
132139
r6428r6429
291298
292299static MACHINE_DRIVER_START( espial )
293300
301   /* driver data */
302   MDRV_DRIVER_DATA(espial_state)
303
294304   /* basic machine hardware */
295305   MDRV_CPU_ADD("maincpu", Z80, 3072000)   /* 3.072 MHz */
296306   MDRV_CPU_PROGRAM_MAP(espial_map)
r6428r6429
321331
322332   /* sound hardware */
323333   MDRV_SPEAKER_STANDARD_MONO("mono")
324   MDRV_SOUND_ADD("ay", AY8910, 1500000)
334   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
325335   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
326336MACHINE_DRIVER_END
327337
src/mame/drivers/toaplan1.c
r6428r6429
282282   AM_RANGE(0x30, 0x30) AM_WRITE(rallybik_coin_w)   /* Coin counter/lockout */
283283   AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
284284   AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
285   AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
285   AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
286286   AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP")
287287ADDRESS_MAP_END
288288
r6428r6429
294294   AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w)   /* Coin counter/lockout */
295295   AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
296296   AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
297   AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
297   AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
298298   AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP")
299299ADDRESS_MAP_END
300300
r6428r6429
307307   AM_RANGE(0x40, 0x40) AM_READ_PORT("P1")
308308   AM_RANGE(0x50, 0x50) AM_READ_PORT("P2")
309309   AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM")
310   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
310   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
311311ADDRESS_MAP_END
312312
313313static ADDRESS_MAP_START( zerowing_sound_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
319319   AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM")
320320   AM_RANGE(0x88, 0x88) AM_READ_PORT("TJUMP")
321321   AM_RANGE(0xa0, 0xa0) AM_WRITE(toaplan1_coin_w)   /* Coin counter/lockout */
322   AM_RANGE(0xa8, 0xa9) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
322   AM_RANGE(0xa8, 0xa9) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
323323ADDRESS_MAP_END
324324
325325static ADDRESS_MAP_START( demonwld_sound_io_map, ADDRESS_SPACE_IO, 8 )
326326   ADDRESS_MAP_GLOBAL_MASK(0xff)
327   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
327   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
328328   AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP")
329329   AM_RANGE(0x40, 0x40) AM_WRITE(toaplan1_coin_w)   /* Coin counter/lockout */
330330   AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM")
r6428r6429
336336
337337static ADDRESS_MAP_START( outzone_sound_io_map, ADDRESS_SPACE_IO, 8 )
338338   ADDRESS_MAP_GLOBAL_MASK(0xff)
339   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
339   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
340340   AM_RANGE(0x04, 0x04) AM_WRITE(toaplan1_coin_w)   /* Coin counter/lockout */
341341   AM_RANGE(0x08, 0x08) AM_READ_PORT("DSWA")
342342   AM_RANGE(0x0c, 0x0c) AM_READ_PORT("DSWB")
r6428r6429
12681268   /* sound hardware */
12691269   MDRV_SPEAKER_STANDARD_MONO("mono")
12701270
1271   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1271   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
12721272   MDRV_SOUND_CONFIG(ym3812_config)
12731273   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
12741274MACHINE_DRIVER_END
r6428r6429
13081308   /* sound hardware */
13091309   MDRV_SPEAKER_STANDARD_MONO("mono")
13101310
1311   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1311   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
13121312   MDRV_SOUND_CONFIG(ym3812_config)
13131313   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
13141314MACHINE_DRIVER_END
r6428r6429
13481348   /* sound hardware */
13491349   MDRV_SPEAKER_STANDARD_MONO("mono")
13501350
1351   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1351   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
13521352   MDRV_SOUND_CONFIG(ym3812_config)
13531353   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
13541354MACHINE_DRIVER_END
r6428r6429
13881388   /* sound hardware */
13891389   MDRV_SPEAKER_STANDARD_MONO("mono")
13901390
1391   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1391   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
13921392   MDRV_SOUND_CONFIG(ym3812_config)
13931393   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
13941394MACHINE_DRIVER_END
r6428r6429
14321432   /* sound hardware */
14331433   MDRV_SPEAKER_STANDARD_MONO("mono")
14341434
1435   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1435   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
14361436   MDRV_SOUND_CONFIG(ym3812_config)
14371437   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
14381438MACHINE_DRIVER_END
r6428r6429
14661466   /* sound hardware */
14671467   MDRV_SPEAKER_STANDARD_MONO("mono")
14681468
1469   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1469   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
14701470   MDRV_SOUND_CONFIG(ym3812_config)
14711471   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
14721472MACHINE_DRIVER_END
r6428r6429
15061506   /* sound hardware */
15071507   MDRV_SPEAKER_STANDARD_MONO("mono")
15081508
1509   MDRV_SOUND_ADD("ym", YM3812, 28000000/8)
1509   MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8)
15101510   MDRV_SOUND_CONFIG(ym3812_config)
15111511   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
15121512MACHINE_DRIVER_END
r6428r6429
15401540   /* sound hardware */
15411541   MDRV_SPEAKER_STANDARD_MONO("mono")
15421542
1543   MDRV_SOUND_ADD("ym", YM3812, XTAL_28MHz/8) /* verified on pcb */
1543   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_28MHz/8) /* verified on pcb */
15441544   MDRV_SOUND_CONFIG(ym3812_config)
15451545   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
15461546MACHINE_DRIVER_END
src/mame/drivers/tmnt.c
r6428r6429
661661   AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
662662   AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w)
663663   AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrick_nvbank_w)
664   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0xff00)
664   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0xff00)
665665   AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
666666   AM_RANGE(0x140000, 0x140007) AM_READWRITE(K051937_word_r, K051937_word_w)
667667   AM_RANGE(0x140400, 0x1407ff) AM_READWRITE(K051960_word_r, K051960_word_w)
r6428r6429
11581158   AM_RANGE(0x8000, 0x87ff) AM_RAM
11591159   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
11601160   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
1161   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1161   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
11621162ADDRESS_MAP_END
11631163
11641164
r6428r6429
11681168   AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w)   /* title music & UPD7759C reset */
11691169   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
11701170   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
1171   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1171   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
11721172   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_port_w)
11731173   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("upd", tmnt_upd_start_w)
11741174   AM_RANGE(0xf000, 0xf000) AM_DEVREAD("upd", tmnt_upd_busy_r)
r6428r6429
11781178static ADDRESS_MAP_START( punkshot_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
11791179   AM_RANGE(0x0000, 0x7fff) AM_ROM
11801180   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1181   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1181   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
11821182   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
11831183   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
11841184ADDRESS_MAP_END
r6428r6429
11871187static ADDRESS_MAP_START( lgtnfght_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
11881188   AM_RANGE(0x0000, 0x7fff) AM_ROM
11891189   AM_RANGE(0x8000, 0x87ff) AM_RAM
1190   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1190   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
11911191   AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
11921192ADDRESS_MAP_END
11931193
r6428r6429
12031203static ADDRESS_MAP_START( ssriders_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
12041204   AM_RANGE(0x0000, 0xefff) AM_ROM
12051205   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1206   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1206   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
12071207   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
12081208   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
12091209ADDRESS_MAP_END
r6428r6429
12121212static ADDRESS_MAP_START( thndrx2_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
12131213   AM_RANGE(0x0000, 0xefff) AM_ROM
12141214   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1215   AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1215   AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
12161216   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
12171217   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
12181218ADDRESS_MAP_END
r6428r6429
20982098   /* sound hardware */
20992099   MDRV_SPEAKER_STANDARD_MONO("mono")
21002100
2101   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2101   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
21022102   MDRV_SOUND_CONFIG(ym2151_interface_cbj)
21032103   MDRV_SOUND_ROUTE(0, "mono", 1.0)
21042104   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
21332133   /* sound hardware */
21342134   MDRV_SPEAKER_STANDARD_MONO("mono")
21352135
2136   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2136   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
21372137   MDRV_SOUND_ROUTE(0, "mono", 1.0)
21382138   MDRV_SOUND_ROUTE(1, "mono", 1.0)
21392139
r6428r6429
21822182   /* sound hardware */
21832183   MDRV_SPEAKER_STANDARD_MONO("mono")
21842184
2185   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2185   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
21862186   MDRV_SOUND_ROUTE(0, "mono", 1.0)
21872187   MDRV_SOUND_ROUTE(1, "mono", 1.0)
21882188
r6428r6429
22292229   /* sound hardware */
22302230   MDRV_SPEAKER_STANDARD_MONO("mono")
22312231
2232   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2232   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
22332233   MDRV_SOUND_ROUTE(0, "mono", 1.0)
22342234   MDRV_SOUND_ROUTE(1, "mono", 1.0)
22352235
r6428r6429
22662266   /* sound hardware */
22672267   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
22682268
2269   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2269   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
22702270   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
22712271   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
22722272
r6428r6429
23082308   /* sound hardware */
23092309   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
23102310
2311   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2311   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
23122312   MDRV_SOUND_ROUTE(0, "lspeaker", 0.70)
23132313   MDRV_SOUND_ROUTE(1, "rspeaker", 0.70)
23142314
r6428r6429
24572457   /* sound hardware */
24582458   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
24592459
2460   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2460   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
24612461   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
24622462   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
24632463
r6428r6429
24982498   /* sound hardware */
24992499   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
25002500
2501   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2501   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
25022502   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
25032503   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
25042504
r6428r6429
25722572   /* sound hardware */
25732573   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
25742574
2575   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)
2575   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
25762576   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
25772577   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
25782578
src/mame/drivers/zodiack.c
r6428r6429
8585#include "includes/espial.h"
8686
8787
88int percuss_hardware;
88static MACHINE_START( zodiack )
89{
90   espial_state *state = (espial_state *)machine->driver_data;
8991
92   state_save_register_global(machine, state->percuss_hardware);
93   MACHINE_START_CALL(espial);
94}
9095
9196static MACHINE_RESET( zodiack )
9297{
93   percuss_hardware = 0;
98   espial_state *state = (espial_state *)machine->driver_data;
99
100   state->percuss_hardware = 0;
94101   MACHINE_RESET_CALL(espial);
95102}
96103
97104static MACHINE_RESET( percuss )
98105{
99   percuss_hardware = 1;
106   espial_state *state = (espial_state *)machine->driver_data;
107
108   state->percuss_hardware = 1;
100109   MACHINE_RESET_CALL(espial);
101110}
102111
r6428r6429
122131   AM_RANGE(0x7000, 0x7000) AM_READWRITE(SMH_NOP,watchdog_reset_w)  /* NOP??? */
123132   AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
124133   AM_RANGE(0x7200, 0x7200) AM_WRITE(zodiack_flipscreen_w)
125   AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(zodiack_attributes_w) AM_BASE(&zodiack_attributesram)
126   AM_RANGE(0x9040, 0x905f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
127   AM_RANGE(0x9060, 0x907f) AM_RAM AM_BASE(&zodiack_bulletsram) AM_SIZE(&zodiack_bulletsram_size)
134   AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(zodiack_attributes_w) AM_BASE_MEMBER(espial_state, attributeram)
135   AM_RANGE(0x9040, 0x905f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram) AM_SIZE(&spriteram_size)
136   AM_RANGE(0x9060, 0x907f) AM_RAM AM_BASE_MEMBER(espial_state, bulletsram) AM_SIZE(&zodiack_bulletsram_size)
128137   AM_RANGE(0x9080, 0x93ff) AM_RAM
129   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(zodiack_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
130   AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(zodiack_videoram2_w) AM_BASE(&zodiack_videoram2)
138   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(zodiack_videoram_w) AM_BASE_MEMBER(espial_state, videoram) AM_SIZE(&videoram_size)
139   AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(zodiack_videoram2_w) AM_BASE_MEMBER(espial_state, videoram_2)
131140   AM_RANGE(0xc000, 0xcfff) AM_ROM
132141ADDRESS_MAP_END
133142
r6428r6429
140149
141150static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
142151   ADDRESS_MAP_GLOBAL_MASK(0xff)
143   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
152   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
144153ADDRESS_MAP_END
145154
146155
r6428r6429
516525
517526static MACHINE_DRIVER_START( zodiack )
518527
528   /* driver data */
529   MDRV_DRIVER_DATA(espial_state)
530
519531   /* basic machine hardware */
520532   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4.00 MHz??? */
521533   MDRV_CPU_PROGRAM_MAP(main_map)
r6428r6429
527539   MDRV_CPU_VBLANK_INT_HACK(espial_sound_nmi_gen,8)   /* IRQs are triggered by the main CPU */
528540
529541   MDRV_MACHINE_RESET(zodiack)
530   MDRV_MACHINE_START(espial)
542   MDRV_MACHINE_START(zodiack)
531543
532544   /* video hardware */
533545   MDRV_SCREEN_ADD("screen", RASTER)
r6428r6429
547559   /* sound hardware */
548560   MDRV_SPEAKER_STANDARD_MONO("mono")
549561
550   MDRV_SOUND_ADD("ay", AY8910, 1789750)
562   MDRV_SOUND_ADD("aysnd", AY8910, 1789750)
551563   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
552564MACHINE_DRIVER_END
553565
src/mame/drivers/ddealer.c
r6428r6429
433433   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
434434   AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
435435   AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("UNK")
436   AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ym", ym2203_w, 0x00ff) // ym ?
436   AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_w, 0x00ff) // ym ?
437437   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16) // palette ram
438438   AM_RANGE(0x08c000, 0x08cfff) AM_RAM_WRITE(ddealer_vregs_w) AM_BASE(&ddealer_vregs) // palette ram
439439
r6428r6429
599599   MDRV_TIMER_ADD_PERIODIC("coinsim", ddealer_mcu_sim, HZ(10000)) // not real, but for simulating the MCU
600600
601601   MDRV_SPEAKER_STANDARD_MONO("mono")
602   MDRV_SOUND_ADD("ym", YM2203, 6000000 / 4)//guess
602   MDRV_SOUND_ADD("ymsnd", YM2203, 6000000 / 4)//guess
603603   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
604604MACHINE_DRIVER_END
605605
src/mame/drivers/vpoker.c
r6428r6429
420420
421421   /* sound hardware */
422422   MDRV_SPEAKER_STANDARD_MONO("mono")
423//  MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */)
423//  MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */)
424424//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
425425MACHINE_DRIVER_END
426426
src/mame/drivers/igs009.c
r6428r6429
438438   AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( jingbell_leds_w )
439439   AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" )
440440
441   AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ym", ym2413_w )
441   AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ymsnd", ym2413_w )
442442
443443   AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w )
444444
r6428r6429
657657
658658   /* sound hardware */
659659   MDRV_SPEAKER_STANDARD_MONO("mono")
660   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
660   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
661661   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
662662
663663   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_12MHz / 12)
src/mame/drivers/spy.c
r6428r6429
375375   AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
376376   AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r,k007232_w)
377377   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r,k007232_w)
378   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
378   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)
379379   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
380380ADDRESS_MAP_END
381381
r6428r6429
497497   /* sound hardware */
498498   MDRV_SPEAKER_STANDARD_MONO("mono")
499499
500   MDRV_SOUND_ADD("ym", YM3812, 3579545)
500   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
501501   MDRV_SOUND_CONFIG(ym3812_config)
502502   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
503503
src/mame/drivers/psikyo.c
r6428r6429
402402
403403static ADDRESS_MAP_START( sngkace_sound_io_map, ADDRESS_SPACE_IO, 8 )
404404   ADDRESS_MAP_GLOBAL_MASK(0xff)
405   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
405   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
406406   AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w)
407407   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r)
408408   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w)
r6428r6429
433433static ADDRESS_MAP_START( gunbird_sound_io_map, ADDRESS_SPACE_IO, 8 )
434434   ADDRESS_MAP_GLOBAL_MASK(0xff)
435435   AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w)
436   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
436   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
437437   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r)
438438   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w)
439439ADDRESS_MAP_END
r6428r6429
12131213   /* sound hardware */
12141214   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
12151215
1216   MDRV_SOUND_ADD("ym", YM2610, XTAL_32MHz/4) /* verified on pcb */
1216   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_32MHz/4) /* verified on pcb */
12171217   MDRV_SOUND_CONFIG(sngkace_ym2610_interface)
12181218   MDRV_SOUND_ROUTE(0, "lspeaker",  1.2)
12191219   MDRV_SOUND_ROUTE(0, "rspeaker", 1.2)
r6428r6429
12641264   /* sound hardware */
12651265   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
12661266
1267   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1267   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
12681268   MDRV_SOUND_CONFIG(gunbird_ym2610_interface)
12691269   MDRV_SOUND_ROUTE(0, "lspeaker",  1.2)
12701270   MDRV_SOUND_ROUTE(0, "rspeaker", 1.2)
r6428r6429
13771377   ROM_LOAD( "u34.bin",  0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) )
13781378   ROM_LOAD( "u35.bin",  0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) )
13791379
1380   ROM_REGION( 0x100000, "ym", 0 )   /* Samples */
1380   ROM_REGION( 0x100000, "ymsnd", 0 )   /* Samples */
13811381   ROM_LOAD( "u68.bin",  0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) )
13821382
13831383   ROM_REGION( 0x040000, "user1", 0 )   /* Sprites LUT */
r6428r6429
14021402   ROM_LOAD( "u34.bin",  0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) )
14031403   ROM_LOAD( "u35.bin",  0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) )
14041404
1405   ROM_REGION( 0x100000, "ym", 0 )   /* Samples */
1405   ROM_REGION( 0x100000, "ymsnd", 0 )   /* Samples */
14061406   ROM_LOAD( "u68.bin",  0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) )
14071407
14081408   ROM_REGION( 0x040000, "user1", 0 )   /* Sprites LUT */
r6428r6429
14131413static DRIVER_INIT( sngkace )
14141414{
14151415   {
1416      UINT8 *RAM   =   memory_region(machine, "ym");
1417      int len      =   memory_region_length(machine, "ym");
1416      UINT8 *RAM   =   memory_region(machine, "ymsnd");
1417      int len      =   memory_region_length(machine, "ymsnd");
14181418      int i;
14191419
14201420      /* Bit 6&7 of the samples are swapped. Naughty, naughty... */
r6428r6429
14851485   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layers 0 + 1 */
14861486   ROM_LOAD( "u33.bin",  0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
14871487
1488   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM Samples */
1488   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM Samples */
14891489   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
14901490
14911491   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* DELTA-T Samples */
r6428r6429
15151515   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layers 0 + 1 */
15161516   ROM_LOAD( "u33.bin",  0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
15171517
1518   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM Samples */
1518   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM Samples */
15191519   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
15201520
15211521   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* DELTA-T Samples */
r6428r6429
15451545   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layers 0 + 1 */
15461546   ROM_LOAD( "u33.bin",  0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) )
15471547
1548   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM Samples */
1548   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM Samples */
15491549   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) )
15501550
15511551   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* DELTA-T Samples */
r6428r6429
15761576   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layers 0 + 1 */
15771577   ROM_LOAD( "u33.bin",  0x000000, 0x200000, CRC(4c8577f1) SHA1(d27043514632954a06667ac63f4a4e4a31870511) )
15781578
1579   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM Samples */
1579   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM Samples */
15801580   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(51d73682) SHA1(562038d08e9a4389ffa39f3a659b2a29b94dc156) )
15811581
15821582   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* DELTA-T Samples */
r6428r6429
16401640   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layer 0 + 1 */
16411641   ROM_LOAD( "u34.bin",  0x000000, 0x200000, CRC(aaf83e23) SHA1(1c75d09ff42c0c215f8c66c699ca75688c95a05e) )
16421642
1643   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM Samples */
1643   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM Samples */
16441644   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(fe1312c2) SHA1(8339a96a0885518d6e22cb3bdb9c2f82d011d86d) )
16451645
16461646   ROM_REGION( 0x080000, "ym.deltat", 0 )   /* DELTA-T Samples */
src/mame/drivers/esd16.c
r6428r6429
269269
270270static ADDRESS_MAP_START( multchmp_sound_io_map, ADDRESS_SPACE_IO, 8 )
271271   ADDRESS_MAP_GLOBAL_MASK(0xff)
272   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3812_w   )   // YM3812
272   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3812_w   )   // YM3812
273273   AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   // M6295
274274   AM_RANGE(0x03, 0x03) AM_READ(esd16_sound_command_r      )   // From Main CPU
275275   AM_RANGE(0x04, 0x04) AM_WRITE(SMH_NOP               )   // ? $00, $30
r6428r6429
555555   /* sound hardware */
556556   MDRV_SPEAKER_STANDARD_MONO("mono")
557557
558   MDRV_SOUND_ADD("ym", YM3812, 4000000)
558   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
559559   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
560560
561561   MDRV_SOUND_ADD("oki", OKIM6295, 1056000)
src/mame/drivers/model3.c
r6428r6429
658658         {
659659            case 0x14:   return 0;      /* ??? */
660660            default:
661               fatalerror("pci_device_get_reg: Device 11, unknown reg %02X", reg);
661               logerror("pci_device_get_reg: Device 11, unknown reg %02X", reg);
662662               break;
663663         }
664664
r6428r6429
667667         {
668668            case 0:      return real3d_device_id;   /* PCI Vendor ID & Device ID */
669669            default:
670               fatalerror("pci_device_get_reg: Real3D controller, unknown reg %02X", reg);
670               logerror("pci_device_get_reg: Real3D controller, unknown reg %02X", reg);
671671               break;
672672         }
673673         break;
r6428r6429
677677         {
678678            case 0:      return 0x00011000;      /* PCI Vendor ID (0x1000 = LSI Logic) */
679679            default:
680               fatalerror("pci_device_get_reg: SCSI Controller, unknown reg %02X", reg);
680               logerror("pci_device_get_reg: SCSI Controller, unknown reg %02X", reg);
681681               break;
682682         }
683683         break;
r6428r6429
686686         {
687687            case 0:      return 0x182711db;      /* PCI Vendor ID & Device ID, 315-6183 ??? */
688688            default:
689               fatalerror("pci_device_get_reg: Device 16, unknown reg %02X", reg);
689               logerror("pci_device_get_reg: Device 16, unknown reg %02X", reg);
690690               break;
691691         }
692692         break;
693693
694694      default:
695         fatalerror("pci_device_get_reg: Unknown device %d, reg %02X", device, reg);
695         logerror("pci_device_get_reg: Unknown device %d, reg %02X", device, reg);
696696         break;
697697   }
698698
r6428r6429
717717            case 0x14:      /* ??? */
718718               break;
719719            default:
720               fatalerror("pci_device_set_reg: Unknown device (11), unknown reg %02X %08X", reg, value);
720               logerror("pci_device_set_reg: Unknown device (11), unknown reg %02X %08X", reg, value);
721721               break;
722722         }
723723         break;
r6428r6429
732732            case 0x04:      /* ??? */
733733               break;
734734            default:
735               fatalerror("pci_device_set_reg: Real3D controller, unknown reg %02X %08X", reg, value);
735               logerror("pci_device_set_reg: Real3D controller, unknown reg %02X %08X", reg, value);
736736               break;
737737         }
738738         break;
r6428r6429
747747            case 0x14/4:   /* Base Address One (Memory) */
748748               break;
749749            default:
750               fatalerror("pci_device_set_reg: SCSI Controller, unknown reg %02X, %08X", reg, value);
750               logerror("pci_device_set_reg: SCSI Controller, unknown reg %02X, %08X", reg, value);
751751               break;
752752         }
753753         break;
r6428r6429
758758            case 4:         /* Base address ? (set to 0xC3000000) */
759759               break;
760760            default:
761               fatalerror("pci_device_set_reg: Device 16, unknown reg %02X, %08X", reg, value);
761               logerror("pci_device_set_reg: Device 16, unknown reg %02X, %08X", reg, value);
762762               break;
763763         }
764764         break;
765765
766766      default:
767         fatalerror("pci_device_set_reg: Unknown device %d, reg %02X, %08X", device, reg, value);
767         logerror("pci_device_set_reg: Unknown device %d, reg %02X, %08X", device, reg, value);
768768         break;
769769   }
770770}
r6428r6429
11141114         }
11151115         return;
11161116   }
1117   fatalerror("real3d_dma_w: %08X, %08X%08X, %08X%08X", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
1117   logerror("real3d_dma_w: %08X, %08X%08X, %08X%08X", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
11181118}
11191119
11201120static void real3d_dma_callback(running_machine *machine, UINT32 src, UINT32 dst, int length, int byteswap)
r6428r6429
11431143      case 0x9c:      /* Unknown */
11441144         break;
11451145      default:
1146         fatalerror("dma_callback: %08X, %08X, %d at %08X", src, dst, length, cpu_get_pc(cputag_get_cpu(machine, "maincpu")));
1146         logerror("dma_callback: %08X, %08X, %d at %08X", src, dst, length, cpu_get_pc(cputag_get_cpu(machine, "maincpu")));
11471147         break;
11481148   }
11491149}
r6428r6429
13831383         break;
13841384   }
13851385
1386   fatalerror("ctrl_r: %02X, %08X%08X", offset, (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
1386   logerror("ctrl_r: %02X, %08X%08X", offset, (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
13871387   return 0;
13881388}
13891389
r6428r6429
14811481         return;
14821482   }
14831483
1484   fatalerror("ctrl_w: %02X, %08X%08X, %08X%08X", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
1484   logerror("ctrl_w: %02X, %08X%08X, %08X%08X", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
14851485}
14861486
14871487static READ64_HANDLER( model3_sys_r )
src/mame/drivers/iqblock.c
r6428r6429
134134   AM_RANGE(0x5080, 0x5083) AM_DEVREAD("ppi8255", ppi8255_r)
135135   AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0")
136136   AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1")
137   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ym", ym2413_w) // UM3567_data_port_0_w
137   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_w) // UM3567_data_port_0_w
138138   AM_RANGE(0x50c0, 0x50c0) AM_WRITE(iqblock_irqack_w)
139139   AM_RANGE(0x7000, 0x7fff) AM_READ(iqblock_bgvideoram_r)
140140   AM_RANGE(0x8000, 0xffff) AM_READ(extrarom_r)
r6428r6429
292292   /* sound hardware */
293293   MDRV_SPEAKER_STANDARD_MONO("mono")
294294
295   MDRV_SOUND_ADD("ym", YM2413, 3579545)
295   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
296296   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
297297MACHINE_DRIVER_END
298298
src/mame/drivers/funkyjet.c
r6428r6429
123123static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
124124   AM_RANGE(0x000000, 0x00ffff) AM_ROM
125125   AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
126   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
126   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
127127   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
128128   AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
129129   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
314314   /* sound hardware */
315315   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
316316
317   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
317   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
318318   MDRV_SOUND_CONFIG(ym2151_config)
319319   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
320320   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/xexex.c
r6428r6429
397397   AM_RANGE(0x0000, 0xbfff) AM_ROM
398398   AM_RANGE(0xc000, 0xdfff) AM_RAM
399399   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
400   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
400   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
401401   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w)
402402   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
403403   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
r6428r6429
476476   /* sound hardware */
477477   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
478478
479   MDRV_SOUND_ADD("ym", YM2151, 4000000)
479   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
480480   MDRV_SOUND_ROUTE(0, "filter1l", 0.50)
481481   MDRV_SOUND_ROUTE(0, "filter1r", 0.50)
482482   MDRV_SOUND_ROUTE(1, "filter2l", 0.50)
src/mame/drivers/wallc.c
r6428r6429
155155   AM_RANGE(0xb000, 0xb000) AM_WRITENOP
156156   AM_RANGE(0xb100, 0xb100) AM_WRITE(wallc_coin_counter_w)
157157   AM_RANGE(0xb200, 0xb200) AM_WRITENOP
158   AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("ay", ay8910_address_w)
159   AM_RANGE(0xb600, 0xb600) AM_DEVWRITE("ay", ay8910_data_w)
158   AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8910_address_w)
159   AM_RANGE(0xb600, 0xb600) AM_DEVWRITE("aysnd", ay8910_data_w)
160160ADDRESS_MAP_END
161161
162162
r6428r6429
298298
299299   /* sound hardware */
300300   MDRV_SPEAKER_STANDARD_MONO("mono")
301   MDRV_SOUND_ADD("ay", AY8910, 12288000 / 8)
301   MDRV_SOUND_ADD("aysnd", AY8910, 12288000 / 8)
302302   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
303303MACHINE_DRIVER_END
304304
src/mame/drivers/epos.c
r6428r6429
8484   ADDRESS_MAP_GLOBAL_MASK(0xff)
8585   AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_WRITE(watchdog_reset_w)
8686   AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(epos_port_1_w)
87   AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("ay", ay8910_data_w)
87   AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("aysnd", ay8910_data_w)
8888   AM_RANGE(0x03, 0x03) AM_READ_PORT("UNK")
89   AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay", ay8910_address_w)
89   AM_RANGE(0x06, 0x06) AM_DEVWRITE("aysnd", ay8910_address_w)
9090ADDRESS_MAP_END
9191
9292static ADDRESS_MAP_START( dealer_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
387387
388388   /* sound hardware */
389389   MDRV_SPEAKER_STANDARD_MONO("mono")
390   MDRV_SOUND_ADD("ay", AY8910, 11000000/4)
390   MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4)
391391   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
392392MACHINE_DRIVER_END
393393
r6428r6429
415415
416416   /* sound hardware */
417417   MDRV_SPEAKER_STANDARD_MONO("mono")
418   MDRV_SOUND_ADD("ay", AY8910, 11000000/4)
418   MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4)
419419   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
420420MACHINE_DRIVER_END
421421
src/mame/drivers/subsino.c
r6428r6429
120120
121121   AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" )
122122
123   AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE( "ym", ym3812_w )
123   AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE( "ymsnd", ym3812_w )
124124
125125   AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVWRITE( "oki", okim6295_w )
126126
r6428r6429
285285   /* sound hardware */
286286   MDRV_SPEAKER_STANDARD_MONO("mono")
287287
288   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
288   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
289289   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
290290
291291   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_4_433619MHz / 4)
r6428r6429
326326   /* sound hardware */
327327   MDRV_SPEAKER_STANDARD_MONO("mono")
328328
329   MDRV_SOUND_ADD("ym", YM3812, XTAL_3_579545MHz)
329   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_3_579545MHz)
330330   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
331331
332332   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_4_433619MHz / 4)
r6428r6429
360360   /* sound hardware */
361361   MDRV_SPEAKER_STANDARD_MONO("mono")
362362
363   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)   // unknown clock
363   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)   // unknown clock
364364   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
365365
366366   // no OKI
src/mame/drivers/mlanding.c
r6428r6429
492492   AM_RANGE(0x0000, 0x3fff) AM_ROM
493493   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
494494   AM_RANGE(0x8000, 0x8fff) AM_RAM
495   AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
495   AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
496496   AM_RANGE(0xa000, 0xa001) AM_WRITE(ml_sound_to_main_w)
497497   AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r)
498498
r6428r6429
753753   /* sound hardware */
754754   MDRV_SPEAKER_STANDARD_MONO("mono")
755755
756   MDRV_SOUND_ADD("ym", YM2151, 4000000)
756   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
757757   MDRV_SOUND_CONFIG(ym2151_config)
758758   MDRV_SOUND_ROUTE(0, "mono", 0.50)
759759   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/bankp.c
r6428r6429
11/***************************************************************************
22
3Bank Panic / Combat Hawk hardware
4Sega & Sanritsu
51984 - 1987
3    Bank Panic / Combat Hawk hardware
4    Sega & Sanritsu
5    1984 - 1987
66
7PCB Layout (Comba Hawk)
8-----------------------
7    driver by Nicola Salmoria
98
10C2-00170-A BANK PANIC (screened on PCB)
11834-6381 COMBAT HAWK (sticker)
12SANRITSU VIDEO GAME - screened on PCB
139
10    PCB Layout (Comba Hawk)
11    -----------------------
12
13    C2-00170-A BANK PANIC (screened on PCB)
14    834-6381 COMBAT HAWK (sticker)
15    SANRITSU VIDEO GAME - screened on PCB
16
1417|------------------------------------------------------------------------|
1518|                             PR-10902             PR-10900              |
1619|        PAL (315-5073)                                                  |
r6428r6429
3437|15.468MHz                    EPR-10914             555   358     HA1377A|
3538|------------------------------------------------------------------------|
3639
37Notes:
38      2016          - 2kx8 SRAM
39      Z80 clock     - 2.578MHz [15.468/6]
40      SN76489 clock - 2.578MHz [15.468/6]
41      VSync         - 60Hz
42      HSync         - 15.36kHz
43      SW1           - 8-position DIP switch
40    Notes:
41          2016          - 2kx8 SRAM
42          Z80 clock     - 2.578MHz [15.468/6]
43          SN76489 clock - 2.578MHz [15.468/6]
44          VSync         - 60Hz
45          HSync         - 15.36kHz
46          SW1           - 8-position DIP switch
4447
45      ROMs
46      ----
48          ROMs
49          ----
4750
4851          PR-10900         - ?
4952          PR-10901         - 82S129 BIPOLAR PROM
r6428r6429
5760
5861---------------------------------------------------
5962
60Bank Panic memory map (preliminary)
61Similar to Appoooh
63    Bank Panic memory map (preliminary)
64    Similar to Appoooh
6265
63driver by Nicola Salmoria
6466
67    0000-dfff ROM
68    e000-e7ff RAM
69    f000-f3ff Video RAM #1
70    f400-f7ff Color RAM #1
71    f800-fbff Video RAM #2
72    fc00-ffff Color RAM #2
6573
660000-dfff ROM
67e000-e7ff RAM
68f000-f3ff Video RAM #1
69f400-f7ff Color RAM #1
70f800-fbff Video RAM #2
71fc00-ffff Color RAM #2
74    I/O
75    read:
76    00  IN0
77    01  IN1
78    02  IN2
79    04  DSW
7280
73I/O
74read:
7500  IN0
7601  IN1
7702  IN2
7804  DSW
81    write:
82    00  SN76496 #1
83    01  SN76496 #2
84    02  SN76496 #3
85    05  horizontal scroll
86    07  bit 0-1 = at least one of these two controls the playfield priority
87        bit 2-3 = ?
88        bit 4 = NMI enable
89        bit 5 = flip screen
90        bit 6-7 = ?
7991
80write:
8100  SN76496 #1
8201  SN76496 #2
8302  SN76496 #3
8405  horizontal scroll
8507  bit 0-1 = at least one of these two controls the playfield priority
86    bit 2-3 = ?
87    bit 4 = NMI enable
88    bit 5 = flip screen
89    bit 6-7 = ?
90
9192***************************************************************************/
9293
93#define BANKP_MASTER_CLOCK 15468000
94#define BANKP_CPU_CLOCK (BANKP_MASTER_CLOCK/6)
95#define BANKP_SN76496_CLOCK (BANKP_MASTER_CLOCK/6)
96
97
9894#include "driver.h"
9995#include "cpu/z80/z80.h"
10096#include "sound/sn76496.h"
97#include "bankp.h"
10198
10299
103extern UINT8 *bankp_videoram2;
104extern UINT8 *bankp_colorram2;
100/*************************************
101 *
102 *  Address maps
103 *
104 *************************************/
105105
106extern WRITE8_HANDLER( bankp_videoram_w );
107extern WRITE8_HANDLER( bankp_colorram_w );
108extern WRITE8_HANDLER( bankp_videoram2_w );
109extern WRITE8_HANDLER( bankp_colorram2_w );
110extern WRITE8_HANDLER( bankp_scroll_w );
111extern WRITE8_HANDLER( bankp_out_w );
112
113extern PALETTE_INIT( bankp );
114extern VIDEO_START( bankp );
115extern VIDEO_UPDATE( bankp );
116
117
118
119106static ADDRESS_MAP_START( bankp_map, ADDRESS_SPACE_PROGRAM, 8 )
120107   AM_RANGE(0x0000, 0xdfff) AM_ROM
121108   AM_RANGE(0xe000, 0xefff) AM_RAM
122   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(bankp_videoram_w) AM_BASE(&videoram)
123   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(bankp_colorram_w) AM_BASE(&colorram)
124   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(bankp_videoram2_w) AM_BASE(&bankp_videoram2)
125   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(bankp_colorram2_w) AM_BASE(&bankp_colorram2)
109   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(bankp_videoram_w) AM_BASE_MEMBER(bankp_state, videoram)
110   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(bankp_colorram_w) AM_BASE_MEMBER(bankp_state, colorram)
111   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(bankp_videoram2_w) AM_BASE_MEMBER(bankp_state, videoram2)
112   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(bankp_colorram2_w) AM_BASE_MEMBER(bankp_state, colorram2)
126113ADDRESS_MAP_END
127114
128115static ADDRESS_MAP_START( bankp_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
136123ADDRESS_MAP_END
137124
138125
126/*************************************
127 *
128 *  Input ports
129 *
130 *************************************/
139131
140132static INPUT_PORTS_START( bankp )
141133   PORT_START("IN0")
r6428r6429
226218   PORT_DIPSETTING(    0x80, "90 Units" )
227219INPUT_PORTS_END
228220
221
222/*************************************
223 *
224 *  Graphics definitions
225 *
226 *************************************/
227
229228static const gfx_layout charlayout =
230229{
231230   8,8,   /* 8*8 characters */
r6428r6429
254253
255254
256255
256/*************************************
257 *
258 *  Machine driver
259 *
260 *************************************/
261
262static MACHINE_RESET( bankp )
263{
264   bankp_state *state = (bankp_state *)machine->driver_data;
265
266   state->scroll_x = 0;
267   state->priority = 0;
268}
269
257270static MACHINE_DRIVER_START( bankp )
258271
272   /* driver data */
273   MDRV_DRIVER_DATA(bankp_state)
274
259275   /* basic machine hardware */
260
261276   MDRV_CPU_ADD("maincpu", Z80, BANKP_CPU_CLOCK)
262277   MDRV_CPU_PROGRAM_MAP(bankp_map)
263278   MDRV_CPU_IO_MAP(bankp_io_map)
264279   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
265280
281   MDRV_MACHINE_RESET(bankp)
282
266283   /* video hardware */
267284   MDRV_SCREEN_ADD("screen", RASTER)
268285   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
292309
293310
294311
295/***************************************************************************
312/*************************************
313 *
314 *  ROM definition(s)
315 *
316 *************************************/
296317
297  Game driver(s)
298
299***************************************************************************/
300
301318ROM_START( bankp )
302319   ROM_REGION( 0x10000, "maincpu", 0 )
303320   ROM_LOAD( "epr-6175.7e",  0x0000, 0x4000, CRC(044552b8) SHA1(8d50ba062483d4789cfd3ed86cea53dff0ff6968) )
r6428r6429
358375ROM_END
359376
360377
361GAME( 1984, bankp, 0, bankp, bankp, 0, ROT0,   "[Sanritsu] Sega", "Bank Panic",  0 )
362GAME( 1987, combh, 0, bankp, combh, 0, ROT270, "Sega / Sanritsu", "Combat Hawk", 0 )
378/*************************************
379 *
380 *  Game driver(s)
381 *
382 *************************************/
383
384GAME( 1984, bankp, 0, bankp, bankp, 0, ROT0,   "[Sanritsu] Sega", "Bank Panic",  GAME_SUPPORTS_SAVE )
385GAME( 1987, combh, 0, bankp, combh, 0, ROT270, "Sega / Sanritsu", "Combat Hawk", GAME_SUPPORTS_SAVE )
src/mame/drivers/pastelg.c
r6428r6429
6868   ADDRESS_MAP_GLOBAL_MASK(0xff)
6969//  AM_RANGE(0x00, 0x00) AM_WRITENOP
7070   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
71   AM_RANGE(0x81, 0x81) AM_DEVREAD("ay", ay8910_r)
72   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ay", ay8910_data_address_w)
71   AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_r)
72   AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_data_address_w)
7373   AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
7474   AM_RANGE(0x90, 0x96) AM_WRITE(pastelg_blitter_w)
7575   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r, nb1413m3_inputportsel_w)
r6428r6429
117117
118118static ADDRESS_MAP_START( threeds_io_map, ADDRESS_SPACE_IO, 8 )
119119   ADDRESS_MAP_GLOBAL_MASK(0xff)
120   AM_RANGE(0x81, 0x81) AM_DEVREAD("ay", ay8910_r)
121   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ay", ay8910_data_address_w)
120   AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_r)
121   AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_data_address_w)
122122   AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") AM_WRITE( threeds_romsel_w )
123123   AM_RANGE(0xf0, 0xf6) AM_WRITE(pastelg_blitter_w)
124124   AM_RANGE(0xa0, 0xa0) AM_READWRITE(threeds_inputport1_r, threeds_inputportsel_w)
r6428r6429
426426   /* sound hardware */
427427   MDRV_SPEAKER_STANDARD_MONO("mono")
428428
429   MDRV_SOUND_ADD("ay", AY8910, 1250000)
429   MDRV_SOUND_ADD("aysnd", AY8910, 1250000)
430430   MDRV_SOUND_CONFIG(ay8910_config)
431431   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
432432
r6428r6429
485485   /* sound hardware */
486486   MDRV_SPEAKER_STANDARD_MONO("mono")
487487
488   MDRV_SOUND_ADD("ay", AY8910, 1250000)
488   MDRV_SOUND_ADD("aysnd", AY8910, 1250000)
489489   MDRV_SOUND_CONFIG(ay8910_config)
490490   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
491491
src/mame/drivers/tetrisp2.c
r6428r6429
299299}
300300
301301
302
302303/***************************************************************************
303304
304305
r6428r6429
312313   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Object RAM
313314   AM_RANGE(0x104000, 0x107fff) AM_RAM                                             // Spare Object RAM
314315   AM_RANGE(0x108000, 0x10ffff) AM_RAM                                             // Work RAM
315   AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(tetrisp2_priority_w) AM_BASE(&tetrisp2_priority)   // Priority
316   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE8(tetrisp2_priority_r, tetrisp2_priority_w, 0x00ff)
316317   AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16)      // Palette
317318   AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg)   // Foreground
318319   AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg)   // Background
r6428r6429
369370   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Object RAM
370371   AM_RANGE(0x104000, 0x107fff) AM_RAM   // Spare Object RAM
371372   AM_RANGE(0x108000, 0x10ffff) AM_RAM   // Work RAM
372   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(nndmseal_priority_r, SMH_RAM) AM_BASE(&tetrisp2_priority   )   // Priority
373   AM_RANGE(0x200000, 0x23ffff) AM_WRITE8(tetrisp2_priority_w, 0x00ff)   // Priority
374   AM_RANGE(0x200000, 0x23ffff) AM_READ(nndmseal_priority_r)
373375   AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16      )   // Palette
374376   AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg   )   // Foreground
375377   AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg   )   // Background
r6428r6429
414416   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Object RAM
415417   AM_RANGE(0x104000, 0x107fff) AM_RAM                                             // Spare Object RAM
416418   AM_RANGE(0x108000, 0x10ffff) AM_RAM                                             // Work RAM
417   AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(rockn_priority_w) AM_BASE(&tetrisp2_priority)      // Priority
419   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE8(tetrisp2_priority_r, rockn_priority_w, 0x00ff)      // Priority
418420   AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16)      // Palette
419421   AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg)   // Foreground
420422   AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg)   // Background
r6428r6429
448450   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Object RAM
449451   AM_RANGE(0x104000, 0x107fff) AM_RAM                                             // Spare Object RAM
450452   AM_RANGE(0x108000, 0x10ffff) AM_RAM                                             // Work RAM
451   AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(rockn_priority_w) AM_BASE(&tetrisp2_priority)      // Priority
453   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE8(tetrisp2_priority_r, rockn_priority_w, 0x00ff)    // Priority
452454   AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16)      // Palette
453455   AM_RANGE(0x500000, 0x50ffff) AM_RAM                                             // Line
454456   AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_BASE(&tetrisp2_vram_rot)   // Rotation
r6428r6429
482484   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Object RAM
483485   AM_RANGE(0x104000, 0x107fff) AM_RAM                                             // Spare Object RAM
484486   AM_RANGE(0x108000, 0x10ffff) AM_RAM                                             // Work RAM
485   AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(rockn_priority_w) AM_BASE(&tetrisp2_priority)      // Priority
487   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE8(tetrisp2_priority_r, rockn_priority_w, 0x00ff)       // Priority
486488   AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16)      // Palette
487489//  AM_RANGE(0x500000, 0x50ffff) AM_RAM                                                         // Line
488490   AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_BASE(&tetrisp2_vram_rot)   // Rotation
r6428r6429
10031005   16*16*8
10041006};
10051007
1008
1009/* sprites are contained in 256x256 "tiles" */
1010static GFXLAYOUT_RAW( spritelayout, 8, 256, 256, 256*8, 256*256*8 )
1011
1012
10061013static GFXDECODE_START( tetrisp2 )
1007   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8,   0x0000, 0x10 ) // [0] Sprites
1014   GFXDECODE_ENTRY( "gfx1", 0, spritelayout,   0x0000, 0x10 ) // [0] Sprites
10081015   GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x1000, 0x10 ) // [1] Background
10091016   GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x2000, 0x10 ) // [2] Rotation
10101017   GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8,   0x6000, 0x10 ) // [3] Foreground
10111018GFXDECODE_END
10121019
10131020static GFXDECODE_START( rocknms )
1014   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8,   0x0000, 0x10 ) // [0] Sprites
1021   GFXDECODE_ENTRY( "gfx1", 0, spritelayout,   0x0000, 0x10 ) // [0] Sprites
10151022   GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x1000, 0x10 ) // [1] Background
10161023   GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x2000, 0x10 ) // [2] Rotation
10171024   GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8,   0x6000, 0x10 ) // [3] Foreground
1018   GFXDECODE_ENTRY( "gfx5", 0, layout_8x8x8,   0x8000, 0x10 ) // [0] Sprites
1025   GFXDECODE_ENTRY( "gfx5", 0, spritelayout,   0x8000, 0x10 ) // [0] Sprites
10191026   GFXDECODE_ENTRY( "gfx6", 0, layout_16x16x8, 0x9000, 0x10 ) // [1] Background
10201027   GFXDECODE_ENTRY( "gfx7", 0, layout_16x16x8, 0xa000, 0x10 ) // [2] Rotation
10211028   GFXDECODE_ENTRY( "gfx8", 0, layout_8x8x8,   0xe000, 0x10 ) // [3] Foreground
r6428r6429
14351442   ROM_LOAD16_BYTE( "1.1", 0x00000, 0x40000, CRC(45acea25) SHA1(f2f2e78be261c3d8c0145a639bc3771f0588401d) )   // 1xxxxxxxxxxxxxxxxx = 0xFF
14361443   ROM_LOAD16_BYTE( "3.3", 0x00001, 0x40000, CRC(0754d96a) SHA1(1da44994e8bcfd8832755e298c0125b38cfdd16e) )   // 1xxxxxxxxxxxxxxxxx = 0xFF
14371444
1438   ROM_REGION( 0x100, "gfx1", ROMREGION_ERASE )   /* 8x8x8 (Sprites) */
1439   // unused
1445    ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASE )    /* 8x8x8 (Sprites) */
1446/* This game doesn't use sprites, but the region needs to be a valid size for at least one sprite 'page' for the init to work. */
14401447
14411448   ROM_REGION( 0x400000, "gfx2", 0 )   // 16x16x8 (Background)
14421449   ROM_LOAD( "mr97006-02.5", 0x000000, 0x200000, CRC(4793f84e) SHA1(05acba6cc8a527a6050af79a460b08c4676287aa) )
src/mame/drivers/alpha68k.c
r6428r6429
836836static ADDRESS_MAP_START( alpha68k_I_s_map, ADDRESS_SPACE_PROGRAM, 8 )
837837   AM_RANGE(0x0000, 0x9fff) AM_ROM
838838   AM_RANGE(0xe000, 0xe000) AM_READWRITE(soundlatch_r, soundlatch_clear_w)
839   AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym", ym3812_status_port_r, ym3812_control_port_w)
840   AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym", ym3812_write_port_w)
839   AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ymsnd", ym3812_status_port_r, ym3812_control_port_w)
840   AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ymsnd", ym3812_write_port_w)
841841   AM_RANGE(0xf000, 0xf7ff) AM_RAM
842842   AM_RANGE(0xfc00, 0xfc00) AM_RAM // unknown port
843843ADDRESS_MAP_END
r6428r6429
867867
868868static ADDRESS_MAP_START( jongbou_sound_portmap, ADDRESS_SPACE_IO, 8 )
869869   ADDRESS_MAP_GLOBAL_MASK(0xff)
870   AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay", ay8910_address_w)
871   AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
870   AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_address_w)
871   AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
872872   AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_clear_w)
873873   AM_RANGE(0x06, 0x06) AM_WRITENOP
874874ADDRESS_MAP_END
875875
876876static ADDRESS_MAP_START( tnextspc_sound_portmap, ADDRESS_SPACE_IO, 8 )
877877   ADDRESS_MAP_GLOBAL_MASK(0xff)
878   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ym", ym3812_status_port_r, ym3812_control_port_w)
879   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ym", ym3812_write_port_w)
878   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_status_port_r, ym3812_control_port_w)
879   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_write_port_w)
880880   AM_RANGE(0x3b, 0x3b) AM_READNOP // unknown read port
881881   AM_RANGE(0x3d, 0x3d) AM_READNOP // unknown read port
882882   AM_RANGE(0x7b, 0x7b) AM_READNOP // unknown read port
r6428r6429
20402040   /* sound hardware */
20412041   MDRV_SPEAKER_STANDARD_MONO("mono")
20422042
2043   MDRV_SOUND_ADD("ay", AY8910, 2000000)
2043   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
20442044   MDRV_SOUND_CONFIG(ay8910_config)
20452045   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.65)
20462046MACHINE_DRIVER_END
r6428r6429
20732073   /* sound hardware */
20742074   MDRV_SPEAKER_STANDARD_MONO("mono")
20752075
2076   MDRV_SOUND_ADD("ym", YM3812, 4000000)
2076   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
20772077   MDRV_SOUND_CONFIG(ym3812_config)
20782078   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
20792079MACHINE_DRIVER_END
r6428r6429
22802280   /* sound hardware */
22812281   MDRV_SPEAKER_STANDARD_MONO("mono")
22822282
2283   MDRV_SOUND_ADD("ym", YM3812, 4000000)
2283   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
22842284   MDRV_SOUND_CONFIG(ym3812_config)
22852285   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
22862286MACHINE_DRIVER_END
src/mame/drivers/tmaster.c
r6428r6429
939939   device_reset(cputag_get_cpu(machine, "maincpu"));
940940}
941941
942static UINT8 *galgames_eeprom_data = NULL;
943
944942static MACHINE_DRIVER_START( galgames )
945943   MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2)
946944   MDRV_CPU_PROGRAM_MAP(galgames_map)
947945   MDRV_CPU_VBLANK_INT_HACK(galgames_interrupt, 1+20)   // ??
948946
949947   // 5 EEPROMs on the motherboard (for BIOS + 4 Carts)
950   MDRV_EEPROM_ADD(GALGAMES_EEPROM_BIOS,  galgames_eeprom_interface, 0, galgames_eeprom_data)
951   MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART1, galgames_eeprom_interface, 0, galgames_eeprom_data)
952   MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART2, galgames_eeprom_interface, 0, galgames_eeprom_data)
953   MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART3, galgames_eeprom_interface, 0, galgames_eeprom_data)
954   MDRV_EEPROM_ADD(GALGAMES_EEPROM_CART4, galgames_eeprom_interface, 0, galgames_eeprom_data)
948   MDRV_EEPROM_NODEFAULT_ADD(GALGAMES_EEPROM_BIOS,  galgames_eeprom_interface)
949   MDRV_EEPROM_NODEFAULT_ADD(GALGAMES_EEPROM_CART1, galgames_eeprom_interface)
950   MDRV_EEPROM_NODEFAULT_ADD(GALGAMES_EEPROM_CART2, galgames_eeprom_interface)
951   MDRV_EEPROM_NODEFAULT_ADD(GALGAMES_EEPROM_CART3, galgames_eeprom_interface)
952   MDRV_EEPROM_NODEFAULT_ADD(GALGAMES_EEPROM_CART4, galgames_eeprom_interface)
955953
956954   MDRV_MACHINE_RESET( galgames )
957955
src/mame/drivers/tcl.c
r6428r6429
138138   /* sound hardware */
139139   MDRV_SPEAKER_STANDARD_MONO("mono")
140140
141   MDRV_SOUND_ADD("ay", AY8910, 12000000/6)
141   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6)
142142   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
143143MACHINE_DRIVER_END
144144
src/mame/drivers/galaxold.c
r6428r6429
635635
636636static ADDRESS_MAP_START( ozon1_io_map, ADDRESS_SPACE_IO, 8 )
637637   ADDRESS_MAP_GLOBAL_MASK(0xff)
638   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_data_address_w)
638   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_data_address_w)
639639ADDRESS_MAP_END
640640
641641static ADDRESS_MAP_START( drivfrcg, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
686686
687687static ADDRESS_MAP_START( bongo_io, ADDRESS_SPACE_IO, 8 )
688688   ADDRESS_MAP_GLOBAL_MASK(0xff)
689   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
690   AM_RANGE(0x02, 0x02) AM_DEVREAD("ay", ay8910_r)
689   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
690   AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_r)
691691ADDRESS_MAP_END
692692
693693
r6428r6429
875875static ADDRESS_MAP_START( hexpoola_io, ADDRESS_SPACE_IO, 8 )
876876   AM_RANGE(0x00, 0x00) AM_READNOP
877877   AM_RANGE(0x20, 0x3f) AM_WRITE(racknrol_tiles_bank_w) AM_BASE(&racknrol_tiles_bank)
878   AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(hexpoola_data_port_r) AM_DEVWRITE("sn", sn76496_w)
878   AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(hexpoola_data_port_r) AM_DEVWRITE("snsnd", sn76496_w)
879879   AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
880880ADDRESS_MAP_END
881881
r6428r6429
22582258   MDRV_PALETTE_LENGTH(32)
22592259
22602260   MDRV_VIDEO_START(galaxold_plain)
2261   MDRV_SOUND_ADD("ay", AY8910, PIXEL_CLOCK/4)
2261   MDRV_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4)
22622262   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
22632263MACHINE_DRIVER_END
22642264
r6428r6429
23022302   MDRV_VIDEO_START(bongo)
23032303   MDRV_VIDEO_UPDATE(galaxold)
23042304
2305   MDRV_SOUND_ADD("ay", AY8910, PIXEL_CLOCK/4)
2305   MDRV_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4)
23062306   MDRV_SOUND_CONFIG(bongo_ay8910_interface)
23072307   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
23082308MACHINE_DRIVER_END
r6428r6429
24472447
24482448   /* sound hardware */
24492449   MDRV_SPEAKER_STANDARD_MONO("mono")
2450   MDRV_SOUND_ADD("sn", SN76496, PIXEL_CLOCK/2)
2450   MDRV_SOUND_ADD("snsnd", SN76496, PIXEL_CLOCK/2)
24512451   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
24522452MACHINE_DRIVER_END
24532453
src/mame/drivers/atarisy1.c
r6428r6429
494494static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
495495   AM_RANGE(0x0000, 0x0fff) AM_RAM
496496   AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("via6522_0", via_r, via_w)
497   AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
497   AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
498498   AM_RANGE(0x1810, 0x1810) AM_READWRITE(atarigen_6502_sound_r, atarigen_6502_sound_w)
499499   AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r)
500500   AM_RANGE(0x1824, 0x1825) AM_WRITE(led_w)
r6428r6429
779779   /* sound hardware */
780780   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
781781
782   MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4)
782   MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
783783   MDRV_SOUND_CONFIG(ym2151_config)
784784   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
785785   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
src/mame/drivers/cop01.c
r6428r6429
153153
154154static ADDRESS_MAP_START( mightguy_audio_io_map, ADDRESS_SPACE_IO, 8 )
155155   ADDRESS_MAP_GLOBAL_MASK(0xff)
156   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3526_w)
156   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_w)
157157   AM_RANGE(0x02, 0x02) AM_WRITENOP   /* 1412M2? */
158158   AM_RANGE(0x03, 0x03) AM_WRITENOP   /* 1412M2? */
159159   AM_RANGE(0x03, 0x03) AM_READ(kludge)   /* 1412M2? */
r6428r6429
456456   /* sound hardware */
457457   MDRV_SPEAKER_STANDARD_MONO("mono")
458458
459   MDRV_SOUND_ADD("ym", YM3526, 4000000)
459   MDRV_SOUND_ADD("ymsnd", YM3526, 4000000)
460460   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
461461MACHINE_DRIVER_END
462462
src/mame/drivers/hanaawas.c
r6428r6429
9292   ADDRESS_MAP_GLOBAL_MASK(0xff)
9393   AM_RANGE(0x00, 0x00) AM_READWRITE(hanaawas_input_port_0_r, hanaawas_inputs_mux_w)
9494   AM_RANGE(0x01, 0x01) AM_READNOP /* it must return 0 */
95   AM_RANGE(0x10, 0x10) AM_DEVREAD("ay", ay8910_r)
96   AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay", ay8910_address_data_w)
95   AM_RANGE(0x10, 0x10) AM_DEVREAD("aysnd", ay8910_r)
96   AM_RANGE(0x10, 0x11) AM_DEVWRITE("aysnd", ay8910_address_data_w)
9797ADDRESS_MAP_END
9898
9999static INPUT_PORTS_START( hanaawas )
r6428r6429
218218   /* sound hardware */
219219   MDRV_SPEAKER_STANDARD_MONO("mono")
220220
221   MDRV_SOUND_ADD("ay", AY8910, 18432000/12)
221   MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12)
222222   MDRV_SOUND_CONFIG(ay8910_config)
223223   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
224224MACHINE_DRIVER_END
src/mame/drivers/kingpin.c
r6428r6429
164164/*
165165    MDRV_SPEAKER_STANDARD_MONO("mono")
166166
167    MDRV_SOUND_ADD("ay", AY8912, 1500000)
167    MDRV_SOUND_ADD("aysnd", AY8912, 1500000)
168168    MDRV_SOUND_CONFIG(ay8912_interface)
169169    MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
170170*/
src/mame/drivers/usgames.c
r6428r6429
7979   AM_RANGE(0x2041, 0x2041) AM_DEVWRITE("crtc", mc6845_register_w)
8080   AM_RANGE(0x2060, 0x2060) AM_WRITE(usgames_rombank_w)
8181   AM_RANGE(0x2070, 0x2070) AM_READ_PORT("UNK2")
82   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ay", ay8910_address_data_w)
82   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("aysnd", ay8910_address_data_w)
8383   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(usgames_charram_w) AM_BASE(&usgames_charram)
8484   AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(usgames_videoram_w) AM_BASE(&usgames_videoram)
8585   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
r6428r6429
8989
9090static ADDRESS_MAP_START( usg185_map, ADDRESS_SPACE_PROGRAM, 8 )
9191   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
92   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay", ay8910_address_data_w)
92   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
9393   AM_RANGE(0x2400, 0x2400) AM_READ_PORT("DSW")
9494   AM_RANGE(0x2410, 0x2410) AM_READ_PORT("INPUTS")
9595   AM_RANGE(0x2420, 0x2420) AM_WRITE(lamps1_w)
r6428r6429
266266   /* sound hardware */
267267   MDRV_SPEAKER_STANDARD_MONO("mono")
268268
269   MDRV_SOUND_ADD("ay", AY8910, 2000000)
269   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
270270   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
271271MACHINE_DRIVER_END
272272
src/mame/drivers/opwolf.c
r6428r6429
536536   AM_RANGE(0x0000, 0x3fff) AM_ROM
537537   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
538538   AM_RANGE(0x8000, 0x8fff) AM_RAM
539   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
539   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
540540   AM_RANGE(0x9002, 0x9100) AM_READNOP
541541   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
542542   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
r6428r6429
741741   /* sound hardware */
742742   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
743743
744   MDRV_SOUND_ADD("ym", YM2151, SOUND_CPU_CLOCK )   /* 4 MHz */
744   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK )   /* 4 MHz */
745745   MDRV_SOUND_CONFIG(ym2151_config)
746746   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
747747   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
r6428r6429
793793   /* sound hardware */
794794   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
795795
796   MDRV_SOUND_ADD("ym", YM2151, SOUND_CPU_CLOCK )
796   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK )
797797   MDRV_SOUND_CONFIG(ym2151_config)
798798   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
799799   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
src/mame/drivers/suna16.c
r6428r6429
214214static ADDRESS_MAP_START( bssoccer_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
215215   AM_RANGE(0x0000, 0x7fff) AM_ROM   // ROM
216216   AM_RANGE(0xf000, 0xf7ff) AM_RAM   // RAM
217   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
217   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   // YM2151
218218   AM_RANGE(0xfc00, 0xfc00) AM_READ(soundlatch_r)   // From Main CPU
219219   AM_RANGE(0xfd00, 0xfd00) AM_WRITE(soundlatch2_w)   // To PCM Z80 #1
220220   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(soundlatch3_w)   // To PCM Z80 #2
r6428r6429
227227static ADDRESS_MAP_START( uballoon_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
228228   AM_RANGE(0x0000, 0xefff) AM_ROM   // ROM
229229   AM_RANGE(0xf000, 0xf7ff) AM_RAM   // RAM
230   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
230   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   // YM2151
231231   AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_r, soundlatch2_w)   // To PCM Z80
232232ADDRESS_MAP_END
233233
r6428r6429
238238static ADDRESS_MAP_START( sunaq_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
239239   AM_RANGE(0x0000, 0xe82f) AM_ROM   // ROM
240240   AM_RANGE(0xe830, 0xf7ff) AM_RAM   // RAM (writes to efxx, could be a program bug tho)
241   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
241   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   // YM2151
242242   AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_r, soundlatch2_w)   // To PCM Z80
243243ADDRESS_MAP_END
244244
r6428r6429
248248
249249static ADDRESS_MAP_START( bestbest_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
250250   AM_RANGE( 0x0000, 0xbfff ) AM_ROM                           // ROM
251   AM_RANGE( 0xc000, 0xc001 ) AM_DEVWRITE( "ym", ym3526_w   )   //
252   AM_RANGE( 0xc002, 0xc003 ) AM_DEVWRITE( "ay", ay8910_address_data_w   )   // AY8910
251   AM_RANGE( 0xc000, 0xc001 ) AM_DEVWRITE( "ymsnd", ym3526_w   )   //
252   AM_RANGE( 0xc002, 0xc003 ) AM_DEVWRITE( "aysnd", ay8910_address_data_w   )   // AY8910
253253   AM_RANGE( 0xe000, 0xe7ff ) AM_RAM                           // RAM
254254   AM_RANGE( 0xf000, 0xf000 ) AM_WRITE( soundlatch2_w            )   // To PCM Z80
255255   AM_RANGE( 0xf800, 0xf800 ) AM_READ ( soundlatch_r            )   // From Main CPU
r6428r6429
796796   /* sound hardware */
797797   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
798798
799   MDRV_SOUND_ADD("ym", YM2151, 3579545)
799   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
800800   MDRV_SOUND_ROUTE(0, "lspeaker", 0.20)
801801   MDRV_SOUND_ROUTE(1, "rspeaker", 0.20)
802802
r6428r6429
856856   /* sound hardware */
857857   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
858858
859   MDRV_SOUND_ADD("ym", YM2151, 3579545)
859   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
860860   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
861861   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
862862
r6428r6429
905905   /* sound hardware */
906906   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
907907
908   MDRV_SOUND_ADD("ym", YM2151, 14318000/4)
908   MDRV_SOUND_ADD("ymsnd", YM2151, 14318000/4)
909909   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
910910   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
911911
r6428r6429
977977   /* sound hardware */
978978   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
979979
980   MDRV_SOUND_ADD("ay", AY8910, 24000000/16)
980   MDRV_SOUND_ADD("aysnd", AY8910, 24000000/16)
981981   MDRV_SOUND_CONFIG(bestbest_ay8910_interface)
982982   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
983983   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
984984
985   MDRV_SOUND_ADD("ym", YM3526, 24000000/8)
985   MDRV_SOUND_ADD("ymsnd", YM3526, 24000000/8)
986986   MDRV_SOUND_CONFIG(bestbest_ym3526_interface)
987987   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
988988   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
src/mame/drivers/shadfrce.c
r6428r6429
417417static ADDRESS_MAP_START( shadfrce_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
418418   AM_RANGE(0x0000, 0xbfff) AM_ROM
419419   AM_RANGE(0xc000, 0xc7ff) AM_RAM
420   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
420   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
421421   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
422422   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
423423   AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("oki", oki_bankswitch_w)
r6428r6429
593593   /* sound hardware */
594594   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
595595
596   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz)       /* verified on pcb */
596   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)       /* verified on pcb */
597597   MDRV_SOUND_CONFIG(ym2151_config)
598598   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
599599   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
src/mame/drivers/bigevglf.c
r6428r6429
368368static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
369369   AM_RANGE(0x0000, 0xbfff) AM_ROM
370370   AM_RANGE(0xc000, 0xc7ff) AM_RAM
371   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay", ay8910_address_data_w)
371   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
372372   AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w)
373373   AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
374374   AM_RANGE(0xce00, 0xce00) AM_WRITENOP
r6428r6429
463463   /* sound hardware */
464464   MDRV_SPEAKER_STANDARD_MONO("mono")
465465
466   MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
466   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
467467   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) /* YM2149 really */
468468
469469   MDRV_SOUND_ADD("msm", MSM5232, 8000000/4)
src/mame/drivers/bagman.c
r6428r6429
225225
226226static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
227227   ADDRESS_MAP_GLOBAL_MASK(0xff)
228   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ay", ay8910_address_data_w)
229   AM_RANGE(0x0c, 0x0c) AM_DEVREAD("ay", ay8910_r)
228   AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_address_data_w)
229   AM_RANGE(0x0c, 0x0c) AM_DEVREAD("aysnd", ay8910_r)
230230   //AM_RANGE(0x56, 0x56) AM_WRITENOP
231231ADDRESS_MAP_END
232232
r6428r6429
527527   /* sound hardware */
528528   MDRV_SPEAKER_STANDARD_MONO("mono")
529529
530   MDRV_SOUND_ADD("ay", AY8910, 1500000)
530   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
531531   MDRV_SOUND_CONFIG(ay8910_config)
532532   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
533533
r6428r6429
563563   /* sound hardware */
564564   MDRV_SPEAKER_STANDARD_MONO("mono")
565565
566   MDRV_SOUND_ADD("ay", AY8910, 1500000)
566   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
567567   MDRV_SOUND_CONFIG(ay8910_config)
568568   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
569569
r6428r6429
618618   /* sound hardware */
619619   MDRV_SPEAKER_STANDARD_MONO("mono")
620620
621   MDRV_SOUND_ADD("ay", AY8910, 1500000)
621   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
622622   MDRV_SOUND_CONFIG(ay8910_config)
623623   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
624624
r6428r6429
629629
630630static MACHINE_DRIVER_START( squaitsa )
631631   MDRV_IMPORT_FROM( botanic )
632   MDRV_SOUND_MODIFY("ay")
632   MDRV_SOUND_MODIFY("aysnd")
633633   MDRV_SOUND_CONFIG(ay8910_dial_config)
634634   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
635635MACHINE_DRIVER_END
src/mame/drivers/inufuku.c
r6428r6429
214214   ADDRESS_MAP_GLOBAL_MASK(0xff)
215215   AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w)
216216   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, pending_command_clear_w)
217   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
217   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
218218ADDRESS_MAP_END
219219
220220/******************************************************************************
r6428r6429
380380   /* sound hardware */
381381   MDRV_SPEAKER_STANDARD_MONO("mono")
382382
383   MDRV_SOUND_ADD("ym", YM2610, 32000000/4)
383   MDRV_SOUND_ADD("ymsnd", YM2610, 32000000/4)
384384   MDRV_SOUND_CONFIG(ym2610_config)
385385   MDRV_SOUND_ROUTE(0, "mono", 0.50)
386386   MDRV_SOUND_ROUTE(1, "mono", 0.75)
r6428r6429
415415   ROM_LOAD16_WORD_SWAP( "lhmn5kua.u36", 0x0400000, 0x400000, CRC(1ac4402a) SHA1(c15acc6fce4fe0b54e92d14c31a1bd78acf2c8fc) )
416416   ROM_LOAD16_WORD_SWAP( "lhmn5ku9.u38", 0x0800000, 0x400000, CRC(e4e9b1b6) SHA1(4d4ad85fbe6a442d4f8cafad748bcae4af6245b7) )
417417
418   ROM_REGION( 0x0400000, "ym", 0 )   // adpcm data
418   ROM_REGION( 0x0400000, "ymsnd", 0 )   // adpcm data
419419   ROM_LOAD( "lhmn5ku6.u53", 0x0000000, 0x400000, CRC(b320c5c9) SHA1(7c99da2d85597a3c008ed61a3aa5f47ad36186ec) )
420420ROM_END
421421
src/mame/drivers/dunhuang.c
r6428r6429
417417
418418   AM_RANGE( 0x001b, 0x001b ) AM_WRITE( dunhuang_block_dest_w )
419419
420   AM_RANGE( 0x0081, 0x0081 ) AM_DEVWRITE( "ym", ym2413_register_port_w   )
421   AM_RANGE( 0x0089, 0x0089 ) AM_DEVWRITE( "ym", ym2413_data_port_w      )
420   AM_RANGE( 0x0081, 0x0081 ) AM_DEVWRITE( "ymsnd", ym2413_register_port_w   )
421   AM_RANGE( 0x0089, 0x0089 ) AM_DEVWRITE( "ymsnd", ym2413_data_port_w      )
422422
423423//  AM_RANGE( 0x0082, 0x0082 ) AM_WRITE( dunhuang_82_w )
424424
r6428r6429
699699   /* sound hardware */
700700   MDRV_SPEAKER_STANDARD_MONO("mono")
701701
702   MDRV_SOUND_ADD("ym", YM2413, 3579545)
702   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
703703   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
704704
705705   MDRV_SOUND_ADD("ay8910", AY8910, 12000000/8)
src/mame/drivers/ojankohs.c
r6428r6429
254254   AM_RANGE(0x03, 0x03) AM_DEVWRITE("msm", ojankohs_adpcm_reset_w)
255255   AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w)
256256   AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
257   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
258   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay", ay8910_data_address_w)
257   AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r)
258   AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_data_address_w)
259259   AM_RANGE(0x10, 0x10) AM_WRITENOP            // unknown
260260   AM_RANGE(0x11, 0x11) AM_WRITENOP            // unknown
261261ADDRESS_MAP_END
r6428r6429
267267   AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITE(ojankoy_coinctr_w)
268268   AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w)
269269   AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
270   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
271   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay", ay8910_data_address_w)
270   AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r)
271   AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_data_address_w)
272272ADDRESS_MAP_END
273273
274274static ADDRESS_MAP_START( ccasino_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
279279   AM_RANGE(0x03, 0x03) AM_READ(ccasino_dipsw3_r) AM_DEVWRITE("msm", ojankohs_adpcm_reset_w)
280280   AM_RANGE(0x04, 0x04) AM_READWRITE(ccasino_dipsw4_r, ojankohs_flipscreen_w)
281281   AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w)
282   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
283   AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay", ay8910_data_address_w)
282   AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_r)
283   AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_data_address_w)
284284   AM_RANGE(0x08, 0x0f) AM_WRITE(ccasino_palette_w)      // 16bit address access
285285   AM_RANGE(0x10, 0x10) AM_WRITENOP
286286   AM_RANGE(0x11, 0x11) AM_WRITENOP
r6428r6429
293293   AM_RANGE(0xfb, 0xfb) AM_WRITE(ojankoc_ctrl_w)
294294   AM_RANGE(0xfc, 0xfd) AM_READ(ojankoc_keymatrix_r)
295295   AM_RANGE(0xfd, 0xfd) AM_WRITE(ojankohs_portselect_w)
296   AM_RANGE(0xfe, 0xff) AM_DEVWRITE("ay", ay8910_data_address_w)
297   AM_RANGE(0xff, 0xff) AM_DEVREAD("ay", ay8910_r)
296   AM_RANGE(0xfe, 0xff) AM_DEVWRITE("aysnd", ay8910_data_address_w)
297   AM_RANGE(0xff, 0xff) AM_DEVREAD("aysnd", ay8910_r)
298298ADDRESS_MAP_END
299299
300300
r6428r6429
843843   /* sound hardware */
844844   MDRV_SPEAKER_STANDARD_MONO("mono")
845845
846   MDRV_SOUND_ADD("ay", AY8910, 12000000/6)
846   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6)
847847   MDRV_SOUND_CONFIG(ojankohs_ay8910_interface)
848848   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
849849
r6428r6429
881881   /* sound hardware */
882882   MDRV_SPEAKER_STANDARD_MONO("mono")
883883
884   MDRV_SOUND_ADD("ay", AY8910, 12000000/8)
884   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8)
885885   MDRV_SOUND_CONFIG(ojankoy_ay8910_interface)
886886   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
887887
r6428r6429
918918   /* sound hardware */
919919   MDRV_SPEAKER_STANDARD_MONO("mono")
920920
921   MDRV_SOUND_ADD("ay", AY8910, 12000000/8)
921   MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8)
922922   MDRV_SOUND_CONFIG(ojankoy_ay8910_interface)
923923   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
924924
r6428r6429
954954   /* sound hardware */
955955   MDRV_SPEAKER_STANDARD_MONO("mono")
956956
957   MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
957   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
958958   MDRV_SOUND_CONFIG(ojankoc_ay8910_interface)
959959   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
960960
src/mame/drivers/n8080.c
r6428r6429
1616
1717#define MASTER_CLOCK   XTAL_20_16MHz
1818
19static unsigned shift_data;
20static unsigned shift_bits;
21static int inte;
2219
2320static WRITE8_HANDLER( n8080_shift_bits_w )
2421{
25   shift_bits = data & 7;
22   n8080_state *state = (n8080_state *)space->machine->driver_data;
23   state->shift_bits = data & 7;
2624}
2725static WRITE8_HANDLER( n8080_shift_data_w )
2826{
29   shift_data = (shift_data >> 8) | (data << 8);
27   n8080_state *state = (n8080_state *)space->machine->driver_data;
28   state->shift_data = (state->shift_data >> 8) | (data << 8);
3029}
3130
3231
3332static READ8_HANDLER( n8080_shift_r )
3433{
35   return shift_data >> (8 - shift_bits);
34   n8080_state *state = (n8080_state *)space->machine->driver_data;
35   return state->shift_data >> (8 - state->shift_bits);
3636}
3737
3838static ADDRESS_MAP_START( main_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
3939   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
4040   AM_RANGE(0x0000, 0x3fff) AM_ROM
41   AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE(&videoram)
41   AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(n8080_state, videoram)
4242ADDRESS_MAP_END
4343
4444
4545static ADDRESS_MAP_START( helifire_main_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
4646   AM_RANGE(0x0000, 0x3fff) AM_ROM
47   AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE(&videoram)
48   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&colorram)
47   AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(n8080_state, videoram)
48   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(n8080_state, colorram)
4949ADDRESS_MAP_END
5050
5151static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
6363   AM_RANGE(0x06, 0x06) AM_WRITE(n8080_video_control_w)
6464ADDRESS_MAP_END
6565
66/* Interrupts */
6766
68static TIMER_DEVICE_CALLBACK( rst1_tick )
69{
70   int state = inte ? ASSERT_LINE : CLEAR_LINE;
67/* Input ports */
7168
72   /* V7 = 1, V6 = 0 */
73   cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xcf);
74}
75
76static TIMER_DEVICE_CALLBACK( rst2_tick )
77{
78   int state = inte ? ASSERT_LINE : CLEAR_LINE;
79
80   /* vblank */
81   cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xd7);
82}
83
84static WRITE_LINE_DEVICE_HANDLER( n8080_inte_callback )
85{
86   inte = state;
87}
88
89static WRITE8_DEVICE_HANDLER( n8080_status_callback )
90{
91   if (data & I8085_STATUS_INTA)
92   {
93      /* interrupt acknowledge */
94      cpu_set_input_line(device, INPUT_LINE_IRQ0, CLEAR_LINE);
95   }
96}
97
98static I8085_CONFIG( n8080_cpu_config )
99{
100   DEVCB_HANDLER(n8080_status_callback),   /* STATUS changed callback */
101   DEVCB_LINE(n8080_inte_callback),      /* INTE changed callback */
102   DEVCB_NULL,                        /* SID changed callback (8085A only) */
103   DEVCB_NULL                        /* SOD changed callback (8085A only) */
104};
105
106static MACHINE_DRIVER_START( spacefev )
107
108   /* basic machine hardware */
109   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
110   MDRV_CPU_CONFIG(n8080_cpu_config)
111   MDRV_CPU_PROGRAM_MAP(main_cpu_map)
112   MDRV_CPU_IO_MAP(main_io_map)
113
114   /* video hardware */
115   MDRV_SCREEN_ADD("screen", RASTER)
116   MDRV_SCREEN_REFRESH_RATE(60)
117   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
118   MDRV_SCREEN_SIZE(256, 256)
119   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
120
121   MDRV_PALETTE_LENGTH(8)
122   MDRV_PALETTE_INIT(n8080)
123   MDRV_VIDEO_START(spacefev)
124   MDRV_VIDEO_UPDATE(spacefev)
125
126   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
127   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
128
129   /* sound hardware */
130   MDRV_IMPORT_FROM( spacefev_sound )
131MACHINE_DRIVER_END
132
133
134static MACHINE_DRIVER_START( sheriff )
135
136   /* basic machine hardware */
137   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
138   MDRV_CPU_CONFIG(n8080_cpu_config)
139   MDRV_CPU_PROGRAM_MAP(main_cpu_map)
140   MDRV_CPU_IO_MAP(main_io_map)
141
142   /* video hardware */
143   MDRV_SCREEN_ADD("screen", RASTER)
144   MDRV_SCREEN_REFRESH_RATE(60)
145   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
146   MDRV_SCREEN_SIZE(256, 256)
147   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
148
149   MDRV_PALETTE_LENGTH(8)
150   MDRV_PALETTE_INIT(n8080)
151   MDRV_VIDEO_START(sheriff)
152   MDRV_VIDEO_UPDATE(sheriff)
153
154   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
155   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
156
157   /* sound hardware */
158   MDRV_IMPORT_FROM( sheriff_sound )
159MACHINE_DRIVER_END
160
161
162static MACHINE_DRIVER_START( helifire )
163
164   /* basic machine hardware */
165   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
166   MDRV_CPU_CONFIG(n8080_cpu_config)
167   MDRV_CPU_PROGRAM_MAP(helifire_main_cpu_map)
168   MDRV_CPU_IO_MAP(main_io_map)
169
170   /* video hardware */
171   MDRV_SCREEN_ADD("screen", RASTER)
172   MDRV_SCREEN_REFRESH_RATE(60)
173   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
174   MDRV_SCREEN_SIZE(256, 256)
175   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
176
177   MDRV_PALETTE_LENGTH(8 + 0x400)
178   MDRV_PALETTE_INIT(helifire)
179   MDRV_VIDEO_START(helifire)
180   MDRV_VIDEO_UPDATE(helifire)
181   MDRV_VIDEO_EOF(helifire)
182
183   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
184   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
185
186   /* sound hardware */
187   MDRV_IMPORT_FROM( helifire_sound )
188MACHINE_DRIVER_END
189
190
19169static INPUT_PORTS_START( spacefev )
19270   PORT_START("IN0")
19371   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
r6428r6429
487365   PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ))
488366
489367   /* potentiometers */
490
491   PORT_START("POT0")   /* 04 */
368   PORT_START("POT0")
492369   PORT_DIPNAME( 0xff, 0x50, "VR1 sun brightness" )
493370   PORT_DIPSETTING(    0x00, "00" )
494371   PORT_DIPSETTING(    0x10, "10" )
r6428r6429
499376   PORT_DIPSETTING(    0x60, "60" )
500377   PORT_DIPSETTING(    0x70, "70" )
501378
502   PORT_START("POT1")   /* 05 */
379   PORT_START("POT1")
503380   PORT_DIPNAME( 0xff, 0x00, "VR2 sea brightness" )
504381   PORT_DIPSETTING(    0x00, "00" )
505382   PORT_DIPSETTING(    0x10, "10" )
r6428r6429
509386   PORT_DIPSETTING(    0x50, "50" )
510387   PORT_DIPSETTING(    0x60, "60" )
511388   PORT_DIPSETTING(    0x70, "70" )
512
513389INPUT_PORTS_END
514390
515391
392/* Interrupts */
393
394static TIMER_DEVICE_CALLBACK( rst1_tick )
395{
396   n8080_state *n8080 = (n8080_state *)timer->machine->driver_data;
397   int state = n8080->inte ? ASSERT_LINE : CLEAR_LINE;
398
399   /* V7 = 1, V6 = 0 */
400   cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xcf);
401}
402
403static TIMER_DEVICE_CALLBACK( rst2_tick )
404{
405   n8080_state *n8080 = (n8080_state *)timer->machine->driver_data;
406   int state = n8080->inte ? ASSERT_LINE : CLEAR_LINE;
407
408   /* vblank */
409   cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xd7);
410}
411
412static WRITE_LINE_DEVICE_HANDLER( n8080_inte_callback )
413{
414   n8080_state *n8080 = (n8080_state *)device->machine->driver_data;
415   n8080->inte = state;
416}
417
418static WRITE8_DEVICE_HANDLER( n8080_status_callback )
419{
420   if (data & I8085_STATUS_INTA)
421   {
422      /* interrupt acknowledge */
423      cpu_set_input_line(device, INPUT_LINE_IRQ0, CLEAR_LINE);
424   }
425}
426
427static I8085_CONFIG( n8080_cpu_config )
428{
429   DEVCB_HANDLER(n8080_status_callback),   /* STATUS changed callback */
430   DEVCB_LINE(n8080_inte_callback),      /* INTE changed callback */
431   DEVCB_NULL,                        /* SID changed callback (8085A only) */
432   DEVCB_NULL                        /* SOD changed callback (8085A only) */
433};
434
435static MACHINE_START( n8080 )
436{
437   n8080_state *state = (n8080_state *)machine->driver_data;
438
439   state_save_register_global(machine, state->shift_data);
440   state_save_register_global(machine, state->shift_bits);
441   state_save_register_global(machine, state->inte);
442}
443
444static MACHINE_START( spacefev )
445{
446   MACHINE_START_CALL(n8080);
447   MACHINE_START_CALL(spacefev_sound);
448}
449
450static MACHINE_START( sheriff )
451{
452   MACHINE_START_CALL(n8080);
453   MACHINE_START_CALL(sheriff_sound);
454}
455
456static MACHINE_START( helifire )
457{
458   MACHINE_START_CALL(n8080);
459   MACHINE_START_CALL(helifire_sound);
460}
461
462
463static MACHINE_RESET( n8080 )
464{
465   n8080_state *state = (n8080_state *)machine->driver_data;
466
467   state->shift_data = 0;
468   state->shift_bits = 0;
469   state->inte = 0;
470}
471
472static MACHINE_RESET( spacefev )
473{
474   n8080_state *state = (n8080_state *)machine->driver_data;
475
476   MACHINE_RESET_CALL(n8080);
477   MACHINE_RESET_CALL(spacefev_sound);
478
479   state->spacefev_red_screen = 0;
480   state->spacefev_red_cannon = 0;
481}
482
483static MACHINE_RESET( sheriff )
484{
485   n8080_state *state = (n8080_state *)machine->driver_data;
486
487   MACHINE_RESET_CALL(n8080);
488   MACHINE_RESET_CALL(sheriff_sound);
489
490   state->sheriff_color_mode = 0;
491   state->sheriff_color_data = 0;
492}
493
494static MACHINE_RESET( helifire )
495{
496   n8080_state *state = (n8080_state *)machine->driver_data;
497
498   MACHINE_RESET_CALL(n8080);
499   MACHINE_RESET_CALL(helifire_sound);
500
501   state->helifire_mv = 0;
502   state->helifire_sc = 0;
503   state->helifire_flash = 0;
504}
505
506
507static MACHINE_DRIVER_START( spacefev )
508
509   /* driver data */
510   MDRV_DRIVER_DATA(n8080_state)
511
512   /* basic machine hardware */
513   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
514   MDRV_CPU_CONFIG(n8080_cpu_config)
515   MDRV_CPU_PROGRAM_MAP(main_cpu_map)
516   MDRV_CPU_IO_MAP(main_io_map)
517
518   MDRV_MACHINE_START(spacefev)
519   MDRV_MACHINE_RESET(spacefev)
520
521   /* video hardware */
522   MDRV_SCREEN_ADD("screen", RASTER)
523   MDRV_SCREEN_REFRESH_RATE(60)
524   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
525   MDRV_SCREEN_SIZE(256, 256)
526   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
527
528   MDRV_PALETTE_LENGTH(8)
529   MDRV_PALETTE_INIT(n8080)
530   MDRV_VIDEO_START(spacefev)
531   MDRV_VIDEO_UPDATE(spacefev)
532
533   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
534   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
535
536   /* sound hardware */
537   MDRV_IMPORT_FROM( spacefev_sound )
538MACHINE_DRIVER_END
539
540
541static MACHINE_DRIVER_START( sheriff )
542
543   /* driver data */
544   MDRV_DRIVER_DATA(n8080_state)
545
546   /* basic machine hardware */
547   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
548   MDRV_CPU_CONFIG(n8080_cpu_config)
549   MDRV_CPU_PROGRAM_MAP(main_cpu_map)
550   MDRV_CPU_IO_MAP(main_io_map)
551
552   MDRV_MACHINE_START(sheriff)
553   MDRV_MACHINE_RESET(sheriff)
554
555   /* video hardware */
556   MDRV_SCREEN_ADD("screen", RASTER)
557   MDRV_SCREEN_REFRESH_RATE(60)
558   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
559   MDRV_SCREEN_SIZE(256, 256)
560   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
561
562   MDRV_PALETTE_LENGTH(8)
563   MDRV_PALETTE_INIT(n8080)
564   MDRV_VIDEO_START(sheriff)
565   MDRV_VIDEO_UPDATE(sheriff)
566
567   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
568   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
569
570   /* sound hardware */
571   MDRV_IMPORT_FROM( sheriff_sound )
572MACHINE_DRIVER_END
573
574
575static MACHINE_DRIVER_START( helifire )
576
577   /* driver data */
578   MDRV_DRIVER_DATA(n8080_state)
579
580   /* basic machine hardware */
581   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK / 10)
582   MDRV_CPU_CONFIG(n8080_cpu_config)
583   MDRV_CPU_PROGRAM_MAP(helifire_main_cpu_map)
584   MDRV_CPU_IO_MAP(main_io_map)
585
586   MDRV_MACHINE_START(helifire)
587   MDRV_MACHINE_RESET(helifire)
588
589   /* video hardware */
590   MDRV_SCREEN_ADD("screen", RASTER)
591   MDRV_SCREEN_REFRESH_RATE(60)
592   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
593   MDRV_SCREEN_SIZE(256, 256)
594   MDRV_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
595
596   MDRV_PALETTE_LENGTH(8 + 0x400)
597   MDRV_PALETTE_INIT(helifire)
598   MDRV_VIDEO_START(helifire)
599   MDRV_VIDEO_UPDATE(helifire)
600   MDRV_VIDEO_EOF(helifire)
601
602   MDRV_TIMER_ADD_SCANLINE("rst1", rst1_tick, "screen", 128, 256)
603   MDRV_TIMER_ADD_SCANLINE("rst2", rst2_tick, "screen", 240, 256)
604
605   /* sound hardware */
606   MDRV_IMPORT_FROM( helifire_sound )
607MACHINE_DRIVER_END
608
609
516610/*
517611Space Fever (3 sets, Space Fever?, High Splitter?, Space Launcher?)
518612Nintendo, 1979
r6428r6429
824918ROM_END
825919
826920
827GAME( 1979, spacefev,   0,        spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", 0 )
828GAME( 1979, spacefevo,  spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", 0 )
829GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", 0 )
830GAME( 1979, highsplt,   0,        spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", 0 )
831GAME( 1979, highsplta,  highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", 0 )
832GAME( 1979, highspltb,  highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", 0 )
833GAME( 1979, spacelnc,   0,        spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_NOT_WORKING )
834GAME( 1979, sheriff,    0,        sheriff,  sheriff,  0, ROT270, "Nintendo", "Sheriff", 0 )
835GAME( 1980, bandido,    sheriff,  sheriff,  bandido,  0, ROT270, "Exidy",    "Bandido", 0 )
836GAME( 1980, helifire,   0,        helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
837GAME( 1980, helifirea,  helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
921GAME( 1979, spacefev,   0,        spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", GAME_SUPPORTS_SAVE )
922GAME( 1979, spacefevo,  spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", GAME_SUPPORTS_SAVE )
923GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", GAME_SUPPORTS_SAVE )
924GAME( 1979, highsplt,   0,        spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", GAME_SUPPORTS_SAVE )
925GAME( 1979, highsplta,  highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", GAME_SUPPORTS_SAVE )
926GAME( 1979, highspltb,  highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", GAME_SUPPORTS_SAVE )
927GAME( 1979, spacelnc,   0,        spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
928GAME( 1979, sheriff,    0,        sheriff,  sheriff,  0, ROT270, "Nintendo", "Sheriff", GAME_SUPPORTS_SAVE )
929GAME( 1980, bandido,    sheriff,  sheriff,  bandido,  0, ROT270, "Exidy",    "Bandido", GAME_SUPPORTS_SAVE )
930GAME( 1980, helifire,   0,        helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
931GAME( 1980, helifirea,  helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
src/mame/drivers/kncljoe.c
r6428r6429
120120ADDRESS_MAP_END
121121
122122static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
123   AM_RANGE(M6803_PORT1, M6803_PORT1) AM_DEVREADWRITE("ay", m6803_port1_r, m6803_port1_w)
124   AM_RANGE(M6803_PORT2, M6803_PORT2) AM_DEVREADWRITE("ay", m6803_port2_r, m6803_port2_w)
123   AM_RANGE(M6803_PORT1, M6803_PORT1) AM_DEVREADWRITE("aysnd", m6803_port1_r, m6803_port1_w)
124   AM_RANGE(M6803_PORT2, M6803_PORT2) AM_DEVREADWRITE("aysnd", m6803_port2_r, m6803_port2_w)
125125ADDRESS_MAP_END
126126
127127
r6428r6429
286286   /* sound hardware */
287287   MDRV_SPEAKER_STANDARD_MONO("mono")
288288
289   MDRV_SOUND_ADD("ay", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
289   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
290290   MDRV_SOUND_CONFIG(ay8910_config)
291291   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
292292
src/mame/drivers/spdodgeb.c
r6428r6429
287287static ADDRESS_MAP_START( spdodgeb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
288288   AM_RANGE(0x0000, 0x0fff) AM_RAM
289289   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
290   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym", ym3812_w)
290   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ymsnd", ym3812_w)
291291   AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w)
292292   AM_RANGE(0x8000, 0xffff) AM_ROM
293293ADDRESS_MAP_END
r6428r6429
461461   /* sound hardware */
462462   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
463463
464   MDRV_SOUND_ADD("ym", YM3812, 3000000)
464   MDRV_SOUND_ADD("ymsnd", YM3812, 3000000)
465465   MDRV_SOUND_CONFIG(ym3812_config)
466466   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
467467   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
src/mame/drivers/tnzs.c
r6428r6429
785785   AM_RANGE(0x0000, 0x7fff) AM_ROM
786786   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(2)
787787   AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
788   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
788   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
789789   AM_RANGE(0xc000, 0xc001) AM_READWRITE(tnzs_mcu_r, tnzs_mcu_w)   /* not present in insectx */
790790   AM_RANGE(0xd000, 0xdfff) AM_RAM
791791   AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1)
r6428r6429
798798   AM_RANGE(0x0000, 0x7fff) AM_ROM
799799   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(2)
800800   AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
801   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
801   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
802802   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
803803   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
804804   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
r6428r6429
858858
859859static ADDRESS_MAP_START( tnzsb_io_map, ADDRESS_SPACE_IO, 8 )
860860   ADDRESS_MAP_GLOBAL_MASK(0xff)
861   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
861   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
862862   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
863863ADDRESS_MAP_END
864864
r6428r6429
914914   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
915915
916916   AM_RANGE(0xa000, 0xa000) AM_WRITE(jpopnics_subbankswitch_w)
917   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
917   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
918918   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1")
919919   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2")
920920   AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA")
r6428r6429
16381638   /* sound hardware */
16391639   MDRV_SPEAKER_STANDARD_MONO("mono")
16401640
1641   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */
1641   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
16421642   MDRV_SOUND_CONFIG(ym2203_config)
16431643   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
16441644MACHINE_DRIVER_END
r6428r6429
16771677   /* sound hardware */
16781678   MDRV_SPEAKER_STANDARD_MONO("mono")
16791679
1680   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4)
1680   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4)
16811681   MDRV_SOUND_CONFIG(ym2203_config)
16821682   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
16831683MACHINE_DRIVER_END
r6428r6429
17181718   /* sound hardware */
17191719   MDRV_SPEAKER_STANDARD_MONO("mono")
17201720
1721   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4)
1721   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4)
17221722   MDRV_SOUND_CONFIG(ym2203_config)
17231723   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
17241724MACHINE_DRIVER_END
r6428r6429
17561756   /* sound hardware */
17571757   MDRV_SPEAKER_STANDARD_MONO("mono")
17581758
1759   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */
1759   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
17601760   MDRV_SOUND_CONFIG(ym2203_config)
17611761   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
17621762MACHINE_DRIVER_END
r6428r6429
17941794   /* sound hardware */
17951795   MDRV_SPEAKER_STANDARD_MONO("mono")
17961796
1797   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */
1797   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
17981798   MDRV_SOUND_CONFIG(kageki_ym2203_interface)
17991799   MDRV_SOUND_ROUTE(0, "mono", 0.15)
18001800   MDRV_SOUND_ROUTE(1, "mono", 0.15)
r6428r6429
18431843   /* sound hardware */
18441844   MDRV_SPEAKER_STANDARD_MONO("mono")
18451845
1846   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */
1846   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
18471847   MDRV_SOUND_CONFIG(ym2203b_interface)
18481848   MDRV_SOUND_ROUTE(0, "mono", 1.0)
18491849   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
18631863   MDRV_CPU_MODIFY("audiocpu")
18641864   MDRV_CPU_PROGRAM_MAP(kabukiz_cpu2_map)
18651865
1866   MDRV_SOUND_MODIFY("ym")
1866   MDRV_SOUND_MODIFY("ymsnd")
18671867   MDRV_SOUND_CONFIG(kabukiz_ym2203_interface)
18681868   MDRV_SOUND_ROUTE(0, "mono", 1.0)
18691869   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
19051905   /* sound hardware */
19061906   MDRV_SPEAKER_STANDARD_MONO("mono")
19071907
1908   MDRV_SOUND_ADD("ym", YM2151, XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */
1908   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */
19091909   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
19101910MACHINE_DRIVER_END
19111911
src/mame/drivers/rohga.c
r6428r6429
269269static ADDRESS_MAP_START( rohga_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
270270   AM_RANGE(0x000000, 0x00ffff) AM_ROM
271271   AM_RANGE(0x100000, 0x100001) AM_NOP
272   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
272   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
273273   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w)
274274   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r,okim6295_w)
275275   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
773773   /* sound hardware */
774774   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
775775
776   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
776   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
777777   MDRV_SOUND_CONFIG(ym2151_config)
778778   MDRV_SOUND_ROUTE(0, "lspeaker", 0.78)
779779   MDRV_SOUND_ROUTE(1, "rspeaker", 0.78)
r6428r6429
818818   /* sound hardware */
819819   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
820820
821   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
821   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
822822   MDRV_SOUND_CONFIG(ym2151_config)
823823   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
824824   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
863863   /* sound hardware */
864864   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
865865
866   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
866   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
867867   MDRV_SOUND_CONFIG(ym2151_config)
868868   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
869869   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
908908   /* sound hardware */
909909   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
910910
911   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
911   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
912912   MDRV_SOUND_CONFIG(ym2151_config)
913913   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
914914   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
src/mame/drivers/plygonet.c
r6428r6429
763763
764764   /* The dsp56k occasionally executes out of mapped memory */
765765   dsp56k_update_handler = memory_set_direct_update_handler(cputag_get_address_space(machine, "dsp", ADDRESS_SPACE_PROGRAM), plygonet_dsp56k_direct_handler);
766
767    /* save states */
768   state_save_register_global(machine, init_eeprom_count);
769   state_save_register_global_pointer(machine, dsp56k_bank00_ram,    2 * 8 * dsp56k_bank00_size);
770   state_save_register_global_pointer(machine, dsp56k_bank01_ram,    2 * 8 * dsp56k_bank01_size);
771   state_save_register_global_pointer(machine, dsp56k_bank02_ram,    2 * 8 * dsp56k_bank02_size);
772   state_save_register_global_pointer(machine, dsp56k_shared_ram_16, 2 * 8 * dsp56k_shared_ram_16_size);
773   state_save_register_global_pointer(machine, dsp56k_bank04_ram,    2 * 8 * dsp56k_bank04_size);
774   state_save_register_global(machine, cur_sound_region);
766775}
767776
768777
r6428r6429
821830ROM_END
822831
823832/*          ROM       parent   machine   inp        init */
824GAME( 1993, plygonet, 0,       plygonet, polygonet, polygonet, ROT90, "Konami", "Polygonet Commanders (ver UAA)", GAME_NOT_WORKING | GAME_NO_SOUND )
825GAME( 1993, polynetw, 0,       plygonet, polynetw,  polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", GAME_NOT_WORKING | GAME_NO_SOUND )
833GAME( 1993, plygonet, 0,       plygonet, polygonet, polygonet, ROT90, "Konami", "Polygonet Commanders (ver UAA)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
834GAME( 1993, polynetw, 0,       plygonet, polynetw,  polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
826835
src/mame/drivers/nemesis.c
r6428r6429
565565   AM_RANGE(0x8000, 0x87ff) AM_RAM
566566   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
567567   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
568   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
568   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
569569   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_data_w)
570570   AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
571571   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("vlm", salamand_speech_start_w)
r6428r6429
576576   AM_RANGE(0x8000, 0x87ff) AM_RAM
577577   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
578578   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
579   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
579   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
580580   AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
581581ADDRESS_MAP_END
582582
r6428r6429
587587   AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("konami2", k051649_frequency_w)
588588   AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("konami2", k051649_volume_w)
589589   AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("konami2", k051649_keyonoff_w)
590   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
590   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
591591   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
592592   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("konami", city_sound_bank_w) /* 7232 bankswitch */
593593   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
r6428r6429
18491849   MDRV_SOUND_ROUTE(1, "lspeaker", 0.10)
18501850   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
18511851
1852   MDRV_SOUND_ADD("ym", YM2151, 3579545)
1852   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
18531853   MDRV_SOUND_CONFIG(ym2151_config)
18541854   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
18551855   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
18941894   MDRV_SOUND_ROUTE(1, "lspeaker", 0.10)
18951895   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
18961896
1897   MDRV_SOUND_ADD("ym", YM2151, 3579545)
1897   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
18981898   MDRV_SOUND_CONFIG(ym2151_config)
18991899   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19001900   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
r6428r6429
19391939   MDRV_SOUND_ROUTE(1, "lspeaker", 0.30)
19401940   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
19411941
1942   MDRV_SOUND_ADD("ym", YM3812, 3579545)
1942   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
19431943   MDRV_SOUND_CONFIG(ym3812_config)
19441944   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
19451945   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
r6428r6429
19881988   MDRV_SOUND_ROUTE(1, "lspeaker", 0.30)
19891989   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
19901990
1991   MDRV_SOUND_ADD("ym", YM3812, 3579545)
1991   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
19921992   MDRV_SOUND_CONFIG(ym3812_config)
19931993   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
19941994   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
r6428r6429
20392039   MDRV_SOUND_ROUTE(1, "lspeaker", 0.10)
20402040   MDRV_SOUND_ROUTE(1, "rspeaker", 0.10)
20412041
2042   MDRV_SOUND_ADD("ym", YM2151, 3579545)
2042   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
20432043   MDRV_SOUND_CONFIG(ym2151_config)
20442044   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
20452045   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/jackie.c
r6428r6429
297297   AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1")
298298   AM_RANGE(0x5091, 0x5091) AM_WRITE( jackie_lamps_w )
299299   AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
300   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ym", ym2413_w)
300   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_w)
301301   AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
302302   AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE( bg_scroll_w ) AM_BASE( &bg_scroll )
303303   AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE( jackie_reel1_ram_w )  AM_BASE( &jackie_reel1_ram )
r6428r6429
481481
482482   /* sound hardware */
483483   MDRV_SPEAKER_STANDARD_MONO("mono")
484   MDRV_SOUND_ADD("ym", YM2413, 3579545)
484   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
485485   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
486486
487487MACHINE_DRIVER_END
src/mame/drivers/warriorb.c
r6428r6429
251251   AM_RANGE(0x0000, 0x3fff) AM_ROM
252252   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(10), SMH_ROM)
253253   AM_RANGE(0xc000, 0xdfff) AM_RAM
254   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
254   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
255255   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
256256   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
257257   AM_RANGE(0xe400, 0xe403) AM_WRITE(warriorb_pancontrol) /* pan */
r6428r6429
482482   /* sound hardware */
483483   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
484484
485   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
485   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
486486   MDRV_SOUND_CONFIG(ym2610_config)
487487   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
488488   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
540540   /* sound hardware */
541541   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
542542
543   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
543   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
544544   MDRV_SOUND_CONFIG(ym2610_config)
545545   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
546546   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
594594//  ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )
595595//  ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
596596
597   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
597   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
598598   ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
599599   ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) )
600600
r6428r6429
640640//  ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )
641641//  ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
642642
643   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
643   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
644644   ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
645645   ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) )
646646
r6428r6429
680680   ROM_LOAD( "d24-07.47", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) )   /* SCR B, screen 2 */
681681   ROM_LOAD( "d24-08.48", 0x100000, 0x100000, CRC(1e6d1528) SHA1(d6843aa67befd7db44f468be16ba2f0efb85d40f) )
682682
683   ROM_REGION( 0x300000, "ym", 0 )   /* ADPCM samples */
683   ROM_REGION( 0x300000, "ymsnd", 0 )   /* ADPCM samples */
684684   ROM_LOAD( "d24-12.107", 0x000000, 0x100000, CRC(279203a1) SHA1(ed75e811a1f0863c134034457ce2e97372726bdb) )
685685   ROM_LOAD( "d24-10.95",  0x100000, 0x100000, CRC(0e0c716d) SHA1(5e2f334dd484678766c5a71196d9bad0ba0fe8d9) )
686686   ROM_LOAD( "d24-11.118", 0x200000, 0x100000, CRC(15362573) SHA1(8602c9f24134cac6fe1375fb189b152f0c68aeb7) )
src/mame/drivers/unico.c
r6428r6429
7272   AM_RANGE(0x800116, 0x800117) AM_WRITE(SMH_RAM) AM_BASE(&unico_scrollx_1)            //
7373   AM_RANGE(0x800120, 0x800121) AM_WRITE(SMH_RAM) AM_BASE(&unico_scrolly_1)            //
7474   AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
75   AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ym", ym3812_write_port_w, 0xff00         )   //
76   AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ym", ym3812_status_port_r, ym3812_control_port_w, 0xff00      )   //
75   AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_write_port_w, 0xff00         )   //
76   AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_status_port_r, ym3812_control_port_w, 0xff00      )   //
7777   AM_RANGE(0x80018e, 0x80018f) AM_DEVWRITE("oki", burglarx_sound_bank_w)               //
7878   AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP                                    // IRQ Ack
7979   AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(unico_vram_1_w) AM_BASE(&unico_vram_1   )      // Layers
r6428r6429
167167   AM_RANGE(0x800178, 0x800179) AM_READ(unico_guny_1_msb_r         )   //
168168   AM_RANGE(0x80017c, 0x80017d) AM_READ(unico_gunx_1_msb_r         )   //
169169   AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff            )   // Sound
170   AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ym", ym3812_write_port_w, 0xff00         )   //
171   AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ym", ym3812_status_port_r, ym3812_control_port_w, 0xff00      )   //
170   AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_write_port_w, 0xff00         )   //
171   AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_status_port_r, ym3812_control_port_w, 0xff00      )   //
172172   AM_RANGE(0x80018e, 0x80018f) AM_WRITE(zeropnt_sound_bank_w            )   //
173173   AM_RANGE(0x8001e0, 0x8001e1) AM_WRITE(SMH_RAM                     )   // ? IRQ Ack
174174   AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(unico_vram_1_w) AM_BASE(&unico_vram_1   )   // Layers
r6428r6429
232232   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                    // ROM
233233   AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM")
234234   AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff0000   )   // Sound
235   AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff0000)   //
235   AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff0000)   //
236236   AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff0000   )   //
237237   AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w            )   //
238238   AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w               )   // ?
r6428r6429
638638   /* sound hardware */
639639   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
640640
641   MDRV_SOUND_ADD("ym", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
641   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
642642   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
643643   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
644644
r6428r6429
685685   /* sound hardware */
686686   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
687687
688   MDRV_SOUND_ADD("ym", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
688   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
689689   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
690690   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
691691
r6428r6429
729729   /* sound hardware */
730730   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
731731
732   MDRV_SOUND_ADD("ym", YM2151, 3579545)
732   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
733733   MDRV_SOUND_ROUTE(0, "lspeaker", 0.70)
734734   MDRV_SOUND_ROUTE(1, "rspeaker", 0.70)
735735
src/mame/drivers/blockhl.c
r6428r6429
8787   AM_RANGE(0x0000, 0x7fff) AM_ROM
8888   AM_RANGE(0x8000, 0x87ff) AM_RAM
8989   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
90   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
90   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
9191   AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP      /* leftover from missing 007232? */
9292ADDRESS_MAP_END
9393
r6428r6429
176176   /* sound hardware */
177177   MDRV_SPEAKER_STANDARD_MONO("mono")
178178
179   MDRV_SOUND_ADD("ym", YM2151, 3579545)
179   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
180180   MDRV_SOUND_ROUTE(0, "mono", 0.60)
181181   MDRV_SOUND_ROUTE(1, "mono", 0.60)
182182MACHINE_DRIVER_END
src/mame/drivers/segag80v.c
r6428r6429
968968   MDRV_SOUND_CONFIG(zektor_samples_interface)
969969   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
970970
971   MDRV_SOUND_ADD("ay", AY8910, CPU_CLOCK/2/2)
971   MDRV_SOUND_ADD("aysnd", AY8910, CPU_CLOCK/2/2)
972972   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
973973
974974   /* speech board */
r6428r6429
13671367static DRIVER_INIT( zektor )
13681368{
13691369   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
1370   const device_config *ay = devtag_get_device(machine, "ay");
1370   const device_config *ay = devtag_get_device(machine, "aysnd");
13711371
13721372   /* configure security */
13731373   sega_security(82);
src/mame/drivers/ace.c
r6428r6429
4242
4343#define MASTER_CLOCK XTAL_18MHz
4444
45static UINT8 *ace_scoreram;
46static UINT8 *ace_ram2;
47static UINT8 *ace_characterram;
4845
46typedef struct _ace_state ace_state;
47struct _ace_state
48{
49   /* video-related */
50   UINT8 *  ram2;
51   UINT8 *  scoreram;
52   UINT8 *  characterram;
4953
50static int objpos[8];
54   /* input-related */
55   int objpos[8];
56};
5157
58
5259static WRITE8_HANDLER( ace_objpos_w )
5360{
54   objpos[offset]=data;
61   ace_state *state = (ace_state *)space->machine->driver_data;
62   state->objpos[offset] = data;
5563}
5664
5765#if 0
5866static READ8_HANDLER( ace_objpos_r )
5967{
60   return objpos[offset];
68   ace_state *state = (ace_state *)space->machine->driver_data;
69   return state->objpos[offset];
6170}
6271#endif
6372
6473static VIDEO_START( ace )
6574{
66   gfx_element_set_source(machine->gfx[1], ace_characterram);
67   gfx_element_set_source(machine->gfx[2], ace_characterram);
68   gfx_element_set_source(machine->gfx[3], ace_characterram);
69   gfx_element_set_source(machine->gfx[4], ace_scoreram);
75   ace_state *state = (ace_state *)machine->driver_data;
76   gfx_element_set_source(machine->gfx[1], state->characterram);
77   gfx_element_set_source(machine->gfx[2], state->characterram);
78   gfx_element_set_source(machine->gfx[3], state->characterram);
79   gfx_element_set_source(machine->gfx[4], state->scoreram);
7080}
7181
7282static VIDEO_UPDATE( ace )
7383{
84   ace_state *state = (ace_state *)screen->machine->driver_data;
7485   int offs;
7586
7687   /* first of all, fill the screen with the background color */
7788   bitmap_fill(bitmap, cliprect, 0);
7889
90   drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[1],
91         0,
92         0,
93         0, 0,
94         state->objpos[0], state->objpos[1]);
7995
80      drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[1],
81            0,
82            0,
83            0,0,
84            objpos[0],objpos[1]);
96   drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[2],
97         0,
98         0,
99         0, 0,
100         state->objpos[2], state->objpos[3]);
85101
86      drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[2],
87            0,
88            0,
89            0,0,
90            objpos[2],objpos[3]);
102   drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[3],
103         0,
104         0,
105         0, 0,
106         state->objpos[4], state->objpos[5]);
91107
92      drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[3],
93            0,
94            0,
95            0,0,
96            objpos[4],objpos[5]);
97
98108   for (offs = 0; offs < 8; offs++)
99109   {
100110      drawgfx_opaque(bitmap,/* ?? */
101            cliprect,screen->machine->gfx[4],
111            cliprect, screen->machine->gfx[4],
102112            offs,
103113            0,
104            0,0,
105            10*8+offs*16,256-16);
114            0, 0,
115            10 * 8 + offs * 16, 256 - 16);
106116   }
107117   return 0;
108118}
r6428r6429
110120
111121static PALETTE_INIT( ace )
112122{
113   palette_set_color(machine,0,MAKE_RGB(0x10,0x20,0xd0)); /* light bluish */
114   palette_set_color(machine,1,MAKE_RGB(0xff,0xff,0xff)); /* white */
123   palette_set_color(machine, 0, MAKE_RGB(0x10,0x20,0xd0)); /* light bluish */
124   palette_set_color(machine, 1, MAKE_RGB(0xff,0xff,0xff)); /* white */
115125}
116126
117127
118128static WRITE8_HANDLER( ace_characterram_w )
119129{
120   if (ace_characterram[offset] != data)
130   ace_state *state = (ace_state *)space->machine->driver_data;
131   if (state->characterram[offset] != data)
121132   {
122      if (data&(~0x07))
133      if (data & ~0x07)
123134      {
124         logerror("write to %04x data=%02x\n", 0x8000+offset, data);
125         popmessage("write to %04x data=%02x\n", 0x8000+offset, data);
135         logerror("write to %04x data = %02x\n", 0x8000 + offset, data);
136         popmessage("write to %04x data = %02x\n", 0x8000 + offset, data);
126137      }
127      ace_characterram[offset] = data;
138      state->characterram[offset] = data;
128139      gfx_element_mark_dirty(space->machine->gfx[1], 0);
129140      gfx_element_mark_dirty(space->machine->gfx[2], 0);
130141      gfx_element_mark_dirty(space->machine->gfx[3], 0);
r6428r6429
133144
134145static WRITE8_HANDLER( ace_scoreram_w )
135146{
136   ace_scoreram[offset] = data;
147   ace_state *state = (ace_state *)space->machine->driver_data;
148   state->scoreram[offset] = data;
137149   gfx_element_mark_dirty(space->machine->gfx[4], offset / 32);
138150}
139151
140152static READ8_HANDLER( unk_r )
141153{
142   return mame_rand(space->machine)&0xff;
154   return mame_rand(space->machine) & 0xff;
143155}
144156
145157
r6428r6429
151163
152164   AM_RANGE(0x0000, 0x09ff) AM_ROM
153165
154   AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(ace_scoreram_w) AM_BASE(&ace_scoreram)   /* 2x2101 */
155   AM_RANGE(0x8300, 0x83ff) AM_RAM AM_BASE(&ace_ram2)      /* 2x2101 */
156   AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE(ace_characterram_w) AM_BASE(&ace_characterram)   /* 3x3101 (3bits: 0, 1, 2) */
166   AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(ace_scoreram_w) AM_BASE_MEMBER(ace_state, scoreram)   /* 2x2101 */
167   AM_RANGE(0x8300, 0x83ff) AM_RAM AM_BASE_MEMBER(ace_state, ram2)   /* 2x2101 */
168   AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE(ace_characterram_w) AM_BASE_MEMBER(ace_state, characterram)   /* 3x3101 (3bits: 0, 1, 2) */
157169
158170   AM_RANGE(0xc000, 0xc005) AM_WRITE(ace_objpos_w)
159171
r6428r6429
304316
305317static MACHINE_START( ace )
306318{
307    state_save_register_global_array(machine, objpos);
319   ace_state *state = (ace_state *)machine->driver_data;
320   state_save_register_global_array(machine, state->objpos);
308321}
309322
323static MACHINE_RESET( ace )
324{
325   ace_state *state = (ace_state *)machine->driver_data;
326   int i;
327
328   for (i = 0; i < 8; i++)
329      state->objpos[i] = 0;
330}
331
310332static MACHINE_DRIVER_START( ace )
311333
334   /* driver data */
335   MDRV_DRIVER_DATA(ace_state)
336
312337   /* basic machine hardware */
313338   MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK/9)   /* 2 MHz ? */
314339   MDRV_CPU_PROGRAM_MAP(main_map)
315    MDRV_MACHINE_START(ace)
316340
341   MDRV_MACHINE_START(ace)
342   MDRV_MACHINE_RESET(ace)
343
317344   /* video hardware */
318345   MDRV_SCREEN_ADD("screen", RASTER)
319346   MDRV_SCREEN_REFRESH_RATE(60)
src/mame/drivers/gatron.c
r6428r6429
346346   AM_RANGE(0x0000, 0x5fff) AM_ROM
347347   AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE(&videoram)
348348   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)   /* battery backed RAM */
349   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn", sn76496_w)                     /* PSG */
349   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76496_w)                     /* PSG */
350350   AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w)                              /* lamps */
351351ADDRESS_MAP_END
352352
r6428r6429
465465
466466   /* sound hardware */
467467   MDRV_SPEAKER_STANDARD_MONO("mono")
468   MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK/8 )   /* 2 MHz, guess */
468   MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/8 )   /* 2 MHz, guess */
469469   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)
470470MACHINE_DRIVER_END
471471
src/mame/drivers/m62.c
r6428r6429
6969
7070#include "driver.h"
7171#include "cpu/z80/z80.h"
72#include "m62.h"
72#include "includes/iremz80.h"
7373#include "iremipt.h"
74#include "audio/irem.h"
7574
7675
7776/* Lode Runner 2 seems to have a simple protection on the bank switching */
r6428r6429
8180/* Since the data written to 0x80 is always the level number, I just use */
8281/* that to select the ROM. The only exception I make is a special case used in */
8382/* service mode to test the ROMs. */
84static int ldrun2_bankswap;
8583
8684static READ8_HANDLER( ldrun2_bankswitch_r )
8785{
88   if (ldrun2_bankswap)
86   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
87   if (state->ldrun2_bankswap)
8988   {
90      ldrun2_bankswap--;
89      state->ldrun2_bankswap--;
9190
9291      /* swap to bank #1 on second read */
93      if (ldrun2_bankswap == 0)
92      if (state->ldrun2_bankswap == 0)
9493         memory_set_bank(space->machine, 1, 1);
9594   }
9695   return 0;
r6428r6429
9897
9998static WRITE8_HANDLER( ldrun2_bankswitch_w )
10099{
101   static int bankcontrol[2];
100   irem_z80_state *state = (irem_z80_state *)space->machine->driver_data;
102101   static const int banks[30] =
103102   {
104103      0,0,0,0,0,1,0,1,0,0,
r6428r6429
107106   };
108107
109108
110   bankcontrol[offset] = data;
109   state->bankcontrol[offset] = data;
110
111111   if (offset == 0)
112112   {
113113      if (data < 1 || data > 30)
114114      {
115logerror("unknown bank select %02x\n",data);
115         logerror("unknown bank select %02x\n",data);
116116         return;
117117      }
118      memory_set_bank(space->machine, 1, banks[data-1]);
118      memory_set_bank(space->machine, 1, banks[data - 1]);
119119   }
120120   else
121121   {
122      if (bankcontrol[0] == 0x01 && data == 0x0d)
122      if (state->bankcontrol[0] == 0x01 && data == 0x0d)
123123      /* special case for service mode */
124         ldrun2_bankswap = 2;
125      else ldrun2_bankswap = 0;
124         state->ldrun2_bankswap = 2;
125      else
126         state->ldrun2_bankswap = 0;
126127   }
127128}
128129
r6428r6429
160161
161162static WRITE8_HANDLER( spelunk2_bankswitch_w )
162163{
163   memory_set_bank(space->machine, 1, (data & 0xc0)>>6);
164   memory_set_bank(space->machine, 2, (data & 0x3c)>>2);
164   memory_set_bank(space->machine, 1, (data & 0xc0) >> 6);
165   memory_set_bank(space->machine, 2, (data & 0x3c) >> 2);
165166}
166167
167168static WRITE8_HANDLER( youjyudn_bankswitch_w )
r6428r6429
174175   AM_RANGE(0x0000, 0x7fff) AM_ROM
175176   AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w)
176177   AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w)
177   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
178   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
178179   /* Kung Fu Master is the only game in this driver to have separated (but */
179180   /* contiguous) videoram and colorram. They are interleaved in all the others. */
180   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE(&m62_tileram)
181   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
181182   AM_RANGE(0xe000, 0xefff) AM_RAM
182183ADDRESS_MAP_END
183184
r6428r6429
193194static ADDRESS_MAP_START( battroad_map, ADDRESS_SPACE_PROGRAM, 8 )
194195   AM_RANGE(0x0000, 0x7fff) AM_ROM
195196   AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(1)
196   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
197   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
198   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
197   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
198   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
199   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
199200   AM_RANGE(0xe000, 0xefff) AM_RAM
200201ADDRESS_MAP_END
201202
r6428r6429
214215
215216static ADDRESS_MAP_START( ldrun_map, ADDRESS_SPACE_PROGRAM, 8 )
216217   AM_RANGE(0x0000, 0x7fff) AM_ROM
217   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
218   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
218   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
219   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
219220   AM_RANGE(0xe000, 0xefff) AM_RAM
220221ADDRESS_MAP_END
221222
222223static ADDRESS_MAP_START( ldrun2_map, ADDRESS_SPACE_PROGRAM, 8 )
223224   AM_RANGE(0x0000, 0x7fff) AM_ROM
224225   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
225   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
226   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
226   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
227   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
227228   AM_RANGE(0xe000, 0xefff) AM_RAM
228229ADDRESS_MAP_END
229230
r6428r6429
243244   AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r)
244245   AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r)
245246   AM_RANGE(0xcfff, 0xcfff) AM_READ(ldrun3_prot_7_r)
246   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
247   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
247   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
248   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
248249   AM_RANGE(0xd000, 0xefff) AM_RAM
249250ADDRESS_MAP_END
250251
r6428r6429
262263static ADDRESS_MAP_START( ldrun4_map, ADDRESS_SPACE_PROGRAM, 8 )
263264   AM_RANGE(0x0000, 0x7fff) AM_ROM
264265   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
265   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
266   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
266267   AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w)
267   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
268   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
268269   AM_RANGE(0xe000, 0xefff) AM_RAM
269270ADDRESS_MAP_END
270271
r6428r6429
281282
282283static ADDRESS_MAP_START( lotlot_map, ADDRESS_SPACE_PROGRAM, 8 )
283284   AM_RANGE(0x0000, 0x7fff) AM_ROM
284   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
285   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
286   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
285   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
286   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
287   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
287288   AM_RANGE(0xe000, 0xefff) AM_RAM
288289ADDRESS_MAP_END
289290
290291static ADDRESS_MAP_START( kidniki_map, ADDRESS_SPACE_PROGRAM, 8 )
291292   AM_RANGE(0x0000, 0x7fff) AM_ROM
292293   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
293   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
294   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
295   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
294   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
295   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
296   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
296297   AM_RANGE(0xe000, 0xefff) AM_RAM
297298ADDRESS_MAP_END
298299
r6428r6429
314315static ADDRESS_MAP_START( spelunkr_map, ADDRESS_SPACE_PROGRAM, 8 )
315316   AM_RANGE(0x0000, 0x7fff) AM_ROM
316317   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
317   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
318   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
319   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
318   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
319   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
320   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
320321   AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
321322   AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w)
322323   AM_RANGE(0xd002, 0xd002) AM_WRITE(m62_hscroll_low_w)
r6428r6429
330331   AM_RANGE(0x0000, 0x7fff) AM_ROM
331332   AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(1)
332333   AM_RANGE(0x9000, 0x9fff) AM_ROMBANK(2)
333   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
334   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
335   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
334   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
335   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
336   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
336337   AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
337338   AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w)
338339   AM_RANGE(0xd002, 0xd002) AM_WRITE(spelunk2_gfxport_w)
r6428r6429
343344static ADDRESS_MAP_START( youjyudn_map, ADDRESS_SPACE_PROGRAM, 8 )
344345   AM_RANGE(0x0000, 0x7fff) AM_ROM
345346   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
346   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
347   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
348   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
347   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
348   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
349   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
349350   AM_RANGE(0xe000, 0xefff) AM_RAM
350351ADDRESS_MAP_END
351352
r6428r6429
363364
364365static ADDRESS_MAP_START( horizon_map, ADDRESS_SPACE_PROGRAM, 8 )
365366   AM_RANGE(0x0000, 0xbfff) AM_ROM
366   AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
367   AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_BASE(&horizon_scrollram)
368   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
367   AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
368   AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_BASE_MEMBER(irem_z80_state, scrollram)
369   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
369370   AM_RANGE(0xe000, 0xefff) AM_RAM
370371ADDRESS_MAP_END
371372
r6428r6429
928929GFXDECODE_END
929930
930931
932static MACHINE_START( m62 )
933{
934   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
931935
936   state_save_register_global(machine, state->ldrun2_bankswap);
937   state_save_register_global_array(machine, state->bankcontrol);
938}
932939
940static MACHINE_RESET( m62 )
941{
942   irem_z80_state *state = (irem_z80_state *)machine->driver_data;
943
944   state->flipscreen = 0;
945   state->m62_background_hscroll = 0;
946   state->m62_background_vscroll = 0;
947   state->kidniki_background_bank = 0;
948   state->kidniki_text_vscroll = 0;
949   state->ldrun3_topbottom_mask = 0;
950   state->spelunkr_palbank = 0;
951
952   state->ldrun2_bankswap = 0;
953   state->bankcontrol[0] = 0;
954   state->bankcontrol[1] = 0;
955}
956
933957static MACHINE_DRIVER_START( ldrun )
934958
959   /* driver data */
960   MDRV_DRIVER_DATA(irem_z80_state)
961
935962   /* basic machine hardware */
936963   MDRV_CPU_ADD("maincpu", Z80, 24000000/6)
937964   MDRV_CPU_PROGRAM_MAP(ldrun_map)
938965   MDRV_CPU_IO_MAP(kungfum_io_map)
939966   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
940967
968   MDRV_MACHINE_START(m62)
969   MDRV_MACHINE_RESET(m62)
970
941971   /* video hardware */
942972   MDRV_SCREEN_ADD("screen", RASTER)
943973   MDRV_SCREEN_REFRESH_RATE(55)
r6428r6429
12961326   ROM_LOAD( "tbp24s10-main-1b.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) )   /* character palette blue component */
12971327   ROM_LOAD( "tbp24s10-gfx-1p.bin",  0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) )   /* sprite palette blue component */
12981328   ROM_LOAD( "18s030-gfx-8t.bin",    0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) )   /* sprite height, one entry per 32 */
1299                                                                                       /* sprites. Used at run time! */
1329                                             /* sprites. Used at run time! */
13001330   ROM_LOAD( "tbp24s10-gfx-9k.bin",  0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) )   /* video timing - same as battroad */
13011331   ROM_LOAD( "18s030-gfx-10a.bin",   0x0720, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) )
13021332   ROM_LOAD( "18s030-gfx-5d.bin",    0x0740, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) )
r6428r6429
14021432   ROM_LOAD( "br-b-1l",     0x0500, 0x0100, CRC(5271c7d8) SHA1(1254b61133ed8fd6e032df04482fb775c3f66981) )   /* sprite palette blue component */
14031433   ROM_LOAD( "br-c-1j",     0x0600, 0x0020, CRC(78eb5d77) SHA1(dd82f7843bea8c953f491faade6ced17e57ddf3c) )   /* character palette */
14041434   ROM_LOAD( "br-b-5p",     0x0620, 0x0020, CRC(ce746937) SHA1(387e73a9ca684ac2e30061fca281970ff20ef0a5) )   /* sprite height, one entry per 32 */
1405                                                           /* sprites. Used at run time! */
1435                                             /* sprites. Used at run time! */
14061436   ROM_LOAD( "br-b-6f",     0x0640, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) )   /* video timing - same as kungfum */
14071437ROM_END
14081438
r6428r6429
14351465   ROM_LOAD( "lr-e-3n",      0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) )   /* character palette blue component */
14361466   ROM_LOAD( "lr-b-1l",      0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) )   /* sprite palette blue component */
14371467   ROM_LOAD( "lr-b-5p",      0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1438                                                           /* sprites. Used at run time! */
1468                                             /* sprites. Used at run time! */
14391469   ROM_LOAD( "lr-b-6f",      0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
14401470ROM_END
14411471
r6428r6429
14681498   ROM_LOAD( "lr-e-3n",      0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) )   /* character palette blue component */
14691499   ROM_LOAD( "lr-b-1l",      0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) )   /* sprite palette blue component */
14701500   ROM_LOAD( "lr-b-5p",      0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1471                                                           /* sprites. Used at run time! */
1501                                             /* sprites. Used at run time! */
14721502   ROM_LOAD( "lr-b-6f",      0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
14731503ROM_END
14741504
r6428r6429
15071537   ROM_LOAD( "lr2-h-3n",     0x0400, 0x0100, CRC(2b28aec5) SHA1(946633bd7203ba1481250f900f3232c18538613b) )   /* character palette blue component */
15081538   ROM_LOAD( "lr2-b-1l",     0x0500, 0x0100, CRC(c8fb708a) SHA1(ed38f36fa7918179c7176c762c0fcc86b5ddb218) )   /* sprite palette blue component */
15091539   ROM_LOAD( "lr2-b-5p",     0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1510                                                           /* sprites. Used at run time! */
1540                                             /* sprites. Used at run time! */
15111541   ROM_LOAD( "lr2-b-6f",     0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
15121542ROM_END
15131543
r6428r6429
15421572   ROM_LOAD( "lr3-n-2m",     0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */
15431573   ROM_LOAD( "lr3-b-1l",     0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */
15441574   ROM_LOAD( "lr3-b-5p",     0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1545                                                           /* sprites. Used at run time! */
1575                                             /* sprites. Used at run time! */
15461576   ROM_LOAD( "lr3-n-4f",     0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) )   /* unknown */
15471577   ROM_LOAD( "lr3-b-6f",     0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
15481578ROM_END
r6428r6429
15751605   ROM_LOAD( "lr3-n-2m",     0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */
15761606   ROM_LOAD( "lr3-b-1l",     0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */
15771607   ROM_LOAD( "lr3-b-5p",     0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1578                                                           /* sprites. Used at run time! */
1608                                             /* sprites. Used at run time! */
15791609   ROM_LOAD( "lr3-n-4f",     0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) )   /* unknown */
15801610   ROM_LOAD( "lr3-b-6f",     0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
15811611ROM_END
r6428r6429
16111641   ROM_LOAD( "lr4-v-1p",     0x0400, 0x0100, CRC(0df23ebe) SHA1(054736b762aa6698c1e6d827f8db62ae0342c83f) ) /* character palette blue component */
16121642   ROM_LOAD( "lr4-b-1l",     0x0500, 0x0100, CRC(0d89b692) SHA1(b2854290c46c34934ff91980d72768070ebc8bf3) ) /* sprite palette blue component */
16131643   ROM_LOAD( "lr4-b-5p",     0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) )   /* sprite height, one entry per 32 */
1614                                                           /* sprites. Used at run time! */
1644                                             /* sprites. Used at run time! */
16151645   ROM_LOAD( "lr4-v-4h",     0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) )   /* unknown */
16161646   ROM_LOAD( "lr4-b-6f",     0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
16171647ROM_END
r6428r6429
16501680   ROM_LOAD( "lot-b-1l",     0x0700, 0x0100, CRC(8b6fcde3) SHA1(04e9ce04b77a5f8737f2ec0aaeadaccdbbdda573) ) /* sprite palette blue component */
16511681   ROM_LOAD( "lot-k-2j",     0x0800, 0x0100, CRC(e791ef2a) SHA1(cb1236630cbbc23e2e684ad3b7f51e52389eea2e) ) /* character palette blue component */
16521682   ROM_LOAD( "lot-b-5p",     0x0900, 0x0020, CRC(110b21fd) SHA1(a7a660ff18540e2d73a80f341cd50c5f4d184085) )   /* sprite height, one entry per 32 */
1653                                                           /* sprites. Used at run time! */
1683                                             /* sprites. Used at run time! */
16541684   ROM_LOAD( "lot-k-7e",     0x0920, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) )   /* unknown */
16551685   ROM_LOAD( "lot-k-7h",     0x0b20, 0x0200, CRC(04442bee) SHA1(37d10b605830b9355b00256af479c06cd4b97950) )   /* unknown */
16561686   ROM_LOAD( "lot-b-6f",     0x0d20, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
r6428r6429
17011731   ROM_LOAD( "dr27.3j",      0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) )   /* character palette blue component */
17021732   ROM_LOAD( "dr29.1l",      0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) )   /* sprite palette blue component */
17031733   ROM_LOAD( "dr32.5p",      0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) )   /* sprite height, one entry per 32 */
1704                                                           /* sprites. Used at run time! */
1734                                             /* sprites. Used at run time! */
17051735   ROM_LOAD( "dr28.8f",      0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) )   /* unknown */
17061736   ROM_LOAD( "dr33.6f",      0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
17071737ROM_END
r6428r6429
17511781   ROM_LOAD( "dr27.3j",      0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) )   /* character palette blue component */
17521782   ROM_LOAD( "dr29.1l",      0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) )   /* sprite palette blue component */
17531783   ROM_LOAD( "dr32.5p",      0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) )   /* sprite height, one entry per 32 */
1754                                                           /* sprites. Used at run time! */
1784                                             /* sprites. Used at run time! */
17551785   ROM_LOAD( "dr28.8f",      0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) )   /* unknown */
17561786   ROM_LOAD( "dr33.6f",      0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
17571787ROM_END
r6428r6429
18021832   ROM_LOAD( "dr27.3j",      0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) )   /* character palette blue component */
18031833   ROM_LOAD( "dr29.1l",      0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) )   /* sprite palette blue component */
18041834   ROM_LOAD( "dr32.5p",      0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) )   /* sprite height, one entry per 32 */
1805                                                           /* sprites. Used at run time! */
1835                                             /* sprites. Used at run time! */
18061836   ROM_LOAD( "dr28.8f",      0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) )   /* unknown */
18071837   ROM_LOAD( "dr33.6f",      0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
18081838ROM_END
r6428r6429
18451875   ROM_LOAD( "dr27.3j",      0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) )   /* character palette blue component */
18461876   ROM_LOAD( "dr29.1l",      0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) )   /* sprite palette blue component */
18471877   ROM_LOAD( "dr32.5p",      0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) )   /* sprite height, one entry per 32 */
1848                                                           /* sprites. Used at run time! */
1878                                             /* sprites. Used at run time! */
18491879   ROM_LOAD( "dr28.8f",      0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) )   /* unknown */
18501880   ROM_LOAD( "dr33.6f",      0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) )   /* video timing - common to the other games */
18511881ROM_END
r6428r6429
21802210   memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "maincpu") + 0x10000, 0x4000);
21812211}
21822212
2183GAME( 1984, kungfum,  0,        kungfum,  kungfum,  0,        ROT0,   "Irem", "Kung-Fu Master", 0 )
2184GAME( 1984, kungfumd, kungfum,  kungfum,  kungfum,  0,        ROT0,   "Irem (Data East license)", "Kung-Fu Master (Data East)", 0 )
2185GAME( 1984, spartanx, kungfum,  kungfum,  kungfum,  0,        ROT0,   "Irem", "Spartan X (Japan)", 0 )
2186GAME( 1984, kungfub,  kungfum,  kungfum,  kungfum,  0,        ROT0,   "bootleg", "Kung-Fu Master (bootleg set 1)", 0 )
2187GAME( 1984, kungfub2, kungfum,  kungfum,  kungfum,  0,        ROT0,   "bootleg", "Kung-Fu Master (bootleg set 2)", 0 )
2188GAME( 1984, battroad, 0,        battroad, battroad, battroad, ROT90,  "Irem", "The Battle-Road", GAME_IMPERFECT_COLORS )
2189GAME( 1984, ldrun,    0,        ldrun,    ldrun,    0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner (set 1)", 0 )
2190GAME( 1984, ldruna,   ldrun,    ldrun,    ldrun,    0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner (set 2)", 0 )
2191GAME( 1984, ldrun2,   0,        ldrun2,   ldrun2,   ldrun2,   ROT0,   "Irem (licensed from Broderbund)", "Lode Runner II - The Bungeling Strikes Back" , 0)   /* Japanese version is called Bangeringu Teikoku No Gyakushuu */
2192GAME( 1985, ldrun3,   0,        ldrun3,   ldrun3,   0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", 0 )
2193GAME( 1985, ldrun3j,  ldrun3,   ldrun3,   ldrun3,   0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu", 0 )
2194GAME( 1986, ldrun4,   0,        ldrun4,   ldrun4,   ldrun4,   ROT0,   "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu", 0 )
2195GAME( 1985, lotlot,   0,        lotlot,   lotlot,   0,        ROT0,   "Irem (licensed from Tokuma Shoten)", "Lot Lot", 0 )
2196GAME( 1986, kidniki,  0,        kidniki,  kidniki,  kidniki,  ROT0,   "Irem", "Kid Niki - Radical Ninja (World)", GAME_IMPERFECT_SOUND )
2197GAME( 1986, kidnikiu, kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", GAME_IMPERFECT_SOUND )
2198GAME( 1986, yanchamr, kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "Irem", "Kaiketsu Yanchamaru (Japan)", GAME_IMPERFECT_SOUND )
2199GAME( 1987, lithero,  kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "bootleg", "Little Hero", GAME_IMPERFECT_SOUND )
2200GAME( 1985, spelunkr, 0,        spelunkr, spelunkr, spelunkr, ROT0,   "Irem (licensed from Broderbund)", "Spelunker", 0 )
2201GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, spelunkr, ROT0,   "Irem (licensed from Broderbund)", "Spelunker (Japan)", 0 )
2202GAME( 1986, spelunk2, 0,        spelunk2, spelunk2, spelunk2, ROT0,   "Irem (licensed from Broderbund)", "Spelunker II", GAME_IMPERFECT_SOUND )
2203GAME( 1986, youjyudn, 0,        youjyudn, youjyudn, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", 0 )
2204GAME( 1985, horizon,  0,        horizon,  horizon,  0,        ROT0,   "Irem", "Horizon", GAME_IMPERFECT_SOUND )
2213GAME( 1984, kungfum,  0,        kungfum,  kungfum,  0,        ROT0,   "Irem", "Kung-Fu Master", GAME_SUPPORTS_SAVE )
2214GAME( 1984, kungfumd, kungfum,  kungfum,  kungfum,  0,        ROT0,   "Irem (Data East license)", "Kung-Fu Master (Data East)", GAME_SUPPORTS_SAVE )
2215GAME( 1984, spartanx, kungfum,  kungfum,  kungfum,  0,        ROT0,   "Irem", "Spartan X (Japan)", GAME_SUPPORTS_SAVE )
2216GAME( 1984, kungfub,  kungfum,  kungfum,  kungfum,  0,        ROT0,   "bootleg", "Kung-Fu Master (bootleg set 1)", GAME_SUPPORTS_SAVE )
2217GAME( 1984, kungfub2, kungfum,  kungfum,  kungfum,  0,        ROT0,   "bootleg", "Kung-Fu Master (bootleg set 2)", GAME_SUPPORTS_SAVE )
2218GAME( 1984, battroad, 0,        battroad, battroad, battroad, ROT90,  "Irem", "The Battle-Road", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
2219GAME( 1984, ldrun,    0,        ldrun,    ldrun,    0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner (set 1)", GAME_SUPPORTS_SAVE )
2220GAME( 1984, ldruna,   ldrun,    ldrun,    ldrun,    0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner (set 2)", GAME_SUPPORTS_SAVE )
2221GAME( 1984, ldrun2,   0,        ldrun2,   ldrun2,   ldrun2,   ROT0,   "Irem (licensed from Broderbund)", "Lode Runner II - The Bungeling Strikes Back", GAME_SUPPORTS_SAVE )   /* Japanese version is called Bangeringu Teikoku No Gyakushuu */
2222GAME( 1985, ldrun3,   0,        ldrun3,   ldrun3,   0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", GAME_SUPPORTS_SAVE )
2223GAME( 1985, ldrun3j,  ldrun3,   ldrun3,   ldrun3,   0,        ROT0,   "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu", GAME_SUPPORTS_SAVE )
2224GAME( 1986, ldrun4,   0,        ldrun4,   ldrun4,   ldrun4,   ROT0,   "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu", GAME_SUPPORTS_SAVE )
2225GAME( 1985, lotlot,   0,        lotlot,   lotlot,   0,        ROT0,   "Irem (licensed from Tokuma Shoten)", "Lot Lot", GAME_SUPPORTS_SAVE )
2226GAME( 1986, kidniki,  0,        kidniki,  kidniki,  kidniki,  ROT0,   "Irem", "Kid Niki - Radical Ninja (World)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
2227GAME( 1986, kidnikiu, kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
2228GAME( 1986, yanchamr, kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "Irem", "Kaiketsu Yanchamaru (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
2229GAME( 1987, lithero,  kidniki,  kidniki,  kidniki,  kidniki,  ROT0,   "bootleg", "Little Hero", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
2230GAME( 1985, spelunkr, 0,        spelunkr, spelunkr, spelunkr, ROT0,   "Irem (licensed from Broderbund)", "Spelunker", GAME_SUPPORTS_SAVE )
2231GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, spelunkr, ROT0,   "Irem (licensed from Broderbund)", "Spelunker (Japan)", GAME_SUPPORTS_SAVE )
2232GAME( 1986, spelunk2, 0,        spelunk2, spelunk2, spelunk2, ROT0,   "Irem (licensed from Broderbund)", "Spelunker II", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
2233GAME( 1986, youjyudn, 0,        youjyudn, youjyudn, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", GAME_SUPPORTS_SAVE )
2234GAME( 1985, horizon,  0,        horizon,  horizon,  0,        ROT0,   "Irem", "Horizon", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
src/mame/drivers/astrocde.c
r6428r6429
708708   ADDRESS_MAP_GLOBAL_MASK(0xff)
709709   AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("ctc", z80ctc_r, z80ctc_w)
710710   AM_RANGE(0x97, 0x97) AM_READ(soundlatch_r)
711   AM_RANGE(0x98, 0x98) AM_DEVWRITE("ay", ay8910_address_w)
712   AM_RANGE(0x98, 0x98) AM_DEVREAD("ay", ay8910_r)
713   AM_RANGE(0x9a, 0x9a) AM_DEVWRITE("ay", ay8910_data_w)
711   AM_RANGE(0x98, 0x98) AM_DEVWRITE("aysnd", ay8910_address_w)
712   AM_RANGE(0x98, 0x98) AM_DEVREAD("aysnd", ay8910_r)
713   AM_RANGE(0x9a, 0x9a) AM_DEVWRITE("aysnd", ay8910_data_w)
714714ADDRESS_MAP_END
715715
716716
r6428r6429
14661466
14671467   /* sound hardware */
14681468   MDRV_SPEAKER_STANDARD_MONO("mono")
1469   MDRV_SOUND_ADD("ay", AY8912, ASTROCADE_CLOCK/4)   /* real clock unknown */
1469   MDRV_SOUND_ADD("aysnd", AY8912, ASTROCADE_CLOCK/4)   /* real clock unknown */
14701470   MDRV_SOUND_CONFIG(ay8912_interface)
14711471   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
14721472MACHINE_DRIVER_END
src/mame/drivers/megazone.c
r6428r6429
124124
125125static ADDRESS_MAP_START( megazone_sound_io_map, ADDRESS_SPACE_IO, 8 )
126126   ADDRESS_MAP_GLOBAL_MASK(0xff)
127   AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay", ay8910_address_w)
128   AM_RANGE(0x00, 0x02) AM_DEVREAD("ay", ay8910_r)
129   AM_RANGE(0x02, 0x02) AM_DEVWRITE("ay", ay8910_data_w)
127   AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_address_w)
128   AM_RANGE(0x00, 0x02) AM_DEVREAD("aysnd", ay8910_r)
129   AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd", ay8910_data_w)
130130ADDRESS_MAP_END
131131
132132static ADDRESS_MAP_START( megazone_i8039_map, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
273273   /* sound hardware */
274274   MDRV_SPEAKER_STANDARD_MONO("mono")
275275
276   MDRV_SOUND_ADD("ay", AY8910, 14318000/8)
276   MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8)
277277   MDRV_SOUND_CONFIG(ay8910_config)
278278   MDRV_SOUND_ROUTE(0, "filter.0.0", 0.30)
279279   MDRV_SOUND_ROUTE(1, "filter.0.1", 0.30)
src/mame/drivers/pass.c
r6428r6429
138138static ADDRESS_MAP_START( pass_sound_io_map, ADDRESS_SPACE_IO, 8 )
139139   ADDRESS_MAP_GLOBAL_MASK(0xff)
140140   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
141   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
141   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
142142   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_w)
143143   AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_w)
144144ADDRESS_MAP_END
r6428r6429
269269   /* sound hardware */
270270   MDRV_SPEAKER_STANDARD_MONO("mono")
271271
272   MDRV_SOUND_ADD("ym", YM2203, 14318180/4)
272   MDRV_SOUND_ADD("ymsnd", YM2203, 14318180/4)
273273   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
274274
275275   MDRV_SOUND_ADD("oki", OKIM6295, 792000)
src/mame/drivers/40love.c
r6428r6429
780780static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
781781   AM_RANGE(0x0000, 0xbfff) AM_ROM
782782   AM_RANGE(0xc000, 0xc7ff) AM_RAM
783   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay", ay8910_address_data_w)
783   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
784784   AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w)
785785   AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("msm", sound_control_0_w)
786786   AM_RANGE(0xce00, 0xce00) AM_DEVWRITE("msm", sound_control_1_w)
r6428r6429
10081008   AY8910_DEFAULT_LOADS,
10091009   DEVCB_NULL,
10101010   DEVCB_NULL,
1011   DEVCB_DEVICE_HANDLER("ay", sound_control_2_w),
1011   DEVCB_DEVICE_HANDLER("aysnd", sound_control_2_w),
10121012   DEVCB_HANDLER(sound_control_3_w)
10131013};
10141014
r6428r6429
10741074   /* sound hardware */
10751075   MDRV_SPEAKER_STANDARD_MONO("mono")
10761076
1077   MDRV_SOUND_ADD("ay", AY8910, 2000000)
1077   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
10781078   MDRV_SOUND_CONFIG(ay8910_config)
10791079   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
10801080
r6428r6429
11311131   /* sound hardware */
11321132   MDRV_SPEAKER_STANDARD_MONO("mono")
11331133
1134   MDRV_SOUND_ADD("ay", AY8910, 2000000)
1134   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
11351135   MDRV_SOUND_CONFIG(ay8910_config)
11361136   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
11371137
src/mame/drivers/sg1000a.c
r6428r6429
132132
133133static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
134134   ADDRESS_MAP_GLOBAL_MASK(0xff)
135   AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("sn", sn76496_w)
135   AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76496_w)
136136   AM_RANGE(0xbe, 0xbe) AM_READWRITE(TMS9928A_vram_r, TMS9928A_vram_w)
137137   AM_RANGE(0xbf, 0xbf) AM_READWRITE(TMS9928A_register_r, TMS9928A_register_w)
138138   AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("ppi8255", i8255a_r, i8255a_w)
r6428r6429
282282   /* sound hardware */
283283   MDRV_SPEAKER_STANDARD_MONO("mono")
284284
285   MDRV_SOUND_ADD("sn", SN76489, XTAL_3_579545MHz)
285   MDRV_SOUND_ADD("snsnd", SN76489, XTAL_3_579545MHz)
286286   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
287287MACHINE_DRIVER_END
288288
src/mame/drivers/panicr.c
r6428r6429
386386   /* sound hardware */
387387   MDRV_SPEAKER_STANDARD_MONO("mono")
388388
389   MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4)   /* 3.579545 MHz */
389   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)   /* 3.579545 MHz */
390390   MDRV_SOUND_CONFIG(t5182_ym2151_interface)
391391   MDRV_SOUND_ROUTE(0, "mono", 1.0)
392392   MDRV_SOUND_ROUTE(1, "mono", 1.0)
src/mame/drivers/macs.c
r6428r6429
7474   AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w)
7575   AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram ? */
7676   AM_RANGE(0xe800, 0xe87f) AM_RAM AM_BASE(&macs_ram2)
77   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w)
77   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_snd_r, st0016_snd_w)
7878   AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w)
7979   AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
8080   AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK(3) /* common /backup ram ?*/
r6428r6429
424424
425425   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
426426
427   MDRV_SOUND_ADD("st", ST0016, 0)
427   MDRV_SOUND_ADD("stsnd", ST0016, 0)
428428   MDRV_SOUND_CONFIG(st0016_config)
429429   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
430430   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/sbowling.c
r6428r6429
187187static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
188188   AM_RANGE(0x0000, 0x2fff) AM_ROM
189189   AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(sbw_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
190   AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("ay", ay8910_address_data_w)
191   AM_RANGE(0xf801, 0xf801) AM_DEVREAD("ay", ay8910_r)
190   AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
191   AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_r)
192192   AM_RANGE(0xfc00, 0xffff) AM_RAM
193193ADDRESS_MAP_END
194194
r6428r6429
351351   /* sound hardware */
352352   MDRV_SPEAKER_STANDARD_MONO("mono")
353353
354   MDRV_SOUND_ADD("ay", AY8910, 19968000 / 16)
354   MDRV_SOUND_ADD("aysnd", AY8910, 19968000 / 16)
355355   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12)
356356MACHINE_DRIVER_END
357357
src/mame/drivers/8080bw.c
r6428r6429
903903   /* sound hardware */
904904   MDRV_SPEAKER_STANDARD_MONO("mono")
905905
906   MDRV_SOUND_ADD("sn", SN76477, 0)
906   MDRV_SOUND_ADD("snsnd", SN76477, 0)
907907   MDRV_SOUND_CONFIG(schaser_sn76477_interface)
908908   MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0)
909909
src/mame/drivers/othunder.c
r6428r6429
518518   AM_RANGE(0x0000, 0x3fff) AM_ROM
519519   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
520520   AM_RANGE(0xc000, 0xdfff) AM_RAM
521   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
521   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
522522   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
523523   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
524524   AM_RANGE(0xe400, 0xe403) AM_WRITE(othunder_TC0310FAM_w) /* pan */
r6428r6429
719719   /* sound hardware */
720720   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
721721
722   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
722   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
723723   MDRV_SOUND_CONFIG(ym2610_config)
724724   MDRV_SOUND_ROUTE(0, "2610.0l", 0.25)
725725   MDRV_SOUND_ROUTE(0, "2610.0r", 0.25)
r6428r6429
771771   ROM_REGION16_LE( 0x80000, "user1", 0 )
772772   ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) )   /* index used to create 64x64 sprites on the fly */
773773
774   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
774   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
775775   ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) )
776776
777777   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
807807   ROM_REGION16_LE( 0x80000, "user1", 0 )
808808   ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) )   /* index used to create 64x64 sprites on the fly */
809809
810   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
810   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
811811   ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) )
812812
813813   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
843843   ROM_REGION16_LE( 0x80000, "user1", 0 )
844844   ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) )   /* index used to create 64x64 sprites on the fly */
845845
846   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
846   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
847847   ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) )
848848
849849   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
879879   ROM_REGION16_LE( 0x80000, "user1", 0 )
880880   ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) )   /* index used to create 64x64 sprites on the fly */
881881
882   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
882   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
883883   ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) )
884884
885885   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
src/mame/drivers/1943.c
r6428r6429
2424#include "deprecat.h"
2525#include "cpu/z80/z80.h"
2626#include "sound/2203intf.h"
27#include "1943.h"
2728
28extern UINT8 *c1943_scrollx;
29extern UINT8 *c1943_scrolly;
30extern UINT8 *c1943_bgscrollx;
3129
32extern WRITE8_HANDLER( c1943_c804_w );
33extern WRITE8_HANDLER( c1943_d806_w );
34extern WRITE8_HANDLER( c1943_videoram_w );
35extern WRITE8_HANDLER( c1943_colorram_w );
36
37extern PALETTE_INIT( 1943 );
38extern VIDEO_START( 1943 );
39extern VIDEO_UPDATE( 1943 );
40
4130/* Read/Write Handlers */
4231
4332static READ8_HANDLER( c1943_protection_r )
r6428r6429
4837    */
4938
5039   int data = cpu_get_reg(space->cpu, Z80_BC) >> 8;
51//  logerror("protection read, PC: %04x Result:%02x\n",cpu_get_pc(space->cpu),data);
40//  logerror("protection read, PC: %04x Result:%02x\n", cpu_get_pc(space->cpu), data);
5241   return data;
5342}
5443
r6428r6429
5645
5746static ADDRESS_MAP_START( c1943_map, ADDRESS_SPACE_PROGRAM, 8 )
5847   AM_RANGE(0x0000, 0x7fff) AM_ROM
59   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
48   AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(1)
49   AM_RANGE(0x9000, 0x9fff) AM_ROMBANK(2)
50   AM_RANGE(0xa000, 0xafff) AM_ROMBANK(3)
51   AM_RANGE(0xb000, 0xbfff) AM_ROMBANK(4)
6052   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
6153   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
6254   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
r6428r6429
6759   AM_RANGE(0xc804, 0xc804) AM_WRITE(c1943_c804_w)   // ROM bank switch, screen flip
6860   AM_RANGE(0xc806, 0xc806) AM_WRITE(watchdog_reset_w)
6961   AM_RANGE(0xc807, 0xc807) AM_WRITENOP // ???
70   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(c1943_videoram_w) AM_BASE(&videoram)
71   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(c1943_colorram_w) AM_BASE(&colorram)
72   AM_RANGE(0xd800, 0xd801) AM_RAM AM_BASE(&c1943_scrollx)
73   AM_RANGE(0xd802, 0xd802) AM_RAM AM_BASE(&c1943_scrolly)
74   AM_RANGE(0xd803, 0xd804) AM_RAM AM_BASE(&c1943_bgscrollx)
62   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(c1943_videoram_w) AM_BASE_MEMBER(_1943_state, videoram)
63   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(c1943_colorram_w) AM_BASE_MEMBER(_1943_state, colorram)
64   AM_RANGE(0xd800, 0xd801) AM_RAM AM_BASE_MEMBER(_1943_state, scrollx)
65   AM_RANGE(0xd802, 0xd802) AM_RAM AM_BASE_MEMBER(_1943_state, scrolly)
66   AM_RANGE(0xd803, 0xd804) AM_RAM AM_BASE_MEMBER(_1943_state, bgscrollx)
7567   AM_RANGE(0xd806, 0xd806) AM_WRITE(c1943_d806_w)   // sprites, bg1, bg2 enable
7668   AM_RANGE(0xd808, 0xd808) AM_WRITENOP // ???
7769   AM_RANGE(0xd868, 0xd868) AM_WRITENOP // ???
7870   AM_RANGE(0xd888, 0xd888) AM_WRITENOP // ???
7971   AM_RANGE(0xd8a8, 0xd8a8) AM_WRITENOP // ???
8072   AM_RANGE(0xe000, 0xefff) AM_RAM
81   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
73   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_MEMBER(_1943_state, spriteram) AM_SIZE(&spriteram_size)
8274ADDRESS_MAP_END
8375
8476static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
r6428r6429
244236   GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 32*4+16*16+16*16, 16 )
245237GFXDECODE_END
246238
239
247240/* Machine Driver */
248241
242static MACHINE_RESET( 1943 )
243{
244   _1943_state *state = (_1943_state *)machine->driver_data;
245
246   state->char_on = 0;
247   state->obj_on = 0;
248   state->bg1_on = 0;
249   state->bg2_on = 0;
250}
251
249252static MACHINE_DRIVER_START( 1943 )
253
254   MDRV_DRIVER_DATA(_1943_state)
255
250256   // basic machine hardware
251257   MDRV_CPU_ADD("maincpu", Z80, XTAL_24MHz/4)   /* verified on pcb */
252258   MDRV_CPU_PROGRAM_MAP(c1943_map)
r6428r6429
256262   MDRV_CPU_PROGRAM_MAP(sound_map)
257263   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold, 4)
258264
265   MDRV_MACHINE_RESET(1943)
266
259267   // video hardware
260
261268   MDRV_SCREEN_ADD("screen", RASTER)
262269   MDRV_SCREEN_REFRESH_RATE(60)
263270   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
r6428r6429
454461   ROM_LOAD( "bmprom.06",    0x0b00, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) )   /* video timing (not used) */
455462ROM_END
456463
464static DRIVER_INIT( 1943 )
465{
466   UINT8 *ROM = memory_region(machine, "maincpu");
467   memory_configure_bank(machine, 1, 0, 28, &ROM[0x10000], 0x1000);
468   memory_configure_bank(machine, 2, 0, 28, &ROM[0x11000], 0x1000);
469   memory_configure_bank(machine, 3, 0, 28, &ROM[0x12000], 0x1000);
470   memory_configure_bank(machine, 4, 0, 28, &ROM[0x13000], 0x1000);
471}
472
457473/* Game Drivers */
458
459GAME( 1987, 1943,     0,        1943,     1943,     0, ROT270, "Capcom", "1943: The Battle of Midway (US)", GAME_SUPPORTS_SAVE )
460GAME( 1987, 1943j,    1943,     1943,     1943,     0, ROT270, "Capcom", "1943: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
461GAME( 1987, 1943kai,  0,        1943,     1943,     0, ROT270, "Capcom", "1943 Kai: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
474GAME( 1987, 1943,     0,     1943,   1943,  1943, ROT270,  "Capcom",  "1943: The Battle of Midway (US)", GAME_SUPPORTS_SAVE )
475GAME( 1987, 1943j,    1943,  1943,   1943,  1943, ROT270,  "Capcom",  "1943: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
476GAME( 1987, 1943kai,  0,     1943,   1943,  1943, ROT270,  "Capcom",  "1943 Kai: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
src/mame/drivers/popper.c
r6428r6429
1/*
2Popper
1/***************************************************************************
32
4Omori Electric CAD (OEC) 1983
3 Popper
54
5    Omori Electric CAD (OEC) 1983
66
7PPR-12
87
8    PPR-12
99
1018.432MHz                    6148 6148
11                             6148 4148
12                2128
13                2128
14                2128
15 2128
16            p3                p6
17z80A        p2                p5
18  p0        p1             p4
19            z80A
20   8910
21 8910              SW2 SW1    p.m4 p.m3
2210
11    18.432MHz                    6148 6148
12                                 6148 4148
13                    2128
14                    2128
15                    2128
16     2128
17                p3                p6
18    z80A        p2                p5
19      p0        p1             p4
20                z80A
21       8910
22     8910              SW2 SW1    p.m4 p.m3
23
24
2325Notes:
2426
2527- a lower interleave causes some sounds to miss, different interleave values
r6428r6429
7678- the game freezes in much the same way as the stop dip switch when the coin
7779  inputs are high (a short PORT_IMPULSE duration will still cause a hitch),
7880  so potentially there's a coin lockout mechanism
79*/
8081
82***************************************************************************/
83
8184#include "driver.h"
8285#include "cpu/z80/z80.h"
8386#include "deprecat.h"
8487#include "sound/ay8910.h"
88#include "popper.h"
8589
86extern UINT8 *popper_videoram, *popper_attribram, *popper_ol_videoram, *popper_ol_attribram, *popper_spriteram;
87extern size_t popper_spriteram_size;
8890
89WRITE8_HANDLER( popper_videoram_w );
90WRITE8_HANDLER( popper_attribram_w );
91WRITE8_HANDLER( popper_ol_videoram_w );
92WRITE8_HANDLER( popper_ol_attribram_w );
93WRITE8_HANDLER( popper_flipscreen_w );
94WRITE8_HANDLER( popper_e002_w );
95WRITE8_HANDLER( popper_gfx_bank_w );
91/*************************************
92 *
93 *  Memory handlers
94 *
95 *************************************/
9696
97PALETTE_INIT( popper );
98VIDEO_START( popper );
99VIDEO_UPDATE( popper );
100
101
10297//e000                  e001                  e002                  e003
10398//76543210              76543210              76543210              76543210
10499//x-------  unused      x-------  unused      x-------  unused      x-------  unused
r6428r6429
128123//                      -------x  sound
129124static READ8_HANDLER( popper_input_ports_r )
130125{
131   UINT8 data=0;
126   UINT8 data = 0;
132127   switch (offset)
133128   {
134129      //           player inputs        dsw1                           dsw2
135      case 0: data=input_port_read(space->machine, "IN0") | ((input_port_read(space->machine, "DSW1") & 0x02)<<5) | ((input_port_read(space->machine, "DSW2") & 0x01)<<4); break;
136      case 1: data=input_port_read(space->machine, "IN1") | ((input_port_read(space->machine, "DSW1") & 0x01)<<6) | ((input_port_read(space->machine, "DSW2") & 0x02)<<3); break;
137      case 2: data=input_port_read(space->machine, "IN2") | ((input_port_read(space->machine, "DSW1") & 0x08)<<3) | ((input_port_read(space->machine, "DSW2") & 0x04)<<2); break;
138      case 3: data=input_port_read(space->machine, "IN3") | ((input_port_read(space->machine, "DSW1") & 0x04)<<4) | ((input_port_read(space->machine, "DSW2") & 0x08)<<1); break;
139      case 4: data=                   ((input_port_read(space->machine, "DSW1") & 0x20)<<2) | ((input_port_read(space->machine, "DSW2") & 0x10)<<1); break;
140      case 5: data=                   ((input_port_read(space->machine, "DSW1") & 0x10)<<3) | ((input_port_read(space->machine, "DSW2") & 0x20)<<0); break;
141      case 6: data=                   ((input_port_read(space->machine, "DSW1") & 0x80)<<0) | ((input_port_read(space->machine, "DSW2") & 0x40)>>1); break;
142      case 7: data=                   ((input_port_read(space->machine, "DSW1") & 0x40)<<1) | ((input_port_read(space->machine, "DSW2") & 0x80)>>2); break;
130      case 0: data = input_port_read(space->machine, "IN0") | ((input_port_read(space->machine, "DSW1") & 0x02) << 5) | ((input_port_read(space->machine, "DSW2") & 0x01) << 4); break;
131      case 1: data = input_port_read(space->machine, "IN1") | ((input_port_read(space->machine, "DSW1") & 0x01) << 6) | ((input_port_read(space->machine, "DSW2") & 0x02) << 3); break;
132      case 2: data = input_port_read(space->machine, "IN2") | ((input_port_read(space->machine, "DSW1") & 0x08) << 3) | ((input_port_read(space->machine, "DSW2") & 0x04) << 2); break;
133      case 3: data = input_port_read(space->machine, "IN3") | ((input_port_read(space->machine, "DSW1") & 0x04) << 4) | ((input_port_read(space->machine, "DSW2") & 0x08) << 1); break;
134      case 4: data = ((input_port_read(space->machine, "DSW1") & 0x20) << 2) | ((input_port_read(space->machine, "DSW2") & 0x10) << 1); break;
135      case 5: data = ((input_port_read(space->machine, "DSW1") & 0x10) << 3) | ((input_port_read(space->machine, "DSW2") & 0x20) << 0); break;
136      case 6: data = ((input_port_read(space->machine, "DSW1") & 0x80) << 0) | ((input_port_read(space->machine, "DSW2") & 0x40) >> 1); break;
137      case 7: data = ((input_port_read(space->machine, "DSW1") & 0x40) << 1) | ((input_port_read(space->machine, "DSW2") & 0x80) >> 2); break;
143138   }
144139   return data;
145140}
r6428r6429
150145   return 0;
151146}
152147
148/*************************************
149 *
150 *  Memory maps
151 *
152 *************************************/
153
153154static ADDRESS_MAP_START( popper_map, ADDRESS_SPACE_PROGRAM, 8 )
154155   AM_RANGE(0x0000, 0x5fff) AM_ROM
155156   AM_RANGE(0xc000, 0xc1bf) AM_RAM
156   AM_RANGE(0xc1c0, 0xc1ff) AM_RAM_WRITE(popper_ol_videoram_w) AM_BASE(&popper_ol_videoram)
157   AM_RANGE(0xc200, 0xc61f) AM_RAM_WRITE(popper_videoram_w) AM_BASE(&popper_videoram)
157   AM_RANGE(0xc1c0, 0xc1ff) AM_RAM_WRITE(popper_ol_videoram_w) AM_BASE_MEMBER(popper_state, ol_videoram)
158   AM_RANGE(0xc200, 0xc61f) AM_RAM_WRITE(popper_videoram_w) AM_BASE_MEMBER(popper_state, videoram)
158159   AM_RANGE(0xc620, 0xc9bf) AM_RAM
159   AM_RANGE(0xc9c0, 0xc9ff) AM_RAM_WRITE(popper_ol_attribram_w) AM_BASE(&popper_ol_attribram)
160   AM_RANGE(0xca00, 0xce1f) AM_RAM_WRITE(popper_attribram_w) AM_BASE(&popper_attribram)
160   AM_RANGE(0xc9c0, 0xc9ff) AM_RAM_WRITE(popper_ol_attribram_w) AM_BASE_MEMBER(popper_state, ol_attribram)
161   AM_RANGE(0xca00, 0xce1f) AM_RAM_WRITE(popper_attribram_w) AM_BASE_MEMBER(popper_state, attribram)
161162   AM_RANGE(0xce20, 0xcfff) AM_RAM
162   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE(&popper_spriteram) AM_SIZE(&popper_spriteram_size)
163   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER(popper_state, spriteram) AM_SIZE(&spriteram_size)
163164   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
164165   AM_RANGE(0xe000, 0xe007) AM_READ(popper_input_ports_r)
165166   AM_RANGE(0xe000, 0xe000) AM_WRITE(interrupt_enable_w)
r6428r6429
185186   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
186187ADDRESS_MAP_END
187188
189/*************************************
190 *
191 *  Input ports
192 *
193 *************************************/
194
188195static INPUT_PORTS_START( popper )
189196   PORT_START("IN0")
190197   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
r6428r6429
258265   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
259266INPUT_PORTS_END
260267
268/*************************************
269 *
270 *  Graphics definitions
271 *
272 *************************************/
273
261274static const gfx_layout popper_charlayout =
262275{
263276   8,8,
r6428r6429
285298   GFXDECODE_ENTRY( "gfx2", 0, popper_spritelayout, 0, 16 )
286299GFXDECODE_END
287300
301/*************************************
302 *
303 *  Machine driver
304 *
305 *************************************/
306
307static MACHINE_RESET( popper )
308{
309   popper_state *state = (popper_state *)machine->driver_data;
310
311   state->flipscreen = 0;
312   state->e002 = 0;
313   state->gfx_bank = 0;
314}
315
288316static MACHINE_DRIVER_START( popper )
289317
318   /* driver data */
319   MDRV_DRIVER_DATA(popper_state)
320
290321   /* basic machine hardware */
291322   MDRV_CPU_ADD("maincpu", Z80,18432000/6)
292323   MDRV_CPU_PROGRAM_MAP(popper_map)
r6428r6429
298329
299330   MDRV_QUANTUM_TIME(HZ(1800))
300331
332   MDRV_MACHINE_RESET(popper)
333
301334   /* video hardware */
302335   MDRV_SCREEN_ADD("screen", RASTER)
303336   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
324357MACHINE_DRIVER_END
325358
326359
360/*************************************
361 *
362 *  ROM definition
363 *
364 *************************************/
365
327366ROM_START( popper )
328367   ROM_REGION( 0x10000, "maincpu", 0 )
329368   ROM_LOAD( "p1",   0x0000, 0x2000, CRC(56881b70) SHA1(d3ade7a54a6cb8a0babf0d667a6b27f492a739dc) )
r6428r6429
346385ROM_END
347386
348387
349GAME( 1983, popper, 0, popper, popper, 0, ROT90, "Omori Electric Co., Ltd.", "Popper", GAME_IMPERFECT_COLORS )
388/*************************************
389 *
390 *  Game driver
391 *
392 *************************************/
393
394GAME( 1983, popper, 0, popper, popper, 0, ROT90, "Omori Electric Co., Ltd.", "Popper", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
src/mame/drivers/ladyfrog.c
r6428r6429
11/*
22Lady Frog (c) 1990 Mondial Games
33(there's  "(c) Alfa Tecnology" in the ROM)
4
5Touche Me - Unknown Manfacturer (likely the same as Lady Frog)
6
47driver by Tomasz Slanina
58
69'N.Y. Captor' (TAITO) hardware , without sub cpu.
r6428r6429
4346
4447*/
4548
46/* set to 1 for real screen size - two more tile columns on right side = black(title)/garbage(game) */
47#define ladyfrog_scr_size 0
48
4949#include "driver.h"
5050#include "cpu/z80/z80.h"
5151#include "deprecat.h"
r6428r6429
5353#include "sound/msm5232.h"
5454
5555VIDEO_START( ladyfrog );
56VIDEO_START( toucheme );
5657VIDEO_UPDATE( ladyfrog );
5758
5859extern UINT8 *ladyfrog_scrlram;
r6428r6429
167168   AM_RANGE(0x0000, 0xbfff) AM_ROM
168169   AM_RANGE(0xc000, 0xc7ff) AM_RAM
169170   AM_RANGE(0xc800, 0xc801) AM_WRITENOP
170   AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay", ay8910_address_data_w)
171   AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("aysnd", ay8910_address_data_w)
171172   AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_w)
172173   AM_RANGE(0xca00, 0xca00) AM_WRITENOP
173174   AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
r6428r6429
181182
182183
183184static INPUT_PORTS_START( ladyfrog )
185
184186   PORT_START("DSW1")
185   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
187   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )  PORT_DIPLOCATION("SW1:1,2")
186188   PORT_DIPSETTING(    0x00, "4" )
189   PORT_DIPSETTING(    0x02, "3" )
187190   PORT_DIPSETTING(    0x01, "2" )
188   PORT_DIPSETTING(    0x02, "3" )
189191   PORT_DIPSETTING(    0x03, "1" )
190   PORT_DIPNAME( 0x04, 0x00, "Clear 'doors' after life lost" )
192   PORT_DIPNAME( 0x04, 0x00, "Clear 'doors' after life lost" )  PORT_DIPLOCATION("SW1:3")
191193   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
192194   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
193   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Free_Play ) )
195   PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )
196   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Free_Play ) )  PORT_DIPLOCATION("SW1:5")
194197   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
195198   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
196   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Allow_Continue ) )
199   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Allow_Continue ) )  PORT_DIPLOCATION("SW1:6")
197200   PORT_DIPSETTING(    0x20, DEF_STR( No ) )
198201   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
199   PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_A ) )
202   PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_A ) )  PORT_DIPLOCATION("SW1:7,8")
200203   PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
201204   PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
202205   PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
203206   PORT_DIPSETTING(    0x00, DEF_STR( 1C_3C ) )
204207
205208   PORT_START("DSW2")
206   PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
209   PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )  PORT_DIPLOCATION("SW2:1,2")
207210   PORT_DIPSETTING(    0x03, DEF_STR( Easy ) )
208211   PORT_DIPSETTING(    0x01, DEF_STR( Normal ) )
209212   PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
210213   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
211   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
214   PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW2:3" )
215   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:4")
212216   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
213217   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
214218
219   PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW2:5" )
220   PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" )
221   PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" )
222   PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" )
223
215224   PORT_START("INPUTS")
216225   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
217226   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
r6428r6429
226235INPUT_PORTS_END
227236
228237
238static INPUT_PORTS_START( toucheme )
239   PORT_INCLUDE( ladyfrog )
240
241   PORT_MODIFY("DSW1")
242   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Allow_Continue ) )  PORT_DIPLOCATION("SW1:3")
243   PORT_DIPSETTING(    0x04, DEF_STR( No ) )
244   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
245
246   PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )
247   PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW1:6" )
248   PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_A ) )  PORT_DIPLOCATION("SW1:7,8")
249   PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
250   PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
251   PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
252   PORT_DIPSETTING(    0x00, DEF_STR( 1C_4C ) )
253
254   PORT_MODIFY("DSW2")
255   PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW2:1" )
256   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:2")
257   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
258   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
259   PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW2:4" )
260INPUT_PORTS_END
261
262
229263static const gfx_layout charlayout =
230264{
231265   8,8,
r6428r6429
275309   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
276310   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
277311   MDRV_SCREEN_SIZE(32*8, 32*8)
278#if ladyfrog_scr_size
279   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 29*8-1)
280#else
281   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 27*8-1)
282#endif
312   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 29*8-1) // black borders in ladyfrog gameplay are correct
283313
314
284315   MDRV_GFXDECODE(ladyfrog)
285316   MDRV_PALETTE_LENGTH(512)
286317
r6428r6429
290321   /* sound hardware */
291322   MDRV_SPEAKER_STANDARD_MONO("mono")
292323
293   MDRV_SOUND_ADD("ay", AY8910, 8000000/4)
324   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4)
294325   MDRV_SOUND_CONFIG(ay8910_config)
295326   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
296327
r6428r6429
309340   // pin 22 Noise Output  not mapped
310341MACHINE_DRIVER_END
311342
343static MACHINE_DRIVER_START( toucheme )
344   MDRV_IMPORT_FROM(ladyfrog)
345   MDRV_VIDEO_START(toucheme)
346MACHINE_DRIVER_END
312347
348
313349ROM_START( ladyfrog )
314350   ROM_REGION( 0x10000, "maincpu", 0 )
315351   ROM_LOAD( "2.107",   0x0000, 0x10000, CRC(fa4466e6) SHA1(08e5cc8e1d3c845bc9c253267f2683671bffa9f2) )
r6428r6429
326362   ROM_LOAD( "8.10",   0x20000, 0x10000, CRC(8c73baa1) SHA1(50fb408be181ef3c125dee23b04daeb010c9f276) )
327363ROM_END
328364
329GAME( 1990, ladyfrog, 0,       ladyfrog,  ladyfrog, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", 0)
365ROM_START( toucheme )
366   ROM_REGION( 0x10000, "maincpu", 0 )
367   ROM_LOAD( "2.ic107",   0x0000, 0x10000, CRC(26f4580b) SHA1(59dc5799436cdaf68dfcb620cd9e2f6929ac7817) )
368
369   ROM_REGION( 0x10000, "audiocpu", 0 )
370   ROM_LOAD( "1.ic115",   0x0000, 0x8000, CRC(902589aa) SHA1(d60088fc31a67fec91f908f671af77bb87a5e59c) )
371
372   ROM_REGION( 0x60000, "gfx1", ROMREGION_INVERT )
373   ROM_LOAD( "3.ic32",   0x30000, 0x10000, CRC(223b4435) SHA1(fb5a4096012093bae5fda213a5de317e63a88ec3) )
374   ROM_LOAD( "4.ic33",   0x40000, 0x10000, CRC(96dcc2f3) SHA1(9c61f8161771e40ca41b6e102bc04583dc97cd0d) )
375   ROM_LOAD( "5.ic34",   0x50000, 0x10000, CRC(b8667a6b) SHA1(288a5cbd8fc01b24822e89fbc1e6d7f45c181483) )
376   ROM_LOAD( "6.ic8",    0x00000, 0x10000, CRC(d257382f) SHA1(9c459b90c9ddfe90de4a252f29a7bee809412b46) )
377   ROM_LOAD( "7.ic9",    0x10000, 0x10000, CRC(feb1b974) SHA1(ffd4527472cdf655fbebebf4d3abb61962e54457) )
378   ROM_LOAD( "8.ic10",   0x20000, 0x10000, CRC(fc6808bf) SHA1(f1f1b75a79dfdb500012f9b52c6364f0a13dce2d) )
379ROM_END
380
381GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", 0)
382GAME( 19??, toucheme, 0, toucheme, toucheme, 0, ORIENTATION_SWAP_XY, "Unknown", "Touche Me", 0) // art style is similar, so it's probably the same manufacturer
src/mame/drivers/djboy.c
r6428r6429
789789static ADDRESS_MAP_START( cpu2_port_am, ADDRESS_SPACE_IO, 8 )
790790   ADDRESS_MAP_GLOBAL_MASK(0xff)
791791   AM_RANGE(0x00, 0x00) AM_WRITE(cpu2_bankswitch_w)
792   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
792   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
793793   AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r)
794794   AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
795795   AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
r6428r6429
941941
942942   MDRV_SPEAKER_STANDARD_MONO("mono")
943943
944   MDRV_SOUND_ADD("ym", YM2203, 3000000)
944   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
945945   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
946946
947947   MDRV_SOUND_ADD("oki1", OKIM6295, 12000000 / 8)
src/mame/drivers/sidearms.c
r6428r6429
185185
186186static ADDRESS_MAP_START( whizz_io_map, ADDRESS_SPACE_IO, 8 )
187187   ADDRESS_MAP_GLOBAL_MASK(0xff)
188   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
188   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
189189   AM_RANGE(0x40, 0x40) AM_WRITENOP
190190   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
191191ADDRESS_MAP_END
r6428r6429
790790   /* sound hardware */
791791   MDRV_SPEAKER_STANDARD_MONO("mono")
792792
793   MDRV_SOUND_ADD("ym", YM2151, 4000000)
793   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
794794   MDRV_SOUND_CONFIG(whizz_ym2151_interface)
795795   MDRV_SOUND_ROUTE(0, "mono", 1.0)
796796   MDRV_SOUND_ROUTE(1, "mono", 1.0)
src/mame/drivers/taito_x.c
r6428r6429
477477   AM_RANGE(0x0000, 0x3fff) AM_ROM
478478   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
479479   AM_RANGE(0xc000, 0xdfff) AM_RAM
480   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
480   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
481481   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
482482   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
483483   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
491491   AM_RANGE(0x0000, 0x3fff) AM_ROM
492492   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
493493   AM_RANGE(0xc000, 0xdfff) AM_RAM
494   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
494   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
495495   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
496496   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
497497   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
931931   /* sound hardware */
932932   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
933933
934   MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2)   /* verified on pcb */
934   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2)   /* verified on pcb */
935935   MDRV_SOUND_CONFIG(ym2610_config)
936936   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
937937   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
970970   /* sound hardware */
971971   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
972972
973   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4)   /* verified on pcb */
973   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
974974   MDRV_SOUND_CONFIG(ym2151_config)
975975   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
976976   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
r6428r6429
10071007   /* sound hardware */
10081008   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10091009
1010   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1010   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
10111011   MDRV_SOUND_CONFIG(ym2610_config)
10121012   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
10131013   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
10461046   /* sound hardware */
10471047   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10481048
1049   MDRV_SOUND_ADD("ym", YM2610, 8000000)
1049   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
10501050   MDRV_SOUND_CONFIG(ym2610_config)
10511051   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
10521052   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
11201120   ROM_LOAD( "j01_16.bin", 0x100000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */
11211121   ROM_LOAD( "k01_17.bin", 0x180000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) )
11221122
1123   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1123   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
11241124   ROM_LOAD( "e18_01.bin", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) )
11251125ROM_END
11261126
r6428r6429
11411141   ROM_LOAD( "j01_16.bin", 0x100000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */
11421142   ROM_LOAD( "k01_17.bin", 0x180000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) )
11431143
1144   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1144   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
11451145   ROM_LOAD( "e18_01.bin", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) )
11461146ROM_END
11471147
r6428r6429
12131213   ROM_REGION( 0x80000, "ym.deltat", 0 )      /* Delta-T samples */
12141214   ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
12151215
1216   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1216   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
12171217   ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
12181218ROM_END
12191219
r6428r6429
12371237   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
12381238   ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
12391239
1240   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1240   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
12411241   ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
12421242ROM_END
12431243
r6428r6429
12591259   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
12601260   ROM_LOAD( "m-8-5.u2",     0x00000, 0x20000, CRC(d9d90e0a) SHA1(1011548b4fb5f1a194c93ded512e74cda2c06ceb) )
12611261
1262   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1262   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
12631263   ROM_LOAD( "m-8-4.u1",     0x00000, 0x20000, CRC(d3f6047a) SHA1(0db6d762bbe2d68cddf30e06125b904e1021b96d) )
12641264ROM_END
12651265
r6428r6429
12811281   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
12821282   ROM_LOAD( "east-11", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
12831283
1284   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
1284   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
12851285   ROM_LOAD( "east-10", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
12861286ROM_END
12871287
src/mame/drivers/tumblep.c
r6428r6429
130130static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
131131   AM_RANGE(0x000000, 0x00ffff) AM_ROM
132132   AM_RANGE(0x100000, 0x100001) AM_NOP   /* YM2203 - this board doesn't have one */
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
134134   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
135135   AM_RANGE(0x130000, 0x130001) AM_NOP   /* This board only has 1 oki chip */
136136   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
309309   /* sound hardware */
310310   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
311311
312   MDRV_SOUND_ADD("ym", YM2151, 32220000/9)
312   MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9)
313313   MDRV_SOUND_CONFIG(ym2151_config)
314314   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
315315   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
src/mame/drivers/dietgo.c
r6428r6429
3535static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
3636   AM_RANGE(0x000000, 0x00ffff) AM_ROM
3737   AM_RANGE(0x100000, 0x100001) AM_NOP      /* YM2203 - this board doesn't have one */
38   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
38   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
3939   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
4040   AM_RANGE(0x130000, 0x130001) AM_NOP      /* This board only has 1 oki chip */
4141   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
r6428r6429
198198   /* sound hardware */
199199   MDRV_SPEAKER_STANDARD_MONO("mono")
200200
201   MDRV_SOUND_ADD("ym", YM2151, XTAL_32_22MHz/9) /* verified on pcb */
201   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) /* verified on pcb */
202202   MDRV_SOUND_CONFIG(ym2151_config)
203203   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
204204
src/mame/drivers/kingobox.c
r6428r6429
112112static ADDRESS_MAP_START( kingobox_sound_io_map, ADDRESS_SPACE_IO, 8 )
113113   ADDRESS_MAP_GLOBAL_MASK(0xff)
114114   AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_w)
115   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
116   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay", ay8910_address_w)
115   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
116   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_address_w)
117117ADDRESS_MAP_END
118118
119119/* Ring King */
r6428r6429
157157static ADDRESS_MAP_START( ringking_sound_io_map, ADDRESS_SPACE_IO, 8 )
158158   ADDRESS_MAP_GLOBAL_MASK(0xff)
159159   AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_w)
160   AM_RANGE(0x02, 0x02) AM_DEVREAD("ay", ay8910_r)
161   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay", ay8910_data_address_w)
160   AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_r)
161   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_data_address_w)
162162ADDRESS_MAP_END
163163
164164
r6428r6429
510510   /* sound hardware */
511511   MDRV_SPEAKER_STANDARD_MONO("mono")
512512
513   MDRV_SOUND_ADD("ay", AY8910, 1500000)
513   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
514514   MDRV_SOUND_CONFIG(ay8910_config)
515515   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
516516
r6428r6429
560560   /* sound hardware */
561561   MDRV_SPEAKER_STANDARD_MONO("mono")
562562
563   MDRV_SOUND_ADD("ay", AY8910, 1500000)
563   MDRV_SOUND_ADD("aysnd", AY8910, 1500000)
564564   MDRV_SOUND_CONFIG(ay8910_config)
565565   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
566566
src/mame/drivers/bfmsys85.c
r6428r6429
414414   AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux_ctrl_r,mux_ctrl_w)// mux status register
415415   AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r)      // irq latch ( MC6850 / timer )
416416
417   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay", ay8910_data_w)
417   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd", ay8910_data_w)
418418   AM_RANGE(0x3001, 0x3001) AM_READNOP //sound latch
419   AM_RANGE(0x3200, 0x3200) AM_DEVWRITE("ay", ay8910_address_w)
419   AM_RANGE(0x3200, 0x3200) AM_DEVWRITE("aysnd", ay8910_address_w)
420420
421421   AM_RANGE(0x3402, 0x3402) AM_DEVWRITE("acia6850_0", acia6850_ctrl_w)
422422   AM_RANGE(0x3403, 0x3403) AM_DEVWRITE("acia6850_0", acia6850_data_w)
r6428r6429
443443   MDRV_ACIA6850_ADD("acia6850_0", m6809_acia_if)
444444
445445   MDRV_SPEAKER_STANDARD_MONO("mono")
446   MDRV_SOUND_ADD("ay",AY8912, MASTER_CLOCK/4)         // add AY8912 soundchip
446   MDRV_SOUND_ADD("aysnd",AY8912, MASTER_CLOCK/4)         // add AY8912 soundchip
447447   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
448448
449449   MDRV_NVRAM_HANDLER(generic_0fill)               // load/save nv RAM
src/mame/drivers/blockout.c
r6428r6429
6666static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
6767   AM_RANGE(0x0000, 0x7fff) AM_ROM
6868   AM_RANGE(0x8000, 0x87ff) AM_RAM
69   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
69   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
7070   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
7171   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
7272ADDRESS_MAP_END
r6428r6429
205205   /* sound hardware */
206206   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
207207
208   MDRV_SOUND_ADD("ym", YM2151, 3579545)
208   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
209209   MDRV_SOUND_CONFIG(ym2151_config)
210210   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
211211   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/drivers/tsamurai.c
r6428r6429
202202
203203static ADDRESS_MAP_START( z80_io_map, ADDRESS_SPACE_IO, 8 )
204204   ADDRESS_MAP_GLOBAL_MASK(0xff)
205   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
205   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
206206ADDRESS_MAP_END
207207
208208static ADDRESS_MAP_START( z80_m660_io_map, ADDRESS_SPACE_IO, 8 )
r6428r6429
214214
215215static ADDRESS_MAP_START( vsgongf_audio_io_map, ADDRESS_SPACE_IO, 8 )
216216   ADDRESS_MAP_GLOBAL_MASK(0xff)
217   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
217   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
218218ADDRESS_MAP_END
219219
220220static READ8_HANDLER( sound_command1_r )
r6428r6429
283283
284284static ADDRESS_MAP_START( sound3_m660_io_map, ADDRESS_SPACE_IO, 8 )
285285   ADDRESS_MAP_GLOBAL_MASK(0xff)
286   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
286   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_address_data_w)
287287ADDRESS_MAP_END
288288
289289/*******************************************************************************/
r6428r6429
690690   /* sound hardware */
691691   MDRV_SPEAKER_STANDARD_MONO("mono")
692692
693   MDRV_SOUND_ADD("ay", AY8910, 2000000)
693   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
694694   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
695695
696696   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
738738   /* sound hardware */
739739   MDRV_SPEAKER_STANDARD_MONO("mono")
740740
741   MDRV_SOUND_ADD("ay", AY8910, 2000000)
741   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
742742   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
743743
744744   MDRV_SOUND_ADD("dac1", DAC, 0)
r6428r6429
779779   /* sound hardware */
780780   MDRV_SPEAKER_STANDARD_MONO("mono")
781781
782   MDRV_SOUND_ADD("ay", AY8910, 2000000)
782   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
783783   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
784784
785785   MDRV_SOUND_ADD("dac", DAC, 0)
src/mame/drivers/f1gp.c
r6428r6429
156156   AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w)   // f1gp
157157   AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w)   // f1gp2
158158   AM_RANGE(0x14, 0x14) AM_READWRITE(soundlatch_r, pending_command_clear_w)
159   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
159   AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
160160ADDRESS_MAP_END
161161
162162static WRITE16_HANDLER( f1gpb_misc_w )
r6428r6429
455455   /* sound hardware */
456456   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
457457
458   MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz)
458   MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)
459459   MDRV_SOUND_CONFIG(ym2610_config)
460460   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
461461   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
563563   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */
564564   ROM_LOAD( "rom14-a.09",   0x000000, 0x100000, CRC(b4c1ac31) SHA1(acab2e1b5ce4ca3a5c4734562481b54db4b46995) )
565565
566   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
566   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
567567   ROM_LOAD( "rom17-a.08",   0x000000, 0x100000, CRC(ea70303d) SHA1(8de1a0e6d47cd80a622663c1745a1da54cd0ea05) )
568568ROM_END
569569
r6428r6429
659659   ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */
660660   ROM_LOAD( "rom4",         0x000000, 0x080000, CRC(c2d3d7ad) SHA1(3178096741583cfef1ca8f53e6efa0a59e1d5cb6) )
661661
662   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
662   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
663663   ROM_LOAD( "rom3",         0x000000, 0x100000, CRC(7f8f066f) SHA1(5e051d5feb327ac818e9c7f7ac721dada3a102b6) )
664664ROM_END
665665
src/mame/drivers/supdrapo.c
r6428r6429
5858   AM_RANGE(0x8006, 0x8006) AM_READ_PORT("IN5") //dips?
5959   AM_RANGE(0x9000, 0x90ff) AM_RAM
6060   AM_RANGE(0x9400, 0x9400) AM_READ(sdpoker_rng_r)
61   AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("ay", ay8910_data_address_w)
61   AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_data_address_w)
6262ADDRESS_MAP_END
6363
6464static INPUT_PORTS_START( supdrapo )
r6428r6429
266266
267267   MDRV_SPEAKER_STANDARD_MONO("mono")
268268
269   MDRV_SOUND_ADD("ay", AY8910, 8000000/2) /* ??? */
269   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/2) /* ??? */
270270   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
271271MACHINE_DRIVER_END
272272
src/mame/drivers/lvcards.c
r6428r6429
177177
178178static ADDRESS_MAP_START( lvcards_io_map, ADDRESS_SPACE_IO, 8 )
179179   ADDRESS_MAP_GLOBAL_MASK(0xff)
180   AM_RANGE(0x00, 0x00) AM_DEVREAD("ay", ay8910_r)
181   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_data_address_w)
180   AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_r)
181   AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_data_address_w)
182182ADDRESS_MAP_END
183183
184184static ADDRESS_MAP_START( lvpoker_map, ADDRESS_SPACE_PROGRAM, 8  )
r6428r6429
495495   // sound hardware
496496   MDRV_SPEAKER_STANDARD_MONO("mono")
497497
498   MDRV_SOUND_ADD("ay", AY8910, 18432000/12)
498   MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12)
499499   MDRV_SOUND_CONFIG(lcay8910_interface)
500500   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
501501MACHINE_DRIVER_END
src/mame/drivers/namcos2.c
r6428r6429
729729
730730static ADDRESS_MAP_START( sound_default_am, ADDRESS_SPACE_PROGRAM, 8 )
731731   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(6) /* banked */
732   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
732   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
733733   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w)
734734   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram)
735735   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */
r6428r6429
16251625   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
16261626   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
16271627
1628   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1628   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
16291629   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
16301630   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
16311631MACHINE_DRIVER_END
r6428r6429
16491649   MDRV_SOUND_ROUTE(0, "lspeaker", 0.45)
16501650   MDRV_SOUND_ROUTE(1, "rspeaker", 0.45)
16511651
1652   MDRV_SOUND_REPLACE("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1652   MDRV_SOUND_REPLACE("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
16531653   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
16541654   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
16551655MACHINE_DRIVER_END
r6428r6429
16991699   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
17001700   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
17011701
1702   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1702   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
17031703   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
17041704   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
17051705MACHINE_DRIVER_END
r6428r6429
17491749   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
17501750   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
17511751
1752   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1752   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
17531753   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
17541754   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
17551755MACHINE_DRIVER_END
r6428r6429
17991799   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
18001800   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
18011801
1802   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1802   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
18031803   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
18041804   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
18051805MACHINE_DRIVER_END
r6428r6429
18491849   MDRV_SOUND_ROUTE(0, "lspeaker", 0.75)
18501850   MDRV_SOUND_ROUTE(1, "rspeaker", 0.75)
18511851
1852   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1852   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
18531853   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
18541854   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
18551855MACHINE_DRIVER_END
r6428r6429
18991899   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
19001900   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
19011901
1902   MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1902   MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
19031903   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
19041904   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
19051905MACHINE_DRIVER_END
src/mame/drivers/exzisus.c
r6428r6429
204204static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
205205   AM_RANGE(0x0000, 0x7fff) AM_ROM
206206   AM_RANGE(0x8000, 0x8fff) AM_RAM
207   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
207   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
208208   AM_RANGE(0xa000, 0xa000) AM_READNOP AM_WRITE(taitosound_slave_port_w)
209209   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
210210ADDRESS_MAP_END
r6428r6429
330330   /* sound hardware */
331331   MDRV_SPEAKER_STANDARD_MONO("mono")
332332
333   MDRV_SOUND_ADD("ym", YM2151, 4000000)
333   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
334334   MDRV_SOUND_CONFIG(ym2151_config)
335335   MDRV_SOUND_ROUTE(0, "mono", 0.50)
336336   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/tx1.c
r6428r6429
548548
549549static ADDRESS_MAP_START( tx1_sound_io, ADDRESS_SPACE_IO, 8 )
550550   ADDRESS_MAP_GLOBAL_MASK(0xff)
551   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay", ay8910_data_address_w)
551   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_data_address_w)
552552ADDRESS_MAP_END
553553
554554
r6428r6429
742742   MDRV_SPEAKER_STANDARD_STEREO("frontleft", "frontright")
743743//  MDRV_SPEAKER_STANDARD_STEREO("rearleft", "rearright")
744744
745   MDRV_SOUND_ADD("ay", AY8910, TX1_PIXEL_CLOCK / 8)
745   MDRV_SOUND_ADD("aysnd", AY8910, TX1_PIXEL_CLOCK / 8)
746746   MDRV_SOUND_CONFIG(tx1_ay8910_interface)
747747   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "frontleft", 0.1)
748748   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "frontright", 0.1)
src/mame/drivers/merit.c
r6428r6429
405405ADDRESS_MAP_END
406406
407407static ADDRESS_MAP_START( trvwhiz_io_map, ADDRESS_SPACE_IO, 8 )
408   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay", ay8910_address_w)
409   AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("ay", ay8910_data_w)
408   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("aysnd", ay8910_address_w)
409   AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("aysnd", ay8910_data_w)
410410ADDRESS_MAP_END
411411
412412
r6428r6429
426426ADDRESS_MAP_END
427427
428428static ADDRESS_MAP_START( phrcraze_io_map, ADDRESS_SPACE_IO, 8 )
429   AM_RANGE(0xc004, 0xc004) AM_MIRROR(0x1cf3) AM_DEVWRITE("ay", ay8910_address_w)
430   AM_RANGE(0xc104, 0xc104) AM_MIRROR(0x1cf3) AM_DEVWRITE("ay", ay8910_data_w)
429   AM_RANGE(0xc004, 0xc004) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8910_address_w)
430   AM_RANGE(0xc104, 0xc104) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8910_data_w)
431431ADDRESS_MAP_END
432432
433433
r6428r6429
447447ADDRESS_MAP_END
448448
449449static ADDRESS_MAP_START( tictac_io_map, ADDRESS_SPACE_IO, 8 )
450   AM_RANGE(0xc00c, 0xc00c) AM_MIRROR(0x1cf3) AM_DEVWRITE("ay", ay8910_address_w)
451   AM_RANGE(0xc10c, 0xc10c) AM_MIRROR(0x1cf3) AM_DEVWRITE("ay", ay8910_data_w)
450   AM_RANGE(0xc00c, 0xc00c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8910_address_w)
451   AM_RANGE(0xc10c, 0xc10c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8910_data_w)
452452ADDRESS_MAP_END
453453
454454
r6428r6429
11971197   /* sound hardware */
11981198   MDRV_SPEAKER_STANDARD_MONO("mono")
11991199
1200   MDRV_SOUND_ADD("ay", AY8910, CRTC_CLOCK)
1200   MDRV_SOUND_ADD("aysnd", AY8910, CRTC_CLOCK)
12011201   MDRV_SOUND_CONFIG(merit_ay8912_interface)
12021202   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
12031203MACHINE_DRIVER_END
src/mame/drivers/pingpong.c
r6428r6429
104104   AM_RANGE(0xa980, 0xa980) AM_READ_PORT("DSW2")
105105   AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w)   /* coin counters + irq enables */
106106   AM_RANGE(0xa200, 0xa200) AM_WRITENOP      /* SN76496 data latch */
107   AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("sn", sn76496_w)   /* trigger read */
107   AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_w)   /* trigger read */
108108   AM_RANGE(0xa600, 0xa600) AM_WRITE(watchdog_reset_w)
109109ADDRESS_MAP_END
110110
r6428r6429
125125   AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN2")
126126   AM_RANGE(0xa180, 0xa180) AM_READ_PORT("IN3")
127127   AM_RANGE(0xa200, 0xa200) AM_WRITENOP      /* SN76496 data latch */
128   AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("sn", sn76496_w)   /* trigger read */
128   AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_w)   /* trigger read */
129129   AM_RANGE(0xa600, 0xa600) AM_WRITE(watchdog_reset_w)
130130ADDRESS_MAP_END
131131
r6428r6429
478478   /* sound hardware */
479479   MDRV_SPEAKER_STANDARD_MONO("mono")
480480
481   MDRV_SOUND_ADD("sn", SN76496, 18432000/8)
481   MDRV_SOUND_ADD("snsnd", SN76496, 18432000/8)
482482   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
483483MACHINE_DRIVER_END
484484
src/mame/drivers/ssrj.c
r6428r6429
7272   AM_RANGE(0xf001, 0xf001) AM_READ(ssrj_wheel_r)
7373   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2")
7474   AM_RANGE(0xf003, 0xf003) AM_WRITENOP /* unknown */
75   AM_RANGE(0xf401, 0xf401) AM_DEVREAD("ay", ay8910_r)
76   AM_RANGE(0xf400, 0xf401) AM_DEVWRITE("ay", ay8910_address_data_w)
75   AM_RANGE(0xf401, 0xf401) AM_DEVREAD("aysnd", ay8910_r)
76   AM_RANGE(0xf400, 0xf401) AM_DEVWRITE("aysnd", ay8910_address_data_w)
7777   AM_RANGE(0xf800, 0xf800) AM_WRITENOP /* wheel ? */
7878   AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP /* unknown */
7979ADDRESS_MAP_END
r6428r6429
176176   /* sound hardware */
177177   MDRV_SPEAKER_STANDARD_MONO("mono")
178178
179   MDRV_SOUND_ADD("ay", AY8910, 8000000/5)
179   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/5)
180180   MDRV_SOUND_CONFIG(ay8910_config)
181181   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
182182MACHINE_DRIVER_END
src/mame/drivers/cchance.c
r6428r6429
7474   AM_RANGE(0xf000, 0xf000) AM_READNOP AM_WRITENOP //???
7575   AM_RANGE(0xf001, 0xf001) AM_READ(input_1_r) AM_WRITE(output_0_w)
7676   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN0") AM_WRITE(output_1_w)
77   AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("ay", ay8910_address_data_w)
78   AM_RANGE(0xf801, 0xf801) AM_DEVREAD("ay", ay8910_r)
77   AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_address_data_w)
78   AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_r)
7979ADDRESS_MAP_END
8080
8181
r6428r6429
202202
203203   MDRV_SPEAKER_STANDARD_MONO("mono")
204204
205   MDRV_SOUND_ADD("ay", AY8910, 1500000/2)
205   MDRV_SOUND_ADD("aysnd", AY8910, 1500000/2)
206206   MDRV_SOUND_CONFIG(ay8910_config)
207207   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
208208MACHINE_DRIVER_END
src/mame/drivers/sms.c
r6428r6429
502502   AM_RANGE(0x0000, 0x1fff) AM_ROM
503503   AM_RANGE(0x2000, 0x27ff) AM_RAM
504504   AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
505   AM_RANGE(0x3381, 0x3382) AM_DEVWRITE("ay", ay8910_data_address_w)
505   AM_RANGE(0x3381, 0x3382) AM_DEVWRITE("aysnd", ay8910_data_address_w)
506506   AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r)
507507   AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w)
508508ADDRESS_MAP_END
r6428r6429
564564   /* sound hardware */
565565   MDRV_SPEAKER_STANDARD_MONO("mono")
566566
567   MDRV_SOUND_ADD("ay", AY8910, XTAL_16MHz/8)
567   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_16MHz/8)
568568   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
569569MACHINE_DRIVER_END
570570
src/mame/drivers/spoker.c
r6428r6429
208208   AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( spoker_leds_w )
209209   AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" )
210210
211   AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ym", ym2413_w )
211   AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ymsnd", ym2413_w )
212212
213213   AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w )
214214
r6428r6429
381381
382382   /* sound hardware */
383383   MDRV_SPEAKER_STANDARD_MONO("mono")
384   MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz)
384   MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
385385   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
386386
387387   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_12MHz / 12)
src/mame/drivers/srmp2.c
r6428r6429
399399   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP                  /* ??? */
400400   AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP                  /* ??? */
401401   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  /* ??? */
402   AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
403   AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
402   AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
403   AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
404404ADDRESS_MAP_END
405405
406406
r6428r6429
421421   AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_cchip_status_0_r)   /* custom chip status ??? */
422422   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w)         /* ADPCM number */
423423   AM_RANGE(0xa00002, 0xa00003) AM_READ(srmp2_cchip_status_1_r)   /* custom chip status ??? */
424   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
425   AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
424   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
425   AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
426426   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP               /* ??? */
427427   AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE(&spriteram16)   /* Sprites Y */
428428   AM_RANGE(0xd02000, 0xd023ff) AM_RAM                     /* ??? only writes $00fa */
r6428r6429
558558   AM_RANGE(0xa1, 0xa1) AM_READ(srmp3_cchip_status_0_r)            /* custom chip status ??? */
559559   AM_RANGE(0xc0, 0xc0) AM_READWRITE(srmp3_input_r, srmp3_input_1_w)   /* key matrix | I/O ??? */
560560   AM_RANGE(0xc1, 0xc1) AM_READWRITE(srmp3_cchip_status_1_r, srmp3_input_2_w)   /* custom chip status ??? | I/O ??? */
561   AM_RANGE(0xe0, 0xe1) AM_DEVWRITE("ay", ay8910_address_data_w)
562   AM_RANGE(0xe2, 0xe2) AM_DEVREAD("ay", ay8910_r)
561   AM_RANGE(0xe0, 0xe1) AM_DEVWRITE("aysnd", ay8910_address_data_w)
562   AM_RANGE(0xe2, 0xe2) AM_DEVREAD("aysnd", ay8910_r)
563563ADDRESS_MAP_END
564564
565565
r6428r6429
10491049   /* sound hardware */
10501050   MDRV_SPEAKER_STANDARD_MONO("mono")
10511051
1052   MDRV_SOUND_ADD("ay", AY8910, 20000000/16)
1052   MDRV_SOUND_ADD("aysnd", AY8910, 20000000/16)
10531053   MDRV_SOUND_CONFIG(srmp2_ay8910_interface)
10541054   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
10551055
r6428r6429
10891089   /* sound hardware */
10901090   MDRV_SPEAKER_STANDARD_MONO("mono")
10911091
1092   MDRV_SOUND_ADD("ay", AY8910, 16000000/16)
1092   MDRV_SOUND_ADD("aysnd", AY8910, 16000000/16)
10931093   MDRV_SOUND_CONFIG(srmp2_ay8910_interface)
10941094   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
10951095
r6428r6429
11251125   /* sound hardware */
11261126   MDRV_SPEAKER_STANDARD_MONO("mono")
11271127
1128   MDRV_SOUND_ADD("ay", AY8910, 16000000/16)
1128   MDRV_SOUND_ADD("aysnd", AY8910, 16000000/16)
11291129   MDRV_SOUND_CONFIG(srmp2_ay8910_interface)
11301130   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
11311131
src/mame/drivers/snk68.c
r6428r6429
187187
188188static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
189189   ADDRESS_MAP_GLOBAL_MASK(0xff)
190   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ym", ym3812_status_port_r, ym3812_control_port_w)
191   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ym", ym3812_write_port_w)
190   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_status_port_r, ym3812_control_port_w)
191   AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_write_port_w)
192192   AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", D7759_write_port_0_w)
193193   AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", D7759_upd_reset_w)
194194ADDRESS_MAP_END
r6428r6429
625625   /* sound hardware */
626626   MDRV_SPEAKER_STANDARD_MONO("mono")
627627
628   MDRV_SOUND_ADD("ym", YM3812, XTAL_8MHz/2) /* verified on pcb  */
628   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2) /* verified on pcb  */
629629   MDRV_SOUND_CONFIG(ym3812_config)
630630   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
631631
src/mame/drivers/madalien.c
r6428r6429
112112   AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM
113113   AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_RAM /* unknown device in an epoxy block, might be tilt detection */
114114   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1ffc) AM_READ(madalien_sound_command_r)
115   AM_RANGE(0x8000, 0x8001) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_address_data_w)
115   AM_RANGE(0x8000, 0x8001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_address_data_w)
116116   AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x1ffc) AM_WRITE(soundlatch2_w)
117117   AM_RANGE(0xf800, 0xffff) AM_ROM
118118ADDRESS_MAP_END
r6428r6429
188188   /* audio hardware */
189189   MDRV_SPEAKER_STANDARD_MONO("mono")
190190
191   MDRV_SOUND_ADD("ay", AY8910, SOUND_CLOCK / 4)
191   MDRV_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK / 4)
192192   MDRV_SOUND_CONFIG(ay8910_config)
193193   MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0)
194194   MDRV_SOUND_ROUTE_EX(1, "discrete", 1.0, 1)
src/mame/drivers/aeroboto.c
r6428r6429
2525#include "driver.h"
2626#include "cpu/m6809/m6809.h"
2727#include "sound/ay8910.h"
28#include "aeroboto.h"
2829
2930
30extern UINT8 *aeroboto_videoram;
31extern UINT8 *aeroboto_hscroll, *aeroboto_vscroll, *aeroboto_tilecolor;
32extern UINT8 *aeroboto_starx, *aeroboto_stary, *aeroboto_bgcolor;
33
34VIDEO_START( aeroboto );
35VIDEO_UPDATE( aeroboto );
36
37READ8_HANDLER( aeroboto_in0_r );
38WRITE8_HANDLER( aeroboto_3000_w );
39WRITE8_HANDLER( aeroboto_videoram_w );
40WRITE8_HANDLER( aeroboto_tilecolor_w );
41
42static UINT8 *aeroboto_mainram;
43static int disable_irq = 0;
44
45
4631static READ8_HANDLER( aeroboto_201_r )
4732{
33   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
4834   /* if you keep a button pressed during boot, the game will expect this */
4935   /* serie of values to be returned from 3004, and display "PASS 201" if it is */
50   static const UINT8 res[4] = { 0xff,0x9f,0x1b,0x03};
51   static int count;
52   logerror("PC %04x: read 3004\n",cpu_get_pc(space->cpu));
53   return res[(count++)&3];
36   static const UINT8 res[4] = { 0xff, 0x9f, 0x1b, 0x03 };
37
38   logerror("PC %04x: read 3004\n", cpu_get_pc(space->cpu));
39   return res[(state->count++) & 3];
5440}
5541
5642
5743static INTERRUPT_GEN( aeroboto_interrupt )
5844{
59   if (!disable_irq)
45   aeroboto_state *state = (aeroboto_state *)device->machine->driver_data;
46
47   if (!state->disable_irq)
6048      cpu_set_input_line(device, 0, HOLD_LINE);
6149   else
62      disable_irq--;
50      state->disable_irq--;
6351}
6452
6553static READ8_HANDLER( aeroboto_2973_r )
6654{
67   aeroboto_mainram[0x02be] = 0;
68   return(0xff);
55   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
56
57   state->mainram[0x02be] = 0;
58   return 0xff;
6959}
7060
7161static WRITE8_HANDLER ( aeroboto_1a2_w )
7262{
73   aeroboto_mainram[0x01a2] = data;
74   if (data) disable_irq = 1;
63   aeroboto_state *state = (aeroboto_state *)space->machine->driver_data;
64
65   state->mainram[0x01a2] = data;
66   if (data)
67      state->disable_irq = 1;
7568}
7669
7770static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
7871   AM_RANGE(0x01a2, 0x01a2) AM_WRITE(aeroboto_1a2_w)         // affects IRQ line (more protection?)
79   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&aeroboto_mainram)   // main  RAM
72   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_MEMBER(aeroboto_state, mainram)   // main  RAM
8073   AM_RANGE(0x0800, 0x08ff) AM_RAM                        // tile color buffer; copied to 0x2000
8174   AM_RANGE(0x0900, 0x09ff) AM_WRITEONLY                   // a backup of default tile colors
82   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(aeroboto_videoram_w) AM_BASE(&aeroboto_videoram)      // tile RAM
83   AM_RANGE(0x1800, 0x183f) AM_RAM AM_BASE(&aeroboto_hscroll)   // horizontal scroll regs
84   AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(aeroboto_tilecolor_w) AM_BASE(&aeroboto_tilecolor)   // tile color RAM
75   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(aeroboto_videoram_w) AM_BASE_MEMBER(aeroboto_state, videoram)      // tile RAM
76   AM_RANGE(0x1800, 0x183f) AM_RAM AM_BASE_MEMBER(aeroboto_state, hscroll)   // horizontal scroll regs
77   AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(aeroboto_tilecolor_w) AM_BASE_MEMBER(aeroboto_state, tilecolor)   // tile color RAM
8578   AM_RANGE(0x1840, 0x27ff) AM_WRITENOP               // cleared during custom LSI test
86   AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)            // sprite RAM
79   AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(aeroboto_state, spriteram) AM_SIZE(&spriteram_size)            // sprite RAM
8780   AM_RANGE(0x2900, 0x2fff) AM_WRITENOP               // cleared along with sprite RAM
8881   AM_RANGE(0x2973, 0x2973) AM_READ(aeroboto_2973_r)         // protection read
8982   AM_RANGE(0x3000, 0x3000) AM_READWRITE(aeroboto_in0_r, aeroboto_3000_w)
9083   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_WRITE(soundlatch_w)
9184   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_WRITE(soundlatch2_w)
92   AM_RANGE(0x3003, 0x3003) AM_WRITEONLY AM_BASE(&aeroboto_vscroll)
93   AM_RANGE(0x3004, 0x3004) AM_READ(aeroboto_201_r) AM_WRITEONLY AM_BASE(&aeroboto_starx)
94   AM_RANGE(0x3005, 0x3005) AM_WRITEONLY AM_BASE(&aeroboto_stary)   // usable but probably wrong
95   AM_RANGE(0x3006, 0x3006) AM_WRITEONLY AM_BASE(&aeroboto_bgcolor)
85   AM_RANGE(0x3003, 0x3003) AM_WRITEONLY AM_BASE_MEMBER(aeroboto_state, vscroll)
86   AM_RANGE(0x3004, 0x3004) AM_READ(aeroboto_201_r) AM_WRITEONLY AM_BASE_MEMBER(aeroboto_state, starx)
87   AM_RANGE(0x3005, 0x3005) AM_WRITEONLY AM_BASE_MEMBER(aeroboto_state, stary)   // usable but probably wrong
88   AM_RANGE(0x3006, 0x3006) AM_WRITEONLY AM_BASE_MEMBER(aeroboto_state, bgcolor)
9689   AM_RANGE(0x3800, 0x3800) AM_READNOP                     // watchdog or IRQ ack
9790   AM_RANGE(0x4000, 0xffff) AM_ROM                        // main ROM
9891ADDRESS_MAP_END
r6428r6429
229222
230223static MACHINE_START( formatz )
231224{
232    state_save_register_global(machine, disable_irq);
225   aeroboto_state *state = (aeroboto_state *)machine->driver_data;
226
227   state->stars_rom = memory_region(machine, "gfx2");
228   state->stars_length = memory_region_length(machine, "gfx2");
229
230   state_save_register_global(machine, state->disable_irq);
231   state_save_register_global(machine, state->count);
233232}
234233
234static MACHINE_RESET( formatz )
235{
236   aeroboto_state *state = (aeroboto_state *)machine->driver_data;
237
238   state->disable_irq = 0;
239   state->count = 0;
240
241   state->charbank = 0;
242   state->starsoff = 0;
243   state->ox = 0;
244   state->oy = 0;
245   state->sx = 0;
246   state->sy = 0;
247}
248
235249static MACHINE_DRIVER_START( formatz )
236250
251   /* driver data */
252   MDRV_DRIVER_DATA(aeroboto_state)
253
237254   /* basic machine hardware */
238255   MDRV_CPU_ADD("maincpu", M6809, XTAL_10MHz/8) /* verified on pcb */
239256   MDRV_CPU_PROGRAM_MAP(main_map)
r6428r6429
243260   MDRV_CPU_PROGRAM_MAP(sound_map)
244261   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
245262
246    MDRV_MACHINE_START(formatz)
263   MDRV_MACHINE_START(formatz)
264   MDRV_MACHINE_RESET(formatz)
247265
248266   /* video hardware */
249267   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/konamigv.c
r6428r6429
284284
285285static void scsi_irq(running_machine *machine)
286286{
287   psx_irq_set(machine, PSX_IRQ_EXTCD);
287   psx_irq_set(machine, 0x400);
288288}
289289
290290static const SCSIConfigTable dev_table =
src/mame/drivers/firetrap.c
r6428r6429
299299
300300static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
301301   AM_RANGE(0x0000, 0x07ff) AM_RAM
302   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym", ym3526_w)
302   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym3526_w)
303303   AM_RANGE(0x2000, 0x2000) AM_WRITE(firetrap_adpcm_data_w)   /* ADPCM data for the MSM5205 chip */
304304   AM_RANGE(0x2400, 0x2400) AM_WRITE(firetrap_sound_2400_w)
305305   AM_RANGE(0x2800, 0x2800) AM_WRITE(firetrap_sound_bankselect_w)
r6428r6429
588588   /* sound hardware */
589589   MDRV_SPEAKER_STANDARD_MONO("mono")
590590
591   MDRV_SOUND_ADD("ym", YM3526, 3000000)
591   MDRV_SOUND_ADD("ymsnd", YM3526, 3000000)
592592   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
593593
594594   MDRV_SOUND_ADD("msm", MSM5205, 384000)
r6428r6429
626626   /* sound hardware */
627627   MDRV_SPEAKER_STANDARD_MONO("mono")
628628
629   MDRV_SOUND_ADD("ym", YM3526, 3000000)
629   MDRV_SOUND_ADD("ymsnd", YM3526, 3000000)
630630   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
631631
632632   MDRV_SOUND_ADD("msm", MSM5205, 384000)
src/mame/drivers/thedeep.c
r6428r6429
179179
180180static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
181181   AM_RANGE(0x0000, 0x07ff) AM_RAM
182   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym", ym2203_w   )   //
182   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ymsnd", ym2203_w   )   //
183183   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r            )   // From Main CPU
184184   AM_RANGE(0x8000, 0xffff) AM_ROM
185185ADDRESS_MAP_END
r6428r6429
382382   /* sound hardware */
383383   MDRV_SPEAKER_STANDARD_MONO("mono")
384384
385   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4)  /* verified on pcb */
385   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4)  /* verified on pcb */
386386   MDRV_SOUND_CONFIG(thedeep_ym2203_intf)
387387   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
388388MACHINE_DRIVER_END
src/mame/drivers/oneshot.c
r6428r6429
134134   AM_RANGE(0x0000, 0x7fff) AM_ROM
135135   AM_RANGE(0x8000, 0x8000) AM_READWRITE(soundlatch_r,soundlatch_w)
136136   AM_RANGE(0x8001, 0x87ff) AM_RAM
137   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
137   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)
138138   AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
139139ADDRESS_MAP_END
140140
r6428r6429
372372
373373   MDRV_SPEAKER_STANDARD_MONO("mono")
374374
375   MDRV_SOUND_ADD("ym", YM3812, 3500000)
375   MDRV_SOUND_ADD("ymsnd", YM3812, 3500000)
376376   MDRV_SOUND_CONFIG(ym3812_config)
377377   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
378378
r6428r6429
439439   /* no samples for this game */
440440
441441   ROM_REGION( 0x10000, "user1", 0 )
442   ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
442   ROM_LOAD( "x1snd", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
443443ROM_END
444444
445445ROM_START( maddonnb )
r6428r6429
465465   /* no samples for this game */
466466
467467   ROM_REGION( 0x10000, "user1", 0 )
468   ROM_LOAD( "x1", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
468   ROM_LOAD( "x1snd", 0x00000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) ) // motherboard rom, zooming?
469469ROM_END
470470
471471
src/mame/drivers/dominob.c
r6428r6429
122122   AM_RANGE(0x0000, 0xbfff) AM_READWRITE(SMH_ROM, SMH_NOP) // there are some garbage writes to ROM
123123   AM_RANGE(0xc000, 0xc7ff) AM_RAM
124124
125   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
126   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("ay", ay8910_r)
125   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
126   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_r)
127127   AM_RANGE(0xd008, 0xd008) AM_WRITE(dominob_d008_w)
128128   AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("IN0")
129129   AM_RANGE(0xd010, 0xd010) AM_READ_PORT("IN1") AM_WRITENOP
r6428r6429
266266
267267   /* sound hardware */
268268   MDRV_SPEAKER_STANDARD_MONO("mono")
269   MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */)
269   MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */)
270270   MDRV_SOUND_CONFIG(ay8910_config)
271271   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
272272MACHINE_DRIVER_END
src/mame/drivers/ksys573.c
r6428r6429
644644      atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO | ATAPI_INTREASON_COMMAND;
645645   }
646646
647   psx_irq_set(machine, PSX_IRQ_EXTCD);
647   psx_irq_set(machine, 0x400);
648648
649649   verboselog( machine, 2, "atapi_xfer_end: %d %d\n", atapi_xferlen, atapi_xfermod );
650650}
r6428r6429
695695         atapi_regs[ATAPI_REG_COUNTLOW] = atapi_xferlen & 0xff;
696696         atapi_regs[ATAPI_REG_COUNTHIGH] = (atapi_xferlen>>8)&0xff;
697697
698         psx_irq_set(space->machine, PSX_IRQ_EXTCD);
698         psx_irq_set(space->machine, 0x400);
699699      }
700700
701701      if( atapi_data_ptr < atapi_data_len )
r6428r6429
712712            {
713713               atapi_regs[ATAPI_REG_CMDSTATUS] = 0;
714714               atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO;
715               psx_irq_set(space->machine, PSX_IRQ_EXTCD);
715               psx_irq_set(space->machine, 0x400);
716716            }
717717         }
718718      }
r6428r6429
795795            SCSIWriteData( inserted_cdrom, atapi_data, atapi_cdata_wait );
796796
797797            // assert IRQ
798            psx_irq_set(space->machine, PSX_IRQ_EXTCD);
798            psx_irq_set(space->machine, 0x400);
799799
800800            // not sure here, but clear DRQ at least?
801801            atapi_regs[ATAPI_REG_CMDSTATUS] = 0;
r6428r6429
868868            }
869869
870870            // assert IRQ
871            psx_irq_set(space->machine, PSX_IRQ_EXTCD);
871            psx_irq_set(space->machine, 0x400);
872872         }
873873         else
874874         {
r6428r6429
985985               atapi_regs[ATAPI_REG_COUNTLOW] = 0;
986986               atapi_regs[ATAPI_REG_COUNTHIGH] = 2;
987987
988               psx_irq_set(space->machine, PSX_IRQ_EXTCD);
988               psx_irq_set(space->machine, 0x400);
989989               break;
990990
991991            case 0xef:   // SET FEATURES
r6428r6429
994994               atapi_data_ptr = 0;
995995               atapi_data_len = 0;
996996
997               psx_irq_set(space->machine, PSX_IRQ_EXTCD);
997               psx_irq_set(space->machine, 0x400);
998998               break;
999999
10001000            default:
r6428r6429
13381338   if( ( m_p_n_root_mode[ n_counter ] & RC_IRQOVERFLOW ) != 0 ||
13391339      ( m_p_n_root_mode[ n_counter ] & RC_IRQTARGET ) != 0 )
13401340   {
1341      psx_irq_set( machine, (n_counter == 3) ? PSX_IRQ_ROOTCOUNTER3 : (PSX_IRQ_ROOTCOUNTER0 << n_counter) );
1341      psx_irq_set( machine, 0x10 << n_counter );
13421342   }
13431343}
13441344
src/mame/drivers/sbrkout.c
r6428r6429
568568 *************************************/
569569
570570GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout )
571GAMEL( 1978, sbrkout3, 0, sbrkout, sbrkout, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout )
571GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout )
src/mame/drivers/bladestl.c
r6428r6429
132132
133133static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
134134   AM_RANGE(0x0000, 0x07ff) AM_RAM
135   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   /* YM2203 */
135   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)   /* YM2203 */
136136   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("upd", bladestl_speech_ctrl_w)   /* UPD7759 */
137137   AM_RANGE(0x4000, 0x4000) AM_DEVREAD("upd", bladestl_speech_busy_r)   /* UPD7759 */
138138   AM_RANGE(0x5000, 0x5000) AM_WRITENOP                        /* ??? */
r6428r6429
304304   MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
305305   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
306306
307   MDRV_SOUND_ADD("ym", YM2203, 3579545)
307   MDRV_SOUND_ADD("ymsnd", YM2203, 3579545)
308308   MDRV_SOUND_CONFIG(ym2203_config)
309309   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
310310MACHINE_DRIVER_END
src/mame/drivers/overdriv.c
r6428r6429
266266ADDRESS_MAP_END
267267
268268static ADDRESS_MAP_START( overdriv_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
269   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
269   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
270270   AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("konami1", k053260_r,k053260_w)
271271   AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("konami2", k053260_r,k053260_w)
272272   AM_RANGE(0x0800, 0x0fff) AM_RAM
r6428r6429
371371   /* sound hardware */
372372   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
373373
374   MDRV_SOUND_ADD("ym", YM2151, 3579545)
374   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
375375   MDRV_SOUND_ROUTE(0, "lspeaker", 0.5)
376376   MDRV_SOUND_ROUTE(1, "rspeaker", 0.5)
377377
src/mame/drivers/jackpool.c
r6428r6429
99 this is actually the m68k C compiler used for doing this game.
1010
1111TODO:
12-Correct NVRAM emulation (and default eeprom too?);
13-Doesn't accept coins? (might be related to the eeprom);
14-Transparent pen issue on the text layer? (might be a btanb);
15-Understand master-slave comms properly;
12-Correct NVRAM emulation (and default eeprom too?), you cannot save settings to the EEPROM
13 right now, also remove the patch (it doesn't boot otherwise);
14-UART;
1615
1716*******************************************************************************************/
1817
r6428r6429
2019#include "cpu/m68000/m68000.h"
2120#include "sound/okim6295.h"
2221#include "machine/eeprom.h"
23#include "rendlay.h"
2422
2523
26static UINT16 *sc0_vram;
27static UINT16 *sc1_vram;
28static UINT16 *sc2_vram;
29static UINT16 *sc3_vram;
30
24static UINT16 *jackpool_vram;
25static UINT8 map_vreg;
3126static UINT16 *jackpool_io;
3227
28
3329static VIDEO_START(jackpool)
3430{
3531}
3632
3733static VIDEO_UPDATE(jackpool)
3834{
39   const device_config *left_screen  = devtag_get_device(screen->machine, "lscreen");
40   const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
4135   const gfx_element *gfx = screen->machine->gfx[0];
4236   int count;// = 0x00000/2;
4337
4438   int y,x;
4539
46   if(screen == left_screen)
4740   {
48      count = 0x0000/2;
41      count = map_vreg*(0x4000/2);
4942      for (y=0;y<32;y++)
5043      {
5144         for (x=0;x<64;x++)
5245         {
53            int tile = (sc1_vram[count] & 0x7fff);
54            int attr = (sc1_vram[count+0x800] & 0x1f00)>>8;
55            //int t_pen = (sc1_vram[count+0x800] & 0x2000);
56            //int colour = tile>>12;
57            drawgfx_opaque(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8);
46            int tile = (jackpool_vram[count+(0x2000/2)] & 0x7fff);
47            int attr = (jackpool_vram[count+(0x2000/2)+0x800] & 0x1f00)>>8;
5848
49            drawgfx_opaque(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8);
5950            count++;
6051         }
6152      }
6253
63      count = 0x0000/2;
54      count = map_vreg*(0x4000/2);
6455      for (y=0;y<32;y++)
6556      {
6657         for (x=0;x<64;x++)
6758         {
68            int tile = (sc0_vram[count] & 0x7fff);
69            int attr = (sc0_vram[count+0x800] & 0x1f00)>>8;
70            /*might just be sloppy coding,colors are enabled as 0x20-0x3f*/
71            int t_pen = (sc0_vram[count+0x800] & 0x2000);
72            //int colour = tile>>12;
73            drawgfx_transpen(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8,(t_pen) ? -1 : 0);
74            count++;
75         }
76      }
77   }
59            int tile = (jackpool_vram[count] & 0x7fff);
7860
79   if(screen == right_screen)
80   {
81      count = 0x0000/2;
82      for (y=0;y<32;y++)
83      {
84         for (x=0;x<64;x++)
85         {
86            int tile = (sc2_vram[count] & 0x7fff);
87            int attr = (sc2_vram[count+0x800] & 0x1f00)>>8;
88            //int t_pen = (sc1_vram[count+0x800] & 0x2000);
89            //int colour = tile>>12;
90            drawgfx_opaque(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8);
61            if(tile != 0)
62            {
63               int attr = (jackpool_vram[count+0x800] & 0x1f00)>>8;
64               int t_pen = (jackpool_vram[count+0x800] & 0x1000);
9165
92            count++;
93         }
94      }
66               drawgfx_transpen(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8,(t_pen) ? 0 : -1);
67            }
9568
96      count = 0x0000/2;
97      for (y=0;y<32;y++)
98      {
99         for (x=0;x<64;x++)
100         {
101            int tile = (sc3_vram[count] & 0x7fff);
102            int attr = (sc3_vram[count+0x800] & 0x1f00)>>8;
103            /*might just be sloppy coding,colors are enabled as 0x20-0x3f*/
104            int t_pen = (sc3_vram[count+0x800] & 0x2000);
105            //int colour = tile>>12;
106            drawgfx_transpen(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8,(t_pen) ? -1 : 0);
10769            count++;
10870         }
10971      }
r6428r6429
12284{
12385   switch(offset*2)
12486   {
125      case 0x0: return input_port_read(space->machine,"COIN1");
126      case 0x8: return input_port_read(space->machine,"SERVICE1");
127      case 0xa: return input_port_read(space->machine,"SERVICE2");//probably not a button
128      case 0xc: return input_port_read(space->machine,"PAYOUT");
129      case 0xe: return input_port_read(space->machine,"START2");
87      case 0x00: return input_port_read(space->machine,"COIN1");
88      case 0x04: return input_port_read(space->machine,"UNK1");
89      case 0x06: return input_port_read(space->machine,"UNK2");
90      case 0x08: return input_port_read(space->machine,"SERVICE1");
91      case 0x0a: return input_port_read(space->machine,"SERVICE2");//probably not a button, remote?
92      case 0x0c: return input_port_read(space->machine,"PAYOUT");
93      case 0x0e: return input_port_read(space->machine,"START2");
13094      case 0x10: return input_port_read(space->machine,"HOLD3");
13195      case 0x12: return input_port_read(space->machine,"HOLD4");
13296      case 0x14: return input_port_read(space->machine,"HOLD2");
r6428r6429
13498      case 0x18: return input_port_read(space->machine,"HOLD5");
13599      case 0x1a: return input_port_read(space->machine,"START1");
136100      case 0x1c: return input_port_read(space->machine,"BET");
137//      case 0x2c: eeprom 1 r?
138//      case 0x2e: eeprom 2 r?
101      case 0x1e: return 0xff; //ticket motor
102      case 0x20: return 0xff; //hopper motor
103        case 0x2c: return eeprom_read_bit();
104        case 0x2e: return eeprom_read_bit();
105//      default: printf("R %02x\n",offset*2); break;
139106   }
140107
141108//  printf("R %02x\n",offset*2);
r6428r6429
144111
145112static WRITE16_HANDLER( jackpool_io_w )
146113{
147//  printf("W %02x %02x\n",offset*2,data);
148114   COMBINE_DATA(&jackpool_io[offset]);
149115
116   switch(offset*2)
117   {
118      case 0x30: /* ---- ---x HOLD3 lamp */  break;
119      case 0x32: /* ---- ---x HOLD4 lamp */  break;
120      case 0x34: /* ---- ---x HOLD2 lamp */  break;
121      case 0x36: /* ---- ---x HOLD1 lamp */  break;
122      case 0x38: /* ---- ---x HOLD5 lamp */  break;
123      case 0x3a: /* ---- ---x START1 lamp */ break;
124      case 0x3c: /* ---- ---x BET lamp */    break;
125      case 0x3e: break;
126      case 0x40: /* ---- ---x PAYOUT lamp */ break;
127      case 0x46: /* ---- ---x coin counter */break;
128      case 0x4a: /* ---- ---x Ticket motor */break;
129      case 0x4c: /* ---- ---x Hopper motor */break;
130      case 0x4e: map_vreg = data & 1;        break;
131      case 0x50: eeprom_set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
132      case 0x52: eeprom_set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
133      case 0x54: eeprom_write_bit(data & 1); break;
134//      case 0x5a: eeprom_set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
135//      case 0x5c: eeprom_set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
136      case 0x60: break;
137//      default: printf("[%02x] <- %02x W\n",offset*2,data);      break;
138   }
139
150140   #if 0
151141   if(offset*2 == 0x54)
152142   {
r6428r6429
170160   AM_RANGE(0x000000, 0x03ffff) AM_ROM
171161   AM_RANGE(0x100000, 0x10ffff) AM_RAM
172162   AM_RANGE(0x120000, 0x1200ff) AM_RAM
173   AM_RANGE(0x340000, 0x341fff) AM_RAM AM_BASE(&sc0_vram)
174   AM_RANGE(0x342000, 0x343fff) AM_RAM AM_BASE(&sc1_vram)
175   AM_RANGE(0x344000, 0x345fff) AM_RAM AM_BASE(&sc2_vram)
176   AM_RANGE(0x346000, 0x347fff) AM_RAM AM_BASE(&sc3_vram)
177   /* are the ones below used? */
178   AM_RANGE(0x348000, 0x349fff) AM_RAM
179   AM_RANGE(0x34a000, 0x34bfff) AM_RAM
180   AM_RANGE(0x34c000, 0x34dfff) AM_RAM
181   AM_RANGE(0x34e000, 0x34ffff) AM_RAM
163   AM_RANGE(0x340000, 0x347fff) AM_RAM AM_BASE(&jackpool_vram)
164   AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3?
182165
183166   AM_RANGE(0x360000, 0x3603ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
184167   AM_RANGE(0x380000, 0x380061) AM_READWRITE(jackpool_io_r,jackpool_io_w) AM_BASE(&jackpool_io)//AM_READ(jackpool_io_r)
185168
186   AM_RANGE(0x800000, 0x80000f) AM_READ(jackpool_ff_r) AM_WRITENOP
169   AM_RANGE(0x800000, 0x80000f) AM_READ(jackpool_ff_r) AM_WRITENOP //UART
187170   AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
188171ADDRESS_MAP_END
189172
r6428r6429
202185   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
203186   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
204187   PORT_START("START1")
205   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
188   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_1) PORT_NAME("Deal / W-Up")
206189   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
207190   PORT_START("START2")
208191   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
209192   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
210193   PORT_START("BET")
211   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Cancel")
194   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Cancel / Take")
212195   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
213196   PORT_START("HOLD1")
214197   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
215198   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
216199   PORT_START("HOLD2")
217   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
200   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Low")
218201   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
219202   PORT_START("HOLD3")
220203   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
221204   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
222205   PORT_START("HOLD4")
223   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
206   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / High")
224207   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
225208   PORT_START("HOLD5")
226209   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
227210   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
211   /* these two both crashes the CPU*/
212   PORT_START("UNK1")
213   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
214   PORT_START("UNK2")
215   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
228216INPUT_PORTS_END
229217
230218
r6428r6429
254242static MACHINE_DRIVER_START( jackpool )
255243   MDRV_CPU_ADD("maincpu", M68000, 12000000) // ?
256244   MDRV_CPU_PROGRAM_MAP(jackpool_mem)
257   MDRV_CPU_VBLANK_INT("lscreen",jackpool_interrupt)  // ?
245   MDRV_CPU_VBLANK_INT("screen",jackpool_interrupt)  // ?
258246
259247   MDRV_GFXDECODE(jackpool)
260   MDRV_DEFAULT_LAYOUT(layout_dualhsxs)
261248
262   MDRV_SCREEN_ADD("lscreen", RASTER)
249   MDRV_SCREEN_ADD("screen", RASTER)
263250   MDRV_SCREEN_REFRESH_RATE(60)
264   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
251   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
265252   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
266253   MDRV_SCREEN_SIZE(64*8, 64*8)
267254   MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
268255
269   MDRV_SCREEN_ADD("rscreen", RASTER)
270   MDRV_SCREEN_REFRESH_RATE(60)
271   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
272   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
273   MDRV_SCREEN_SIZE(64*8, 64*8)
274   MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
275
276256   MDRV_NVRAM_HANDLER(93C46)
277257
278258   MDRV_PALETTE_LENGTH(0x200)
r6428r6429
303283   ROM_LOAD( "jpc7", 0xc0000, 0x40000,  CRC(b1d40623) SHA1(fb76ae6b53474bd4bee19dbce9537da0f2b63ff4) )
304284ROM_END
305285
306GAME( 1997, jackpool, 0, jackpool, jackpool, 0, ROT0, "Electronic Projects", "Jackpot Cards / Jackpot Pool (Italy)",GAME_NOT_WORKING )
286static DRIVER_INIT( jackpool )
287{
288   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
289
290   /* patch NVRAM routine */
291   rom[0x9040/2] = 0x6602;
292}
293
294GAME( 1997, jackpool, 0, jackpool, jackpool, jackpool, ROT0, "Electronic Projects", "Jackpot Cards / Jackpot Pool (Italy)",GAME_NOT_WORKING )
src/mame/drivers/nmg5.c
r6428r6429
347347static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
348348   ADDRESS_MAP_GLOBAL_MASK(0xff)
349349   AM_RANGE(0x00, 0x00) AM_DEVWRITE("oki", oki_banking_w)
350   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
350   AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
351351   AM_RANGE(0x18, 0x18) AM_READ(soundlatch_r)
352352   AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
353353ADDRESS_MAP_END
r6428r6429
10091009   /* sound hardware */
10101010   MDRV_SPEAKER_STANDARD_MONO("mono")
10111011
1012   MDRV_SOUND_ADD("ym", YM3812, 4000000) /* 4MHz */
1012   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) /* 4MHz */
10131013   MDRV_SOUND_CONFIG(ym3812_intf)
10141014   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
10151015
src/mame/drivers/xmen.c
r6428r6429
185185   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
186186   AM_RANGE(0xc000, 0xdfff) AM_RAM
187187   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
188   AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
188   AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
189189   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w)
190190   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
191191   AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
r6428r6429
378378   /* sound hardware */
379379   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
380380
381   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4)   /* verified on pcb */
381   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
382382   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
383383   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
384384
r6428r6429
454454   /* sound hardware */
455455   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
456456
457   MDRV_SOUND_ADD("ym", YM2151, 4000000)
457   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
458458   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
459459   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
460460
src/mame/drivers/mario.c
r6428r6429
9595
9696#include "mario.h"
9797
98static READ8_DEVICE_HANDLER(mario_dma_read_byte);
99static WRITE8_DEVICE_HANDLER(mario_dma_write_byte);
100
10198/*************************************
10299 *
103100 *  statics
104101 *
105102 *************************************/
106103
107static const z80dma_interface mario_dma =
104static Z80DMA_INTERFACE( mario_dma )
108105{
109   "maincpu",
110
111   mario_dma_read_byte,
112   mario_dma_write_byte,
113   0, 0, 0, 0,
114   NULL
106   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_HALT),
107   DEVCB_NULL,
108   DEVCB_NULL,
109   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte),
110   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte),
111   DEVCB_NULL,
112   DEVCB_NULL
115113};
116114
117/*************************************
118 *
119 *  Machine setup
120 *
121 *************************************/
122
123/*************************************
124 *
125 *  DMA handling
126 *
127 *************************************/
128
129static READ8_DEVICE_HANDLER(mario_dma_read_byte)
115static WRITE8_DEVICE_HANDLER( mario_z80dma_rdy_w )
130116{
131   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
132   return memory_read_byte(space, offset);
117   z80dma_rdy_w(device, data & 0x01);
133118}
134119
135static WRITE8_DEVICE_HANDLER(mario_dma_write_byte)
136{
137   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
138   memory_write_byte(space, offset, data);
139}
140120
141121/*************************************
142122 *
r6428r6429
156136   AM_RANGE(0x7e82, 0x7e82) AM_WRITE(mario_flip_w)
157137   AM_RANGE(0x7e83, 0x7e83) AM_WRITE(mario_palettebank_w)
158138   AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w)
159   AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", z80dma_rdy_w)   /* ==> DMA Chip */
139   AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", mario_z80dma_rdy_w)   /* ==> DMA Chip */
160140   AM_RANGE(0x7f00, 0x7f07) AM_WRITE(mario_sh3_w) /* Sound port */
161141   AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW")   /* DSW */
162142   AM_RANGE(0x7e00, 0x7e00) AM_WRITE(mario_sh_tuneselect_w)
r6428r6429
176156   AM_RANGE(0x7e82, 0x7e82) AM_WRITE(mario_flip_w)
177157   AM_RANGE(0x7e83, 0x7e83) AM_WRITE(mario_palettebank_w)
178158   AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w)
179   AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", z80dma_rdy_w)   /* ==> DMA Chip */
159   AM_RANGE(0x7e85, 0x7e85) AM_DEVWRITE("z80dma", mario_z80dma_rdy_w)   /* ==> DMA Chip */
180160   AM_RANGE(0x7f00, 0x7f00) AM_WRITE(masao_sh_irqtrigger_w)
181161   AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW")   /* DSW */
182162   AM_RANGE(0xf000, 0xffff) AM_ROM
src/mame/drivers/nbmj8900.c
r0r6429
1/******************************************************************************
2
3    nbmj8900 - Nichibutsu Mahjong games for years 1989
4
5    Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2007/05/13 -
6
7******************************************************************************/
8/******************************************************************************
9
10Notes:
11
12TODO:
13
14- Real machine has ROMs for protection, but I don't know how to access the ROM,
15  so I'm doing something that works but is probably wrong.
16  The interesting thing about that ROM is that it comes from other, older games,
17  so it isn't needed, it's just verified for protection.
18
19- Some games display "GFXROM BANK OVER!!" or "GFXROM ADDRESS OVER!!"
20  in Debug build.
21
22- Screen flipping is not perfect.
23
24******************************************************************************/
25
26#include "driver.h"
27#include "nb1413m3.h"
28#include "cpu/z80/z80.h"
29#include "sound/dac.h"
30#include "sound/ay8910.h"
31#include "sound/3812intf.h"
32
33
34#define SIGNED_DAC   0      // 0:unsigned DAC, 1:signed DAC
35#if SIGNED_DAC
36#define DAC_WRITE   dac_signed_w
37#else
38#define DAC_WRITE   dac_w
39#endif
40
41
42
43extern VIDEO_UPDATE( nbmj8900 );
44extern VIDEO_START( nbmj8900_2layer );
45
46extern READ8_HANDLER( nbmj8900_palette_type1_r );
47extern WRITE8_HANDLER( nbmj8900_palette_type1_w );
48extern WRITE8_HANDLER( nbmj8900_blitter_w );
49extern WRITE8_HANDLER( nbmj8900_scrolly_w );
50extern WRITE8_HANDLER( nbmj8900_vramsel_w );
51extern WRITE8_HANDLER( nbmj8900_romsel_w );
52extern WRITE8_HANDLER( nbmj8900_clutsel_w );
53extern READ8_HANDLER( nbmj8900_clut_r );
54extern WRITE8_HANDLER( nbmj8900_clut_w );
55
56
57static DRIVER_INIT( ohpaipee )
58{
59#if 0
60   UINT8 *prot = memory_region(machine, "protdata");
61   int i;
62
63   /* this is one possible way to rearrange the protection ROM data to get the
64       expected 0x8374 checksum. It's probably completely wrong! But since the
65       game doesn't do anything else with that ROM, this is more than enough. I
66       could just fill this are with fake data, the only thing that matters is
67       the checksum. */
68
69   for (i = 0;i < 0x20000;i++)
70   {
71      prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
72   }
73#else
74   unsigned char *ROM = memory_region(machine, "maincpu");
75
76   // Protection ROM check skip
77   ROM[0x00e4] = 0x00;
78   ROM[0x00e5] = 0x00;
79   ROM[0x00e6] = 0x00;
80   // Program ROM SUM check skip
81   ROM[0x025c] = 0x00;
82   ROM[0x025d] = 0x00;
83#endif
84
85   nb1413m3_type = NB1413M3_OHPAIPEE;
86
87//  init_nb1413m3(machine);
88}
89
90static DRIVER_INIT( togenkyo )
91{
92#if 0
93   UINT8 *prot = memory_region(machine, "protdata");
94   int i;
95
96   /* this is one possible way to rearrange the protection ROM data to get the
97       expected 0x5ece checksum. It's probably completely wrong! But since the
98       game doesn't do anything else with that ROM, this is more than enough. I
99       could just fill this are with fake data, the only thing that matters is
100       the checksum. */
101   for (i = 0;i < 0x20000;i++)
102   {
103      prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
104   }
105#else
106   unsigned char *ROM = memory_region(machine, "maincpu");
107
108   // Protection ROM check skip
109   ROM[0x010b] = 0x00;
110   ROM[0x010c] = 0x00;
111   ROM[0x010d] = 0x00;
112   // Program ROM SUM check skip
113//  ROM[0x025c] = 0x00;
114//  ROM[0x025d] = 0x00;
115#endif
116
117   nb1413m3_type = NB1413M3_TOGENKYO;
118
119//S init_nb1413m3(machine);
120}
121
122
123static ADDRESS_MAP_START( ohpaipee_map, ADDRESS_SPACE_PROGRAM, 8 )
124   AM_RANGE(0x0000, 0xefff) AM_ROM
125   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8900_clut_r, nbmj8900_clut_w)
126   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8900_palette_type1_r, nbmj8900_palette_type1_w)
127   AM_RANGE(0xf800, 0xffff) AM_RAM
128ADDRESS_MAP_END
129
130static ADDRESS_MAP_START( togenkyo_map, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0xefff) AM_ROM
132   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8900_clut_r, nbmj8900_clut_w)
133   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8900_palette_type1_r, nbmj8900_palette_type1_w)
134   AM_RANGE(0xf800, 0xffff) AM_RAM
135ADDRESS_MAP_END
136
137static ADDRESS_MAP_START( ohpaipee_io_map, ADDRESS_SPACE_IO, 8 )
138   ADDRESS_MAP_GLOBAL_MASK(0xff)
139   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
140   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
141   AM_RANGE(0x20, 0x27) AM_WRITE(nbmj8900_blitter_w)
142
143   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8900_clutsel_w)
144   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8900_romsel_w)
145   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8900_scrolly_w)
146
147   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)
148
149   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
150
151   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
152   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
153   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
154   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
155   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8900_vramsel_w)
156   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
157   AM_RANGE(0xf1, 0xf1) AM_READWRITE(nb1413m3_dipsw2_r, nb1413m3_outcoin_w)
158ADDRESS_MAP_END
159
160
161INPUT_PORTS_START( ohpaipee )
162   PORT_START("DSWA")
163   PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" )
164   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
165   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
166   PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" )
167   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
168   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
169   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) )
170   PORT_DIPSETTING(    0x04, DEF_STR( 1C_1C ) )
171   PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
172   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
173   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
174   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
175   PORT_DIPNAME( 0x10, 0x00, "Game Sounds" )
176   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
177   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
178   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
179   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
180   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
181   PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" )
182   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
183   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
184   PORT_DIPNAME( 0x80, 0x80, "Character Display Test" )
185   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
186   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
187
188   PORT_START("DSWB")
189   PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" )
190   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
191   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
192   PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" )
193   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
194   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
195   PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" )
196   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
197   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
198   PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" )
199   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
200   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
201   PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" )
202   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
203   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
204   PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" )
205   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
206   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
207   PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" )
208   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
209   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
210   PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" )
211   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
212   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
213
214   PORT_START("SYSTEM")
215   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )         // DRAW BUSY
216   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
217   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
218   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
219   PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
220   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
221   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
222   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
223
224   PORT_START("P1")
225   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )      PORT_PLAYER(1)
226   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )      PORT_PLAYER(1)
227   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )   PORT_PLAYER(1) PORT_4WAY
228   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  )   PORT_PLAYER(1) PORT_4WAY
229   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  )   PORT_PLAYER(1) PORT_4WAY
230   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    )   PORT_PLAYER(1) PORT_4WAY
231   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
232   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
233
234   PORT_START("P2")
235   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )      PORT_PLAYER(2)
236   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )      PORT_PLAYER(2)
237   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )   PORT_PLAYER(2) PORT_4WAY
238   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  )   PORT_PLAYER(2) PORT_4WAY
239   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  )   PORT_PLAYER(2) PORT_4WAY
240   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    )   PORT_PLAYER(2) PORT_4WAY
241   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
242   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
243INPUT_PORTS_END
244
245INPUT_PORTS_START( togenkyo )
246   PORT_START("DSWA")
247   PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" )
248   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
249   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
250   PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" )
251   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
252   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
253   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) )
254   PORT_DIPSETTING(    0x04, DEF_STR( 1C_1C ) )
255   PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
256   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
257   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
258   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
259   PORT_DIPNAME( 0x10, 0x00, "Game Sounds" )
260   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
261   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
262   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
263   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
264   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
265   PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" )
266   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
267   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
268   PORT_DIPNAME( 0x80, 0x80, "Character Display Test" )
269   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
270   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
271
272   PORT_START("DSWB")
273   PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" )
274   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
275   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
276   PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" )
277   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
278   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
279   PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" )
280   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
281   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
282   PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" )
283   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
284   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
285   PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" )
286   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
287   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
288   PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" )
289   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
290   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
291   PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" )
292   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
293   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
294   PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" )
295   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
296   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
297
298   PORT_START("SYSTEM")
299   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )         // DRAW BUSY
300   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
301   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
302   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
303   PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
304   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
305   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
306   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
307
308   PORT_START("P1")
309   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )      PORT_PLAYER(1)
310   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )      PORT_PLAYER(1)
311   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )   PORT_PLAYER(1) PORT_4WAY
312   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  )   PORT_PLAYER(1) PORT_4WAY
313   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  )   PORT_PLAYER(1) PORT_4WAY
314   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    )   PORT_PLAYER(1) PORT_4WAY
315   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
316   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
317
318   PORT_START("P2")
319   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )      PORT_PLAYER(2)
320   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )      PORT_PLAYER(2)
321   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )   PORT_PLAYER(2) PORT_4WAY
322   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  )   PORT_PLAYER(2) PORT_4WAY
323   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  )   PORT_PLAYER(2) PORT_4WAY
324   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    )   PORT_PLAYER(2) PORT_4WAY
325   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
326   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
327INPUT_PORTS_END
328
329
330
331static MACHINE_DRIVER_START( ohpaipee )
332
333   /* basic machine hardware */
334   MDRV_CPU_ADD("maincpu", Z80, 20000000/4)   /* 5.00 MHz ? */
335   MDRV_CPU_PROGRAM_MAP(ohpaipee_map)
336   MDRV_CPU_IO_MAP(ohpaipee_io_map)
337   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
338
339   MDRV_MACHINE_RESET(nb1413m3)
340
341   /* video hardware */
342   MDRV_SCREEN_ADD("screen", RASTER)
343   MDRV_SCREEN_REFRESH_RATE(60)
344   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
345   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
346   MDRV_SCREEN_SIZE(512, 256)
347   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
348   MDRV_PALETTE_LENGTH(256)
349
350   MDRV_VIDEO_START(nbmj8900_2layer)
351   MDRV_VIDEO_UPDATE(nbmj8900)
352
353   /* sound hardware */
354   MDRV_SPEAKER_STANDARD_MONO("mono")
355
356   MDRV_SOUND_ADD("ymsnd", YM3812, 2500000)
357   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
358
359   MDRV_SOUND_ADD("dac", DAC, 0)
360   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
361MACHINE_DRIVER_END
362
363
364static MACHINE_DRIVER_START( togenkyo )
365
366   /* basic machine hardware */
367   MDRV_IMPORT_FROM(ohpaipee)
368   MDRV_CPU_MODIFY("maincpu")
369   MDRV_CPU_PROGRAM_MAP(togenkyo_map)
370MACHINE_DRIVER_END
371
372
373
374ROM_START( ohpaipee )
375   ROM_REGION( 0x10000, "maincpu", 0 ) /* program */
376   ROM_LOAD( "02.3h",  0x00000, 0x10000, CRC(2b6c9afc) SHA1(591a7016ebd99d4a2bfdef5e99da3a1ac9d30d75) )
377
378   ROM_REGION( 0x20000, "voice", 0 ) /* voice */
379   ROM_LOAD( "01.2k",  0x00000, 0x10000, CRC(6ea76e01) SHA1(194a80e4a3a9d660aea0a9790ce1f4e295bae7ab) )
380
381   ROM_REGION( 0x200000, "gfx", 0 ) /* gfx */
382   ROM_LOAD( "03.8c",  0x000000, 0x10000, CRC(33b12763) SHA1(62b9753b65bebad9255a60375d2cf257496a085d) )
383   ROM_LOAD( "04.8d",  0x010000, 0x10000, CRC(303fcf10) SHA1(6275a38f319665c4352ca6814f8bf2b3d1739b41) )
384   ROM_LOAD( "05.8f",  0x020000, 0x10000, CRC(ce394575) SHA1(bdfcafed983b705474f3be3ce8f9a5aea8b33bc1) )
385   ROM_LOAD( "06.8f",  0x030000, 0x10000, CRC(9d943b6e) SHA1(d605f6e95cbc09124a73987941d17c53bd4fabf2) )
386   ROM_LOAD( "07.8h",  0x040000, 0x10000, CRC(40c25d2f) SHA1(11fe84be8f15a37a505dd8d5c82dbaf0366f266a) )
387   ROM_LOAD( "08.8j",  0x050000, 0x10000, CRC(65520a0e) SHA1(b62cfc3d1ee00e309196a16645ff58a31cb45081) )
388   ROM_LOAD( "09.8k",  0x060000, 0x10000, CRC(3f4940f9) SHA1(410ab6e429b65d577eccef3ffcfdec912442a4b0) )
389   ROM_LOAD( "10.8l",  0x070000, 0x10000, CRC(325c80ff) SHA1(c9612db209b74a56fd40ddd534d24a44e4df3874) )
390   ROM_LOAD( "11.8m",  0x080000, 0x10000, CRC(d779661b) SHA1(914f29a1dde2861542ced28735441b05a520409a) )
391
392   ROM_REGION( 0x40000, "protdata", 0 ) /* protection data */
393   ROM_LOAD( "4i.bin", 0x000000, 0x40000, CRC(88f33049) SHA1(8b2d019b09ed854f40a8b0c7782645f50b1f2900) )   // same as housemnq/4i.bin gfx data
394ROM_END
395
396ROM_START( togenkyo )
397   ROM_REGION( 0x10000, "maincpu", 0 ) /* program */
398   ROM_LOAD( "02.3h",  0x00000, 0x10000, CRC(a0cc6700) SHA1(49132e00d15aa00f065bbac5e850d08032845ac7) )
399
400   ROM_REGION( 0x20000, "voice", 0 ) /* voice */
401   ROM_LOAD( "01.2k",  0x00000, 0x10000, CRC(5346786b) SHA1(7141b38339ec4f2b1c6d0a604b5e70cb9beccdf1) )
402
403   ROM_REGION( 0x200000, "gfx", 0 ) /* gfx */
404   ROM_LOAD( "03.8c",  0x000000, 0x10000, CRC(ce64cb8b) SHA1(b1f99991e19be49d1aac774c79acc527c9379245) )
405   ROM_LOAD( "04.8d",  0x010000, 0x10000, CRC(50dd908f) SHA1(28bd5824c55e16c1d62c24577831723c9aded057) )
406   ROM_LOAD( "05.8f",  0x020000, 0x10000, CRC(903004e0) SHA1(c017af37cb90b5335bd53b5b62e883be590353fb) )
407   ROM_LOAD( "06.8f",  0x030000, 0x10000, CRC(fa47c1e6) SHA1(ebd365fec250056366422361d3c722ae7b30a0a4) )
408   ROM_LOAD( "07.8h",  0x040000, 0x10000, CRC(741bde2a) SHA1(9bf1680dc93def5ea6de929eebf05697f6ea43d1) )
409   ROM_LOAD( "08.8j",  0x050000, 0x10000, CRC(c3dd2339) SHA1(6cae7b26ff09dae3758c0c8060731f6c777c5b40) )
410   ROM_LOAD( "09.8k",  0x060000, 0x10000, CRC(afb1c766) SHA1(58d4c6d00276ebebaca7a42fc47350d5ea310b8e) )
411   ROM_LOAD( "10.8l",  0x070000, 0x10000, CRC(18e2a1d4) SHA1(82750e34ba28e10ae3ab935eafd49643d3d057cc) )
412   ROM_LOAD( "11.8m",  0x080000, 0x10000, CRC(811682c2) SHA1(5dfc78ce409d8932cf078ced2616e950a52d5d0e) )
413   ROM_LOAD( "12.8n",  0x090000, 0x10000, CRC(97808a68) SHA1(3738b2d0ec0dcd1aea19103ffccafde0e84d6c71) )
414   ROM_LOAD( "13.10c", 0x0a0000, 0x10000, CRC(ac61612d) SHA1(29854c5e758a2962daa6e281f7c6af87624c53d8) )
415   ROM_LOAD( "14.10d", 0x0b0000, 0x10000, CRC(cb472acc) SHA1(82b4089412ecded903745e5382a301c53a483698) )
416
417   ROM_REGION( 0x40000, "protdata", 0 ) /* protection data */
418   ROM_LOAD( "4i.bin", 0x000000, 0x40000, CRC(88f33049) SHA1(8b2d019b09ed854f40a8b0c7782645f50b1f2900) )   // same as housemnq/4i.bin gfx data
419ROM_END
420
421//    YEAR,     NAME,   PARENT,  MACHINE,    INPUT,     INIT, MONITOR,COMPANY,FULLNAME,FLAGS)
422GAME( 1989, ohpaipee,        0, ohpaipee, ohpaipee, ohpaipee,  ROT270, "Nichibutsu", "Oh! Paipee (Japan 890227)", GAME_IMPERFECT_GRAPHICS )
423GAME( 1989, togenkyo,        0, togenkyo, togenkyo, togenkyo,    ROT0, "Nichibutsu", "Tougenkyou (Japan 890418)", 0 )
src/mame/drivers/atarifb.c
r6428r6429
112112#include "atarifb4.lh"
113113#include "abaseb.lh"
114114
115
116
117115/*************************************
118116 *
119117 *  Palette generation
r6428r6429
123121static PALETTE_INIT( atarifb )
124122{
125123   /* chars */
126   palette_set_color(machine,0,MAKE_RGB(0xff,0xff,0xff)); /* white  */
127   palette_set_color(machine,1,MAKE_RGB(0x00,0x00,0x00)); /* black  */
124   palette_set_color(machine, 0, MAKE_RGB(0xff,0xff,0xff)); /* white  */
125   palette_set_color(machine, 1, MAKE_RGB(0x00,0x00,0x00)); /* black  */
128126
129127   /* sprites */
130   palette_set_color(machine,2,MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
131   palette_set_color(machine,3,MAKE_RGB(0xff,0xff,0xff)); /* white  */
132   palette_set_color(machine,4,MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
133   palette_set_color(machine,5,MAKE_RGB(0x00,0x00,0x00)); /* black  */
128   palette_set_color(machine, 2, MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
129   palette_set_color(machine, 3, MAKE_RGB(0xff,0xff,0xff)); /* white  */
130   palette_set_color(machine, 4, MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
131   palette_set_color(machine, 5, MAKE_RGB(0x00,0x00,0x00)); /* black  */
134132
135133   /* sprite masks */
136   palette_set_color(machine,6,MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
137   palette_set_color(machine,7,MAKE_RGB(0x80,0x80,0x80)); /* grey  */
138   palette_set_color(machine,8,MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
139   palette_set_color(machine,9,MAKE_RGB(0x00,0x00,0x00)); /* black  */
140   palette_set_color(machine,10,MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
141   palette_set_color(machine,11,MAKE_RGB(0xff,0xff,0xff)); /* white  */
134   palette_set_color(machine, 6, MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
135   palette_set_color(machine, 7, MAKE_RGB(0x80,0x80,0x80)); /* grey  */
136   palette_set_color(machine, 8, MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
137   palette_set_color(machine, 9, MAKE_RGB(0x00,0x00,0x00)); /* black  */
138   palette_set_color(machine, 10, MAKE_RGB(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
139   palette_set_color(machine, 11, MAKE_RGB(0xff,0xff,0xff)); /* white  */
142140}
143141
144142
r6428r6429
152150static ADDRESS_MAP_START( atarifb_map, ADDRESS_SPACE_PROGRAM, 8 )
153151   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
154152   AM_RANGE(0x0000, 0x01ff) AM_RAM
155   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
153   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap1_videoram)
156154   AM_RANGE(0x0260, 0x039f) AM_RAM
157   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE(&atarifb_alphap2_videoram)
158   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE(&atarifb_field_videoram)
159   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
160   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE(&atarifb_scroll_register) /* OUT 0 */
155   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
156   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
157   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE(&spriteram_size)
158   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
161159   AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb_out1_w) /* OUT 1 */
162160   AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
163161   AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
r6428r6429
172170static ADDRESS_MAP_START( atarifb4_map, ADDRESS_SPACE_PROGRAM, 8 )
173171   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
174172   AM_RANGE(0x0000, 0x01ff) AM_RAM
175   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
173   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap1_videoram)
176174   AM_RANGE(0x0260, 0x039f) AM_RAM
177   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE(&atarifb_alphap2_videoram)
178   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE(&atarifb_field_videoram)
179   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
180   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE(&atarifb_scroll_register) /* OUT 0 */
175   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
176   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
177   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE(&spriteram_size)
178   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
181179   AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb4_out1_w) /* OUT 1 */
182180   AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
183181   AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
r6428r6429
193191static ADDRESS_MAP_START( abaseb_map, ADDRESS_SPACE_PROGRAM, 8 )
194192   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
195193   AM_RANGE(0x0000, 0x01ff) AM_RAM
196   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
194   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap1_videoram)
197195   AM_RANGE(0x0260, 0x039f) AM_RAM
198   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE(&atarifb_alphap2_videoram)
199   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE(&atarifb_field_videoram)
200   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
201   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE(&atarifb_scroll_register) /* OUT 0 */
196   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
197   AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
198   AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE(&spriteram_size)
199   AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
202200   AM_RANGE(0x2001, 0x2001) AM_WRITE(abaseb_out1_w) /* OUT 1 */
203201   AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
204202   AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */
r6428r6429
213211static ADDRESS_MAP_START( soccer_map, ADDRESS_SPACE_PROGRAM, 8 )
214212   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
215213   AM_RANGE(0x0000, 0x01ff) AM_RAM
216   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
214   AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap1_videoram)
217215   AM_RANGE(0x0260, 0x039f) AM_RAM
218   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE(&atarifb_alphap2_videoram)
219   AM_RANGE(0x0800, 0x0bbf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE(&atarifb_field_videoram)
220   AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
221   AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_BASE(&atarifb_scroll_register) /* OUT 0 */
216   AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
217   AM_RANGE(0x0800, 0x0bbf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
218   AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE(&spriteram_size)
219   AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
222220   AM_RANGE(0x1001, 0x1001) AM_WRITE(soccer_out1_w) /* OUT 1 */
223221   AM_RANGE(0x1002, 0x1002) AM_WRITE(soccer_out2_w) /* OUT 2 */
224222   AM_RANGE(0x1004, 0x1004) AM_WRITENOP /* Interrupt Acknowledge */
r6428r6429
507505 *
508506 *************************************/
509507
508static MACHINE_START( atarifb )
509{
510   atarifb_state *state = (atarifb_state *)machine->driver_data;
511
512   state_save_register_global(machine, state->CTRLD);
513   state_save_register_global(machine, state->sign_x_1);
514   state_save_register_global(machine, state->sign_x_2);
515   state_save_register_global(machine, state->sign_x_3);
516   state_save_register_global(machine, state->sign_x_4);
517   state_save_register_global(machine, state->sign_y_1);
518   state_save_register_global(machine, state->sign_y_2);
519   state_save_register_global(machine, state->sign_y_3);
520   state_save_register_global(machine, state->sign_y_4);
521   state_save_register_global(machine, state->counter_x_in0);
522   state_save_register_global(machine, state->counter_y_in0);
523   state_save_register_global(machine, state->counter_x_in0b);
524   state_save_register_global(machine, state->counter_y_in0b);
525   state_save_register_global(machine, state->counter_x_in2);
526   state_save_register_global(machine, state->counter_y_in2);
527   state_save_register_global(machine, state->counter_x_in2b);
528   state_save_register_global(machine, state->counter_y_in2b);
529}
530
531static MACHINE_RESET( atarifb )
532{
533   atarifb_state *state = (atarifb_state *)machine->driver_data;
534
535   state->CTRLD = 0;
536   state->sign_x_1 = 0;
537   state->sign_y_1 = 0;
538   state->sign_x_2 = 0;
539   state->sign_y_2 = 0;
540   state->sign_x_3 = 0;
541   state->sign_y_3 = 0;
542   state->sign_x_4 = 0;
543   state->sign_y_4 = 0;
544   state->counter_x_in0 = 0;
545   state->counter_y_in0 = 0;
546   state->counter_x_in0b = 0;
547   state->counter_y_in0b = 0;
548   state->counter_x_in2 = 0;
549   state->counter_y_in2 = 0;
550   state->counter_x_in2b = 0;
551   state->counter_y_in2b = 0;
552}
553
510554static MACHINE_DRIVER_START( atarifb )
511555
556   /* driver data */
557   MDRV_DRIVER_DATA(atarifb_state)
558
512559   /* basic machine hardware */
513560   MDRV_CPU_ADD("maincpu", M6502, 750000)
514561   MDRV_CPU_PROGRAM_MAP(atarifb_map)
515562   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
516563
564   MDRV_MACHINE_START(atarifb)
565   MDRV_MACHINE_RESET(atarifb)
566
517567   /* video hardware */
518568   MDRV_SCREEN_ADD("screen", RASTER)
519569   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
735785 *************************************/
736786
737787/*     YEAR  NAME      PARENT   MACHINE   INPUT */
738GAMEL( 1978, atarifb,  0,       atarifb,  atarifb,  0, ROT0, "Atari", "Atari Football (revision 2)", 0, layout_atarifb )
739GAMEL( 1978, atarifb1, atarifb, atarifb,  atarifb,  0, ROT0, "Atari", "Atari Football (revision 1)", 0, layout_atarifb )
740GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, 0, ROT0, "Atari", "Atari Football (4 players)", 0, layout_atarifb4 )
741GAMEL( 1979, abaseb,   0,       abaseb,   abaseb,   0, ROT0, "Atari", "Atari Baseball (set 1)", 0, layout_abaseb )
742GAMEL( 1979, abaseb2,  abaseb,  abaseb,   abaseb,   0, ROT0, "Atari", "Atari Baseball (set 2)", 0, layout_abaseb )
743GAME ( 1980, soccer,   0,       soccer,   soccer,   0, ROT0, "Atari", "Atari Soccer", 0 )
788GAMEL( 1978, atarifb,  0,       atarifb,  atarifb,  0, ROT0, "Atari", "Atari Football (revision 2)", GAME_SUPPORTS_SAVE, layout_atarifb )
789GAMEL( 1978, atarifb1, atarifb, atarifb,  atarifb,  0, ROT0, "Atari", "Atari Football (revision 1)", GAME_SUPPORTS_SAVE, layout_atarifb )
790GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, 0, ROT0, "Atari", "Atari Football (4 players)", GAME_SUPPORTS_SAVE, layout_atarifb4 )
791GAMEL( 1979, abaseb,   0,       abaseb,   abaseb,   0, ROT0, "Atari", "Atari Baseball (set 1)", GAME_SUPPORTS_SAVE, layout_abaseb )
792GAMEL( 1979, abaseb2,  abaseb,  abaseb,   abaseb,   0, ROT0, "Atari", "Atari Baseball (set 2)", GAME_SUPPORTS_SAVE, layout_abaseb )
793GAME ( 1980, soccer,   0,       soccer,   soccer,   0, ROT0, "Atari", "Atari Soccer", GAME_SUPPORTS_SAVE )
src/mame/drivers/silkroad.c
r6428r6429
169169   AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS")
170170   AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW")
171171   AM_RANGE(0xc00024, 0xc00027) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff0000)
172   AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff0000)
172   AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff0000)
173173   AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff0000)
174174   AM_RANGE(0xc00034, 0xc00037) AM_DEVWRITE("oki1", silk_6295_bank_w)
175175   AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w)
r6428r6429
309309   /* sound hardware */
310310   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
311311
312   MDRV_SOUND_ADD("ym", YM2151, 3579545)
312   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
313313   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
314314   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
315315
src/mame/drivers/wink.c
r6428r6429
133133
134134static ADDRESS_MAP_START( wink_sound_io, ADDRESS_SPACE_IO, 8 )
135135   ADDRESS_MAP_GLOBAL_MASK(0xff)
136   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
137   AM_RANGE(0x80, 0x80) AM_DEVWRITE("ay", ay8910_address_w)
136   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
137   AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_address_w)
138138ADDRESS_MAP_END
139139
140140static INPUT_PORTS_START( wink )
r6428r6429
351351
352352   /* sound hardware */
353353   MDRV_SPEAKER_STANDARD_MONO("mono")
354   MDRV_SOUND_ADD("ay", AY8910, 12000000 / 8) // AY8912 actually
354   MDRV_SOUND_ADD("aysnd", AY8910, 12000000 / 8) // AY8912 actually
355355   MDRV_SOUND_CONFIG(ay8912_interface)
356356   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
357357MACHINE_DRIVER_END
src/mame/drivers/tecmo16.c
r6428r6429
120120   AM_RANGE(0x0000, 0xefff) AM_ROM
121121   AM_RANGE(0xf000, 0xfbff) AM_RAM   /* Sound RAM */
122122   AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
123   AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
123   AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
124124   AM_RANGE(0xfc08, 0xfc08) AM_READ(soundlatch_r)
125125   AM_RANGE(0xfc0c, 0xfc0c) AM_NOP
126126   AM_RANGE(0xfffe, 0xffff) AM_RAM
r6428r6429
427427   /* sound hardware */
428428   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
429429
430   MDRV_SOUND_ADD("ym", YM2151, 8000000/2)
430   MDRV_SOUND_ADD("ymsnd", YM2151, 8000000/2)
431431   MDRV_SOUND_CONFIG(ym2151_config)
432432   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
433433   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/drivers/2mindril.c
r6428r6429
233233   AM_RANGE(0x400000, 0x4fffff) AM_RAM AM_BASE(&unkram)// video stuff, 460000 - video regs ?
234234   AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
235235   AM_RANGE(0x502000, 0x503fff) AM_RAM
236   AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ym", ym2610_r, ym2610_w, 0x00ff)
236   AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_r, ym2610_w, 0x00ff)
237237   AM_RANGE(0x60000c, 0x60000d) AM_RAM
238238   AM_RANGE(0x60000e, 0x60000f) AM_RAM
239239   AM_RANGE(0x700000, 0x70000f) AM_READWRITE(drill_io_r,drill_io_w) AM_BASE(&iodata) // i/o
r6428r6429
419419
420420   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
421421
422   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
422   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
423423   MDRV_SOUND_CONFIG(ym2610_config)
424424   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
425425   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
433433   ROM_LOAD16_BYTE( "d58-38.ic11", 0x00000, 0x40000, CRC(c58e8e4f) SHA1(648db679c3bfb5de1cd6c1b1217773a2fe56f11b) )
434434   ROM_LOAD16_BYTE( "d58-37.ic9",  0x00001, 0x40000, CRC(19e5cc3c) SHA1(04ac0eef893c579fe90d91d7fd55c5741a2b7460) )
435435
436   ROM_REGION( 0x200000, "ym", 0 ) /* Samples */
436   ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
437437   ROM_LOAD( "d58-11.ic31", 0x000000, 0x200000,  CRC(dc26d58d) SHA1(cffb18667da18f5367b02af85a2f7674dd61ae97) )
438438
439439   ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 )
src/mame/drivers/taitowlf.c
r6428r6429
9797
9898static READ8_DEVICE_HANDLER(at_dma8237_2_r)
9999{
100   return dma8237_r(device, offset / 2);
100   return i8237_r(device, offset / 2);
101101}
102102
103103static WRITE8_DEVICE_HANDLER(at_dma8237_2_w)
104104{
105   dma8237_w(device, offset / 2, data);
105   i8237_w(device, offset / 2, data);
106106}
107107
108108static READ32_DEVICE_HANDLER(at32_dma8237_2_r)
r6428r6429
316316 *
317317 *************************************************************************/
318318
319static int dma_channel;
319320static UINT8 dma_offset[2][4];
320321static UINT8 at_pages[0x10];
321322
r6428r6429
365366}
366367
367368
368static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
369static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
369370{
370371   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
371372
372373   /* Assert HLDA */
373   dma8237_set_hlda( device, state );
374   i8237_hlda_w( device, state );
374375}
375376
376377
377static DMA8237_MEM_READ( pc_dma_read_byte )
378static READ8_HANDLER( pc_dma_read_byte )
378379{
379   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
380   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
380   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
381381      & 0xFF0000;
382382
383383   return memory_read_byte(space, page_offset + offset);
384384}
385385
386386
387static DMA8237_MEM_WRITE( pc_dma_write_byte )
387static WRITE8_HANDLER( pc_dma_write_byte )
388388{
389   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
390   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
389   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
391390      & 0xFF0000;
392391
393392   memory_write_byte(space, page_offset + offset, data);
394393}
395394
396395
397static const struct dma8237_interface dma8237_1_config =
398{
399   XTAL_14_31818MHz/3,
396static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { if (state) dma_channel = 0; }
397static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { if (state) dma_channel = 1; }
398static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { if (state) dma_channel = 2; }
399static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { if (state) dma_channel = 3; }
400400
401   pc_dma_hrq_changed,
402   pc_dma_read_byte,
403   pc_dma_write_byte,
404
405   { NULL, NULL, NULL, NULL },
406   { NULL, NULL, NULL, NULL },
407   NULL
401static I8237_INTERFACE( dma8237_1_config )
402{
403   DEVCB_LINE(pc_dma_hrq_changed),
404   DEVCB_NULL,
405   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
406   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
407   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
408   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
409   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
408410};
409411
410
411static const struct dma8237_interface dma8237_2_config =
412static I8237_INTERFACE( dma8237_2_config )
412413{
413   XTAL_14_31818MHz/3,
414
415   NULL,
416   NULL,
417   NULL,
418
419   { NULL, NULL, NULL, NULL },
420   { NULL, NULL, NULL, NULL },
421   NULL
414   DEVCB_NULL,
415   DEVCB_NULL,
416   DEVCB_NULL,
417   DEVCB_NULL,
418   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
419   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
420   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
422421};
423422
424423static READ32_HANDLER(at_page32_r)
r6428r6429
447446ADDRESS_MAP_END
448447
449448static ADDRESS_MAP_START(taitowlf_io, ADDRESS_SPACE_IO, 32)
450   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
449   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
451450   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
452451   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
453452   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r6428r6429
622621
623622   MDRV_PIT8254_ADD( "pit8254", taitowlf_pit8254_config )
624623
625   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
624   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
626625
627   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
626   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
628627
629628   MDRV_PIC8259_ADD( "pic8259_1", taitowlf_pic8259_1_config )
630629
src/mame/drivers/scotrsht.c
r6428r6429
101101
102102static ADDRESS_MAP_START( scotrsht_sound_port, ADDRESS_SPACE_IO, 8 )
103103   ADDRESS_MAP_GLOBAL_MASK(0xff)
104   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
104   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
105105ADDRESS_MAP_END
106106
107107
r6428r6429
218218   /* sound hardware */
219219   MDRV_SPEAKER_STANDARD_MONO("mono")
220220
221   MDRV_SOUND_ADD("ym", YM2203, 18432000/6)
221   MDRV_SOUND_ADD("ymsnd", YM2203, 18432000/6)
222222   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
223223MACHINE_DRIVER_END
224224
src/mame/drivers/taito_z.c
r6428r6429
16061606   AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE(1)
16071607   AM_RANGE(0x400000, 0x400007) AM_WRITE(spacegun_pancontrol)  /* pan */
16081608//  AM_RANGE(0x40000a, 0x40000b) AM_READ(taitoz_unknown_r)  // ???
1609   AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ym", ym2610_r, ym2610_w, 0x00ff)
1609   AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_r, ym2610_w, 0x00ff)
16101610   AM_RANGE(0x60000c, 0x60000d) AM_NOP   // interrupt controller?
16111611   AM_RANGE(0x60000e, 0x60000f) AM_NOP
16121612   AM_RANGE(0x800000, 0x801fff) AM_READWRITE(TC0150ROD_word_r, TC0150ROD_word_w)   /* "root ram" */
r6428r6429
17011701   AM_RANGE(0x20c000, 0x20ffff) AM_RAM
17021702   AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE(1)
17031703   AM_RANGE(0x800000, 0x80000f) AM_READWRITE(spacegun_input_bypass_r, spacegun_output_bypass_w)
1704   AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("ym", ym2610_r, ym2610_w, 0x00ff)
1704   AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("ymsnd", ym2610_r, ym2610_w, 0x00ff)
17051705   AM_RANGE(0xc0000c, 0xc0000d) AM_NOP   // interrupt controller?
17061706   AM_RANGE(0xc0000e, 0xc0000f) AM_NOP
17071707   AM_RANGE(0xc20000, 0xc20007) AM_WRITE(spacegun_pancontrol)  /* pan */
r6428r6429
17651765   AM_RANGE(0x0000, 0x3fff) AM_ROM
17661766   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
17671767   AM_RANGE(0xc000, 0xdfff) AM_RAM
1768   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
1768   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
17691769   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
17701770   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
17711771   AM_RANGE(0xe400, 0xe403) AM_WRITE(taitoz_pancontrol) /* pan */
r6428r6429
29192919   MDRV_SPEAKER_ADD("rear",  0.0, 0.0,  1.3)
29202920   MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0)
29212921
2922   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
2922   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
29232923   MDRV_SOUND_CONFIG(ym2610_config)
29242924   MDRV_SOUND_ROUTE(0, "subwoofer", 0.20)
29252925   MDRV_SOUND_ROUTE(1, "2610.1.l", 2.0)
r6428r6429
29752975   MDRV_SPEAKER_ADD("rear",   0.0, 0.0, 1.3)
29762976   MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0)
29772977
2978   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
2978   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
29792979   MDRV_SOUND_CONFIG(ym2610_config)
29802980   MDRV_SOUND_ROUTE(0, "subwoofer", 0.20)
29812981   MDRV_SOUND_ROUTE(1, "2610.1.l", 1.0)
r6428r6429
30293029   /* sound hardware */
30303030   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
30313031
3032   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3032   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
30333033   MDRV_SOUND_CONFIG(ym2610_config)
30343034   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
30353035   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
30833083   /* sound hardware */
30843084   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
30853085
3086   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3086   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
30873087   MDRV_SOUND_CONFIG(ym2610_interfaceb)
30883088   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
30893089   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
31383138   /* sound hardware */
31393139   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
31403140
3141   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3141   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
31423142   MDRV_SOUND_CONFIG(ym2610_config)
31433143   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
31443144   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
31953195   MDRV_SPEAKER_ADD("rear",   0.0, 0.0, 1.3)
31963196   MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0)
31973197
3198   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3198   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
31993199   MDRV_SOUND_CONFIG(ym2610_config)
32003200   MDRV_SOUND_ROUTE(0, "subwoofer", 0.20)
32013201   MDRV_SOUND_ROUTE(1, "2610.1.l", 2.0)
r6428r6429
32493249   /* sound hardware */
32503250   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
32513251
3252   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3252   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
32533253   MDRV_SOUND_CONFIG(ym2610_config)
32543254   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
32553255   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
33013301   /* sound hardware */
33023302   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
33033303
3304   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3304   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
33053305   MDRV_SOUND_CONFIG(ym2610_interfaceb)
33063306   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
33073307   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
33563356   /* sound hardware */
33573357   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
33583358
3359   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3359   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
33603360   MDRV_SOUND_CONFIG(ym2610_config)
33613361   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
33623362   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
34103410   /* sound hardware */
34113411   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
34123412
3413   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
3413   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
34143414   MDRV_SOUND_CONFIG(ym2610_config)
34153415   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
34163416   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
34683468   ROM_REGION16_LE( 0x80000, "user1", 0 )
34693469   ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) )   /* STY spritemap */
34703470
3471   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
3471   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
34723472   ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) )
34733473   ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) )
34743474
r6428r6429
35103510   ROM_REGION16_LE( 0x80000, "user1", 0 )
35113511   ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) )   /* STY spritemap */
35123512
3513   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
3513   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
35143514   ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) )
35153515   ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) )
35163516
r6428r6429
35523552   ROM_REGION16_LE( 0x80000, "user1", 0 )
35533553   ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) )   /* STY spritemap */
35543554
3555   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
3555   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
35563556   ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) )
35573557   ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) )
35583558
r6428r6429
36023602   ROM_REGION16_LE( 0x80000, "user1", 0 )
36033603   ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) )   /* STY spritemap */
36043604
3605   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
3605   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
36063606   ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) )
36073607   ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) )
36083608   ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) )
r6428r6429
36823682   ROM_REGION16_LE( 0x80000, "user1", 0 )
36833683   ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) )   /* STY spritemap */
36843684
3685   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
3685   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
36863686   ROM_LOAD( "b52-41.71", 0x000000, 0x80000, CRC(8204880c) SHA1(4dfd6454b4a4c04db3593e98648afbfe8d1f59ed) )
36873687   ROM_LOAD( "b52-40.72", 0x080000, 0x80000, CRC(f0551055) SHA1(4498cd058a52d5e87c6d502e844908a5df3abf2a) )
36883688   ROM_LOAD( "b52-39.73", 0x100000, 0x80000, CRC(ac9cbbd3) SHA1(792f41fef37ff35067fd0173d944f90279176649) )
r6428r6429
37623762   ROM_REGION16_LE( 0x80000, "user1", 0 )
37633763   ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) )   /* STY spritemap */
37643764
3765   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
3765   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
37663766   ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) )
37673767   ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) )
37683768   ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) )
r6428r6429
39013901   ROM_REGION16_LE( 0x80000, "user1", 0 )
39023902   ROM_LOAD16_WORD( "b58-05.71", 0x00000, 0x80000, CRC(d1f4991b) SHA1(f1c5a9b8dce994d013290e98fda7bedf73e95900) )   /* STY spritemap */
39033903
3904   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
3904   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
39053905   ROM_LOAD( "b58-07.11", 0x000000, 0x080000, CRC(eeb5ba08) SHA1(fe40333e09339c76e503ce87b42a89b48d487016) )
39063906   ROM_LOAD( "b58-08.12", 0x080000, 0x080000, CRC(049243cf) SHA1(1f3099b6d764114dc4161ed308369d0f3148dc4e) )
39073907
r6428r6429
39453945   ROM_REGION16_LE( 0x80000, "user1", 0 )
39463946   ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) )   /* STY spritemap */
39473947
3948   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3948   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
39493949   ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) )
39503950
39513951   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
39873987   ROM_REGION16_LE( 0x80000, "user1", 0 )
39883988   ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) )   /* STY spritemap */
39893989
3990   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
3990   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
39913991   ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) )
39923992
39933993   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
40314031   ROM_REGION16_LE( 0x80000, "user1", 0 )
40324032   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
40334033
4034   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4034   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
40354035   ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
40364036   ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
40374037   ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
r6428r6429
40804080   ROM_REGION16_LE( 0x80000, "user1", 0 )
40814081   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
40824082
4083   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4083   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
40844084   ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
40854085   ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
40864086   ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
r6428r6429
41244124   ROM_REGION16_LE( 0x80000, "user1", 0 )
41254125   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
41264126
4127   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4127   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
41284128   ROM_LOAD( "c09-10.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
41294129   ROM_LOAD( "c09-09.43", 0x080000, 0x080000, CRC(6a655c00) SHA1(5ae1ee422226e386550b69a1f35668c10d3bdcc2) )
41304130   ROM_LOAD( "c09-08.44", 0x100000, 0x080000, CRC(7ddfc316) SHA1(47f0ed8eecd4719b4c5cb8762ee6b8bb01686812) )
r6428r6429
41684168   ROM_REGION16_LE( 0x80000, "user1", 0 )
41694169   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
41704170
4171   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4171   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
41724172   ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
41734173   ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
41744174   ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
r6428r6429
42124212   ROM_REGION16_LE( 0x80000, "user1", 0 )
42134213   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
42144214
4215   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4215   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
42164216   ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
42174217   ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
42184218   ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
r6428r6429
42624262   ROM_REGION16_LE( 0x80000, "user1", 0 )
42634263   ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) )   /* STY spritemap */
42644264
4265   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4265   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
42664266   ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) )
42674267   ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) )
42684268
r6428r6429
43164316   ROM_REGION16_LE( 0x80000, "user1", 0 )
43174317   ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) )   /* STY spritemap */
43184318
4319   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4319   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
43204320   ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) )
43214321   ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) )
43224322
r6428r6429
43694369   ROM_REGION16_LE( 0x80000, "user1", 0 )
43704370   ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) )   /* STY spritemap */
43714371
4372   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
4372   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
43734373   ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) )
43744374   ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) )
43754375
r6428r6429
44154415   ROM_REGION16_LE( 0x80000, "user1", 0 )
44164416   ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) )   /* STY spritemap */
44174417
4418   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4418   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
44194419   ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) )
44204420
44214421   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
44564456   ROM_REGION16_LE( 0x80000, "user1", 0 )
44574457   ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) )   /* STY spritemap */
44584458
4459   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4459   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
44604460   ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) )
44614461
44624462   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
44924492   ROM_REGION16_LE( 0x80000, "user1", 0 )
44934493   ROM_LOAD16_WORD( "c57-05.36", 0x00000, 0x80000, CRC(6a70eb2e) SHA1(307dd876af65204e86e094b4015ffb4a655824f8) )   /* STY spritemap */
44944494
4495   ROM_REGION( 0x80000, "ym", 0 )   /* ADPCM samples */
4495   ROM_REGION( 0x80000, "ymsnd", 0 )   /* ADPCM samples */
44964496   ROM_LOAD( "c57-07.76", 0x00000, 0x80000, CRC(ad653dc1) SHA1(2ec440f793b0a686233fbe61c9462f8365c42b65) )
44974497
44984498   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
r6428r6429
45404540   ROM_REGION16_LE( 0x80000, "user1", 0 )
45414541   ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) )   /* STY spritemap */
45424542
4543   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4543   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
45444544   ROM_LOAD( "c78-12.33", 0x000000, 0x100000, CRC(b0267404) SHA1(ffd337336ff9b096e3725f733364762f6e6d3fab) )
45454545   ROM_LOAD( "c78-13.46", 0x100000, 0x080000, CRC(1b363aa2) SHA1(0aae3988024654e98cc0c784307b1c329c8f0783) )
45464546
r6428r6429
45864586   ROM_REGION16_LE( 0x80000, "user1", 0 )
45874587   ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) )   /* STY spritemap */
45884588
4589   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4589   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
45904590   ROM_LOAD( "c78-01.33", 0x000000, 0x100000, CRC(90ff1e72) SHA1(6115e3683bc701922953b644427d1ddb471bf037) )
45914591   ROM_LOAD( "c78-02.46", 0x100000, 0x080000, CRC(8882d2b7) SHA1(4d3abac1e50cd5ae79a562f430563032a11e8390) )
45924592
r6428r6429
46324632   ROM_REGION16_LE( 0x80000, "user1", 0 )
46334633   ROM_LOAD16_WORD( "c84-88.3", 0x00000, 0x80000, CRC(edd1f49c) SHA1(f11c419dcc7da03ef1f1665c1344c27ff35fe867) )   /* STY spritemap */
46344634
4635   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4635   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
46364636   ROM_LOAD( "c84-86.33", 0x000000, 0x100000, CRC(98d9771e) SHA1(0cbb6b08e1fa5e632309962d7ad7dca448ef4d78) )
46374637   ROM_LOAD( "c84-87.46", 0x100000, 0x080000, CRC(9c1dd80c) SHA1(e1bae4e02fd94413fac4683e39e530f9d508d658) )
46384638
src/mame/drivers/rastan.c
r6428r6429
248248   AM_RANGE(0x0000, 0x3fff) AM_ROM
249249   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
250250   AM_RANGE(0x8000, 0x8fff) AM_RAM
251   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
251   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
252252   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
253253   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
254254   AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w)
r6428r6429
412412   /* sound hardware */
413413   MDRV_SPEAKER_STANDARD_MONO("mono")
414414
415   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4)   /* verified on pcb */
415   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
416416   MDRV_SOUND_CONFIG(ym2151_config)
417417   MDRV_SOUND_ROUTE(0, "mono", 0.50)
418418   MDRV_SOUND_ROUTE(1, "mono", 0.50)
src/mame/drivers/darkhors.c
r6428r6429
715715static ADDRESS_MAP_START( st0016_mem, ADDRESS_SPACE_PROGRAM, 8 )
716716   AM_RANGE(0x0000, 0x7fff) AM_ROM
717717   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
718   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w)
718   AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("stsnd", st0016_snd_r, st0016_snd_w)
719719   AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
720720   AM_RANGE(0xf000, 0xffff) AM_RAM
721721ADDRESS_MAP_END
r6428r6429
774774
775775   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
776776
777   MDRV_SOUND_ADD("st", ST0016, 0)
777   MDRV_SOUND_ADD("stsnd", ST0016, 0)
778778   MDRV_SOUND_CONFIG(st0016_config)
779779   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
780780   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/bishjan.c
r6428r6429
516516
517517static ADDRESS_MAP_START( saklove_io, ADDRESS_SPACE_IO, 8 )
518518   AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w )
519   AM_RANGE(0x0040, 0x0041) AM_DEVWRITE( "ym", ym3812_w )
519   AM_RANGE(0x0040, 0x0041) AM_DEVWRITE( "ymsnd", ym3812_w )
520520
521521   AM_RANGE(0x0060, 0x0062) AM_WRITE( colordac_w )
522522
r6428r6429
883883   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
884884   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
885885
886   MDRV_SOUND_ADD("ym", YM3812, XTAL_12MHz / 4)   // ? chip and clock unknown
886   MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz / 4)   // ? chip and clock unknown
887887   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
888888MACHINE_DRIVER_END
889889
src/mame/drivers/equites.c
r6428r6429
760760   AM_RANGE(0x0000, 0xbfff) AM_ROM
761761   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)
762762   AM_RANGE(0xc080, 0xc08d) AM_DEVWRITE("msm", msm5232_w)
763   AM_RANGE(0xc0a0, 0xc0a1) AM_DEVWRITE("ay", ay8910_data_address_w)
763   AM_RANGE(0xc0a0, 0xc0a1) AM_DEVWRITE("aysnd", ay8910_data_address_w)
764764   AM_RANGE(0xc0b0, 0xc0b0) AM_WRITENOP // n.c.
765765   AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(equites_cymbal_ctrl_w)
766766   AM_RANGE(0xc0d0, 0xc0d0) AM_WRITE(equites_dac_latch_w)   // followed by 1 (and usually 0) on 8155 port B
r6428r6429
11801180   MDRV_SOUND_ROUTE(9, "mono", 1.0)      // pin 2 SOLO 16' (this actually feeds an analog section)
11811181   MDRV_SOUND_ROUTE(10,"mono", 0.12)      // pin 22 Noise Output (this actually feeds an analog section)
11821182
1183   MDRV_SOUND_ADD("ay", AY8910, XTAL_6_144MHz/4) /* verified on pcb */
1183   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_6_144MHz/4) /* verified on pcb */
11841184   MDRV_SOUND_CONFIG(equites_8910intf)
11851185   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
11861186
src/mame/drivers/gradius3.c
r6428r6429
210210   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", sound_bank_w)            /* 007232 bankswitch */
211211   AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_r)
212212   AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
213   AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
213   AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
214214   AM_RANGE(0xf800, 0xffff) AM_RAM
215215ADDRESS_MAP_END
216216
r6428r6429
324324   /* sound hardware */
325325   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
326326
327   MDRV_SOUND_ADD("ym", YM2151, 3579545)
327   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
328328   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
329329   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
330330
src/mame/drivers/mystwarr.c
r6428r6429
2525#include "deprecat.h"
2626
2727#include "video/konamiic.h"
28#include "machine/konamigx.h"
28#include "konamigx.h"
2929#include "cpu/m68000/m68000.h"
3030#include "cpu/z80/z80.h"
3131#include "machine/eeprom.h"
src/mame/drivers/dlair.c
r6428r6429
376376static ADDRESS_MAP_START( dlus_map, ADDRESS_SPACE_PROGRAM, 8 )
377377   AM_RANGE(0x0000, 0x9fff) AM_ROM
378378   AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM
379   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("ay", ay8910_r)
379   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("aysnd", ay8910_r)
380380   AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("CONTROLS")
381381   AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SERVICE")
382382   AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r)
383   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("ay", ay8910_data_w)
383   AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_data_w)
384384   AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w)
385   AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1fc7) AM_DEVWRITE("ay", ay8910_address_w)
385   AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_address_w)
386386   AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE(laserdisc_w)
387387   AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE(led_den2_w)
388388   AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE(led_den1_w)
r6428r6429
708708   /* sound hardware */
709709   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
710710
711   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK_US/8)
711   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK_US/8)
712712   MDRV_SOUND_CONFIG(ay8910_config)
713713   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
714714
src/mame/drivers/jollyjgr.c
r6428r6429
151151   AM_RANGE(0x8000, 0x87ff) AM_RAM
152152   AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1")
153153   AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS")
154   AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("ay", ay8910_address_w)
155   AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("ay", ay8910_data_w)
154   AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("aysnd", ay8910_address_w)
155   AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("aysnd", ay8910_data_w)
156156   AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2")
157157   AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w)
158158   AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w)
r6428r6429
420420   /* sound hardware */
421421   MDRV_SPEAKER_STANDARD_MONO("mono")
422422
423   MDRV_SOUND_ADD("ay", AY8910, 3579545)
423   MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
424424   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
425425MACHINE_DRIVER_END
426426
src/mame/drivers/m57.c
r6428r6429
3636     Ribbon cable connector to M57-A-A PCB
3737
3838    New Tropical Angel:
39     Roms where found on an official IREM board with genuine IREM Tropical Angel
39     Roms were found on an official IREM board with genuine IREM Tropical Angel
4040     license seal and genuine IREM serial number sticker.
4141     The "new" roms have hand written labels, while those that match the current
4242     Tropical Angel set look to be factory labeled chips.
r6428r6429
5050#include "driver.h"
5151#include "cpu/z80/z80.h"
5252#include "iremipt.h"
53#include "m57.h"
54#include "audio/irem.h"
53#include "includes/iremz80.h"
5554
5655
5756#define MASTER_CLOCK      XTAL_18_432MHz
r6428r6429
6665
6766static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
6867   AM_RANGE(0x0000, 0x7fff) AM_ROM
69   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_BASE(&videoram)
70   AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE(&m57_scroll)
71   AM_RANGE(0xc820, 0xc8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
68   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
69   AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE_MEMBER(irem_z80_state, scrollram)
70   AM_RANGE(0xc820, 0xc8ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size)
7271   AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w)
7372   AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w)   /* + coin counters */
7473   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
r6428r6429
225224
226225static MACHINE_DRIVER_START( m57 )
227226
227   /* driver data */
228   MDRV_DRIVER_DATA(irem_z80_state)
229
228230   /* basic machine hardware */
229231   MDRV_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6)   /* verified on pcb */
230232   MDRV_CPU_PROGRAM_MAP(main_map)
r6428r6429
327329 *
328330 *************************************/
329331
330GAME( 1983, troangel, 0,        m57,      troangel, 0, ROT0, "Irem", "Tropical Angel", 0 )
331GAME( 1983, newtangl, troangel, m57,      troangel, 0, ROT0, "Irem", "New Tropical Angel", 0 )
332GAME( 1983, troangel, 0,        m57,   troangel, 0, ROT0, "Irem", "Tropical Angel", GAME_SUPPORTS_SAVE )
333GAME( 1983, newtangl, troangel, m57,   troangel, 0, ROT0, "Irem", "New Tropical Angel", GAME_SUPPORTS_SAVE )
src/mame/drivers/peplus.c
r6428r6429
375375
376376static WRITE8_HANDLER( peplus_cmos_w )
377377{
378   char bank_name[5];
378   char bank_name[6];
379379
380380   /* Test for Wingboard PAL Trigger Condition */
381381   if (offset == 0x1fff && wingboard && data < 5)
r6428r6429
741741   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(peplus_s3000_r, peplus_s3000_w) AM_BASE(&s3000_ram)
742742
743743   // Sound and Dipswitches
744   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay", ay8910_address_w)
745   AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("ay", ay8910_data_w)
744   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_address_w)
745   AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_data_w)
746746
747747    // Superboard Data
748748   AM_RANGE(0x5000, 0x5fff) AM_READWRITE(peplus_s5000_r, peplus_s5000_w) AM_BASE(&s5000_ram)
r6428r6429
10451045   // sound hardware
10461046   MDRV_SPEAKER_STANDARD_MONO("mono")
10471047
1048   MDRV_SOUND_ADD("ay", AY8912, SOUND_CLOCK)
1048   MDRV_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK)
10491049   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
10501050MACHINE_DRIVER_END
10511051
src/mame/drivers/segas24.c
r6428r6429
693693         cputag_set_input_line(machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
694694   }
695695   if(changed & 4)
696      devtag_reset(machine, "ym");
696      devtag_reset(machine, "ymsnd");
697697   prev_resetcontrol = resetcontrol;
698698}
699699
r6428r6429
10071007   AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_READWRITE(sys24_mixer_r, sys24_mixer_w)
10081008   AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_READWRITE(sys24_sprite_r, sys24_sprite_w)
10091009   AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(system24temp_sys16_io_r, system24temp_sys16_io_w)
1010   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
1010   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
10111011   AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
10121012   AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
10131013   AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
r6428r6429
10441044   AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_READWRITE(sys24_mixer_r, sys24_mixer_w)
10451045   AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_READWRITE(sys24_sprite_r, sys24_sprite_w)
10461046   AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(system24temp_sys16_io_r, system24temp_sys16_io_w)
1047   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
1047   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
10481048   AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
10491049   AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
10501050   AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
r6428r6429
18001800
18011801   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18021802
1803   MDRV_SOUND_ADD("ym", YM2151, 4000000)
1803   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
18041804   MDRV_SOUND_CONFIG(ym2151_config)
18051805   MDRV_SOUND_ROUTE(0, "lspeaker", 0.50)
18061806   MDRV_SOUND_ROUTE(1, "rspeaker", 0.50)
src/mame/drivers/konamigx.c
r6428r6429
103103#include "cpu/tms57002/tms57002.h"
104104#include "machine/eeprom.h"
105105#include "sound/k054539.h"
106#include "machine/konamigx.h"
106#include "konamigx.h"
107107#include "machine/adc083x.h"
108#include "rendlay.h"
108109
109110#define GX_DEBUG     0
110111
r6428r6429
113114VIDEO_START(konamigx_6bpp_2);
114115VIDEO_START(konamigx_type3);
115116VIDEO_START(konamigx_type4);
117VIDEO_START(konamigx_type4_sd2);
116118VIDEO_START(le2);
117119VIDEO_START(dragoonj);
118120VIDEO_START(winspike);
r6428r6429
700702   dmastart_callback(0);
701703}
702704
705extern int konamigx_current_frame;
706
703707static INTERRUPT_GEN(konamigx_vbinterrupt_type4)
704708{
705709   // lift idle suspension
r6428r6429
708712   // IRQ 1 is the main 60hz vblank interrupt
709713   // the gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board
710714   // generates the timing in those cases.  With this change, rushing heroes and rng2 boot :)
715
716   // maybe this interupt should only be every 30fps, or maybe there are flags to prevent the game running too fast
717   // the real hardware should output the display for each screen on alternate frames
718//  if(video_screen_get_frame_number(device->machine->primary_screen) & 1)
711719   if (1) // gx_syncen & 0x20)
712720   {
713721      gx_syncen &= ~0x20;
r6428r6429
716724      {
717725         gx_syncen &= ~1;
718726         cpu_set_input_line(device, 1, HOLD_LINE);
727
719728      }
720729   }
721730
731
722732   dmastart_callback(0);
723733}
724734
r6428r6429
783793         if (cpu_get_pc(space->cpu) == 0x2026fe) rv = 0xc0c0c0c0;
784794         break;
785795      case 3: // Run'n Gun 2
796         if (cpu_get_pc(space->cpu) == 0x24f0b6) rv = 0xffffffff;
786797         if (cpu_get_pc(space->cpu) == 0x24f122) rv = 0xc0c0c0c0;
787798         break;
788799      case 4:   // Rushing Heroes
789800         if (cpu_get_pc(space->cpu) == 0x20eda6) rv = 0xc0c0c0c0;
790801         break;
791802      case 5:   // Vs. Net Soccer ver. UAB
803         if (cpu_get_pc(space->cpu) == 0x24c5d2) rv = 0xffffffff;
792804         if (cpu_get_pc(space->cpu) == 0x24c63e) rv = 0xc0c0c0c0;
793805         break;
794806      case 6: // Slam Dunk 2
807         if (cpu_get_pc(space->cpu) == 0x24f1b0) rv = 0xffffffff;
795808         if (cpu_get_pc(space->cpu) == 0x24f21c) rv = 0xc0c0c0c0;
796809         break;
797810      case 7:   // Vs. Net Soccer ver. AAA
811         if (cpu_get_pc(space->cpu) == 0x24c6b6) rv = 0xffffffff;
798812         if (cpu_get_pc(space->cpu) == 0x24c722) rv = 0xc0c0c0c0;
799813         break;
800814      case 8:   // Vs. Net Soccer ver. EAD
815         if (cpu_get_pc(space->cpu) == 0x24c416) rv = 0xffffffff;
801816         if (cpu_get_pc(space->cpu) == 0x24c482) rv = 0xc0c0c0c0;
802817         break;
803818      case 9:   // Vs. Net Soccer ver. EAB
819         if (cpu_get_pc(space->cpu) == 0x24c400) rv = 0xffffffff;
804820         if (cpu_get_pc(space->cpu) == 0x24c46c) rv = 0xc0c0c0c0;
805821         break;
806822      case 10: // Vs. Net Soccer ver. JAB
823         if (cpu_get_pc(space->cpu) == 0x24c584) rv = 0xffffffff;
807824         if (cpu_get_pc(space->cpu) == 0x24c5f0) rv = 0xc0c0c0c0;
808825         break;
809826      case 11: // Racin' Force
r6428r6429
821838               rv |= 0x4000;
822839         }
823840         break;
841      case 13: // Soccer Superstars
842         //if(cpu_get_pc(space->cpu) != 0x236dce && cpu_get_pc(space->cpu) != 0x236d8a && cpu_get_pc(space->cpu) != 0x236d8a)
843         //  printf("Read 68k @ %x (PC=%x)\n", reg, cpu_get_pc(space->cpu));
844         if (cpu_get_pc(space->cpu) == 0x0236e04)  rv = 0xffffffff;
845         if (cpu_get_pc(space->cpu) == 0x0236e12)  rv = 0xffffffff;
846         break;
847      case 14: // Soccer Superstars ver. JAC
848         //if(cpu_get_pc(space->cpu) != 0x2367b4)
849         //  printf("Read 68k @ %x (PC=%x)\n", reg, cpu_get_pc(space->cpu));
850         if (cpu_get_pc(space->cpu) == 0x02367ea)  rv = 0xffffffff;
851         if (cpu_get_pc(space->cpu) == 0x02367f8)  rv = 0xffffffff;
852         break;
853      case 15: // Soccer Superstars ver. JAA
854         //if(cpu_get_pc(space->cpu) != 0x23670a)
855         //  printf("Read 68k @ %x (PC=%x)\n", reg, cpu_get_pc(space->cpu));
856         if (cpu_get_pc(space->cpu) == 0x0236740)  rv = 0xffffffff;
857         if (cpu_get_pc(space->cpu) == 0x023674e)  rv = 0xffffffff;
858         break;
824859      }
825860
826861   return(rv);
r6428r6429
957992   return ROM[offset];
958993}
959994
960static int sync_frame = 0;
995//static int sync_frame = 0;
961996
962997static READ32_HANDLER( type3_sync_r )
963998{
964   sync_frame ^= 0xffffffff;
965
966   return sync_frame;
999   if(konamigx_current_frame==0)
1000      return -1;   //  return 0xfffffffe | 1;
1001   else
1002      return 0;// return 0xfffffffe | 0;
9671003}
968
9691004static int last_prot_op, last_prot_clk;
9701005
9711006/*
r6428r6429
11021137                  src -= 0x10;
11031138                  dst += 0x10;
11041139               }
1140
1141               /* Input buffer copiers, only this command is executed so it's safe to assume that's polled here */
1142               memory_write_byte(space, 0xc01cc0, ~memory_read_byte(space, 0xc00507));
1143               memory_write_byte(space, 0xc01cc1, ~memory_read_byte(space, 0xc00527));
1144               memory_write_byte(space, 0xc01cc4, ~memory_read_byte(space, 0xc00547));
1145               memory_write_byte(space, 0xc01cc5, ~memory_read_byte(space, 0xc00567));
11051146            }
1147            else if(last_prot_op == 0xb16) // slamdnk2
1148            {
1149               int src = 0xc01000;
1150               int dst = 0xd20000;
1151               int spr;
1152
1153               for (spr = 0; spr < 0x100; spr++)
1154               {
1155                  memory_write_word(space, dst, memory_read_word(space, src));
1156                  src += 4;
1157                  dst += 2;
1158               }
1159
1160               //maybe here there's a [$d8001f] <- 0x31 write too?
1161            }
1162            else if(last_prot_op == 0x515) // vsnetscr
1163            {
1164               //...
1165
1166               /* are these correct? Investigate... */
1167               //memory_write_byte(space, 0xc01d00, ~memory_read_byte(space, 0xc00d07));
1168               //memory_write_byte(space, 0xc01d01, ~memory_read_byte(space, 0xc00d27));
1169               //memory_write_byte(space, 0xc01d04, ~memory_read_byte(space, 0xc00d47));
1170               //memory_write_byte(space, 0xc01d05, ~memory_read_byte(space, 0xc00d67));
1171            }
11061172            else
11071173            {
1108               logerror("GXT4: unknown protection command %x (PC=%x)\n", last_prot_op, cpu_get_pc(space->cpu));
1174               printf("GXT4: unknown protection command %x (PC=%x)\n", last_prot_op, cpu_get_pc(space->cpu));
11091175            }
11101176
11111177            if (konamigx_wrport1_1 & 0x10)
r6428r6429
11901256   AM_IMPORT_FROM(gx_base_memmap)
11911257ADDRESS_MAP_END
11921258
1259extern WRITE32_HANDLER( konamigx_type3_psac2_bank_w );
1260extern UINT32* konamigx_type3_psac2_bank;
1261
11931262static ADDRESS_MAP_START( gx_type3_map, ADDRESS_SPACE_PROGRAM, 32 )
11941263   AM_RANGE(0xd90000, 0xd97fff) AM_RAM
1195   AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
1196   AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_1_ctrl)
1197   AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
1198   AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
1199   AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_BASE((UINT32**)&K053936_1_linectrl)
1200   AM_RANGE(0xe80000, 0xe87fff) AM_RAM_WRITE(konamigx_555_palette_w) AM_BASE(&paletteram32)    // main monitor palette (twice as large as reality)
1201   AM_RANGE(0xea0000, 0xea3fff) AM_RAM_WRITE(konamigx_555_palette2_w) AM_BASE(&gx_subpaletteram32) // sub monitor palette
1264   //AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
1265   AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_0_ctrl)
1266   //AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
1267   AM_RANGE(0xe40000, 0xe40003) AM_WRITE(konamigx_type3_psac2_bank_w) AM_BASE(&konamigx_type3_psac2_bank)
1268   AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_BASE((UINT32**)&K053936_0_linectrl)
1269   AM_RANGE(0xe80000, 0xe83fff) AM_RAM AM_BASE(&paletteram32)    // main monitor palette
1270   AM_RANGE(0xea0000, 0xea3fff) AM_RAM AM_BASE(&gx_subpaletteram32)
12021271   AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r)
1203   AM_RANGE(0xf00000, 0xf07fff) AM_RAM
1272   //AM_RANGE(0xf00000, 0xf07fff) AM_RAM
12041273   AM_IMPORT_FROM(gx_base_memmap)
12051274ADDRESS_MAP_END
12061275
12071276static ADDRESS_MAP_START( gx_type4_map, ADDRESS_SPACE_PROGRAM, 32 )
12081277   AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w)
12091278   AM_RANGE(0xd90000, 0xd97fff) AM_RAM
1210   AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_1_ctrl)
1279   AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_0_ctrl)
12111280   AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP
12121281   AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP
1213   AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_BASE((UINT32**)&K053936_1_linectrl)  // 29C & 29G (PSAC2 line control)
1214   AM_RANGE(0xe80000, 0xe8ffff) AM_RAM_WRITE(konamigx_palette_w) AM_BASE(&paletteram32) // 11G/13G/15G (main screen palette RAM) (twice as large as reality)
1215   AM_RANGE(0xea0000, 0xea7fff) AM_RAM_WRITE(konamigx_palette2_w) AM_BASE(&gx_subpaletteram32) // 5G/7G/9G (sub screen palette RAM)
1282   AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_BASE((UINT32**)&K053936_0_linectrl)  // 29C & 29G (PSAC2 line control)
1283   AM_RANGE(0xe80000, 0xe87fff) AM_RAM AM_BASE(&paletteram32) // 11G/13G/15G (main screen palette RAM)
1284    AM_RANGE(0xea0000, 0xea7fff) AM_RAM AM_BASE(&gx_subpaletteram32) // 5G/7G/9G (sub screen palette RAM)
12161285   AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r)      // type 4 polls this too
12171286   AM_RANGE(0xf00000, 0xf07fff) AM_RAM_WRITE(konamigx_t4_psacmap_w) AM_BASE(&gx_psacram)   // PSAC2 tilemap
1287//  AM_RANGE(0xf00000, 0xf07fff) AM_RAM
12181288   AM_IMPORT_FROM(gx_base_memmap)
12191289ADDRESS_MAP_END
12201290
r6428r6429
13181388   RGN_FRAC(1,1),
13191389   8,
13201390   { 0, 1, 2, 3, 4, 5, 6, 7 },
1321   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
13221391   { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
1323   16*128
1392    { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1393    16*128
13241394};
13251395
13261396// for scanrows on tilemap
r6428r6429
13881458
13891459/* type 3 & 4 games use a simple 8bpp decode for the 53936 */
13901460static GFXDECODE_START( type34 )
1391   GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x0000, 8 )
1461   GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x1000, 8 )
13921462GFXDECODE_END
13931463
1464static GFXDECODE_START( type4 )
1465   GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x1800, 8 )
1466GFXDECODE_END
1467
13941468static MACHINE_DRIVER_START( konamigx )
13951469   /* basic machine hardware */
13961470   MDRV_CPU_ADD("maincpu", M68EC020, 24000000)
r6428r6429
14991573   MDRV_CPU_PROGRAM_MAP(gx_type3_map)
15001574   MDRV_CPU_VBLANK_INT_HACK(konamigx_hbinterrupt, 262)
15011575
1576   MDRV_DEFAULT_LAYOUT(layout_dualhsxs)
1577   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
1578
15021579   MDRV_VIDEO_START(konamigx_type3)
15031580   MDRV_PALETTE_LENGTH(16384)
15041581   MDRV_SCREEN_MODIFY("screen")
1505   MDRV_SCREEN_SIZE(64*8, 32*8)
1506   MDRV_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
1582   MDRV_SCREEN_SIZE(576, 32*8)
1583   MDRV_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
1584
1585   MDRV_SCREEN_ADD("screen2", RASTER)
1586   MDRV_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
1587   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
1588   MDRV_SCREEN_SIZE(576, 32*8)
1589   MDRV_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
1590
1591
15071592   MDRV_GFXDECODE(type34)
15081593MACHINE_DRIVER_END
15091594
r6428r6429
15141599   MDRV_CPU_PROGRAM_MAP(gx_type4_map)
15151600   MDRV_CPU_VBLANK_INT_HACK(konamigx_hbinterrupt, 262)
15161601
1602   MDRV_DEFAULT_LAYOUT(layout_dualhsxs)
1603   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
1604
15171605   MDRV_SCREEN_MODIFY("screen")
1518   MDRV_SCREEN_SIZE(64*8, 32*8)
1519   MDRV_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
1520   MDRV_PALETTE_LENGTH(16384)
1521   MDRV_GFXDECODE(type34)
1606   MDRV_SCREEN_SIZE(128*8, 32*8)
1607   MDRV_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
1608
1609   MDRV_SCREEN_ADD("screen2", RASTER)
1610   MDRV_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
1611   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
1612   MDRV_SCREEN_SIZE(128*8, 32*8)
1613   MDRV_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
1614
1615
1616   MDRV_PALETTE_LENGTH(8192)
1617   MDRV_GFXDECODE(type4)
15221618   MDRV_VIDEO_START(konamigx_type4)
15231619MACHINE_DRIVER_END
15241620
1621static MACHINE_DRIVER_START( gxtype4vsnet )
1622   MDRV_IMPORT_FROM(gxtype4)
1623
1624   MDRV_DEFAULT_LAYOUT(layout_dualhsxs)
1625
1626   MDRV_SCREEN_MODIFY("screen")
1627   MDRV_SCREEN_SIZE(128*8, 32*8)
1628   MDRV_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
1629
1630   MDRV_SCREEN_MODIFY("screen2")
1631   MDRV_SCREEN_SIZE(128*8, 32*8)
1632   MDRV_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
1633MACHINE_DRIVER_END
1634
1635static MACHINE_DRIVER_START( gxtype4sd2 )
1636   MDRV_IMPORT_FROM(gxtype4)
1637
1638   MDRV_VIDEO_START(konamigx_type4_sd2)
1639MACHINE_DRIVER_END
1640
1641
15251642static MACHINE_DRIVER_START( winspike )
15261643   MDRV_IMPORT_FROM(konamigx)
15271644
r6428r6429
21142231   ROM_LOAD( "533a23.7g", 0x200000, 2*1024*1024, CRC(1bb7552b) SHA1(3c6f96b4ab97737c3634c08b94dd304d5517d88d) )
21152232ROM_END
21162233
2117/* Run and Gun 2 */
21182234ROM_START( rungun2 )
21192235   /* main program */
21202236   ROM_REGION( 0x800000, "maincpu", 0 )
21212237   GX_BIOS
2238   ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9))
21222239   ROM_LOAD32_WORD_SWAP( "505uaa02.31b", 0x200002, 512*1024, CRC(cfca23f7) SHA1(dfea871f0aaf6b2db6d924ddfd4174e7a14333e8))
2123   ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9))
21242240
21252241   /* data roms */
2126   ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400000, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
2127   ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400002, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2242   ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400000, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2243   ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400002, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
21282244
21292245   /* sound program */
21302246   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
21382254
21392255   /* sprites */
21402256   ROM_REGION( 0x1800000, "gfx2", ROMREGION_ERASE00 )
2141   ROM_LOAD32_WORD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2142   ROM_LOAD32_WORD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2143   ROM_LOAD32_WORD( "505a18.18m", 0x0400000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2144   ROM_LOAD32_WORD( "505a14.14m", 0x0400002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2145   ROM_LOAD32_WORD( "505a13.21r", 0x0800000, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2146   ROM_LOAD32_WORD( "505a17.16r", 0x0800002, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2147   ROM_LOAD32_WORD( "505a12.21m", 0x0c00000, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2148   ROM_LOAD32_WORD( "505a16.16m", 0x0c00002, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2149   ROM_LOAD32_WORD( "505a11.23r", 0x1000000, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2150   ROM_LOAD32_WORD( "505a10.23m", 0x1000002, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2151   ROM_LOAD32_WORD( "505a09.25r", 0x1400000, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2152   ROM_LOAD32_WORD( "505a08.25m", 0x1400002, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
2257   _48_WORD_ROM_LOAD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2258   _48_WORD_ROM_LOAD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2259   _48_WORD_ROM_LOAD( "505a11.23r", 0x0000004, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2260   _48_WORD_ROM_LOAD( "505a17.16r", 0x0600000, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2261   _48_WORD_ROM_LOAD( "505a13.21r", 0x0600002, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2262   _48_WORD_ROM_LOAD( "505a09.25r", 0x0600004, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2263   _48_WORD_ROM_LOAD( "505a18.18m", 0x0c00000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2264   _48_WORD_ROM_LOAD( "505a14.14m", 0x0c00002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2265   _48_WORD_ROM_LOAD( "505a10.23m", 0x0c00004, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2266   _48_WORD_ROM_LOAD( "505a16.16m", 0x1200000, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2267   _48_WORD_ROM_LOAD( "505a12.21m", 0x1200002, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2268   _48_WORD_ROM_LOAD( "505a08.25m", 0x1200004, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
21532269
21542270   /* PSAC2 tiles */
21552271   ROM_REGION( 0x200000, "gfx3", 0 )
r6428r6429
21662282   /* main program */
21672283   ROM_REGION( 0x800000, "maincpu", 0 )
21682284   GX_BIOS
2285   ROM_LOAD32_WORD_SWAP( "505jaa03.29m", 0x200000, 512*1024, CRC(52513794) SHA1(8a8fadb0eb582db53163620982dd53d1e5f8ca4c) )
21692286   ROM_LOAD32_WORD_SWAP( "505jaa02.31m", 0x200002, 512*1024, CRC(9f72d48e) SHA1(6dd0520d0f0312e46f21ad4f6c41e47f3b5cb16b) )
2170   ROM_LOAD32_WORD_SWAP( "505jaa03.29m", 0x200000, 512*1024, CRC(52513794) SHA1(8a8fadb0eb582db53163620982dd53d1e5f8ca4c) )
21712287
21722288   /* data roms */
2173   ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400000, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
2174   ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400002, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2289   ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400000, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) )
2290   ROM_LOAD32_WORD_SWAP( "505a04.31r", 0x400002, 1024*1024, CRC(11a73f01) SHA1(0738f347f1b639130d512f31034888d2063767c0) )
21752291
21762292   /* sound program */
21772293   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
21852301
21862302   /* sprites */
21872303   ROM_REGION( 0x1800000, "gfx2", ROMREGION_ERASE00 )
2188   ROM_LOAD32_WORD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2189   ROM_LOAD32_WORD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2190   ROM_LOAD32_WORD( "505a18.18m", 0x0400000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2191   ROM_LOAD32_WORD( "505a14.14m", 0x0400002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2192   ROM_LOAD32_WORD( "505a13.21r", 0x0800000, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2193   ROM_LOAD32_WORD( "505a17.16r", 0x0800002, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2194   ROM_LOAD32_WORD( "505a12.21m", 0x0c00000, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2195   ROM_LOAD32_WORD( "505a16.16m", 0x0c00002, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2196   ROM_LOAD32_WORD( "505a11.23r", 0x1000000, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2197   ROM_LOAD32_WORD( "505a10.23m", 0x1000002, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2198   ROM_LOAD32_WORD( "505a09.25r", 0x1400000, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2199   ROM_LOAD32_WORD( "505a08.25m", 0x1400002, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
2304   _48_WORD_ROM_LOAD( "505a19.14r", 0x0000000, 2*1024*1024, CRC(ffde4f17) SHA1(df93853f7bd3c775a15836b0ca9042f75eb65630) )
2305   _48_WORD_ROM_LOAD( "505a15.18r", 0x0000002, 2*1024*1024, CRC(d9ab1e6c) SHA1(748a61d939bd335c1b50f440e819303552b3d5a1) )
2306   _48_WORD_ROM_LOAD( "505a11.23r", 0x0000004, 2*1024*1024, CRC(75c13df0) SHA1(6680f75a67ca510fac29b65bce32fef64e844695) )
2307   _48_WORD_ROM_LOAD( "505a17.16r", 0x0600000, 2*1024*1024, CRC(8176f2f5) SHA1(d7944314b35bcd5301bbfba8a5b1ed6b35b9b888) )
2308   _48_WORD_ROM_LOAD( "505a13.21r", 0x0600002, 2*1024*1024, CRC(e60c5191) SHA1(02a8af81682838800489aa1123a453045d70acd8) )
2309   _48_WORD_ROM_LOAD( "505a09.25r", 0x0600004, 2*1024*1024, CRC(3e1d5a15) SHA1(ec4d46c2f2cc57e6193865357ffb3d62a9eecd4f) )
2310   _48_WORD_ROM_LOAD( "505a18.18m", 0x0c00000, 2*1024*1024, CRC(c12bacfe) SHA1(5b5f4dd9a51c7a305dd4de1354cd1df2ce75c932) )
2311   _48_WORD_ROM_LOAD( "505a14.14m", 0x0c00002, 2*1024*1024, CRC(356a75b0) SHA1(5f8b7a9d06d4207f19ed0f7c89513226488afde1) )
2312   _48_WORD_ROM_LOAD( "505a10.23m", 0x0c00004, 2*1024*1024, CRC(fc315ee0) SHA1(4dab661e0bd8e5386e52d514a1511ceba6e5b7bd) )
2313   _48_WORD_ROM_LOAD( "505a16.16m", 0x1200000, 2*1024*1024, CRC(ca9c2193) SHA1(cc3fb558b834e0b7914879ab47c3750170d257f4) )
2314   _48_WORD_ROM_LOAD( "505a12.21m", 0x1200002, 2*1024*1024, CRC(421d5034) SHA1(f7a85b7e41f3ddf9ddbdc6f8b6d3dbf8ba40d61b) )
2315   _48_WORD_ROM_LOAD( "505a08.25m", 0x1200004, 2*1024*1024, CRC(442ed3ec) SHA1(d44e1c4e9f8c63a8f754f8d20064cec15ae0b6d6) )
22002316
2317
22012318   /* PSAC2 tiles */
22022319   ROM_REGION( 0x200000, "gfx3", 0 )
22032320   ROM_LOAD("505a24.22h", 0x000000, 2*1024*1024, CRC(70e906da) SHA1(4b1a412a71910633f48c6a0b9fd6949dcc82e365) )
r6428r6429
22132330   /* main program */
22142331   ROM_REGION( 0x800000, "maincpu", 0 )
22152332   GX_BIOS
2333   ROM_LOAD32_WORD_SWAP( "605b03.29m", 0x200000, 512*1024, CRC(c5b8d31d) SHA1(6c5b359e1fcf511c50d6a876946631fc38a6dade) )
22162334   ROM_LOAD32_WORD_SWAP( "605b02.31m", 0x200002, 512*1024, CRC(94c3d835) SHA1(f48d34987fa6575a2c41d3ca3359e9e2cbc817e0) )
2217   ROM_LOAD32_WORD_SWAP( "605b03.29m", 0x200000, 512*1024, CRC(c5b8d31d) SHA1(6c5b359e1fcf511c50d6a876946631fc38a6dade) )
22182335
22192336   /* data roms */
2220   ROM_LOAD32_WORD_SWAP( "605a04.31r", 0x400000, 1024*1024, CRC(f6788154) SHA1(093c145d5348b4f10193acc258f5539bd59138a1))
2221   ROM_LOAD32_WORD_SWAP( "605a05.29r", 0x400002, 1024*1024, CRC(9bca4297) SHA1(c20be1ffcee8bd56f69d4fcc19d0035b3f74b8f2))
2337   ROM_LOAD32_WORD_SWAP( "605a05.29r", 0x400000, 1024*1024, CRC(9bca4297) SHA1(c20be1ffcee8bd56f69d4fcc19d0035b3f74b8f2))
2338    ROM_LOAD32_WORD_SWAP( "605a04.31r", 0x400002, 1024*1024, CRC(f6788154) SHA1(093c145d5348b4f10193acc258f5539bd59138a1))
22222339
22232340   /* sound program */
22242341   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
22322349
22332350   /* sprites */
22342351   ROM_REGION( 0x3000000, "gfx2", ROMREGION_ERASE00 )
2235   ROM_LOAD32_WORD( "605a19.14r", 0x0000000, 4*1024*1024, CRC(293427d0) SHA1(c31f93797bda09ea7e990100a5556eb0fde64968) )
2236   ROM_LOAD32_WORD( "605a15.18r", 0x0000002, 4*1024*1024, CRC(19e6e356) SHA1(b2568e14d6fb9a9792f95aafcf694dbf00c0d2c8) )
2237   ROM_LOAD32_WORD( "605a18.18m", 0x0800000, 4*1024*1024, CRC(b5115d76) SHA1(48c3119afb649c58d4df36806fe5530ddd379782) )
2238   ROM_LOAD32_WORD( "605a14.14m", 0x0800002, 4*1024*1024, CRC(4d4dbecb) SHA1(7c3cb2739d6b729d855d652b1991c7af6cd79d1c) )
2239   ROM_LOAD32_WORD( "605a13.21r", 0x1000000, 4*1024*1024, CRC(08137923) SHA1(c1af6b55c1c08e16384d2660b2210ccf3b955be9) )
2240   ROM_LOAD32_WORD( "605a17.16r", 0x1000002, 4*1024*1024, CRC(42e6dc6f) SHA1(8035b7160267a988a1aa2690423c68b6f1975f1a) )
2241   ROM_LOAD32_WORD( "605a12.21m", 0x1800000, 4*1024*1024, CRC(194ffad0) SHA1(1c56f4e89bfe72b435793b907e7ca3e62ecddf4b) )
2242   ROM_LOAD32_WORD( "605a16.16m", 0x1800002, 4*1024*1024, CRC(aab542ca) SHA1(9728b028f48768236f47a7a9bddb27944297b583) )
2243   ROM_LOAD32_WORD( "605a11.23r", 0x2000000, 4*1024*1024, CRC(bc61339c) SHA1(77a5737501bf8ffd7ae4192a6e5924c479eb6655) )
2244   ROM_LOAD32_WORD( "605a10.23m", 0x2000002, 4*1024*1024, CRC(4f47d434) SHA1(c4503993c738e1b8df6f045f5a82504363682db7) )
2245   ROM_LOAD32_WORD( "605a09.25r", 0x2800000, 4*1024*1024, CRC(624fd486) SHA1(edd81d5487f8239ffa89b931430cf41f06a17cf6) )
2246   ROM_LOAD32_WORD( "605a08.25m", 0x2800002, 4*1024*1024, CRC(ea80ddfd) SHA1(4be61af09bcc80c97505196a6f43797753d14f85) )
2352   _48_WORD_ROM_LOAD( "605a19.14r", 0x0000000, 4*1024*1024, CRC(293427d0) SHA1(c31f93797bda09ea7e990100a5556eb0fde64968) )
2353   _48_WORD_ROM_LOAD( "605a15.18r", 0x0000002, 4*1024*1024, CRC(19e6e356) SHA1(b2568e14d6fb9a9792f95aafcf694dbf00c0d2c8) )
2354   _48_WORD_ROM_LOAD( "605a11.23r", 0x0000004, 4*1024*1024, CRC(bc61339c) SHA1(77a5737501bf8ffd7ae4192a6e5924c479eb6655) )
2355   _48_WORD_ROM_LOAD( "605a17.16r", 0x0c00000, 4*1024*1024, BAD_DUMP CRC(42e6dc6f) SHA1(8035b7160267a988a1aa2690423c68b6f1975f1a) ) // - these two looks suspicious...
2356   _48_WORD_ROM_LOAD( "605a13.21r", 0x0c00002, 4*1024*1024, BAD_DUMP CRC(08137923) SHA1(c1af6b55c1c08e16384d2660b2210ccf3b955be9) ) // /
2357   _48_WORD_ROM_LOAD( "605a09.25r", 0x0c00004, 4*1024*1024, CRC(624fd486) SHA1(edd81d5487f8239ffa89b931430cf41f06a17cf6) )
2358   _48_WORD_ROM_LOAD( "605a14.14m", 0x1800000, 4*1024*1024, CRC(4d4dbecb) SHA1(7c3cb2739d6b729d855d652b1991c7af6cd79d1c) )
2359   _48_WORD_ROM_LOAD( "605a18.18m", 0x1800002, 4*1024*1024, CRC(b5115d76) SHA1(48c3119afb649c58d4df36806fe5530ddd379782) )
2360   _48_WORD_ROM_LOAD( "605a10.23m", 0x1800004, 4*1024*1024, CRC(4f47d434) SHA1(c4503993c738e1b8df6f045f5a82504363682db7) )
2361   _48_WORD_ROM_LOAD( "605a16.16m", 0x2400000, 4*1024*1024, CRC(aab542ca) SHA1(9728b028f48768236f47a7a9bddb27944297b583) )
2362   _48_WORD_ROM_LOAD( "605a12.21m", 0x2400002, 4*1024*1024, CRC(194ffad0) SHA1(1c56f4e89bfe72b435793b907e7ca3e62ecddf4b) )
2363   _48_WORD_ROM_LOAD( "605a08.25m", 0x2400004, 4*1024*1024, CRC(ea80ddfd) SHA1(4be61af09bcc80c97505196a6f43797753d14f85) )
22472364
22482365   /* PSAC2 tiles */
22492366   ROM_REGION( 0x200000, "gfx3", 0 )
2250   ROM_LOAD("605a24.22h", 0x000000, 1024*1024, CRC(e5ba1bb7) SHA1(d677e03b418a8bde7a4e4932fd452924768e7d72))
2367   ROM_LOAD("605a24.22h", 0x000000, 1024*1024, BAD_DUMP CRC(e5ba1bb7) SHA1(d677e03b418a8bde7a4e4932fd452924768e7d72)) //half size, missing title screen gfxs
2368   ROM_RELOAD(0x100000,0x100000)
22512369
22522370   /* sound data */
22532371   ROM_REGION( 0x400000, "shared", 0 )
2254   ROM_LOAD( "605a23.7r", 0x000000, 4*1024*1024, CRC(992c4751) SHA1(18ecfc21138f9dc62f0658750808bbef649510f7))
2372   ROM_LOAD( "605a23.7r", 0x000000, 4*1024*1024, BAD_DUMP CRC(992c4751) SHA1(18ecfc21138f9dc62f0658750808bbef649510f7)) //speaker samples are distorted
22552373ROM_END
22562374
22572375/* Taisen Tokkae-dama */
r6428r6429
25372655
25382656   /* sprites */
25392657   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2540   ROM_LOAD32_WORD( "427a08.140", 0x000000, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
2541   ROM_LOAD32_WORD( "427a09.137", 0x000002, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2542   ROM_LOAD32_WORD( "427a10.25r", 0x400000, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2543   ROM_LOAD32_WORD( "427a11.23r", 0x400002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2544   ROM_LOAD32_WORD( "427a12.21r", 0x800000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2545   ROM_LOAD32_WORD( "427a13.18r", 0x800002, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2658   _48_WORD_ROM_LOAD( "427a13.18r", 0x000000, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2659   _48_WORD_ROM_LOAD( "427a11.23r", 0x000002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2660   _48_WORD_ROM_LOAD( "427a09.137", 0x000004, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2661   _48_WORD_ROM_LOAD( "427a12.21r", 0x600000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2662   _48_WORD_ROM_LOAD( "427a10.25r", 0x600002, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2663   _48_WORD_ROM_LOAD( "427a08.140", 0x600004, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
25462664
25472665   /* PSAC2 tiles */
25482666   ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 )
25492667   ROM_LOAD( "427a18.145", 0x000000, 0x100000, CRC(bb6e6ec6) SHA1(aa1365a4318866d9e7e74461a6e6c113f83b6771) )
25502668
25512669   /* PSAC2 map data */
2552   ROM_REGION( 0x080000, "gfx4", ROMREGION_ERASE00 )
2553   ROM_LOAD( "427a17.24c", 0x000000, 0x080000, CRC(fb6eb01f) SHA1(28cdb30ff70ee5fc7624e18fe048dd85dfa49ace) )
2670    ROM_REGION( 0x080000, "gfx4", ROMREGION_ERASE00 )
2671   // 4 banks of 0x20000?  (only the first 2 seem valid tho)
2672   // maybe this is CPU addressable and the 'garbage' is sprite related?
2673    ROM_LOAD( "427a17.24c", 0x000000, 0x080000, CRC(fb6eb01f) SHA1(28cdb30ff70ee5fc7624e18fe048dd85dfa49ace) )
2674   /* 0x00000-0x1ffff pitch+crowd */
25542675
2676   /* 0x20000-0x2ffff attract screens */
2677   /* 0x30000-0x3ffff garbage? */
2678
2679   /* 0x40000-0x4ffff blank */
2680   /* 0x50000-0x5ffff garbage? */
2681
2682   /* 0x60000-0x6ffff blank */
2683   /* 0x70000-0x7ffff garbage? */
2684
25552685   /* sound data */
25562686   ROM_REGION( 0x400000, "shared", 0 )
25572687   ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024,  CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) )
r6428r6429
25812711
25822712   /* sprites */
25832713   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2584   ROM_LOAD32_WORD( "427a08.140", 0x000000, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
2585   ROM_LOAD32_WORD( "427a09.137", 0x000002, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2586   ROM_LOAD32_WORD( "427a10.25r", 0x400000, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2587   ROM_LOAD32_WORD( "427a11.23r", 0x400002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2588   ROM_LOAD32_WORD( "427a12.21r", 0x800000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2589   ROM_LOAD32_WORD( "427a13.18r", 0x800002, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2714   _48_WORD_ROM_LOAD( "427a13.18r", 0x000000, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2715   _48_WORD_ROM_LOAD( "427a11.23r", 0x000002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2716   _48_WORD_ROM_LOAD( "427a09.137", 0x000004, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2717   _48_WORD_ROM_LOAD( "427a12.21r", 0x600000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2718   _48_WORD_ROM_LOAD( "427a10.25r", 0x600002, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2719   _48_WORD_ROM_LOAD( "427a08.140", 0x600004, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
25902720
25912721   /* PSAC2 tiles */
25922722   ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 )
r6428r6429
26252755
26262756   /* sprites */
26272757   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2628   ROM_LOAD32_WORD( "427a08.140", 0x000000, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
2629   ROM_LOAD32_WORD( "427a09.137", 0x000002, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2630   ROM_LOAD32_WORD( "427a10.25r", 0x400000, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2631   ROM_LOAD32_WORD( "427a11.23r", 0x400002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2632   ROM_LOAD32_WORD( "427a12.21r", 0x800000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2633   ROM_LOAD32_WORD( "427a13.18r", 0x800002, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2758   _48_WORD_ROM_LOAD( "427a13.18r", 0x000000, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2759   _48_WORD_ROM_LOAD( "427a11.23r", 0x000002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2760   _48_WORD_ROM_LOAD( "427a09.137", 0x000004, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2761   _48_WORD_ROM_LOAD( "427a12.21r", 0x600000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2762   _48_WORD_ROM_LOAD( "427a10.25r", 0x600002, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2763   _48_WORD_ROM_LOAD( "427a08.140", 0x600004, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
26342764
26352765   /* PSAC2 tiles */
26362766   ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 )
r6428r6429
26692799
26702800   /* sprites */
26712801   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2672   ROM_LOAD32_WORD( "427a08.140", 0x000000, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
2673   ROM_LOAD32_WORD( "427a09.137", 0x000002, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2674   ROM_LOAD32_WORD( "427a10.25r", 0x400000, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2675   ROM_LOAD32_WORD( "427a11.23r", 0x400002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2676   ROM_LOAD32_WORD( "427a12.21r", 0x800000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2677   ROM_LOAD32_WORD( "427a13.18r", 0x800002, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2802   _48_WORD_ROM_LOAD( "427a13.18r", 0x000000, 2*1024*1024, CRC(815a9b87) SHA1(7d9d5932fff7dd7aa4cbccf0c8d3784dc8042e70) )
2803   _48_WORD_ROM_LOAD( "427a11.23r", 0x000002, 2*1024*1024, CRC(c1ca74c1) SHA1(b7286df8e59f8f1939ebf17aaf9345a857b0b100) )
2804   _48_WORD_ROM_LOAD( "427a09.137", 0x000004, 2*1024*1024, CRC(56bdd480) SHA1(01d164aedc77f71f6310cfd739c00b33289a2e7e) )
2805   _48_WORD_ROM_LOAD( "427a12.21r", 0x600000, 2*1024*1024, CRC(97d6fd38) SHA1(8d2895850cafdea95db08c84e7eeea90a1921515) )
2806   _48_WORD_ROM_LOAD( "427a10.25r", 0x600002, 2*1024*1024, CRC(6b3ccb41) SHA1(b246ef350a430e60f0afd1b80ff48139c325e926) )
2807   _48_WORD_ROM_LOAD( "427a08.140", 0x600004, 2*1024*1024, CRC(221250af) SHA1(fd24e7f0e3024df5aa08506523953c5e35d2267b) )
26782808
26792809   /* PSAC2 tiles */
26802810   ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 )
r6428r6429
26942824   /* main program */
26952825   ROM_REGION( 0x800000, "maincpu", 0 )
26962826   GX_BIOS
2697        ROM_LOAD32_WORD_SWAP( "627ead03.29m", 0x200000, 0x080000, CRC(2da707e2) SHA1(3273c671e417abc4e82cd0d4f5d01dd4c9c432f9) )
2698        ROM_LOAD32_WORD_SWAP( "627ead02.31m", 0x200002, 0x080000, CRC(01ab336a) SHA1(6e7ab03a82548cc5bd17938df0baf47381dd86aa) )
2827   ROM_LOAD32_WORD_SWAP( "627ead03.29m", 0x200000, 0x080000, CRC(2da707e2) SHA1(3273c671e417abc4e82cd0d4f5d01dd4c9c432f9) )
2828   ROM_LOAD32_WORD_SWAP( "627ead02.31m", 0x200002, 0x080000, CRC(01ab336a) SHA1(6e7ab03a82548cc5bd17938df0baf47381dd86aa) )
26992829
27002830   /* data roms */
2701   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2702   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2831   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400000, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2832   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400002, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
27032833
27042834   /* sound program */
27052835   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
27132843
27142844   /* sprites */
27152845   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2716   ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2717   ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2718   ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2719   ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2720   ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2721   ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
2846   _48_WORD_ROM_LOAD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2847   _48_WORD_ROM_LOAD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2848   _48_WORD_ROM_LOAD( "627a11.23r", 0x000004, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2849   _48_WORD_ROM_LOAD( "627a17.16r", 0x600000, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2850   _48_WORD_ROM_LOAD( "627a13.21r", 0x600002, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2851   _48_WORD_ROM_LOAD( "627a09.25r", 0x600004, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
27222852
27232853   /* PSAC2 tiles */
27242854   ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00)
r6428r6429
27342864   /* main program */
27352865   ROM_REGION( 0x800000, "maincpu", 0 )
27362866   GX_BIOS
2737        ROM_LOAD32_WORD_SWAP( "627eab03.29m", 0x200000, 0x080000, CRC(878b2369) SHA1(c92783ef1eb33c0596a9354e97f30f8c017e842c) )
2738        ROM_LOAD32_WORD_SWAP( "627eab02.31m", 0x200002, 0x080000, CRC(cc76bce8) SHA1(54a4047412a98a5c4f64a8bc2fd3cda9c07e58b3) )
2867   ROM_LOAD32_WORD_SWAP( "627eab03.29m", 0x200000, 0x080000, CRC(878b2369) SHA1(c92783ef1eb33c0596a9354e97f30f8c017e842c) )
2868   ROM_LOAD32_WORD_SWAP( "627eab02.31m", 0x200002, 0x080000, CRC(cc76bce8) SHA1(54a4047412a98a5c4f64a8bc2fd3cda9c07e58b3) )
27392869
27402870   /* data roms */
2741   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2742   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2871   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400000, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2872   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400002, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
27432873
27442874   /* sound program */
27452875   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
27532883
27542884   /* sprites */
27552885   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2756   ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2757   ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2758   ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2759   ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2760   ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2761   ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
2886   _48_WORD_ROM_LOAD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2887   _48_WORD_ROM_LOAD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2888   _48_WORD_ROM_LOAD( "627a11.23r", 0x000004, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2889   _48_WORD_ROM_LOAD( "627a17.16r", 0x600000, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2890   _48_WORD_ROM_LOAD( "627a13.21r", 0x600002, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2891   _48_WORD_ROM_LOAD( "627a09.25r", 0x600004, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
27622892
27632893   /* PSAC2 tiles */
27642894   ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00)
r6428r6429
27782908   ROM_LOAD32_WORD_SWAP( "627uab02.31m", 0x200002, 512*1024, CRC(c352cc6f) SHA1(d8d0d802eb6bd0910e35dcc6b81b7ac9036e32ea) )
27792909
27802910   /* data roms */
2781   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2782   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2911   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400000, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
2912   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400002, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
27832913
27842914   /* sound program */
27852915   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
27932923
27942924   /* sprites */
27952925   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2796   ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2797   ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2798   ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2799   ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2800   ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2801   ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
2926   _48_WORD_ROM_LOAD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2927   _48_WORD_ROM_LOAD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2928   _48_WORD_ROM_LOAD( "627a11.23r", 0x000004, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2929   _48_WORD_ROM_LOAD( "627a17.16r", 0x600000, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2930   _48_WORD_ROM_LOAD( "627a13.21r", 0x600002, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2931   _48_WORD_ROM_LOAD( "627a09.25r", 0x600004, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
28022932
28032933   /* PSAC2 tiles */
28042934   ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00)
r6428r6429
29443074   ROM_LOAD32_WORD_SWAP( "627jab02.31m", 0x200002, 512*1024, CRC(f10929d7) SHA1(304001d44ed762682a4606a849305a9352e9bec3) )
29453075
29463076   /* data roms */
2947   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2948   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
3077   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400000, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
3078   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400002, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
29493079
29503080   /* sound program */
29513081   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
29593089
29603090   /* sprites */
29613091   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
2962   ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
2963   ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
2964   ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
2965   ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
2966   ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
2967   ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
3092   _48_WORD_ROM_LOAD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
3093   _48_WORD_ROM_LOAD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
3094   _48_WORD_ROM_LOAD( "627a11.23r", 0x000004, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
3095   _48_WORD_ROM_LOAD( "627a17.16r", 0x600000, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
3096   _48_WORD_ROM_LOAD( "627a13.21r", 0x600002, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
3097   _48_WORD_ROM_LOAD( "627a09.25r", 0x600004, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
29683098
29693099   /* PSAC2 tiles */
29703100   ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00)
r6428r6429
29803110   /* main program */
29813111   ROM_REGION( 0x800000, "maincpu", 0 )
29823112   GX_BIOS
2983        ROM_LOAD32_WORD_SWAP( "627aaa03.29m", 0x200000, 0x080000, CRC(50e23a50) SHA1(82cf1b051cfb2f94567c5a4199802960798c1152) )
2984        ROM_LOAD32_WORD_SWAP( "627aaa02.31m", 0x200002, 0x080000, CRC(e3d21afe) SHA1(28c213106087da425f85bb7f3398aca98964ea38) )
3113    ROM_LOAD32_WORD_SWAP( "627aaa03.29m", 0x200000, 0x080000, CRC(50e23a50) SHA1(82cf1b051cfb2f94567c5a4199802960798c1152) )
3114    ROM_LOAD32_WORD_SWAP( "627aaa02.31m", 0x200002, 0x080000, CRC(e3d21afe) SHA1(28c213106087da425f85bb7f3398aca98964ea38) )
29853115
29863116   /* data roms */
2987   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400000, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
2988   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400002, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
3117   ROM_LOAD32_WORD_SWAP( "627a04.29r", 0x400000, 1024*1024, CRC(17334e9a) SHA1(82cdba016c29160550c43feee7a4feff6e1184aa) )
3118   ROM_LOAD32_WORD_SWAP( "627a05.31r", 0x400002, 1024*1024, CRC(be4e7b3c) SHA1(f44e7b1913aa54f759bd31bb86fdedbb9747b2d5) )
29893119
29903120   /* sound program */
29913121   ROM_REGION( 0x40000, "soundcpu", 0 )
r6428r6429
29993129
30003130   /* sprites */
30013131   ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASE00 )
3002   ROM_LOAD32_WORD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
3003   ROM_LOAD32_WORD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
3004   ROM_LOAD32_WORD( "627a13.21r", 0x400000, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
3005   ROM_LOAD32_WORD( "627a17.16r", 0x400002, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
3006   ROM_LOAD32_WORD( "627a11.23r", 0x800000, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
3007   ROM_LOAD32_WORD( "627a09.25r", 0x800002, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
3132   _48_WORD_ROM_LOAD( "627a19.14r", 0x000000, 2*1024*1024, CRC(5efaa3bc) SHA1(95314c1054ccf5b9626f0b06f9e1c857a127e2ca) )
3133   _48_WORD_ROM_LOAD( "627a15.18r", 0x000002, 2*1024*1024, CRC(5180ca06) SHA1(d5569f6fc6b0374cd111f8313f635e4b7c49351f) )
3134   _48_WORD_ROM_LOAD( "627a11.23r", 0x000004, 2*1024*1024, CRC(a2e507f2) SHA1(ceaaccbac22fecef32fa34f887568bb18464265d) )
3135   _48_WORD_ROM_LOAD( "627a17.16r", 0x600000, 2*1024*1024, CRC(ca99d29c) SHA1(919dfb029dbc7d2c5e420d54df36eef3ec3bb1a2) )
3136   _48_WORD_ROM_LOAD( "627a13.21r", 0x600002, 2*1024*1024, CRC(af48849d) SHA1(c43981883ef042968444b6d993a640edc429daae) )
3137   _48_WORD_ROM_LOAD( "627a09.25r", 0x600004, 2*1024*1024, CRC(312cf8a4) SHA1(107456fc1a1906a60b5b50f4ca6b7e8cd258e6ee) )
30083138
30093139   /* PSAC2 tiles */
30103140   ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00)
r6428r6429
34873617   { "salmndr2a", 7, 0, 6, BPP66 },
34883618   { "winspike",  8, 2, 7, BPP4 },
34893619   { "winspikej", 8, 2, 7, BPP4 },
3490   { "soccerss",  7, 0, 0, BPP4 },
3491   { "soccerssa", 7, 0, 0, BPP4 },
3492   { "soccerssj", 7, 0, 0, BPP4 },
3620   { "soccerss",  7, 13, 0, BPP4 },
3621   { "soccerssa", 7, 13, 0, BPP4 },
3622   { "soccerssj", 7, 14, 0, BPP4 },
3623   { "soccerssja",7, 15, 0, BPP4 },
34933624   { "vsnetscr",  7, 8, 0, BPP4 },
34943625   { "vsnetscru", 7, 5, 0, BPP4 },
34953626   { "vsnetscrj", 7, 10, 0, BPP4 },
r6428r6429
36433774GAME( 1997, winspikej,winspike, winspike, konamigx, konamigx, ROT0, "Konami", "Winning Spike (ver JAA)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS )
36443775
36453776/* Type 3: dual monitor output and 53936 on the ROM board, external palette RAM */
3646GAME( 1994, soccerss, konamigx, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver EAA)", GAME_NOT_WORKING )
3647GAME( 1994, soccerssj,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAC)", GAME_NOT_WORKING ) // writes JAB to EEPROM, but should be version JAC according to labels
3648GAME( 1994, soccerssja,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAA)", GAME_NOT_WORKING )
3649GAME( 1994, soccerssa,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver AAA)", GAME_NOT_WORKING )
3777GAME( 1994, soccerss, konamigx, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver EAA)", GAME_IMPERFECT_GRAPHICS )
3778GAME( 1994, soccerssj,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAC)", GAME_IMPERFECT_GRAPHICS ) // writes JAB to EEPROM, but should be version JAC according to labels
3779GAME( 1994, soccerssja,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3780GAME( 1994, soccerssa,soccerss, gxtype3,  type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver AAA)", GAME_IMPERFECT_GRAPHICS )
36503781
36513782/* Type 4: dual monitor output and 53936 on the ROM board, external palette RAM, DMA protection */
3652GAME( 1996, vsnetscr,  konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAD)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3653GAME( 1996, vsnetscreb,vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3654GAME( 1996, vsnetscru, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver UAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3655GAME( 1996, vsnetscra, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver AAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3656GAME( 1996, vsnetscrj, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver JAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3657GAME( 1996, rungun2,   konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Run and Gun 2 (ver UAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3658GAME( 1996, slamdnk2,  rungun2,  gxtype4, type3, konamigx, ROT0, "Konami", "Slam Dunk 2 (ver JAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3659GAME( 1996, rushhero,  konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Rushing Heroes (ver UAB)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING  )
3783GAME( 1996, vsnetscr,  konamigx, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAD)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3784GAME( 1996, vsnetscreb,vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3785GAME( 1996, vsnetscru, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver UAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3786GAME( 1996, vsnetscra, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver AAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3787GAME( 1996, vsnetscrj, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver JAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION )
3788GAME( 1996, rungun2,   konamigx, gxtype4sd2, type3, konamigx, ROT0, "Konami", "Run and Gun 2 (ver UAA)", GAME_IMPERFECT_GRAPHICS )
3789GAME( 1996, slamdnk2,  rungun2,  gxtype4sd2, type3, konamigx, ROT0, "Konami", "Slam Dunk 2 (ver JAA)", GAME_IMPERFECT_GRAPHICS )
3790GAME( 1996, rushhero,  konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Rushing Heroes (ver UAB)", GAME_IMPERFECT_GRAPHICS  )
src/mame/drivers/parodius.c
r6428r6429
152152static ADDRESS_MAP_START( parodius_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
153153   AM_RANGE(0x0000, 0xefff) AM_ROM
154154   AM_RANGE(0xf000, 0xf7ff) AM_RAM
155   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
155   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
156156   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
157157   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r,k053260_w)
158158ADDRESS_MAP_END
r6428r6429
254254   /* sound hardware */
255255   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
256256
257   MDRV_SOUND_ADD("ym", YM2151, 3579545)
257   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
258258   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
259259   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
260260
src/mame/drivers/combatsc.c
r6428r6429
308308   AM_RANGE(0x0000, 0x7fff) AM_ROM                              /* ROM */
309309   AM_RANGE(0x8000, 0x87ef) AM_RAM                              /* RAM */
310310   AM_RANGE(0x87f0, 0x87ff) AM_RAM                              /* ??? */
311   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   /* YM 2203 */
312   AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ym", ym2203_r)               /* ??? */
311   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)   /* YM 2203 */
312   AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ymsnd", ym2203_r)               /* ??? */
313313   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                  /* soundlatch_r? */
314314   AM_RANGE(0x8800, 0xfffb) AM_ROM                              /* ROM? */
315315   AM_RANGE(0xfffc, 0xffff) AM_RAM                              /* ??? */
r6428r6429
326326   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("upd", combasc_voice_reset_w)         /* upd7759 reset? */
327327
328328   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)                        /* soundlatch_r? */
329   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", combasc_ym2203_r, ym2203_w)   /* YM 2203 intercepted */
329   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", combasc_ym2203_r, ym2203_w)   /* YM 2203 intercepted */
330330ADDRESS_MAP_END
331331
332332
r6428r6429
576576   /* sound hardware */
577577   MDRV_SPEAKER_STANDARD_MONO("mono")
578578
579   MDRV_SOUND_ADD("ym", YM2203, 3000000)
579   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
580580   MDRV_SOUND_CONFIG(ym2203_config)
581581   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
582582
r6428r6429
617617   /* We are using the original sound subsystem */
618618   MDRV_SPEAKER_STANDARD_MONO("mono")
619619
620   MDRV_SOUND_ADD("ym", YM2203, 3000000)
620   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
621621   MDRV_SOUND_CONFIG(ym2203_config)
622622   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
623623
src/mame/drivers/quizpun2.c
r6428r6429
328328   AM_RANGE( 0x00, 0x00 ) AM_WRITE( SMH_NOP )   // IRQ end
329329   AM_RANGE( 0x20, 0x20 ) AM_WRITE( SMH_NOP )   // NMI end
330330   AM_RANGE( 0x40, 0x40 ) AM_READ( soundlatch_r )
331   AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w )
331   AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w )
332332ADDRESS_MAP_END
333333
334334
r6428r6429
447447   /* sound hardware */
448448   MDRV_SPEAKER_STANDARD_MONO("mono")
449449
450   MDRV_SOUND_ADD("ym", YM2203, XTAL_8MHz / 4 )   // 2 MHz?
450   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_8MHz / 4 )   // 2 MHz?
451451   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
452452MACHINE_DRIVER_END
453453
src/mame/drivers/rockrage.c
r6428r6429
125125   AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r)         /* VLM5030 */
126126   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w)            /* VLM5030 */
127127   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)                        /* soundlatch_r */
128   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)         /* YM 2151 */
128   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)         /* YM 2151 */
129129   AM_RANGE(0x7000, 0x77ff) AM_RAM                                    /* RAM */
130130   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
131131ADDRESS_MAP_END
r6428r6429
294294   /* sound hardware */
295295   MDRV_SPEAKER_STANDARD_MONO("mono")
296296
297   MDRV_SOUND_ADD("ym", YM2151, 3579545)
297   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
298298   MDRV_SOUND_ROUTE(0, "mono", 0.60)
299299   MDRV_SOUND_ROUTE(1, "mono", 0.60)
300300
src/mame/drivers/segac2.c
r6428r6429
625625   AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x13fdfe) AM_READWRITE(prot_r, prot_w)
626626   AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x13fdfe) AM_WRITE(control_w)
627627   AM_RANGE(0x840000, 0x84001f) AM_MIRROR(0x13fee0) AM_READWRITE(io_chip_r, io_chip_w)
628   AM_RANGE(0x840100, 0x840107) AM_MIRROR(0x13fef8) AM_DEVREADWRITE8("ym", ym3438_r, ym3438_w, 0x00ff)
628   AM_RANGE(0x840100, 0x840107) AM_MIRROR(0x13fef8) AM_DEVREADWRITE8("ymsnd", ym3438_r, ym3438_w, 0x00ff)
629629   AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE(counter_timer_w)
630630   AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_BASE(&paletteram16)
631631   AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_READWRITE(megadriv_vdp_r, megadriv_vdp_w)
r6428r6429
13891389   /* sound hardware */
13901390   MDRV_SPEAKER_STANDARD_MONO("mono")
13911391
1392   MDRV_SOUND_ADD("ym", YM3438, XL2_CLOCK/7)
1392   MDRV_SOUND_ADD("ymsnd", YM3438, XL2_CLOCK/7)
13931393   MDRV_SOUND_CONFIG(ym3438_intf)
13941394   MDRV_SOUND_ROUTE(0, "mono", 0.50)
13951395   /* right channel not connected */
13961396
1397   MDRV_SOUND_ADD("sn", SN76496, XL2_CLOCK/15)
1397   MDRV_SOUND_ADD("snsnd", SN76496, XL2_CLOCK/15)
13981398   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
13991399MACHINE_DRIVER_END
14001400
r6428r6429
16181618
16191619ROM_START( puyoj ) /* Puyo Puyo  (c)1992 Sega / Compile */
16201620   ROM_REGION( 0x200000, "maincpu", 0 )
1621   ROM_LOAD16_BYTE( "epr15036", 0x000000, 0x020000, CRC(5310ca1b) SHA1(dcfe2bf7476b640dfb790e8716e75b483d535e48) )
1622   ROM_LOAD16_BYTE( "epr15035", 0x000001, 0x020000, CRC(bc62e400) SHA1(12bb6031574838a28889f6edb31dbb689265287c) )
1621   ROM_LOAD16_BYTE( "epr-15036b.32", 0x000000, 0x020000, CRC(5310ca1b) SHA1(dcfe2bf7476b640dfb790e8716e75b483d535e48) )
1622   ROM_LOAD16_BYTE( "epr-15035b.31", 0x000001, 0x020000, CRC(bc62e400) SHA1(12bb6031574838a28889f6edb31dbb689265287c) )
16231623   /* 0x040000 - 0x100000 Empty */
1624   ROM_LOAD16_BYTE( "epr15038", 0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
1625   ROM_LOAD16_BYTE( "epr15037", 0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
1624   ROM_LOAD16_BYTE( "epr-15038.34", 0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
1625   ROM_LOAD16_BYTE( "epr-15037.33", 0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
16261626
16271627   ROM_REGION( 0x020000, "upd", 0 )
1628   ROM_LOAD( "epr15034", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
1628   ROM_LOAD( "epr-15034.4", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
16291629ROM_END
16301630
16311631ROM_START( puyoja ) /* Puyo Puyo (Rev A)  (c)1992 Sega / Compile */
16321632   ROM_REGION( 0x200000, "maincpu", 0 )
1633   ROM_LOAD16_BYTE( "ep15036a.32", 0x000000, 0x020000, CRC(61b35257) SHA1(e09a7e992999befc88fc7928a478d1e2d14d7b08) )
1634   ROM_LOAD16_BYTE( "ep15035a.31", 0x000001, 0x020000, CRC(dfebb6d9) SHA1(6f685729ef4660c2eba409c5236c6d2f313eef5b) )
1633   ROM_LOAD16_BYTE( "epr-15036a.32", 0x000000, 0x020000, CRC(61b35257) SHA1(e09a7e992999befc88fc7928a478d1e2d14d7b08) )
1634   ROM_LOAD16_BYTE( "epr-15035a.31", 0x000001, 0x020000, CRC(dfebb6d9) SHA1(6f685729ef4660c2eba409c5236c6d2f313eef5b) )
16351635   /* 0x040000 - 0x100000 Empty */
1636   ROM_LOAD16_BYTE( "epr15038",    0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
1637   ROM_LOAD16_BYTE( "epr15037",    0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
1636   ROM_LOAD16_BYTE( "epr-15038.34", 0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
1637   ROM_LOAD16_BYTE( "epr-15037.33", 0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
16381638
16391639   ROM_REGION( 0x020000, "upd", 0 )
1640   ROM_LOAD( "epr15034", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
1640   ROM_LOAD( "epr-15034.4", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
16411641ROM_END
16421642
16431643ROM_START( puyobl ) /* Puyo Puyo  (c)1992 Sega / Compile  Bootleg */
r6428r6429
16451645   ROM_LOAD16_BYTE( "puyopuyb.4bo", 0x000000, 0x020000, CRC(89ea4d33) SHA1(bef9d011524e71c072d309f6da3c2ebc38878e0e) )
16461646   ROM_LOAD16_BYTE( "puyopuyb.3bo", 0x000001, 0x020000, CRC(c002e545) SHA1(7a59ac764d60e9955830d9617b0bd122b44e7b2f) )
16471647   /* 0x040000 - 0x100000 Empty */
1648   ROM_LOAD16_BYTE( "puyopuyb.6bo", 0x100000, 0x020000, CRC(0a0692e5) SHA1(d4ecc5b1791a91e3b33a5d4d0dd305f1623483d9) )
1649   ROM_LOAD16_BYTE( "puyopuyb.5bo", 0x100001, 0x020000, CRC(353109b8) SHA1(92440987add3124b758e7eaa77a3a6f54ca61bb8) )
1648   ROM_LOAD16_BYTE( "puyopuyb.6bo", 0x100000, 0x020000, CRC(0a0692e5) SHA1(d4ecc5b1791a91e3b33a5d4d0dd305f1623483d9) ) // same as epr-15200.34 from the world set
1649   ROM_LOAD16_BYTE( "puyopuyb.5bo", 0x100001, 0x020000, CRC(353109b8) SHA1(92440987add3124b758e7eaa77a3a6f54ca61bb8) ) // same as epr-15199.33 from the world set
16501650
16511651   ROM_REGION( 0x020000, "upd", 0 )
1652   ROM_LOAD( "puyopuyb.abo", 0x000000, 0x020000, CRC(79112b3b) SHA1(fc3a202e1e2ff39950d4af689b7fcca86c301805) )
1652   ROM_LOAD( "puyopuyb.abo", 0x000000, 0x020000, CRC(79112b3b) SHA1(fc3a202e1e2ff39950d4af689b7fcca86c301805) ) // same as epr-15196.4 from the world set
16531653ROM_END
16541654
16551655ROM_START( ichir ) /* Ichident-R (Puzzle & Action 2)  (c)1994 Sega (World) */
r6428r6429
22442244GAME( 1991, ribbit,   0,        segac2,   ribbit,   ribbit,   ROT0, "Sega",                   "Ribbit!", 0 )
22452245GAME( 1992, puyo,     0,        segac2,   puyo,     puyo,     ROT0, "Sega / Compile",         "Puyo Puyo (World)", 0 )
22462246GAME( 1992, puyobl,   puyo,     segac2,   puyo,     puyo,     ROT0, "bootleg",                "Puyo Puyo (World, bootleg)", 0 )
2247GAME( 1992, puyoj,    puyo,     segac2,   puyo,     puyo,     ROT0, "Sega / Compile",         "Puyo Puyo (Japan)", 0 )
2247GAME( 1992, puyoj,    puyo,     segac2,   puyo,     puyo,     ROT0, "Sega / Compile",         "Puyo Puyo (Japan, Rev B)", 0 )
22482248GAME( 1992, puyoja,   puyo,     segac2,   puyo,     puyo,     ROT0, "Sega / Compile",         "Puyo Puyo (Japan, Rev A)", 0 )
22492249GAME( 1992, tantr,    0,        segac2,   ichir,    tantr,    ROT0, "Sega",                   "Puzzle & Action: Tant-R (Japan)", 0 )
22502250GAME( 1993, tantrkor, tantr,    segac2,   ichir,    tantrkor, ROT0, "Sega",                   "Puzzle & Action: Tant-R (Korea)", 0 )
src/mame/drivers/bigstrkb.c
r6428r6429
225225   MDRV_VIDEO_UPDATE(bigstrkb)
226226
227227   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
228//  MDRV_SOUND_ADD("ym", YM2151, ym2151_config)
228//  MDRV_SOUND_ADD("ymsnd", YM2151, ym2151_config)
229229
230230   MDRV_SOUND_ADD("oki1", OKIM6295, 4000000)
231231   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
src/mame/drivers/gberet.c
r6428r6429
159159   AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w)
160160   AM_RANGE(0xf000, 0xf000) AM_WRITE(gberet_coin_counter_w)
161161   AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITENOP         // Loads the snd command into the snd latch
162   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_DEVWRITE("sn", sn76496_w)   // This address triggers the SN chip to read the data port.
162   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_DEVWRITE("snsnd", sn76496_w)   // This address triggers the SN chip to read the data port.
163163   AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1")
164164   AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
165165   AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
r6428r6429
179179   AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
180180   AM_RANGE(0xf000, 0xf000) AM_WRITENOP            // coin counter not supported
181181   AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2")
182   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("sn", sn76496_w)
182   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("snsnd", sn76496_w)
183183   AM_RANGE(0xf600, 0xf600) AM_READ_PORT("P2")
184184   AM_RANGE(0xf601, 0xf601) AM_READ_PORT("DSW1")
185185   AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
r6428r6429
201201   AM_RANGE(0xe044, 0xe044) AM_WRITE(mrgoemon_flipscreen_w)
202202   AM_RANGE(0xf000, 0xf000) AM_WRITE(mrgoemon_coin_counter_w)
203203   AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITENOP            // Loads the snd command into the snd latch
204   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_DEVWRITE("sn", sn76496_w)      // This address triggers the SN chip to read the data port.
204   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_DEVWRITE("snsnd", sn76496_w)      // This address triggers the SN chip to read the data port.
205205   AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset_w)
206206   AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
207207   AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")
r6428r6429
379379   // sound hardware
380380   MDRV_SPEAKER_STANDARD_MONO("mono")
381381
382   MDRV_SOUND_ADD("sn", SN76496, 18432000/12)
382   MDRV_SOUND_ADD("snsnd", SN76496, 18432000/12)
383383   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
384384MACHINE_DRIVER_END
385385
src/mame/drivers/sandscrp.c
r6428r6429
272272static ADDRESS_MAP_START( sandscrp_soundport, ADDRESS_SPACE_IO, 8 )
273273   ADDRESS_MAP_GLOBAL_MASK(0xff)
274274   AM_RANGE(0x00, 0x00) AM_WRITE(sandscrp_bankswitch_w)   // ROM Bank
275   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)      // PORTA/B read
275   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)      // PORTA/B read
276276   AM_RANGE(0x04, 0x04) AM_DEVWRITE("oki", okim6295_w)      // OKIM6295
277277   AM_RANGE(0x06, 0x06) AM_WRITE(sandscrp_soundlatch_w)   //
278278   AM_RANGE(0x07, 0x07) AM_READ(sandscrp_soundlatch_r)      //
r6428r6429
469469   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
470470   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
471471
472   MDRV_SOUND_ADD("ym", YM2203, 4000000)
472   MDRV_SOUND_ADD("ymsnd", YM2203, 4000000)
473473   MDRV_SOUND_CONFIG(ym2203_intf_sandscrp)
474474   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
475475   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
src/mame/drivers/homedata.c
r6428r6429
372372
373373   if (BIT(upd7807_portc,5) && !BIT(data,5))   /* write clock 1->0 */
374374   {
375      const device_config *device = devtag_get_device(space->machine, "ym");
375      const device_config *device = devtag_get_device(space->machine, "ymsnd");
376376      ym2203_w(device, BIT(data,3), upd7807_porta);
377377   }
378378
379379   if (BIT(upd7807_portc,4) && !BIT(data,4))   /* read clock 1->0 */
380380   {
381      const device_config *device = devtag_get_device(space->machine, "ym");
381      const device_config *device = devtag_get_device(space->machine, "ymsnd");
382382      upd7807_porta = ym2203_r(device, BIT(data,3));
383383   }
384384
r6428r6429
527527   coin_counter_w(0,~data & 0x80);
528528
529529   if (BIT(upd7807_portc,5) && !BIT(data,5))   /* clock 1->0 */
530      sn76496_w(devtag_get_device(space->machine, "sn"),0,upd7807_porta);
530      sn76496_w(devtag_get_device(space->machine, "snsnd"),0,upd7807_porta);
531531
532532   upd7807_portc = data;
533533}
r6428r6429
579579   AM_RANGE(0x8000, 0x8000) AM_WRITE(mrokumei_blitter_start_w)   // in some games also ROM bank switch to access service ROM
580580   AM_RANGE(0x8001, 0x8001) AM_WRITE(mrokumei_keyboard_select_w)
581581   AM_RANGE(0x8002, 0x8002) AM_WRITE(mrokumei_sound_cmd_w)
582   AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn", sn76496_w)
582   AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("snsnd", sn76496_w)
583583   AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w)
584584   AM_RANGE(0x8007, 0x8007) AM_WRITE(mrokumei_blitter_bank_w)
585585   AM_RANGE(0x8000, 0xffff) AM_ROM
r6428r6429
11981198   /* sound hardware */
11991199   MDRV_SPEAKER_STANDARD_MONO("mono")
12001200
1201   MDRV_SOUND_ADD("sn", SN76489A, 16000000/4)     // SN76489AN actually
1201   MDRV_SOUND_ADD("snsnd", SN76489A, 16000000/4)     // SN76489AN actually
12021202   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
12031203
12041204   MDRV_SOUND_ADD("dac", DAC, 0)
r6428r6429
12661266   /* sound hardware */
12671267   MDRV_SPEAKER_STANDARD_MONO("mono")
12681268
1269   MDRV_SOUND_ADD("ym", YM2203, 3000000)
1269   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
12701270   MDRV_SOUND_CONFIG(ym2203_config)
12711271   MDRV_SOUND_ROUTE(0, "mono", 0.25)
12721272   MDRV_SOUND_ROUTE(1, "mono", 0.25)
r6428r6429
13171317   /* sound hardware */
13181318   MDRV_SPEAKER_STANDARD_MONO("mono")
13191319
1320   MDRV_SOUND_ADD("sn", SN76489A, 16000000/4)     // SN76489AN actually
1320   MDRV_SOUND_ADD("snsnd", SN76489A, 16000000/4)     // SN76489AN actually
13211321   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
13221322
13231323   MDRV_SOUND_ADD("dac", DAC, 0)
src/mame/drivers/mugsmash.c
r6428r6429
202202static ADDRESS_MAP_START( mugsmash_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
203203   AM_RANGE(0x0000, 0x7fff) AM_ROM
204204   AM_RANGE(0x8000, 0x87ff) AM_RAM
205   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
205   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
206206   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
207207   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
208208ADDRESS_MAP_END
r6428r6429
429429
430430   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
431431
432   MDRV_SOUND_ADD("ym", YM2151, 3579545)
432   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
433433   MDRV_SOUND_CONFIG(ym2151_config)
434434   MDRV_SOUND_ROUTE(0, "lspeaker", 1.00)   /* music */
435435   MDRV_SOUND_ROUTE(1, "rspeaker", 1.00)
src/mame/drivers/hng64.c
r6428r6429
452452#include "deprecat.h"
453453#include "cpu/mips/mips3.h"
454454
455static int hng64_boothack = 0;
455static int hng64_mcu_type = 0;
456static UINT32 fake_mcu_time;
457#define FIGHT_MCU  1
458#define SHOOT_MCU  2
459#define RACING_MCU 3
460#define SAMSHO_MCU 4
461
456462static UINT32 *rombase;
457463static UINT32 *hng_mainram;
458464static UINT32 *hng_cart;
r6428r6429
619625   //  popmessage("Alpha is not zero!") ;
620626
621627   // sams64 / sams64_2 never write a palette, why not?
622   if (hng64_boothack!=1)
628   if (hng64_mcu_type!=SAMSHO_MCU)
623629      palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
624630}
625631
r6428r6429
727733   COMBINE_DATA (&hng64_sram[offset]);
728734}
729735
730static WRITE32_HANDLER( hng64_dualport_w )
736/**************************************
737* MCU simulations
738**************************************/
739
740/* Fatal Fury Wild Ambition / Buriki One */
741static READ32_HANDLER( fight_io_r )
731742{
732   logerror("dualport WRITE %08x %08x (PC=%08x)\n", offset*4, hng64_dualport[offset], cpu_get_pc(space->cpu));
733   COMBINE_DATA (&hng64_dualport[offset]);
743   switch (offset*4)
744   {
745      case 0x000: return 0x00000400;
746      case 0x004: return input_port_read(space->machine, "SYSTEM");
747      case 0x008: return input_port_read(space->machine, "P1_P2");
748      case 0x600: return no_machine_error_code;
749   }
750
751   return hng64_dualport[offset];
734752}
735753
736
737static READ32_HANDLER( hng64_dualport_r )
754/* Samurai Shodown 64 / Samurai Shodown 64 2 */
755static READ32_HANDLER( samsho_io_r )
738756{
739   static int toggle = 0;
757   switch (offset*4)
758   {
759        case 0x000:
760      {
761         /* this is used on post by the io mcu to signal that a init task is complete, zeroed otherwise. */
762         //popmessage("%04x",fake_mcu_time);
740763
741   logerror("dualport R %08x %08x (PC=%08x)\n", offset*4, hng64_dualport[offset], cpu_get_pc(space->cpu));
764         if(fake_mcu_time < 0x100)
765            fake_mcu_time++;
742766
743   // These hacks create some red marks for the boot-up sequence
767         if(fake_mcu_time < 0x80) //i/o init 1
768            return 0x300;
769         else if(fake_mcu_time < 0x100)//i/o init 2
770            return 0x400;
771         else
772            return 0x000;
773      }
774      case 0x004: return input_port_read(space->machine, "SYSTEM");
775      case 0x008: return input_port_read(space->machine, "P1_P2");
776      case 0x600: return no_machine_error_code;
777   }
778
779   return hng64_dualport[offset];
780}
781
782/* Beast Busters 2 */
783/* FIXME: trigger input doesn't work? */
784static READ32_HANDLER( shoot_io_r )
785{
744786   switch (offset*4)
745787   {
746      //SamSho64
747        case 0x00:
788        case 0x000:
789        {
790           if(cpu_get_pc(space->cpu) == 0x8000e040 || cpu_get_pc(space->cpu) == 0x80012fc0) //i/o init 1
791            return 0x400;
792
793           return 0;
794      }
795      case 0x010: return input_port_read(space->machine, "D_IN");
796      case 0x018:
748797      {
798         UINT8 p1_x, p1_y, p2_x, p2_y;
799         p1_x = input_port_read(space->machine, "LIGHT_P1_X") & 0xff;
800         p1_y = input_port_read(space->machine, "LIGHT_P1_Y") & 0xff;
801         p2_x = input_port_read(space->machine, "LIGHT_P2_X") & 0xff;
802         p2_y = input_port_read(space->machine, "LIGHT_P2_Y") & 0xff;
749803
750         if (hng64_boothack == 1) // ss64
751         {
752            toggle^=1; if (toggle==1) {return 0x00000400;} else {return 0x00000300;};
753         }
754         else if (hng64_boothack == 2) // ffwa
755         {
756            return 0x00000400;
757         }
804         return p1_x<<24 | p1_y<<16 | p2_x<<8 | p2_y;
805      }
806      case 0x01c:
807      {
808         UINT8 p3_x, p3_y;
809         p3_x = input_port_read(space->machine, "LIGHT_P3_X") & 0xff;
810         p3_y = input_port_read(space->machine, "LIGHT_P3_Y") & 0xff;
758811
759         return mame_rand(space->machine);
812         return p3_x<<24 | p3_y<<16 | p3_x<<8 | p3_y; //FIXME: see what's the right bank here when the trigger works
760813      }
814      case 0x600: return no_machine_error_code;
815   }
761816
762      //RoadsEdge
763//      case 0x00:  return input_port_read(space->machine, "IPT_TEST");
817   return hng64_dualport[offset];
818}
764819
820/* Roads Edge / Xtreme Rally */
821static READ32_HANDLER( racing_io_r )
822{
823   switch (offset*4)
824   {
825        case 0x000: return mame_rand(space->machine);
826      case 0x004: return input_port_read(space->machine, "SYSTEM");
827      case 0x008: return input_port_read(space->machine, "P1_P2");
828      case 0x600: return no_machine_error_code;
829   }
765830
766      case 0x04:  return input_port_read(space->machine, "SYSTEM");
767      case 0x08:  return input_port_read(space->machine, "P1_P2");
831   return hng64_dualport[offset];
832}
768833
769      // This takes care of the 'machine' error code
770      case 0x600: return no_machine_error_code;
834static READ32_HANDLER( hng64_dualport_r )
835{
836   printf("dualport R %08x %08x (PC=%08x)\n", offset*4, hng64_dualport[offset], cpu_get_pc(space->cpu));
837
838   switch(hng64_mcu_type)
839   {
840      case FIGHT_MCU:  return fight_io_r(space, offset,0xffffffff);
841      case SHOOT_MCU:  return shoot_io_r(space, offset,0xffffffff);
842      case RACING_MCU: return racing_io_r(space, offset,0xffffffff);
843      case SAMSHO_MCU: return samsho_io_r(space, offset,0xffffffff);
771844   }
772845
773846   return mame_rand(space->machine)&0xffffffff;
774   //return hng64_dualport[offset];
775847}
776848
849static WRITE32_HANDLER( hng64_dualport_w )
850{
851   printf("dualport WRITE %08x %08x (PC=%08x)\n", offset*4, hng64_dualport[offset], cpu_get_pc(space->cpu));
852   COMBINE_DATA (&hng64_dualport[offset]);
853}
854
777855// Hardware calls these '3d buffers'
778856//   They're only read during the startup check of fatfurwa.  Z-buffer memory?  Front buffer, back buffer?
779857//   They're definitely mirrored in the startup test.  Elsemi says:
r6428r6429
879957   return hng64_tcram[offset] ;
880958}
881959
960/* Some games (namely sams64 after the title screen) tests bit 15 of this to be high, unknown purpose (vblank? related to the display list?). */
961static READ32_HANDLER( unk_vreg_r )
962{
963   static UINT32 toggle;
964
965   toggle^=0x8000;
966   return toggle;
967}
968
969
882970/*
883971<ElSemi> 0xE0000000 sound
884972<ElSemi> 0xD0100000 3D bank A
r6428r6429
9441032   AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_BASE(&hng64_tcram)            // Transition Control
9451033   AM_RANGE(0x20300000, 0x203001ff) AM_WRITE(dl_w) AM_BASE(&hng64_dl)                  // 3d Display List
9461034   AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w)
1035   AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r)
9471036
9481037   // 3d?
9491038//  AM_RANGE(0x30000000, 0x3000002f) AM_READWRITE(q2_r, q2_w) AM_BASE(&hng64_q2)
r6428r6429
13321421   PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
13331422INPUT_PORTS_END
13341423
1424static INPUT_PORTS_START( bbust2 )
1425   PORT_START("D_IN")
1426   PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNUSED )
1427   PORT_BIT( 0x00000100, IP_ACTIVE_HIGH, IPT_COIN1 )
1428   PORT_BIT( 0x00000200, IP_ACTIVE_HIGH, IPT_COIN2 )
1429   PORT_BIT( 0x00000400, IP_ACTIVE_HIGH, IPT_COIN3 )
1430   PORT_BIT( 0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED )
1431   PORT_BIT( 0x00001000, IP_ACTIVE_HIGH, IPT_SERVICE1 )
1432   PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SERVICE2 )
1433   PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SERVICE3 )
1434   PORT_BIT( 0x00008000, IP_ACTIVE_HIGH, IPT_SERVICE )
1435   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3) //trigger
1436   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3) //pump
1437   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(3) //bomb
1438   PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNUSED )
1439   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_START1 )
1440   PORT_BIT( 0x00200000, IP_ACTIVE_HIGH, IPT_START2 )
1441   PORT_BIT( 0x00400000, IP_ACTIVE_HIGH, IPT_START3 )
1442   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_UNUSED )
1443   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) //trigger
1444   PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) //pump
1445   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) //bomb
1446   PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_UNUSED )
1447   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) //trigger
1448   PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) //pump
1449   PORT_BIT( 0x40000000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) //bomb
1450   PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_UNUSED )
13351451
1452   PORT_START("LIGHT_P1_X")
1453   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(1)
13361454
1455   PORT_START("LIGHT_P1_Y")
1456   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(1)
1457
1458   PORT_START("LIGHT_P2_X")
1459   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(2)
1460
1461   PORT_START("LIGHT_P2_Y")
1462   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(2)
1463
1464   PORT_START("LIGHT_P3_X")
1465   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(3)
1466
1467   PORT_START("LIGHT_P3_Y")
1468   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(7) PORT_REVERSE PORT_PLAYER(3)
1469INPUT_PORTS_END
1470
1471
13371472static const gfx_layout hng64_8x8x4_tilelayout =
13381473{
13391474   8,8,
r6428r6429
14981633static DRIVER_INIT( fatfurwa )
14991634{
15001635   DRIVER_INIT_CALL(hng64_fght);
1501   hng64_boothack = 2;
1636   hng64_mcu_type = FIGHT_MCU;
15021637}
15031638
15041639static DRIVER_INIT( ss64 )
15051640{
15061641   DRIVER_INIT_CALL(hng64_fght);
1507   hng64_boothack = 1;
1642   hng64_mcu_type = SAMSHO_MCU;
15081643}
15091644
15101645
15111646static DRIVER_INIT(hng64_race)
15121647{
15131648   no_machine_error_code=0x02000000;
1649   hng64_mcu_type = RACING_MCU;
15141650   DRIVER_INIT_CALL(hng64);
15151651}
15161652
15171653static DRIVER_INIT(hng64_shoot)
15181654{
1519   hng64_boothack = 2;
1655   hng64_mcu_type = SHOOT_MCU;
15201656   no_machine_error_code=0x03000000;
15211657   DRIVER_INIT_CALL(hng64);
15221658}
r6428r6429
16011737
16021738   // "Display List" init - ugly
16031739   activeBuffer = 0 ;
1740
1741   /* For simulate MCU stepping */
1742   fake_mcu_time = 0;
16041743}
16051744
1745static PALETTE_INIT( hng64 )
1746{
1747   #if 0
16061748
1749   int x,r,g,b,i;
1750
1751   for(i=0;i<0x10;i++)
1752   for(x=0;x<0x100;x++)
1753   {
1754      r = (x & 0xf)*0x10;
1755      g = ((x & 0x3c)>>2)*0x10;
1756      b = ((x & 0xf0)>>4)*0x10;
1757      palette_set_color(machine,x+i*0x100,MAKE_RGB(r,g,b));
1758   }
1759   #endif
1760}
1761
16071762static MACHINE_DRIVER_START( hng64 )
16081763   /* basic machine hardware */
16091764   MDRV_CPU_ADD("maincpu", VR4300BE, MASTER_CLOCK)     // actually R4300
r6428r6429
16181773   MDRV_CPU_PROGRAM_MAP(hng_comm_map)
16191774   MDRV_CPU_IO_MAP(hng_comm_io_map)
16201775
1776   MDRV_PALETTE_INIT(hng64)
1777
16211778   MDRV_GFXDECODE(hng64)
16221779   MDRV_MACHINE_START(hyperneo)
16231780   MDRV_MACHINE_RESET(hyperneo)
r6428r6429
21072264GAME( 1997, roadedge, hng64,  hng64, hng64, hng64_race, ROT0, "SNK", "Roads Edge / Round Trip (rev.B)",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 001 */
21082265GAME( 1998, sams64,   hng64,  hng64, hng64, ss64,       ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 002 */
21092266GAME( 1998, xrally,   hng64,  hng64, hng64, hng64_race, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 003 */
2110GAME( 1998, bbust2,   hng64,  hng64, hng64, hng64_shoot,ROT0, "SNK", "Beast Busters 2nd Nightmare",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 004 */
2267GAME( 1998, bbust2,   hng64,  hng64, bbust2,hng64_shoot,ROT0, "SNK", "Beast Busters 2nd Nightmare",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 004 */
21112268GAME( 1998, sams64_2, hng64,  hng64, hng64, ss64,       ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 005 */
21122269GAME( 1998, fatfurwa, hng64,  hng64, hng64, fatfurwa,   ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND )   /* 006 */
21132270GAME( 1999, buriki,   hng64,  hng64, hng64, fatfurwa,   ROT0, "SNK", "Buriki One (rev.B)",              GAME_NOT_WORKING|GAME_NO_SOUND )   /* 007 */
src/mame/drivers/gladiatr.c
r6428r6429
411411
412412static ADDRESS_MAP_START( ppking_cpu2_io, ADDRESS_SPACE_IO, 8 )
413413   ADDRESS_MAP_GLOBAL_MASK(0xff)
414   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
414   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
415415   AM_RANGE(0x20, 0x21) AM_READ(qx1_r) AM_WRITE(qx1_w)
416416   AM_RANGE(0x40, 0x40) AM_READNOP
417417   AM_RANGE(0x60, 0x61) AM_READ(qx2_r) AM_WRITE(qx2_w)
r6428r6429
458458
459459static ADDRESS_MAP_START( gladiatr_cpu2_io, ADDRESS_SPACE_IO, 8 )
460460   ADDRESS_MAP_GLOBAL_MASK(0xff)
461   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
461   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
462462   AM_RANGE(0x20, 0x21) AM_READWRITE(TAITO8741_1_r, TAITO8741_1_w)
463463   AM_RANGE(0x40, 0x40) AM_NOP   // WRITE(sub_irq_ack_w)
464464   AM_RANGE(0x60, 0x61) AM_READWRITE(TAITO8741_2_r, TAITO8741_2_w)
r6428r6429
712712   /* sound hardware */
713713   MDRV_SPEAKER_STANDARD_MONO("mono")
714714
715   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */
715   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
716716   MDRV_SOUND_CONFIG(ppking_ym2203_interface)
717717   MDRV_SOUND_ROUTE(0, "mono", 0.60)
718718   MDRV_SOUND_ROUTE(1, "mono", 0.60)
r6428r6429
761761   /* sound hardware */
762762   MDRV_SPEAKER_STANDARD_MONO("mono")
763763
764   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */
764   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
765765   MDRV_SOUND_CONFIG(gladiatr_ym2203_interface)
766766   MDRV_SOUND_ROUTE(0, "mono", 0.60)
767767   MDRV_SOUND_ROUTE(1, "mono", 0.60)
src/mame/drivers/imolagp.c
r6428r6429
327327   AM_RANGE(0x2802, 0x2802) AM_READ(steerlatch_r) AM_WRITENOP
328328   /*  AM_RANGE(0x2803, 0x2803) ? */
329329   AM_RANGE(0x3000, 0x3000) AM_WRITE(vreg_control_w)
330   AM_RANGE(0x37f0, 0x37f0) AM_DEVWRITE("ay", ay8910_address_w)
330   AM_RANGE(0x37f0, 0x37f0) AM_DEVWRITE("aysnd", ay8910_address_w)
331331   /*  AM_RANGE(0x37f7, 0x37f7) ? */
332332   AM_RANGE(0x3800, 0x3800) AM_WRITE(vreg_data_w)
333   AM_RANGE(0x3810, 0x3810) AM_DEVWRITE("ay", ay8910_data_w)
333   AM_RANGE(0x3810, 0x3810) AM_DEVWRITE("aysnd", ay8910_data_w)
334334   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSWA")   /* DSWA */
335335   AM_RANGE(0x5000, 0x50ff) AM_WRITE(imola_ledram_w)
336336   AM_RANGE(0x47ff, 0x4800) AM_WRITE(transmit_data_w)
r6428r6429
430430   MDRV_VIDEO_START(imolagp)
431431   MDRV_VIDEO_UPDATE(imolagp)
432432   MDRV_SPEAKER_STANDARD_MONO("mono")
433   MDRV_SOUND_ADD("ay", AY8910, 2000000)
433   MDRV_SOUND_ADD("aysnd", AY8910, 2000000)
434434   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
435435MACHINE_DRIVER_END
436436
src/mame/drivers/puckpkmn.c
r6428r6429
134134   AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
135135   AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
136136   AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
137   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ym", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
137   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ymsnd", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
138138   AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(megadriv_vdp_r, megadriv_vdp_w)
139139   AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_BASE(&megadrive_ram)
140140
src/mame/drivers/goindol.c
r6428r6429
124124
125125static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
126126   AM_RANGE(0x0000, 0x7fff) AM_ROM
127   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym2203_w)
127   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym2203_w)
128128   AM_RANGE(0xc000, 0xc7ff) AM_RAM
129129   AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_r)
130130ADDRESS_MAP_END
r6428r6429
261261   /* sound hardware */
262262   MDRV_SPEAKER_STANDARD_MONO("mono")
263263
264   MDRV_SOUND_ADD("ym", YM2203, 2000000)
264   MDRV_SOUND_ADD("ymsnd", YM2203, 2000000)
265265   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
266266MACHINE_DRIVER_END
267267
src/mame/drivers/gamecstl.c
r6428r6429
152152
153153static READ8_DEVICE_HANDLER(at_dma8237_2_r)
154154{
155   return dma8237_r(device, offset / 2);
155   return i8237_r(device, offset / 2);
156156}
157157
158158static WRITE8_DEVICE_HANDLER(at_dma8237_2_w)
159159{
160   dma8237_w(device, offset / 2, data);
160   i8237_w(device, offset / 2, data);
161161}
162162
163163static READ32_DEVICE_HANDLER(at32_dma8237_2_r)
r6428r6429
371371 *
372372 *************************************************************************/
373373
374static int dma_channel;
374375static UINT8 dma_offset[2][4];
375376static UINT8 at_pages[0x10];
376377
r6428r6429
420421}
421422
422423
423static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
424static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
424425{
425426   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
426427
427428   /* Assert HLDA */
428   dma8237_set_hlda( device, state );
429   i8237_hlda_w( device, state );
429430}
430431
431432
432static DMA8237_MEM_READ( pc_dma_read_byte )
433static READ8_HANDLER( pc_dma_read_byte )
433434{
434   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
435   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
435   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
436436      & 0xFF0000;
437437
438438   return memory_read_byte(space, page_offset + offset);
439439}
440440
441441
442static DMA8237_MEM_WRITE( pc_dma_write_byte )
442static WRITE8_HANDLER( pc_dma_write_byte )
443443{
444   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
445   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
444   offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16)
446445      & 0xFF0000;
447446
448447   memory_write_byte(space, page_offset + offset, data);
449448}
450449
451
452static const struct dma8237_interface dma8237_1_config =
450static void set_dma_channel(const device_config *device, int channel, int state)
453451{
454   XTAL_14_31818MHz/3,
452   if (!state) dma_channel = channel;
453}
455454
456   pc_dma_hrq_changed,
457   pc_dma_read_byte,
458   pc_dma_write_byte,
455static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); }
456static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); }
457static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); }
458static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); }
459459
460   { NULL, NULL, NULL, NULL },
461   { NULL, NULL, NULL, NULL },
462   NULL
460static I8237_INTERFACE( dma8237_1_config )
461{
462   DEVCB_LINE(pc_dma_hrq_changed),
463   DEVCB_NULL,
464   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_read_byte),
465   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, pc_dma_write_byte),
466   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
467   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
468   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
463469};
464470
465
466static const struct dma8237_interface dma8237_2_config =
471static I8237_INTERFACE( dma8237_2_config )
467472{
468   XTAL_14_31818MHz/3,
469
470   NULL,
471   NULL,
472   NULL,
473
474   { NULL, NULL, NULL, NULL },
475   { NULL, NULL, NULL, NULL },
476   NULL
473   DEVCB_NULL,
474   DEVCB_NULL,
475   DEVCB_NULL,
476   DEVCB_NULL,
477   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
478   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
479   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
477480};
478481
479482static READ32_HANDLER(at_page32_r)
r6428r6429
502505ADDRESS_MAP_END
503506
504507static ADDRESS_MAP_START(gamecstl_io, ADDRESS_SPACE_IO, 32)
505   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff)
508   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i8237_r, i8237_w, 0xffffffff)
506509   AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff)
507510   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff)
508511   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r6428r6429
677680
678681   MDRV_PIT8254_ADD( "pit8254", gamecstl_pit8254_config )
679682
680   MDRV_DMA8237_ADD( "dma8237_1", dma8237_1_config )
683   MDRV_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
681684
682   MDRV_DMA8237_ADD( "dma8237_2", dma8237_2_config )
685   MDRV_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config )
683686
684687   MDRV_PIC8259_ADD( "pic8259_1", gamecstl_pic8259_1_config )
685688
src/mame/drivers/kangaroo.c
r6428r6429
275275   AM_RANGE(0x0000, 0x0fff) AM_ROM
276276   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
277277   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ(soundlatch_r)
278   AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("ay", ay8910_data_w)
279   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("ay", ay8910_address_w)
278   AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_data_w)
279   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_address_w)
280280ADDRESS_MAP_END
281281
282282
r6428r6429
285285   AM_RANGE(0x0000, 0x0fff) AM_ROM
286286   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
287287   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ(soundlatch_r)
288   AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("ay", ay8910_data_w)
289   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("ay", ay8910_address_w)
288   AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_data_w)
289   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_address_w)
290290ADDRESS_MAP_END
291291
292292
r6428r6429
453453
454454   /* sound hardware */
455455   MDRV_SPEAKER_STANDARD_MONO("mono")
456   MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8)
456   MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8)
457457   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
458458MACHINE_DRIVER_END
459459
src/mame/drivers/cabal.c
r6428r6429
189189   AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w)
190190   AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w)
191191   AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_adr_w)
192   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
192   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
193193   AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r)
194194   AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r)
195195   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r6428r6429
211211   AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r)
212212   AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r)
213213   AM_RANGE(0x400c, 0x400c) AM_WRITE(soundlatch2_w)
214   AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
214   AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
215215   AM_RANGE(0x6000, 0x6000) AM_WRITENOP  /* ??? */
216216   AM_RANGE(0x8000, 0xffff) AM_ROM
217217ADDRESS_MAP_END
r6428r6429
513513   /* sound hardware */
514514   MDRV_SPEAKER_STANDARD_MONO("mono")
515515
516   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
516   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
517517   MDRV_SOUND_CONFIG(seibu_ym2151_interface)
518518   MDRV_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
519519
r6428r6429
568568   /* sound hardware */
569569   MDRV_SPEAKER_STANDARD_MONO("mono")
570570
571   MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */
571   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
572572   MDRV_SOUND_CONFIG(cabalbl_ym2151_interface)
573573   MDRV_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
574574
src/mame/drivers/hotblock.c
r6428r6429
109109static ADDRESS_MAP_START( hotblock_io, ADDRESS_SPACE_IO, 8 )
110110   AM_RANGE(0x0000, 0x0000) AM_WRITE(hotblock_port0_w)
111111   AM_RANGE(0x0004, 0x0004) AM_READ(hotblock_port4_r) AM_WRITE(hotblock_port4_w)
112   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay", ay8910_address_data_w)
113   AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay", ay8910_r)
112   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
113   AM_RANGE(0x8001, 0x8001) AM_DEVREAD("aysnd", ay8910_r)
114114ADDRESS_MAP_END
115115
116116
r6428r6429
211211   /* sound hardware */
212212   MDRV_SPEAKER_STANDARD_MONO("mono")
213213
214   MDRV_SOUND_ADD("ay", AY8910, 1000000)
214   MDRV_SOUND_ADD("aysnd", AY8910, 1000000)
215215   MDRV_SOUND_CONFIG(ay8910_config)
216216   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
217217MACHINE_DRIVER_END
src/mame/drivers/vendetta.c
r6428r6429
321321static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
322322   AM_RANGE(0x0000, 0xefff) AM_ROM
323323   AM_RANGE(0xf000, 0xf7ff) AM_RAM
324   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
324   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
325325   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
326326   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w)
327327ADDRESS_MAP_END
r6428r6429
470470   /* sound hardware */
471471   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
472472
473   MDRV_SOUND_ADD("ym", YM2151, 3579545)   /* verified with PCB */
473   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)   /* verified with PCB */
474474   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
475475   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
476476
src/mame/drivers/segas16b.c
r6428r6429
15581558
15591559static WRITE16_HANDLER( atomicp_sound_w )
15601560{
1561   ym2413_w(devtag_get_device(space->machine, "ym"), offset, data >> 8);
1561   ym2413_w(devtag_get_device(space->machine, "ymsnd"), offset, data >> 8);
15621562}
15631563
15641564
r6428r6429
17851785static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
17861786   ADDRESS_MAP_UNMAP_HIGH
17871787   ADDRESS_MAP_GLOBAL_MASK(0xff)
1788   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
1788   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
17891789   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE("upd", upd7759_control_w)
17901790   AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_DEVREADWRITE("upd", upd7759_status_r, upd7759_port_w)
17911791   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_r)
r6428r6429
32643264   /* sound hardware */
32653265   MDRV_SPEAKER_STANDARD_MONO("mono")
32663266
3267   MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK_8MHz/2)
3267   MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2)
32683268   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
32693269
32703270   MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
r6428r6429
32993299   MDRV_MACHINE_RESET(atomicp)
33003300
33013301   /* sound hardware */
3302   MDRV_SOUND_REPLACE("ym", YM2413, XTAL_20MHz/4) /* 20MHz OSC divided by 4 (verified) */
3302   MDRV_SOUND_REPLACE("ymsnd", YM2413, XTAL_20MHz/4) /* 20MHz OSC divided by 4 (verified) */
33033303   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
33043304
33053305   MDRV_DEVICE_REMOVE("upd")
src/mame/drivers/marineb.c
r6428r6429
4343
4444static MACHINE_RESET( marineb )
4545{
46   marineb_active_low_flipscreen = 0;
46   espial_state *state = (espial_state *)machine->driver_data;
47
48   state->palette_bank = 0;
49   state->column_scroll = 0;
50   state->flipscreen_x = 0;
51   state->flipscreen_y = 0;
52   state->marineb_active_low_flipscreen = 0;
4753   MACHINE_RESET_CALL(espial);
4854}
4955
5056static MACHINE_RESET( springer )
5157{
52   marineb_active_low_flipscreen = 1;
58   espial_state *state = (espial_state *)machine->driver_data;
59
60   state->palette_bank = 0;
61   state->column_scroll = 0;
62   state->flipscreen_x = 0;
63   state->flipscreen_y = 0;
64   state->marineb_active_low_flipscreen = 1;
5365   MACHINE_RESET_CALL(espial);
5466}
5567
68static MACHINE_START( marineb )
69{
70   espial_state *state = (espial_state *)machine->driver_data;
71
72   state_save_register_global(machine, state->marineb_active_low_flipscreen);
73}
74
5675static ADDRESS_MAP_START( marineb_map, ADDRESS_SPACE_PROGRAM, 8 )
5776   AM_RANGE(0x0000, 0x7fff) AM_ROM
5877   AM_RANGE(0x8000, 0x87ff) AM_RAM
59   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(marineb_videoram_w) AM_BASE(&marineb_videoram)
60   AM_RANGE(0x8c00, 0x8c3f) AM_RAM AM_BASE(&spriteram)  /* Hoccer only */
61   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(marineb_colorram_w) AM_BASE(&marineb_colorram)
78   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(marineb_videoram_w) AM_BASE_MEMBER(espial_state, videoram)
79   AM_RANGE(0x8c00, 0x8c3f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram)  /* Hoccer only */
80   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(marineb_colorram_w) AM_BASE_MEMBER(espial_state, colorram)
6281   AM_RANGE(0x9800, 0x9800) AM_WRITE(marineb_column_scroll_w)
6382   AM_RANGE(0x9a00, 0x9a00) AM_WRITE(marineb_palette_bank_0_w)
6483   AM_RANGE(0x9c00, 0x9c00) AM_WRITE(marineb_palette_bank_1_w)
r6428r6429
505524
506525static MACHINE_DRIVER_START( marineb )
507526
527   /* driver data */
528   MDRV_DRIVER_DATA(espial_state)
529
508530   /* basic machine hardware */
509531   MDRV_CPU_ADD("maincpu", Z80, 3072000)   /* 3.072 MHz */
510532   MDRV_CPU_PROGRAM_MAP(marineb_map)
511533   MDRV_CPU_IO_MAP(marineb_io_map)
512534   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
513535
536   MDRV_MACHINE_START(marineb)
514537   MDRV_MACHINE_RESET(marineb)
515538
516539   /* video hardware */
r6428r6429
841864
842865
843866/*    year  name      parent   machine   inputs */
844GAME( 1982, marineb,  0,       marineb,  marineb, 0, ROT0,   "Orca", "Marine Boy", 0 )
845GAME( 1982, changes,  0,       changes,  changes, 0, ROT0,   "Orca", "Changes", 0 )
846GAME( 1982, changesa, changes, changes,  changes, 0, ROT0,   "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", 0)
847GAME( 1982, looper,   changes, changes,  changes, 0, ROT0,   "Orca", "Looper", 0 )
848GAME( 1982, springer, 0,       springer, marineb, 0, ROT270, "Orca", "Springer", 0 )
849GAME( 1983, hoccer,   0,       hoccer,   hoccer,  0, ROT90,  "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", 0 )
850GAME( 1983, hoccer2,  hoccer,  hoccer,   hoccer,  0, ROT90,  "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , 0)   /* earlier */
851GAME( 1983, bcruzm12, 0,       bcruzm12, bcruzm12,0, ROT90,  "Sigma Enterprises Inc.", "Battle Cruiser M-12", 0 )
852GAME( 1983, hopprobo, 0,       hopprobo, marineb, 0, ROT90,  "Sega", "Hopper Robo", 0 )
853GAME( 1984, wanted,   0,       wanted,   wanted,  0, ROT90,  "Sigma Enterprises Inc.", "Wanted", 0 )
867GAME( 1982, marineb,  0,       marineb,  marineb, 0, ROT0,   "Orca", "Marine Boy", GAME_SUPPORTS_SAVE )
868GAME( 1982, changes,  0,       changes,  changes, 0, ROT0,   "Orca", "Changes", GAME_SUPPORTS_SAVE )
869GAME( 1982, changesa, changes, changes,  changes, 0, ROT0,   "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", GAME_SUPPORTS_SAVE )
870GAME( 1982, looper,   changes, changes,  changes, 0, ROT0,   "Orca", "Looper", GAME_SUPPORTS_SAVE )
871GAME( 1982, springer, 0,       springer, marineb, 0, ROT270, "Orca", "Springer", GAME_SUPPORTS_SAVE )
872GAME( 1983, hoccer,   0,       hoccer,   hoccer,  0, ROT90,  "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", GAME_SUPPORTS_SAVE )
873GAME( 1983, hoccer2,  hoccer,  hoccer,   hoccer,  0, ROT90,  "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , GAME_SUPPORTS_SAVE )   /* earlier */
874GAME( 1983, bcruzm12, 0,       bcruzm12, bcruzm12,0, ROT90,  "Sigma Enterprises Inc.", "Battle Cruiser M-12", GAME_SUPPORTS_SAVE )
875GAME( 1983, hopprobo, 0,       hopprobo, marineb, 0, ROT90,  "Sega", "Hopper Robo", GAME_SUPPORTS_SAVE )
876GAME( 1984, wanted,   0,       wanted,   wanted,  0, ROT90,  "Sigma Enterprises Inc.", "Wanted", GAME_SUPPORTS_SAVE )
src/mame/drivers/nwk-tr.c
r6428r6429
909909static ADDRESS_MAP_START( sound_memmap, ADDRESS_SPACE_PROGRAM, 16 )
910910   AM_RANGE(0x000000, 0x07ffff) AM_ROM
911911   AM_RANGE(0x100000, 0x10ffff) AM_RAM      /* Work RAM */
912   AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rf", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
912   AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_r, rf5c400_w)      /* Ricoh RF5C400 */
913913   AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w)
914914   AM_RANGE(0x600000, 0x600001) AM_NOP
915915ADDRESS_MAP_END
r6428r6429
10731073
10741074   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10751075
1076   MDRV_SOUND_ADD("rf", RF5C400, 16934400)   // as per Guru readme above
1076   MDRV_SOUND_ADD("rfsnd", RF5C400, 16934400)   // as per Guru readme above
10771077   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
10781078   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
10791079
r6428r6429
11241124   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program roms */
11251125   ROM_LOAD16_WORD_SWAP( "676gna08.7s", 0x000000, 0x080000, CRC(8973f6f2) SHA1(f5648a7e0205f7e979ccacbb52936809ce14a184) )
11261126
1127   ROM_REGION(0x1000000, "rf", 0)       /* other roms (textures?) */
1127   ROM_REGION(0x1000000, "rfsnd", 0)       /* other roms (textures?) */
11281128   ROM_LOAD( "676a09.16p",   0x000000, 0x400000, CRC(f85c8dc6) SHA1(8b302c80be309b5cc68b75945fcd7b87a56a4c9b) )
11291129   ROM_LOAD( "676a10.14p",   0x400000, 0x400000, CRC(7b5b7828) SHA1(aec224d62e4b1e8fdb929d7947ce70d84ba676cf) )
11301130
r6428r6429
11481148   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program roms */
11491149   ROM_LOAD16_WORD_SWAP( "888a08.7s",    0x000000, 0x080000, CRC(55fbea65) SHA1(ad953f758181731efccadcabc4326e6634c359e8) )
11501150
1151   ROM_REGION(0x1000000, "rf", 0)       /* PCM sample roms */
1151   ROM_REGION(0x1000000, "rfsnd", 0)       /* PCM sample roms */
11521152   ROM_LOAD( "888a09.16p",   0x000000, 0x400000, CRC(11e2fed2) SHA1(24b8a367b59fedb62c56f066342f2fa87b135fc5) )
11531153   ROM_LOAD( "888a10.14p",   0x400000, 0x400000, CRC(328ce610) SHA1(dbbc779a1890c53298c0db129d496df048929496) )
11541154
r6428r6429
11711171   ROM_REGION(0x80000, "audiocpu", 0)      /* 68k program roms */
11721172   ROM_LOAD16_WORD_SWAP( "713a08.7s",    0x000000, 0x080000, CRC(6a72a825) SHA1(abeac99c5343efacabcb0cdff6d34f9f967024db) )
11731173
1174   ROM_REGION(0x1000000, "rf", 0)       /* PCM sample roms */
1174   ROM_REGION(0x1000000, "rfsnd", 0)       /* PCM sample roms */
11751175   ROM_LOAD( "713a09.16p",   0x000000, 0x400000, CRC(058f250a) SHA1(63b8e60004ec49009633e86b4992c00083def9a8) )
11761176   ROM_LOAD( "713a10.14p",   0x400000, 0x400000, CRC(27f9833e) SHA1(1540f00d2571ecb81b914c553682b67fca94bbbd) )
11771177
src/mame/drivers/taotaido.c
r6428r6429
137137
138138static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
139139   ADDRESS_MAP_GLOBAL_MASK(0xff)
140   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
140   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
141141   AM_RANGE(0x04, 0x04) AM_WRITE(taotaido_sh_bankswitch_w)
142142   AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
143143   AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r)
r6428r6429
358358   /* sound hardware */
359359   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
360360
361   MDRV_SOUND_ADD("ym", YM2610, 8000000)
361   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
362362   MDRV_SOUND_CONFIG(ym2610_config)
363363   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
364364   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
379379   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */
380380   ROM_LOAD( "u104.bin",     0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) )
381381
382   ROM_REGION( 0x200000, "ym", 0 ) /* sound samples */
382   ROM_REGION( 0x200000, "ymsnd", 0 ) /* sound samples */
383383   ROM_LOAD( "u127.bin",     0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) )
384384
385385   ROM_REGION( 0x600000, "gfx1", 0 ) /* Sprites */
r6428r6429
403403   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */
404404   ROM_LOAD( "u104.bin",     0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) )
405405
406   ROM_REGION( 0x200000, "ym", 0 ) /* sound samples */
406   ROM_REGION( 0x200000, "ymsnd", 0 ) /* sound samples */
407407   ROM_LOAD( "u127.bin",     0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) )
408408
409409   ROM_REGION( 0x600000, "gfx1", 0 ) /* Sprites */
src/mame/drivers/relief.c
r6428r6429
148148   ADDRESS_MAP_UNMAP_HIGH
149149   ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
150150   AM_RANGE(0x000000, 0x07ffff) AM_ROM
151   AM_RANGE(0x140000, 0x140003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
151   AM_RANGE(0x140000, 0x140003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
152152   AM_RANGE(0x140010, 0x140011) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
153153   AM_RANGE(0x140020, 0x140021) AM_WRITE(audio_volume_w)
154154   AM_RANGE(0x140030, 0x140031) AM_WRITE(audio_control_w)
r6428r6429
322322   MDRV_SOUND_CONFIG(okim6295_interface_pin7low)
323323   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
324324
325   MDRV_SOUND_ADD("ym", YM2413, ATARI_CLOCK_14MHz/4)
325   MDRV_SOUND_ADD("ymsnd", YM2413, ATARI_CLOCK_14MHz/4)
326326   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
327327MACHINE_DRIVER_END
328328
src/mame/drivers/taito_f3.c
r6428r6429
13061306   ROM_LOAD16_BYTE("d49-05", 0x600000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) )   // -std-
13071307ROM_END
13081308
1309ROM_START( lightbr )
1310   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
1311    ROM_LOAD32_BYTE("d69-25.ic40", 0x000000, 0x80000, CRC(27f1b8be) SHA1(e5fc47644a000c96056e2013c42272ae5beeb98e) )
1312   ROM_LOAD32_BYTE("d69-26.ic38", 0x000001, 0x80000, CRC(2ff7dba6) SHA1(8757d949f44bb69fbf918852046ed0cd46ab7864) )
1313   ROM_LOAD32_BYTE("d69-28.ic36", 0x000002, 0x80000, CRC(a5546162) SHA1(35d9cd41f379e7fc4092c6c519b158208b977d89) )
1314   ROM_LOAD32_BYTE("d69-27.ic34", 0x000003, 0x80000, CRC(e232a949) SHA1(aa6969e0aa195dbae1aecc4e812c590ab4389174) )
1315
1316   ROM_REGION(0xc00000, "gfx1" , 0) /* Sprites */
1317   ROM_LOAD16_BYTE("d69-06.bin", 0x000000, 0x200000, CRC(cb4aac81) SHA1(15d315c6b9695cc2fe07defc67c7a4fb26de1950) )
1318     ROM_LOAD16_BYTE("d69-07.bin", 0x000001, 0x200000, CRC(b749f984) SHA1(39fd662bdc42e812519181a640a83e29e300826a) )
1319   ROM_LOAD16_BYTE("d69-09.bin", 0x400000, 0x100000, CRC(a96c19b8) SHA1(7872b4dd9d51877bed709fec393413e41d6b954f) )
1320   ROM_LOAD16_BYTE("d69-10.bin", 0x400001, 0x100000, CRC(36aa80c6) SHA1(aeb5f7632810564426761b5798539bf4c4a0c64c) )
1321   ROM_LOAD       ("d69-08.bin", 0x900000, 0x200000, CRC(5b68d7d8) SHA1(f2ee3dd7100a3c9d8f402fe36dae2bc66cb17be3) )
1322   ROM_LOAD       ("d69-11.bin", 0xb00000, 0x100000, CRC(c11adf92) SHA1(ee9ce49a43b419c4f44ac1aea8d0a12d7b289244) )
1323   ROM_FILL       (              0x600000, 0x300000, 0 )
1324
1325   ROM_REGION(0x800000, "gfx2" , 0) /* Tiles */
1326   ROM_LOAD16_BYTE("d69-03.bin", 0x000000, 0x200000, CRC(6999c86f) SHA1(8a91930edfc0b5d23e59f8c3b43131db6edb4d37) )
1327     ROM_LOAD16_BYTE("d69-04.bin", 0x000001, 0x200000, CRC(cc91dcb7) SHA1(97f510b1e1a3adf49efe82babdd7abce3756ce4b) )
1328   ROM_LOAD       ("d69-05.bin", 0x600000, 0x200000, CRC(f9f5433c) SHA1(d3de66385d883c72967c44bc29983d7a79f665d1) )
1329   ROM_FILL       (              0x400000, 0x200000, 0 )
1330
1331   ROM_REGION(0x140000, "audiocpu", 0)   /* 68000 sound CPU */
1332   ROM_LOAD16_BYTE("d69-18.bin", 0x100000, 0x20000, CRC(04600d7b) SHA1(666cfab09b61fd6e0bc4ff277018ebf1cda01b0e) )
1333   ROM_LOAD16_BYTE("d69-19.bin", 0x100001, 0x20000, CRC(1484e853) SHA1(4459c18ba005786483c652857e527c6093efb036) )
1334
1335   ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )   // V2: 4 banks, only 2 populated
1336   ROM_LOAD16_BYTE("d69-01.bin", 0x000000, 0x200000, CRC(9ac93ac2) SHA1(1c44f6ba95505f85b0c8a90395f09d2a49da3553) )   // C8 C9 CA CB
1337   ROM_LOAD16_BYTE("d69-02.bin", 0x400000, 0x200000, CRC(dce28dd7) SHA1(eacfc98349b0608fc1a944c11f0483fb6caa4445) )   // CC CD -std-
1338ROM_END
1339
13091340ROM_START( dungeonm )
13101341   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
13111342    ROM_LOAD32_BYTE("d69-20.bin", 0x000000, 0x80000, CRC(33650fe4) SHA1(df8b775749b1f0f02d0df6141597cc49fb3ae227) )
r6428r6429
14281459      D69-18/D69-19             27C1001 EPROM (DIP32)
14291460*/
14301461
1431ROM_START( lightbr )
1462ROM_START( lightbrj )
14321463   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
14331464    ROM_LOAD32_BYTE("d69-20.bin", 0x000000, 0x80000, CRC(33650fe4) SHA1(df8b775749b1f0f02d0df6141597cc49fb3ae227) )
14341465   ROM_LOAD32_BYTE("d69-13.bin", 0x000001, 0x80000, CRC(dec2ec17) SHA1(8472a5aaea9e4e4fb5f7f4b5eda356b590d1541d) )
r6428r6429
38313862GAME( 1993, rayforcej,gunlock,  f3_224a, f3, gunlock,  ROT90,  "Taito Corporation",         "Ray Force (Ver 2.3J 1994/01/20)", 0 )
38323863GAME( 1993, rayforce, gunlock,  f3_224a, f3, gunlock,  ROT90,  "Taito America Corporation", "Ray Force (Ver 2.3A 1994/01/20)", 0 )
38333864GAME( 1993, scfinals, 0,        f3_224a, f3, scfinals, ROT0,   "Taito Corporation Japan",   "Super Cup Finals (Ver 2.1O 1993/11/19)", 0 )
3834GAME( 1993, dungeonm, 0,        f3_224a, f3, lightbr,  ROT0,   "Taito Corporation Japan",   "Dungeon Magic (Ver 2.1O 1994/02/18)", 0 )
3835GAME( 1993, lightbr,  dungeonm, f3_224a, f3, lightbr,  ROT0,   "Taito Corporation",         "Light Bringer (Ver 2.1J 1994/02/18)", 0 )
3836GAME( 1993, dungeonmu,dungeonm, f3_224a, f3, lightbr,  ROT0,   "Taito America Corporation", "Dungeon Magic (Ver 2.1A 1994/02/18)", 0 )
3865GAME( 1993, lightbr,  0,        f3_224a, f3, lightbr,  ROT0,   "Taito Corporation Japan",   "Light Bringer (Ver 2.20 1994/04/08)", 0 )
3866GAME( 1993, lightbrj, lightbr,  f3_224a, f3, lightbr,  ROT0,   "Taito Corporation",         "Light Bringer (Ver 2.1J 1994/02/18)", 0 )
3867GAME( 1993, dungeonm, lightbr,  f3_224a, f3, lightbr,  ROT0,   "Taito Corporation Japan",   "Dungeon Magic (Ver 2.1O 1994/02/18)", 0 )
3868GAME( 1993, dungeonmu,lightbr,  f3_224a, f3, lightbr,  ROT0,   "Taito America Corporation", "Dungeon Magic (Ver 2.1A 1994/02/18)", 0 )
38373869GAME( 1994, intcup94, 0,        f3_224a, f3, intcup94, ROT0,   "Taito Corporation Japan",   "International Cup '94 (Ver 2.2O 1994/05/26)", 0 )
38383870GAME( 1994, hthero94, intcup94, f3_224a, f3, intcup94, ROT0,   "Taito America Corporation", "Hat Trick Hero '94 (Ver 2.2A 1994/05/26)", 0 )
38393871GAME( 1994, kaiserkn, 0,        f3_224a, kn, kaiserkn, ROT0,   "Taito Corporation Japan",   "Kaiser Knuckle (Ver 2.1O 1994/07/29)", 0 )
src/mame/drivers/gaelco2.c
r6428r6429
10241024-----------------------------------------------------------------------------|
10251025*/
10261026
1027ROM_START( snowboar )
1027ROM_START( snowboara )
10281028   ROM_REGION( 0x100000, "maincpu", 0 )   /* 68000 code */
1029   ROM_LOAD16_BYTE(   "sb53",   0x000000, 0x080000, CRC(e4eaefd4) SHA1(c7de2ae3a4a919fbe16d4997e3f9e2303b8c96b1) )
1030   ROM_LOAD16_BYTE(   "sb55",   0x000001, 0x080000, CRC(e2476994) SHA1(2ad18652a1fc6ac058c8399373fb77e7a81d5bbd) )
1029   ROM_LOAD16_BYTE(   "sb53",   0x000000, 0x080000, CRC(e4eaefd4) SHA1(c7de2ae3a4a919fbe16d4997e3f9e2303b8c96b1) ) /* Version 2.0 program roms */
1030   ROM_LOAD16_BYTE(   "sb55",   0x000001, 0x080000, CRC(e2476994) SHA1(2ad18652a1fc6ac058c8399373fb77e7a81d5bbd) ) /* Version 2.0 program roms */
10311031
10321032   ROM_REGION( 0x1400000, "gfx1", 0 )   /* GFX + Sound */
10331033   /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */
r6428r6429
10401040   ROM_LOAD( "sb46",      0x0800000, 0x0400000, CRC(22e7c648) SHA1(baddb9bc13accd83bea61533d7286cf61cd89279) )   /* GFX only */
10411041ROM_END
10421042
1043ROM_START( snowboara )
1043ROM_START( snowboar )
10441044   ROM_REGION( 0x100000, "maincpu", 0 )   /* 68000 code */
1045   ROM_LOAD16_BYTE(   "sb.53",   0x000000, 0x080000, CRC(4742749e) SHA1(933e39893ab74895ae4a99a932f8245a03ea0b5d) )
1046   ROM_LOAD16_BYTE(   "sb.55",   0x000001, 0x080000, CRC(6ddc431f) SHA1(8801c0cf1711bb956447ba1e631db28bd075caea) )
1045   ROM_LOAD16_BYTE(   "sb.53",   0x000000, 0x080000, CRC(4742749e) SHA1(933e39893ab74895ae4a99a932f8245a03ea0b5d) ) /* Version 2.1 program roms */
1046   ROM_LOAD16_BYTE(   "sb.55",   0x000001, 0x080000, CRC(6ddc431f) SHA1(8801c0cf1711bb956447ba1e631db28bd075caea) ) /* Version 2.1 program roms */
10471047
10481048   ROM_REGION( 0x1400000, "gfx1", 0 )   /* GFX + Sound */
10491049   ROM_LOAD( "sb.a0",      0x0000000, 0x0080000, CRC(aa476e44) SHA1(2b87689489b9619e9e5ca32c3e3d2aec8ef31c88) )   /* GFX only */
r6428r6429
14061406   ROM_LOAD16_BYTE( "1.u40",   0x000001, 0x020000, BAD_DUMP CRC(311c2f94) SHA1(963d6b5f479598145146fcb8b7c6ce77fbc92b07) )
14071407
14081408   ROM_REGION( 0x0300000, "gfx1", 0 ) /* GFX + Sound */
1409   ROM_LOAD( "3.u54",   0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) )
1410   ROM_LOAD( "4.u53",   0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) )
1411   ROM_LOAD( "5.u52",   0x0100000, 0x0080000, CRC(19b939f4) SHA1(7281709aa3ab1decb84bf7ab10492fb6ec197c80) )
1412   ROM_LOAD( "6.u51",   0x0180000, 0x0100000, CRC(6dafc11c) SHA1(2aa3d6318418578433b3060bda6e27adf794dea4) )
1413   ROM_LOAD( "7.u50",  0x0280000, 0x0080000, CRC(e80c6d39) SHA1(b3ae5d66c48c2ba6665a181e311b0c834384258a) )
1409   ROM_LOAD( "3.u54", 0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) )
1410   ROM_LOAD( "4.u53", 0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) )
1411   ROM_LOAD( "5.u52", 0x0100000, 0x0080000, CRC(19b939f4) SHA1(7281709aa3ab1decb84bf7ab10492fb6ec197c80) )
1412   ROM_LOAD( "6.u51", 0x0180000, 0x0100000, CRC(6dafc11c) SHA1(2aa3d6318418578433b3060bda6e27adf794dea4) )
1413   ROM_LOAD( "7.u50", 0x0280000, 0x0080000, CRC(e80c6d39) SHA1(b3ae5d66c48c2ba6665a181e311b0c834384258a) )
14141414
14151415   ROM_REGION( 0x0600, "plds", 0 )
14161416   ROM_LOAD( "palce16v8h.u29",  0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) )
r6428r6429
14231423GAME( 1995, touchgoe, touchgo,  touchgo,  touchgo,  touchgo,  ROT0, "Gaelco", "Touch & Go (earlier revision)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
14241424GAME( 1995, wrally2,  0,        wrally2,  wrally2,  0,        ROT0, "Gaelco", "World Rally 2: Twin Racing", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
14251425GAME( 1996, maniacsq, 0,        maniacsq, maniacsq, 0,        ROT0, "Gaelco", "Maniac Square (unprotected)", 0 )
1426GAME( 1996, snowboar, 0,        snowboar, snowboar, snowboar, ROT0, "Gaelco", "Snow Board Championship (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
1427GAME( 1996, snowboara,snowboar, snowboar, snowboar, 0,        ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
1426GAME( 1996, snowboar, 0,        snowboar, snowboar, 0,        ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
1427GAME( 1996, snowboara,snowboar, snowboar, snowboar, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
14281428GAME( 1998, bang,     0,        bang,     bang,     bang,     ROT0, "Gaelco", "Bang!", 0 )
14291429GAME( 1998, bangj,    bang,     bang,     bang,     bang,     ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
14301430GAME( 1999, grtesoro, 0,        maniacsq, maniacsq, 0,        ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
src/mame/drivers/homerun.c
r6428r6429
101101   AM_RANGE(0x40, 0x40) AM_READ_PORT("IN0")
102102   AM_RANGE(0x50, 0x50) AM_READ_PORT("IN2")
103103   AM_RANGE(0x60, 0x60) AM_READ_PORT("IN1")
104   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
104   AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
105105ADDRESS_MAP_END
106106
107107static const ym2203_interface ym2203_config =
r6428r6429
210210   /* sound hardware */
211211   MDRV_SPEAKER_STANDARD_MONO("mono")
212212
213   MDRV_SOUND_ADD("ym", YM2203, 6000000/2)
213   MDRV_SOUND_ADD("ymsnd", YM2203, 6000000/2)
214214   MDRV_SOUND_CONFIG(ym2203_config)
215215   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
216216
src/mame/drivers/champbas.c
r6428r6429
213213static ADDRESS_MAP_START( talbot_map, ADDRESS_SPACE_PROGRAM, 8 )
214214   AM_RANGE(0x0000, 0x5fff) AM_ROM
215215   AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE(1) /* MCU shared RAM */
216   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay", ay8910_data_address_w)
216   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_data_address_w)
217217   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram)
218218   AM_RANGE(0x8800, 0x8fef) AM_RAM
219219   AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
r6428r6429
240240static ADDRESS_MAP_START( champbas_main_map, ADDRESS_SPACE_PROGRAM, 8 )
241241   AM_RANGE(0x0000, 0x5fff) AM_ROM
242242   AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE(1)
243   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay", ay8910_data_address_w)
243   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_data_address_w)
244244   AM_RANGE(0x7800, 0x7fff) AM_ROM   // champbb2 only
245245   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram)
246246   AM_RANGE(0x8800, 0x8fef) AM_RAM
r6428r6429
272272static ADDRESS_MAP_START( exctsccb_main_map, ADDRESS_SPACE_PROGRAM, 8 )
273273   AM_RANGE(0x0000, 0x5fff) AM_ROM
274274//  AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE(1) // MCU not used (though it's present on the board)
275   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay", ay8910_data_address_w)
275   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_data_address_w)
276276//  AM_RANGE(0x7800, 0x7fff) AM_ROM // champbb2 only
277277   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram)
278278   AM_RANGE(0x8800, 0x8fff) AM_RAM AM_BASE(&spriteram_2) /* ??? */
r6428r6429
576576
577577   /* sound hardware */
578578   MDRV_SPEAKER_STANDARD_MONO("mono")
579   MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12)
579   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12)
580580   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
581581MACHINE_DRIVER_END
582582
r6428r6429
610610   /* sound hardware */
611611   MDRV_SPEAKER_STANDARD_MONO("mono")
612612
613   MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12)
613   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12)
614614   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
615615
616616   MDRV_SOUND_ADD("dac", DAC, 0)
r6428r6429
716716   /* sound hardware */
717717   MDRV_SPEAKER_STANDARD_MONO("mono")
718718
719   MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12)
719   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12)
720720   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
721721
722722   MDRV_SOUND_ADD("dac", DAC, 0)
src/mame/drivers/m107.c
r6428r6429
194194   AM_RANGE(0x9ff00, 0x9ffff) AM_WRITENOP /* Irq controller? */
195195   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
196196   AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", irem_ga20_r, irem_ga20_w, 0x00ff)
197   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
197   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
198198   AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m107_soundlatch_r, m107_sound_irq_ack_w)
199199   AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m107_sound_status_w)
200200   AM_RANGE(0xffff0, 0xfffff) AM_ROM
r6428r6429
466466   /* sound hardware */
467467   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
468468
469   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)
469   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)
470470   MDRV_SOUND_CONFIG(ym2151_config)
471471   MDRV_SOUND_ROUTE(0, "lspeaker", 0.40)
472472   MDRV_SOUND_ROUTE(1, "rspeaker", 0.40)
src/mame/drivers/ninjaw.c
r6428r6429
477477   AM_RANGE(0x0000, 0x3fff) AM_ROM
478478   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
479479   AM_RANGE(0xc000, 0xdfff) AM_RAM
480   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
480   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r,ym2610_w)
481481   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
482482   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
483483   AM_RANGE(0xe400, 0xe403) AM_WRITE(ninjaw_pancontrol) /* pan */
r6428r6429
732732   /* sound hardware */
733733   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
734734
735   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
735   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
736736   MDRV_SOUND_CONFIG(ym2610_config)
737737   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
738738   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
805805   /* sound hardware */
806806   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
807807
808   MDRV_SOUND_ADD("ym", YM2610, 16000000/2)
808   MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2)
809809   MDRV_SOUND_CONFIG(ym2610_config)
810810   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
811811   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
874874//  ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) ) /* SCR (screen 3) */
875875//  ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
876876
877   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
877   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
878878   ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) )
879879   ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) )
880880   ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) )
r6428r6429
930930//  ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) ) /* SCR (screen 3) */
931931//  ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
932932
933   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
933   ROM_REGION( 0x180000, "ymsnd", 0 )   /* ADPCM samples */
934934   ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) )
935935   ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) )
936936   ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) )
r6428r6429
978978   ROM_REGION( 0x100000, "gfx3", 0 )
979979   ROM_COPY( "gfx1", 0x000000, 0x000000, 0x100000 )   /* SCR (screens 2+) */
980980
981   ROM_REGION( 0x100000, "ym", 0 )   /* ADPCM samples */
981   ROM_REGION( 0x100000, "ymsnd", 0 )   /* ADPCM samples */
982982   ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
983983   ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) )
984984
src/mame/drivers/arkanoid.c
r6428r6429
509509#include "sound/ay8910.h"
510510#include "cpu/m6805/m6805.h"
511511
512int arkanoid_bootleg_id;
513
514
515512/***************************************************************************/
516513
517514/* Memory Maps */
r6428r6429
519516static ADDRESS_MAP_START( arkanoid_map, ADDRESS_SPACE_PROGRAM, 8 )
520517   AM_RANGE(0x0000, 0xbfff) AM_ROM
521518   AM_RANGE(0xc000, 0xc7ff) AM_RAM
522   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
523   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("ay", ay8910_r)
519   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
520   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_r)
524521   AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w)   /* gfx bank, flip screen etc. */
525522   AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM")      /* 2 bits from the 68705 */
526523   AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w)
527524   AM_RANGE(0xd018, 0xd018) AM_READWRITE(arkanoid_Z80_mcu_r, arkanoid_Z80_mcu_w)  /* input from the 68705 */
528   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE(&videoram)
529   AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
525   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE_MEMBER(arkanoid_state, videoram)
526   AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE(&spriteram_size)
530527   AM_RANGE(0xe840, 0xefff) AM_RAM
531528   AM_RANGE(0xf000, 0xffff) AM_READNOP   /* fixes instant death in final level */
532529ADDRESS_MAP_END
r6428r6429
534531static ADDRESS_MAP_START( bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
535532   AM_RANGE(0x0000, 0xbfff) AM_ROM
536533   AM_RANGE(0xc000, 0xc7ff) AM_RAM
537   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("ay", ay8910_address_w)
538   AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
534   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_address_w)
535   AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
539536   AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w)   /* gfx bank, flip screen etc. */
540537   AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM")
541538   AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w)
542539   AM_RANGE(0xd018, 0xd018) AM_READ_PORT("MUX") AM_WRITENOP
543   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE(&videoram)
544   AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
540   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE_MEMBER(arkanoid_state, videoram)
541   AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE(&spriteram_size)
545542   AM_RANGE(0xe840, 0xefff) AM_RAM
546543   AM_RANGE(0xf000, 0xffff) AM_READNOP   /* fixes instant death in final level */
547544ADDRESS_MAP_END
548545
549546static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
550547   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
551   AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_portA_r, arkanoid_68705_portA_w)
548   AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_port_a_r, arkanoid_68705_port_a_w)
552549   AM_RANGE(0x0001, 0x0001) AM_READ_PORT("MUX")
553   AM_RANGE(0x0002, 0x0002) AM_READWRITE(arkanoid_68705_portC_r, arkanoid_68705_portC_w)
554   AM_RANGE(0x0004, 0x0004) AM_WRITE(arkanoid_68705_ddrA_w)
555   AM_RANGE(0x0006, 0x0006) AM_WRITE(arkanoid_68705_ddrC_w)
550   AM_RANGE(0x0002, 0x0002) AM_READWRITE(arkanoid_68705_port_c_r, arkanoid_68705_port_c_w)
551   AM_RANGE(0x0004, 0x0004) AM_WRITE(arkanoid_68705_ddr_a_w)
552   AM_RANGE(0x0006, 0x0006) AM_WRITE(arkanoid_68705_ddr_c_w)
556553   AM_RANGE(0x0010, 0x007f) AM_RAM
557554   AM_RANGE(0x0080, 0x07ff) AM_ROM
558555ADDRESS_MAP_END
r6428r6429
800797
801798/* Machine Drivers */
802799
800static MACHINE_START( arkanoid )
801{
802   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
803
804   state_save_register_global(machine, state->bootleg_cmd);
805
806   state_save_register_global(machine, state->paddle_select);
807   state_save_register_global(machine, state->z80write);
808   state_save_register_global(machine, state->fromz80);
809   state_save_register_global(machine, state->m68705write);
810   state_save_register_global(machine, state->toz80);
811
812   state_save_register_global(machine, state->port_a_in);
813   state_save_register_global(machine, state->port_a_out);
814   state_save_register_global(machine, state->ddr_a);
815
816   state_save_register_global(machine, state->port_c_out);
817   state_save_register_global(machine, state->ddr_c);
818
819   state_save_register_global(machine, state->gfxbank);
820   state_save_register_global(machine, state->palettebank);
821}
822
823static MACHINE_RESET( arkanoid )
824{
825   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
826
827   state->port_a_in = 0;
828   state->port_a_out = 0;
829   state->z80write = 0;
830   state->m68705write = 0;
831
832   state->bootleg_cmd = 0;
833   state->paddle_select = 0;
834   state->fromz80 = 0;
835   state->toz80 = 0;
836   state->ddr_a = 0;
837   state->ddr_c = 0;
838   state->port_c_out = 0;
839   state->gfxbank = 0;
840   state->palettebank = 0;
841}
842
803843static MACHINE_DRIVER_START( arkanoid )
844
845   /* driver data */
846   MDRV_DRIVER_DATA(arkanoid_state)
847
804848   // basic machine hardware
805849   MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
806850   MDRV_CPU_PROGRAM_MAP(arkanoid_map)
r6428r6429
815859   MDRV_MACHINE_RESET(arkanoid)
816860
817861   // video hardware
818
819862   MDRV_SCREEN_ADD("screen", RASTER)
820863   MDRV_SCREEN_REFRESH_RATE(60)
821864   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
r6428r6429
832875   // sound hardware
833876   MDRV_SPEAKER_STANDARD_MONO("mono")
834877
835   MDRV_SOUND_ADD("ay", AY8910, XTAL_12MHz/4/2) /* YM2149 clock is 3mhz, pin 26 is low so 3mhz/2 */
878   MDRV_SOUND_ADD("aysnd", AY8910, XTAL_12MHz/4/2) /* YM2149 clock is 3mhz, pin 26 is low so 3mhz/2 */
836879   MDRV_SOUND_CONFIG(ay8910_config)
837880   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
838881MACHINE_DRIVER_END
r6428r6429
11951238
11961239static DRIVER_INIT( arkangc )
11971240{
1198   arkanoid_bootleg_id = ARKANGC;
1241   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1242   state->bootleg_id = ARKANGC;
11991243   arkanoid_bootleg_init(machine);
12001244}
12011245
12021246static DRIVER_INIT( arkangc2 )
12031247{
1204   arkanoid_bootleg_id = ARKANGC2;
1248   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1249   state->bootleg_id = ARKANGC2;
12051250   arkanoid_bootleg_init(machine);
12061251}
12071252
12081253static DRIVER_INIT( block2 )
12091254{
1255   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
12101256   // the graphics on this bootleg have the data scrambled
12111257   int tile;
12121258   UINT8* srcgfx = memory_region(machine,"gfx1");
12131259   UINT8* buffer = alloc_array_or_die(UINT8, 0x18000);
12141260
1215   for (tile=0;tile<0x3000;tile++)
1261   for (tile = 0; tile < 0x3000; tile++)
12161262   {
12171263      int srctile;
12181264
r6428r6429
12271273                7,6,8,4,
12281274                    3,2,1,0);
12291275
1230      srctile = srctile^0xd4;
1276      srctile = srctile ^ 0xd4;
12311277
1232      memcpy(&buffer[tile*8], &srcgfx[srctile*8], 8);
1278      memcpy(&buffer[tile * 8], &srcgfx[srctile * 8], 8);
12331279   }
12341280
1235   memcpy(srcgfx,buffer,0x18000);
1281   memcpy(srcgfx, buffer, 0x18000);
12361282
1237   arkanoid_bootleg_id = BLOCK2;
1283   state->bootleg_id = BLOCK2;
12381284   arkanoid_bootleg_init(machine);
12391285}
12401286
12411287static DRIVER_INIT( arkblock )
12421288{
1243   arkanoid_bootleg_id = ARKBLOCK;
1289   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1290   state->bootleg_id = ARKBLOCK;
12441291   arkanoid_bootleg_init(machine);
12451292}
12461293
12471294static DRIVER_INIT( arkbloc2 )
12481295{
1249   arkanoid_bootleg_id = ARKBLOC2;
1296   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1297   state->bootleg_id = ARKBLOC2;
12501298   arkanoid_bootleg_init(machine);
12511299}
12521300
12531301static DRIVER_INIT( arkgcbl )
12541302{
1255   arkanoid_bootleg_id = ARKGCBL;
1303   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1304   state->bootleg_id = ARKGCBL;
12561305   arkanoid_bootleg_init(machine);
12571306}
12581307
12591308static DRIVER_INIT( paddle2 )
12601309{
1261   arkanoid_bootleg_id = PADDLE2;
1310   arkanoid_state *state = (arkanoid_state *)machine->driver_data;
1311   state->bootleg_id = PADDLE2;
12621312   arkanoid_bootleg_init(machine);
12631313}
12641314
r6428r6429
12681318   UINT8 *ROM = memory_region(machine, "maincpu");
12691319   int x;
12701320
1271   for (x=0;x<0x8000;x++)
1321   for (x = 0; x < 0x8000; x++)
12721322   {
1273      ROM[x]=ROM[x]^0x94;
1323      ROM[x] = ROM[x] ^ 0x94;
12741324   }
12751325
12761326   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd008, 0xd008, 0, 0, tetrsark_d008_w );
src/mame/drivers/twin16.c
r6428r6429
231231   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", twin16_upd_reset_w)
232232   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
233233   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)
234   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
234   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
235235   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_port_w)
236236   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("upd", twin16_upd_start_w)
237237   AM_RANGE(0xf000, 0xf000) AM_DEVREAD("upd", twin16_upd_busy_r)   // miaj writes 0 to it
r6428r6429
752752   // sound hardware
753753   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
754754
755   MDRV_SOUND_ADD("ym", YM2151, 7159160/2)
755   MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2)
756756   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
757757   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
758758
r6428r6429
807807   /* sound hardware */
808808   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
809809
810   MDRV_SOUND_ADD("ym", YM2151, 7159160/2)
810   MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2)
811811   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
812812   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
813813
src/mame/drivers/megasys1.c
r6428r6429
394394   AM_RANGE(0x000000, 0x01ffff) AM_ROM
395395   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r)
396396   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)   // to main cpu
397   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r,ym2151_w, 0x00ff)
397   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r,ym2151_w, 0x00ff)
398398   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff)
399399   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
400400   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
r6428r6429
412412   AM_RANGE(0x000000, 0x01ffff) AM_ROM
413413   AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
414414   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
415   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r,ym2151_w, 0x00ff)
415   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r,ym2151_w, 0x00ff)
416416   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff)
417417   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
418418   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
r6428r6429
436436
437437static ADDRESS_MAP_START( z80_sound_io_map, ADDRESS_SPACE_IO, 8 )
438438   ADDRESS_MAP_GLOBAL_MASK(0xff)
439   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
439   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
440440ADDRESS_MAP_END
441441
442442
r6428r6429
14871487   /* sound hardware */
14881488   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
14891489
1490   MDRV_SOUND_ADD("ym", YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */
1490   MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */
14911491   MDRV_SOUND_CONFIG(ym2151_config)
14921492   MDRV_SOUND_ROUTE(0, "lspeaker", 0.80)
14931493   MDRV_SOUND_ROUTE(1, "rspeaker", 0.80)
r6428r6429
16551655   /* sound hardware */
16561656   MDRV_SPEAKER_STANDARD_MONO("mono")
16571657
1658   MDRV_SOUND_ADD("ym", YM2203, 1500000)
1658   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
16591659   MDRV_SOUND_CONFIG(ym2203_config)
16601660   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
16611661MACHINE_DRIVER_END
src/mame/drivers/crshrace.c
r6428r6429
220220   ADDRESS_MAP_GLOBAL_MASK(0xff)
221221   AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w)
222222   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, pending_command_clear_w)
223   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
223   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
224224ADDRESS_MAP_END
225225
226226
r6428r6429
468468   /* sound hardware */
469469   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
470470
471   MDRV_SOUND_ADD("ym", YM2610, 8000000)
471   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
472472   MDRV_SOUND_CONFIG(ym2610_config)
473473   MDRV_SOUND_ROUTE(0, "lspeaker",  0.25)
474474   MDRV_SOUND_ROUTE(0, "rspeaker", 0.25)
r6428r6429
507507   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */
508508   ROM_LOAD( "h894",         0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) )
509509
510   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
510   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
511511   ROM_LOAD( "h893",         0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) )
512512ROM_END
513513
r6428r6429
541541   ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */
542542   ROM_LOAD( "h894",         0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) )   // IC73.BIN
543543
544   ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */
544   ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */
545545   ROM_LOAD( "h893",         0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) )   // IC69.BIN
546546ROM_END
547547
src/mame/drivers/airbustr.c
r6428r6429
418418static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
419419   ADDRESS_MAP_GLOBAL_MASK(0xff)
420420   AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
421   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
421   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
422422   AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
423423   AM_RANGE(0x06, 0x06) AM_READWRITE(soundcommand_r, soundcommand2_w)
424424ADDRESS_MAP_END
r6428r6429
650650   // sound hardware
651651   MDRV_SPEAKER_STANDARD_MONO("mono")
652652
653   MDRV_SOUND_ADD("ym", YM2203, 3000000)
653   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
654654   MDRV_SOUND_CONFIG(ym2203_config)
655655   MDRV_SOUND_ROUTE(0, "mono", 0.25)
656656   MDRV_SOUND_ROUTE(1, "mono", 0.25)
src/mame/drivers/pacman.c
r6428r6429
36733673   ROM_LOAD( "82s126.3m",    0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )   /* timing - not used */
36743674ROM_END
36753675
3676ROM_START( popeyeman )
3677   ROM_REGION( 0x10000, "maincpu", 0 )
3678   ROM_LOAD( "1.6e",   0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
3679   ROM_LOAD( "5.6k",   0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
3680   ROM_LOAD( "2.6f",   0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
3681   ROM_LOAD( "6.6m",   0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
3682   ROM_LOAD( "3.6h",   0x2000, 0x0800, CRC(08419c4a) SHA1(7e5001adad401080c788737c1d2349f218750442) )
3683   ROM_LOAD( "7.6n",   0x2800, 0x0800, CRC(ab74b51f) SHA1(1bce8933ed7807eb7aca9670df8994f8d1a8b5b7) )
3684   ROM_LOAD( "4.6j",   0x3000, 0x0800, CRC(5039b082) SHA1(086a6ac4742734167d283b1121fce29d8ac4a6cd) )
3685   ROM_LOAD( "8.6p",   0x3800, 0x0800, CRC(931770d7) SHA1(78fcf88e07ec5126c12c3297b62ca388809e947c) )
3686
3687   ROM_REGION( 0x2000, "gfx1", 0 )
3688   ROM_LOAD( "9.5e",    0x0000, 0x0800, CRC(b569c4c1) SHA1(34a09bcb6eb08375cd5e9ce0aa66b23d60489f92) )
3689   ROM_LOAD( "11.5h",  0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
3690   ROM_LOAD( "10.5f",    0x1000, 0x0800, CRC(014fb5a4) SHA1(7779f0f0d11027adf3b9175af26d53f1e3a54f29) )
3691   ROM_LOAD( "12.5j",    0x1800, 0x0800, CRC(21b91c64) SHA1(4818194ecc18b5df159f3799ea93c911fd4b9556) )
3692
3693   ROM_REGION( 0x0120, "proms", 0 )
3694   ROM_LOAD( "82s123.7f",    0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
3695   ROM_LOAD( "82s126.4a",    0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
3696
3697   ROM_REGION( 0x0200, "namco", 0 )   /* sound PROMs */
3698   ROM_LOAD( "82s126.1m",    0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
3699   ROM_LOAD( "82s126.3m",    0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )   /* timing - not used */
3700ROM_END
3701
36763702ROM_START( puckmanh )
36773703   ROM_REGION( 0x10000, "maincpu", 0 )
36783704   ROM_LOAD( "pm01.6e",      0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
r6428r6429
57215747GAME( 1981, hangly,   puckman,  pacman,   pacman,   0,        ROT90,  "hack", "Hangly-Man (set 1)", GAME_SUPPORTS_SAVE )
57225748GAME( 1981, hangly2,  puckman,  pacman,   pacman,   0,        ROT90,  "hack", "Hangly-Man (set 2)", GAME_SUPPORTS_SAVE )
57235749GAME( 1981, hangly3,  puckman,  pacman,   pacman,   0,        ROT90,  "hack", "Hangly-Man (set 3)", GAME_SUPPORTS_SAVE )
5750GAME( 1981, popeyeman,puckman,  pacman,   pacman,   0,        ROT90,  "hack", "Popeye-Man", GAME_SUPPORTS_SAVE )
57245751GAME( 1981, piranhah, puckman,  pacman,   mspacman, 0,        ROT90,  "hack", "Piranha (hack)", GAME_SUPPORTS_SAVE )
57255752GAME( 1981, crush,    0,        pacman,   maketrax, maketrax, ROT90,  "Kural Samno Electric", "Crush Roller (Kural Samno)", GAME_SUPPORTS_SAVE )
57265753GAME( 1981, crushbl,  crush,    pacman,   maketrax, 0,        ROT90,  "bootleg", "Crush Roller (bootleg)", GAME_SUPPORTS_SAVE )
src/mame/drivers/igs011.c
r0r6429
1/***************************************************************************
2
3                      -= IGS011 (Blitter) Based Hardware =-
4
5                    driver by   Luca Elia (l.elia@tin.it)
6            code decrypted by   Olivier Galibert
7
8
9CPU     :   68000
10Sound   :   M6295 + Optional FM or ICS2115
11Custom  :   IGS011 (blitter), IGS003 (8255), IGS012 (optional, near CPU)
12NVRAM   :   Battery for main RAM
13
14---------------------------------------------------------------------------
15Year + Game            PCB        Sound         Chips
16---------------------------------------------------------------------------
1795 Da Ban Cheng        NO-T0084-1 M6295         IGS011 8255
1895 Long Hu Bang        NO-T0093   M6295         IGS011 8255
1995 Mahjong Ryukobou    NO-T0094   M6295         IGS011 8255
2095 Dragon World        NO-0105-1  M6295 YM3812  IGS011 IGS003  IGS012
2196 Virtua Bowling      NO-0101-1  ICS2115       IGS011 IGS003e IGS012
2296 Long Hu Bang II     NO-0115    M6295 YM2413  IGS011 8255
2396 Wan Li Chang Cheng  ?
2496 Xing Yen Man Guan   ?
2598 Mj Nenrikishu SP    NO-0115-5  M6295 YM2413  IGS011 8255
26---------------------------------------------------------------------------
27
28To do:
29
30- Protection emulation instead of patching the roms
31- A few graphical bugs
32- vbowl, vbowlj: trackball support, sound is slow and low volume
33
34- lhb: in the copyright screen the '5' in '1995' is drawn by the cpu on layer 5,
35  but with wrong colors (since the top nibble of the affected pixels is left to 0xf)
36  (drgnwrld is like this too, maybe hacked, or a cheap year replacement by IGS)
37
38- dbc: in the title screen the '5' in '1995' is drawn by the cpu with wrong colors.
39  (see above comment)
40  Also the background palette is wrong since the fade routine is called with wrong
41  parameters, but in this case the PCB does the same.
42
43Notes:
44
45- In most games, keep test button pressed during boot for another test mode
46
47***************************************************************************/
48
49#include "deprecat.h"
50#include "driver.h"
51#include "cpu/m68000/m68000.h"
52#include "sound/okim6295.h"
53#include "sound/2413intf.h"
54#include "sound/3812intf.h"
55#include "sound/ics2115.h"
56
57/***************************************************************************
58
59    Video
60
61    There are 8 non scrolling layers as big as the screen (512 x 256).
62    Each layer has 256 colors and its own palette.
63
64    There are 8 priority codes with RAM associated to each (8 x 256 values).
65    For each screen position, to determine which pixel to display, the video
66    chip associates a bit to the opacity of that pixel for each layer
67    (1 = trasparent) to form an address into the selected priority RAM.
68    The value at that address (0-7) is the topmost layer.
69
70***************************************************************************/
71
72static UINT8 *layer[8];
73
74static UINT16 igs011_priority, *igs011_priority_ram;
75
76static UINT8 lhb2_pen_hi;   // high 3 bits of pens (lhb2 only)
77
78
79static WRITE16_HANDLER( igs011_priority_w )
80{
81   COMBINE_DATA(&igs011_priority);
82
83//  logerror("%06x: igs011_priority = %02x\n", cpu_get_pc(space->cpu), igs011_priority);
84
85   if (data & ~0x7)
86      logerror("%06x: warning, unknown bits written to igs011_priority = %02x\n", cpu_get_pc(space->cpu), igs011_priority);
87}
88
89
90static VIDEO_START( igs011 )
91{
92   int i;
93
94   for (i = 0; i < 8; i++)
95   {
96      layer[i] = auto_alloc_array(machine, UINT8, 512 * 256);
97   }
98
99   lhb2_pen_hi = 0;
100}
101
102static VIDEO_UPDATE( igs011 )
103{
104#ifdef MAME_DEBUG
105   int layer_enable = -1;
106#endif
107
108   int x,y,l,scr_addr,pri_addr;
109   UINT16 *pri_ram;
110
111#ifdef MAME_DEBUG
112   if (input_code_pressed(screen->machine, KEYCODE_Z))
113   {
114      int mask = 0;
115      if (input_code_pressed(screen->machine, KEYCODE_Q))   mask |= 0x01;
116      if (input_code_pressed(screen->machine, KEYCODE_W))   mask |= 0x02;
117      if (input_code_pressed(screen->machine, KEYCODE_E))   mask |= 0x04;
118      if (input_code_pressed(screen->machine, KEYCODE_R))   mask |= 0x08;
119      if (input_code_pressed(screen->machine, KEYCODE_A))   mask |= 0x10;
120      if (input_code_pressed(screen->machine, KEYCODE_S))   mask |= 0x20;
121      if (input_code_pressed(screen->machine, KEYCODE_D))   mask |= 0x40;
122      if (input_code_pressed(screen->machine, KEYCODE_F))   mask |= 0x80;
123      if (mask)   layer_enable &= mask;
124   }
125#endif
126
127   pri_ram = &igs011_priority_ram[(igs011_priority & 7) * 512/2];
128
129   for (y = cliprect->min_y; y <= cliprect->max_y; y++)
130   {
131      for (x = cliprect->min_x; x <= cliprect->max_x; x++)
132      {
133         scr_addr = x + y * 512;
134         pri_addr = 0xff;
135
136         for (l = 0; l < 8; l++)
137         {
138            if (   (layer[l][scr_addr] != 0xff)
139#ifdef MAME_DEBUG
140                  && (layer_enable & (1 << l))
141#endif
142               )
143               pri_addr &= ~(1 << l);
144         }
145
146
147         l   =   pri_ram[pri_addr] & 7;
148
149#ifdef MAME_DEBUG
150         if ((layer_enable != -1) && (pri_addr == 0xff))
151            *BITMAP_ADDR16(bitmap, y, x) = get_black_pen(screen->machine);
152         else
153#endif
154            *BITMAP_ADDR16(bitmap, y, x) = layer[l][scr_addr] | (l << 8);
155      }
156   }
157   return 0;
158}
159
160/***************************************************************************
161
162    In addition to the blitter, the CPU can also read from and write to
163    the framebuffers for the 8 layers, seen as 0x100000 bytes in memory.
164    The first half contains layers 0-3. Layers 4-7 are in the other half.
165
166    The layers are interleaved:
167
168    - bytes 0x00000-0x00003 contain the 1st pixel of layer 0,1,2,3
169    - bytes 0x00004-0x00007 contain the 2nd pixel of layer 0,1,2,3
170    ...
171    - bytes 0x80000-0x80003 contain the 1st pixel of layer 4,5,6,7
172    - bytes 0x80004-0x80007 contain the 2nd pixel of layer 4,5,6,7
173
174    and so on.
175
176***************************************************************************/
177
178static READ16_HANDLER( igs011_layers_r )
179{
180   int layer0 = ((offset & (0x80000/2)) ? 4 : 0) + ((offset & 1) ? 0 : 2);
181
182   UINT8 *l0 = layer[layer0];
183   UINT8 *l1 = layer[layer0+1];
184
185   offset >>= 1;
186   offset &= 0x1ffff;
187
188   return (l0[offset] << 8) | l1[offset];
189}
190
191static WRITE16_HANDLER( igs011_layers_w )
192{
193   UINT16 word;
194
195   int layer0 = ((offset & (0x80000/2)) ? 4 : 0) + ((offset & 1) ? 0 : 2);
196
197   UINT8 *l0 = layer[layer0];
198   UINT8 *l1 = layer[layer0+1];
199
200   offset >>= 1;
201   offset &= 0x1ffff;
202
203   word = (l0[offset] << 8) | l1[offset];
204   COMBINE_DATA(&word);
205   l0[offset] = word >> 8;
206   l1[offset] = word;
207}
208
209/***************************************************************************
210
211    Palette (r5g5b5)
212
213    offset + 0x000: xRRRRRGG
214    offset + 0x800: GGGBBBBB
215
216***************************************************************************/
217
218static WRITE16_HANDLER( igs011_palette )
219{
220   int rgb;
221
222   COMBINE_DATA(&paletteram16[offset]);
223
224   rgb = (paletteram16[offset & 0x7ff] & 0xff) | ((paletteram16[offset | 0x800] & 0xff) << 8);
225   palette_set_color_rgb(space->machine,offset & 0x7ff,pal5bit(rgb >> 0),pal5bit(rgb >> 5),pal5bit(rgb >> 10));
226}
227
228/***************************************************************************
229
230    Blitter
231
232***************************************************************************/
233
234static struct
235{
236
237   UINT16   x, y, w, h,
238         gfx_lo, gfx_hi,
239         depth,
240         pen,
241         flags;
242
243}   blitter;
244
245
246static WRITE16_HANDLER( igs011_blit_x_w )      {   COMBINE_DATA(&blitter.x);      }
247static WRITE16_HANDLER( igs011_blit_y_w )      {   COMBINE_DATA(&blitter.y);      }
248static WRITE16_HANDLER( igs011_blit_gfx_lo_w )   {   COMBINE_DATA(&blitter.gfx_lo);   }
249static WRITE16_HANDLER( igs011_blit_gfx_hi_w )   {   COMBINE_DATA(&blitter.gfx_hi);   }
250static WRITE16_HANDLER( igs011_blit_w_w )      {   COMBINE_DATA(&blitter.w);      }
251static WRITE16_HANDLER( igs011_blit_h_w )      {   COMBINE_DATA(&blitter.h);      }
252static WRITE16_HANDLER( igs011_blit_depth_w )   {   COMBINE_DATA(&blitter.depth);   }
253static WRITE16_HANDLER( igs011_blit_pen_w )   {   COMBINE_DATA(&blitter.pen);      }
254
255
256static WRITE16_HANDLER( igs011_blit_flags_w )
257{
258   int x, xstart, xend, xinc, flipx;
259   int y, ystart, yend, yinc, flipy;
260   int depth4, clear, opaque, z;
261   UINT8 trans_pen, clear_pen, pen_hi, *dest;
262   UINT8 pen = 0;
263
264   UINT8 *gfx      =   memory_region(space->machine, "blitter");
265   UINT8 *gfx2      =   memory_region(space->machine, "blitter_hi");
266   int gfx_size   =   memory_region_length(space->machine, "blitter");
267   int gfx2_size   =   memory_region_length(space->machine, "blitter_hi");
268
269   const rectangle *clip = video_screen_get_visible_area(space->machine->primary_screen);
270
271   COMBINE_DATA(&blitter.flags);
272
273   logerror("%06x: blit x %03x, y %03x, w %03x, h %03x, gfx %03x%04x, depth %02x, pen %02x, flags %03x\n", cpu_get_pc(space->cpu),
274               blitter.x,blitter.y,blitter.w,blitter.h,blitter.gfx_hi,blitter.gfx_lo,blitter.depth,blitter.pen,blitter.flags);
275
276   dest   =   layer[      blitter.flags & 0x0007   ];
277   opaque   =          !(blitter.flags & 0x0008);
278   clear   =            blitter.flags & 0x0010;
279   flipx   =            blitter.flags & 0x0020;
280   flipy   =            blitter.flags & 0x0040;
281   if               (!(blitter.flags & 0x0400)) return;
282
283   pen_hi   =   (lhb2_pen_hi & 0x07) << 5;
284
285   // pixel address
286   z      =   blitter.gfx_lo  + (blitter.gfx_hi << 16);
287
288   // what were they smoking???
289   depth4   =   !((blitter.flags & 0x7) < (4 - (blitter.depth & 0x7))) ||
290            (z & 0x800000);      // see lhb2
291
292   z &= 0x7fffff;
293
294   if (depth4)
295   {
296      z   *=   2;
297      if (gfx2 && (blitter.gfx_hi & 0x80))   trans_pen = 0x1f;   // lhb2
298      else                           trans_pen = 0x0f;
299
300      clear_pen = blitter.pen | 0xf0;
301   }
302   else
303   {
304      if (gfx2)   trans_pen = 0x1f;   // vbowl
305      else      trans_pen = 0xff;
306
307      clear_pen = blitter.pen;
308   }
309
310   xstart = (blitter.x & 0x1ff) - (blitter.x & 0x200);
311   ystart = (blitter.y & 0x0ff) - (blitter.y & 0x100);
312
313   if (flipx)   { xend = xstart - (blitter.w & 0x1ff) - 1;   xinc = -1; }
314   else      { xend = xstart + (blitter.w & 0x1ff) + 1;   xinc =  1; }
315
316   if (flipy)   { yend = ystart - (blitter.h & 0x0ff) - 1;   yinc = -1; }
317   else      { yend = ystart + (blitter.h & 0x0ff) + 1;   yinc =  1; }
318
319   for (y = ystart; y != yend; y += yinc)
320   {
321      for (x = xstart; x != xend; x += xinc)
322      {
323         // fetch the pixel
324         if (!clear)
325         {
326            if (depth4)      pen = (gfx[(z/2)%gfx_size] >> ((z&1)?4:0)) & 0x0f;
327            else         pen = gfx[z%gfx_size];
328
329            if ( gfx2 )
330            {
331               pen &= 0x0f;
332               if ( gfx2[(z/8)%gfx2_size] & (1 << (z & 7)) )
333                  pen |= 0x10;
334            }
335         }
336
337         // plot it
338         if (x >= clip->min_x && x <= clip->max_x && y >= clip->min_y && y <= clip->max_y)
339         {
340            if      (clear)            dest[x + y * 512] = clear_pen;
341            else if (pen != trans_pen)   dest[x + y * 512] = pen | pen_hi;
342            else if (opaque)         dest[x + y * 512] = 0xff;
343         }
344
345         z++;
346      }
347   }
348
349   #ifdef MAME_DEBUG
350#if 1
351   if (input_code_pressed(space->machine, KEYCODE_Z))
352   {   char buf[20];
353      sprintf(buf, "%02X%02X",blitter.depth,blitter.flags&0xff);
354//      ui_draw_text(buf, blitter.x, blitter.y);    // crashes mame!
355   }
356#endif
357   #endif
358}
359
360/***************************************************************************
361
362    Common functions
363
364***************************************************************************/
365
366// Inputs
367
368static UINT16 igs_dips_sel, igs_input_sel, igs_hopper;
369
370static CUSTOM_INPUT( igs_hopper_r )
371{
372   return (igs_hopper && ((video_screen_get_frame_number(field->port->machine->primary_screen)/5)&1)) ? 0x0000 : 0x0001;
373}
374
375static WRITE16_HANDLER( igs_dips_w )
376{
377   COMBINE_DATA(&igs_dips_sel);
378}
379
380#define IGS_DIPS_R( NUM )                                                \
381static READ16_HANDLER( igs_##NUM##_dips_r )                                    \
382{                                                                  \
383   int i;                                                            \
384   UINT16 ret=0;                                                      \
385   static const char *const dipnames[] = { "DSW1", "DSW2", "DSW3", "DSW4", "DSW5" };   \
386                                                                  \
387   for (i = 0; i < NUM; i++)                                             \
388      if ((~igs_dips_sel) & (1 << i) )                                    \
389         ret = input_port_read(space->machine, dipnames[i]);                     \
390                                                                  \
391   /* 0x0100 is blitter busy */                                          \
392   return    (ret & 0xff) | 0x0000;                                          \
393}
394
395// Games have 3 to 5 dips
396IGS_DIPS_R( 3 )
397IGS_DIPS_R( 4 )
398IGS_DIPS_R( 5 )
399
400/***************************************************************************
401
402    Code Decryption
403
404***************************************************************************/
405
406static void wlcc_decrypt(running_machine *machine)
407{
408   int i;
409   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
410
411   int rom_size = 0x80000;
412
413   for (i=0; i<rom_size/2; i++)
414   {
415      UINT16 x = src[i];
416
417       if ((i & 0x2000) == 0x0000 || (i & 0x0004) == 0x0000 || (i & 0x0090) == 0x0000)
418         x ^= 0x0004;
419       if ((i & 0x0100) == 0x0100 || (i & 0x0040) == 0x0040 || (i & 0x0012) == 0x0012)
420         x ^= 0x0020;
421       if ((i & 0x2400) == 0x0000 || (i & 0x4100) == 0x4100 || ((i & 0x2000) == 0x2000 && (i & 0x0c00) != 0x0000))
422         x ^= 0x0200;
423       if ((x & 0x0024) == 0x0004 || (x & 0x0024) == 0x0020)
424         x ^= 0x0024;
425      src[i] = x;
426   }
427}
428
429
430static void lhb_decrypt(running_machine *machine)
431{
432   int i;
433   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
434
435   int rom_size = 0x80000;
436
437   for (i=0; i<rom_size/2; i++)
438   {
439      UINT16 x = src[i];
440
441      if ((i & 0x1100) != 0x0100)
442         x ^= 0x0200;
443
444      if ((i & 0x0150) != 0x0000 && (i & 0x0152) != 0x0010)
445         x ^= 0x0004;
446
447      if ((i & 0x2084) != 0x2084 && (i & 0x2094) != 0x2014)
448         x ^= 0x0020;
449
450      src[i] = x;
451   }
452}
453
454
455static void drgnwrld_type3_decrypt(running_machine *machine)
456{
457   int i;
458   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
459
460   int rom_size = 0x80000;
461
462   for (i=0; i<rom_size/2; i++)
463   {
464      UINT16 x = src[i];
465
466      if ((i & 0x2000) == 0x0000 || (i & 0x0004) == 0x0000 || (i & 0x0090) == 0x0000)
467         x ^= 0x0004;
468
469      if ((i & 0x0100) == 0x0100 || (i & 0x0040) == 0x0040 || (i & 0x0012) == 0x0012)
470         x ^= 0x0020;
471
472      if ((((i & 0x1000) == 0x1000) ^ ((i & 0x0100) == 0x0100))
473         || (i & 0x0880) == 0x0800 || (i & 0x0240) == 0x0240)
474            x ^= 0x0200;
475
476      if ((x & 0x0024) == 0x0004 || (x & 0x0024) == 0x0020)
477         x ^= 0x0024;
478
479      src[i] = x;
480   }
481}
482
483static void drgnwrld_type2_decrypt(running_machine *machine)
484{
485   int i;
486   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
487
488   int rom_size = 0x80000;
489
490   for (i=0; i<rom_size/2; i++)
491   {
492      UINT16 x = src[i];
493
494      if(((i & 0x000090) == 0x000000) || ((i & 0x002004) != 0x002004))
495        x ^= 0x0004;
496
497      if((((i & 0x000050) == 0x000000) || ((i & 0x000142) != 0x000000)) && ((i & 0x000150) != 0x000000))
498        x ^= 0x0020;
499
500      if(((i & 0x004280) == 0x004000) || ((i & 0x004080) == 0x000000))
501        x ^= 0x0200;
502
503      if((i & 0x0011a0) != 0x001000)
504        x ^= 0x0200;
505
506      if((i & 0x000180) == 0x000100)
507        x ^= 0x0200;
508
509      if((x & 0x0024) == 0x0020 || (x & 0x0024) == 0x0004)
510        x ^= 0x0024;
511
512      src[i] = x;
513   }
514}
515
516static void drgnwrld_type1_decrypt(running_machine *machine)
517{
518   int i;
519   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
520
521   int rom_size = 0x80000;
522
523   for (i=0; i<rom_size/2; i++)
524   {
525      UINT16 x = src[i];
526
527      if ((i & 0x2000) == 0x0000 || (i & 0x0004) == 0x0000 || (i & 0x0090) == 0x0000)
528         x ^= 0x0004;
529
530      if ((i & 0x0100) == 0x0100 || (i & 0x0040) == 0x0040 || (i & 0x0012) == 0x0012)
531         x ^= 0x0020;
532/*
533        if ((((i & 0x1000) == 0x1000) ^ ((i & 0x0100) == 0x0100))
534            || (i & 0x0880) == 0x0800 || (i & 0x0240) == 0x0240)
535                x ^= 0x0200;
536*/
537      if ((x & 0x0024) == 0x0004 || (x & 0x0024) == 0x0020)
538         x ^= 0x0024;
539
540      src[i] = x;
541   }
542}
543
544
545static void lhb2_decrypt(running_machine *machine)
546{
547   int i,j;
548   int rom_size = 0x80000;
549   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
550   UINT16 *result_data = alloc_array_or_die(UINT16, rom_size/2);
551
552    for (i=0; i<rom_size/2; i++)
553   {
554      UINT16 x = src[i];
555
556      if ((i & 0x0054) != 0x0000 && (i & 0x0056) != 0x0010)
557         x ^= 0x0004;
558
559      if ((i & 0x0204) == 0x0000)
560          x ^= 0x0008;
561
562      if ((i & 0x3080) != 0x3080 && (i & 0x3090) != 0x3010)
563         x ^= 0x0020;
564
565      j = BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
566
567      result_data[j] = x;
568   }
569
570   memcpy(src,result_data,rom_size);
571
572   free(result_data);
573}
574
575
576// To be done (similar to lhb2?)
577static void nkishusp_decrypt(running_machine *machine)
578{
579//  lhb_decrypt(machine);
580//  dbc_decrypt(machine);
581//  lhb2_decrypt(machine);
582//  drgnwrld_type1_decrypt(machine);
583//  drgnwrld_type2_decrypt(machine);
584//  drgnwrld_type3_decrypt(machine);
585//  wlcc_decrypt(machine);
586//  vbowlj_decrypt(machine);
587
588   int i,j;
589   int rom_size = 0x80000;
590   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
591   UINT16 *result_data = alloc_array_or_die(UINT16, rom_size/2);
592
593    for (i=0; i<rom_size/2; i++)
594   {
595      UINT16 x = src[i];
596
597      if ((i & 0x0054) != 0x0000 && (i & 0x0056) != 0x0010)
598         x ^= 0x0004;
599
600//      if ((i & 0x0204) == 0x0000)
601//          x ^= 0x0008;
602
603      if ((i & 0x3080) != 0x3080 && (i & 0x3090) != 0x3010)
604         x ^= 0x0020;
605
606      j = BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
607
608      result_data[j] = x;
609   }
610
611   memcpy(src,result_data,rom_size);
612
613   free(result_data);
614}
615
616
617static void vbowlj_decrypt(running_machine *machine)
618{
619   int i;
620   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
621
622   int rom_size = 0x80000;
623
624   for(i=0; i<rom_size/2; i++)
625   {
626      UINT16 x = src[i];
627
628      if((i & 0x4100) == 0x0100)
629         x ^= 0x0200;
630
631      if((i & 0x4000) == 0x4000 && (i & 0x0300) != 0x0100)
632         x ^= 0x0200;
633
634      if((i & 0x5700) == 0x5100)
635         x ^= 0x0200;
636
637      if((i & 0x5500) == 0x1000)
638         x ^= 0x0200;
639
640      if((i & 0x0140) != 0x0000 || (i & 0x0012) == 0x0012)
641         x ^= 0x0004;
642
643      if((i & 0x2004) != 0x2004 || (i & 0x0090) == 0x0000)
644         x ^= 0x0020;
645
646       src[i] = x;
647     }
648}
649
650
651static void dbc_decrypt(running_machine *machine)
652{
653   int i;
654   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
655
656   int rom_size = 0x80000;
657
658   for (i=0; i<rom_size/2; i++)
659   {
660      UINT16 x = src[i];
661
662      if( i & 0x1000/2 )
663      {
664         if( ~i & 0x400/2 )
665            x ^= 0x0200;
666      }
667
668      if( i & 0x4000/2 )
669      {
670         if( i & 0x100/2 )
671         {
672            if( ~i & 0x08/2 )
673               x ^= 0x0020;
674         }
675         else
676         {
677            if( ~i & 0x28/2 )
678               x ^= 0x0020;
679         }
680      }
681      else
682      {
683         x ^= 0x0020;
684      }
685
686      if( i & 0x200/2 )
687      {
688         x ^= 0x0004;
689      }
690      else
691      {
692         if( (i & 0x80/2) == 0x80/2 || (i & 0x24/2) == 0x24/2 )
693            x ^= 0x0004;
694      }
695
696      src[i] = x;
697   }
698}
699
700
701static void ryukobou_decrypt(running_machine *machine)
702{
703   int i;
704   UINT16 *src = (UINT16 *) memory_region(machine, "maincpu");
705   int rom_size = 0x80000;
706
707   for (i=0; i<rom_size/2; i++)
708   {
709      UINT16 x = src[i];
710
711      if ( (i & 0x00100) && (i & 0x00400) )
712         x ^= 0x0200;
713
714      if ( !(i & 0x00004) || !(i & 0x02000) || (!(i & 0x00080) && !(i & 0x00010) ) )
715         x ^= 0x0020;
716
717      if ( (i & 0x00100) || (i & 0x00040) || ( (i & 0x00010)&&(i & 0x00002) ) )
718         x ^= 0x00004;
719
720      src[i] = x;
721   }
722}
723
724
725/***************************************************************************
726
727    Gfx Decryption
728
729***************************************************************************/
730
731
732static void lhb2_decrypt_gfx(running_machine *machine)
733{
734   int i;
735   unsigned rom_size = 0x200000;
736   UINT8 *src = (UINT8 *) (memory_region(machine, "blitter"));
737   UINT8 *result_data = alloc_array_or_die(UINT8, rom_size);
738
739   for (i=0; i<rom_size; i++)
740       result_data[i] = src[BITSWAP24(i, 23,22,21,20, 19, 17,16,15, 13,12, 10,9,8,7,6,5,4, 2,1, 3, 11, 14, 18, 0)];
741
742   memcpy(src,result_data,rom_size);
743
744   free(result_data);
745}
746
747static void drgnwrld_gfx_decrypt(running_machine *machine)
748{
749   int i;
750   unsigned rom_size = 0x400000;
751   UINT8 *src = (UINT8 *) (memory_region(machine, "blitter"));
752   UINT8 *result_data = alloc_array_or_die(UINT8, rom_size);
753
754    for (i=0; i<rom_size; i++)
755       result_data[i] = src[BITSWAP24(i, 23,22,21,20,19,18,17,16,15, 12, 13, 14, 11,10,9,8,7,6,5,4,3,2,1,0)];
756
757   memcpy(src,result_data,rom_size);
758
759   free(result_data);
760}
761
762
763
764/***************************************************************************
765
766    Protection & I/O
767
768***************************************************************************/
769
770static UINT16 igs_magic[2];
771
772static WRITE16_HANDLER( lhb2_magic_w )
773{
774   COMBINE_DATA(&igs_magic[offset]);
775
776   if (offset == 0)
777      return;
778
779   switch(igs_magic[0])
780   {
781      case 0x00:
782         COMBINE_DATA(&igs_input_sel);
783
784         if (ACCESSING_BITS_0_7)
785         {
786            coin_counter_w(0,   data & 0x20);
787            //  coin out        data & 0x40
788            igs_hopper      =   data & 0x80;
789         }
790
791         if ( igs_input_sel & ~0x7f )
792            logerror("%06x: warning, unknown bits written in igs_input_sel = %02x\n", cpu_get_pc(space->cpu), igs_input_sel);
793
794//          popmessage("sel2 %02x",igs_input_sel&~0x1f);
795         break;
796
797      case 0x02:
798         if (ACCESSING_BITS_0_7)
799         {
800            lhb2_pen_hi = data & 0x07;
801
802            okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x08) ? 0x40000 : 0);
803         }
804
805         if ( lhb2_pen_hi & ~0xf )
806            logerror("%06x: warning, unknown bits written in lhb2_pen_hi = %02x\n", cpu_get_pc(space->cpu), lhb2_pen_hi);
807
808//          popmessage("oki %02x",lhb2_pen_hi & 0x08);
809         break;
810
811      default:
812         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
813   }
814}
815
816static READ16_HANDLER( lhb2_magic_r )
817{
818   switch(igs_magic[0])
819   {
820      case 0x01:
821         if (~igs_input_sel & 0x01)   return input_port_read(space->machine, "KEY0");
822         if (~igs_input_sel & 0x02)   return input_port_read(space->machine, "KEY1");
823         if (~igs_input_sel & 0x04)   return input_port_read(space->machine, "KEY2");
824         if (~igs_input_sel & 0x08)   return input_port_read(space->machine, "KEY3");
825         if (~igs_input_sel & 0x10)   return input_port_read(space->machine, "KEY4");
826         /* fall through */
827      default:
828         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
829         break;
830
831      case 0x03:   return 0xff;   // ?
832
833      // Protection:
834      // 0544FE: 20 21 22 24 25 26 27 28 2A 2B 2C 2D 2E 30 31 32 33 34
835      // 0544EC: 49 47 53 41 41 7F 41 41 3E 41 49 F9 0A 26 49 49 49 32
836
837      case 0x20:   return 0x49;
838      case 0x21:   return 0x47;
839      case 0x22:   return 0x53;
840
841      case 0x24:   return 0x41;
842      case 0x25:   return 0x41;
843      case 0x26:   return 0x7f;
844      case 0x27:   return 0x41;
845      case 0x28:   return 0x41;
846
847      case 0x2a:   return 0x3e;
848      case 0x2b:   return 0x41;
849      case 0x2c:   return 0x49;
850      case 0x2d:   return 0xf9;
851      case 0x2e:   return 0x0a;
852
853      case 0x30:   return 0x26;
854      case 0x31:   return 0x49;
855      case 0x32:   return 0x49;
856      case 0x33:   return 0x49;
857      case 0x34:   return 0x32;
858   }
859
860   return 0;
861}
862
863
864
865static WRITE16_HANDLER( drgnwrld_magic_w )
866{
867   COMBINE_DATA(&igs_magic[offset]);
868
869   if (offset == 0)
870      return;
871
872   switch(igs_magic[0])
873   {
874
875      case 0x00:
876         if (ACCESSING_BITS_0_7)
877            coin_counter_w(0,data & 2);
878
879         if (data & ~0x2)
880            logerror("%06x: warning, unknown bits written in coin counter = %02x\n", cpu_get_pc(space->cpu), data);
881
882         break;
883
884      default:
885//          popmessage("magic %x <- %04x",igs_magic[0],data);
886         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
887   }
888}
889
890static READ16_HANDLER( drgnwrld_magic_r )
891{
892   switch(igs_magic[0])
893   {
894      case 0x00:   return input_port_read(space->machine, "IN0");
895      case 0x01:   return input_port_read(space->machine, "IN1");
896      case 0x02:   return input_port_read(space->machine, "IN2");
897
898      case 0x20:   return 0x49;
899      case 0x21:   return 0x47;
900      case 0x22:   return 0x53;
901
902      case 0x24:   return 0x41;
903      case 0x25:   return 0x41;
904      case 0x26:   return 0x7f;
905      case 0x27:   return 0x41;
906      case 0x28:   return 0x41;
907
908      case 0x2a:   return 0x3e;
909      case 0x2b:   return 0x41;
910      case 0x2c:   return 0x49;
911      case 0x2d:   return 0xf9;
912      case 0x2e:   return 0x0a;
913
914      case 0x30:   return 0x26;
915      case 0x31:   return 0x49;
916      case 0x32:   return 0x49;
917      case 0x33:   return 0x49;
918      case 0x34:   return 0x32;
919
920      default:
921         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
922   }
923
924   return 0;
925}
926
927
928
929static WRITE16_HANDLER( wlcc_magic_w )
930{
931   COMBINE_DATA(&igs_magic[offset]);
932
933   if (offset == 0)
934      return;
935
936   switch(igs_magic[0])
937   {
938      case 0x02:
939         if (ACCESSING_BITS_0_7)
940         {
941            coin_counter_w(0,   data & 0x01);
942            //  coin out        data & 0x02
943
944            okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x10) ? 0x40000 : 0);
945            igs_hopper      =   data & 0x20;
946         }
947
948         if (data & ~0x33)
949            logerror("%06x: warning, unknown bits written in coin counter = %02x\n", cpu_get_pc(space->cpu), data);
950
951//          popmessage("coin %02x",data);
952         break;
953
954      default:
955         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
956   }
957}
958
959static READ16_HANDLER( wlcc_magic_r )
960{
961   switch(igs_magic[0])
962   {
963      case 0x00:   return input_port_read(space->machine, "IN0");
964
965      case 0x20:   return 0x49;
966      case 0x21:   return 0x47;
967      case 0x22:   return 0x53;
968
969      case 0x24:   return 0x41;
970      case 0x25:   return 0x41;
971      case 0x26:   return 0x7f;
972      case 0x27:   return 0x41;
973      case 0x28:   return 0x41;
974
975      case 0x2a:   return 0x3e;
976      case 0x2b:   return 0x41;
977      case 0x2c:   return 0x49;
978      case 0x2d:   return 0xf9;
979      case 0x2e:   return 0x0a;
980
981      case 0x30:   return 0x26;
982      case 0x31:   return 0x49;
983      case 0x32:   return 0x49;
984      case 0x33:   return 0x49;
985      case 0x34:   return 0x32;
986
987      default:
988         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
989   }
990
991   return 0;
992}
993
994
995
996static WRITE16_DEVICE_HANDLER( lhb_okibank_w )
997{
998   if (ACCESSING_BITS_8_15)
999   {
1000      okim6295_set_bank_base(device, (data & 0x200) ? 0x40000 : 0);
1001   }
1002
1003   if ( data & (~0x200) )
1004      logerror("%s: warning, unknown bits written in oki bank = %02x\n", cpuexec_describe_context(device->machine), data);
1005
1006//  popmessage("oki %04x",data);
1007}
1008
1009static WRITE16_HANDLER( lhb_inputs_w )
1010{
1011   COMBINE_DATA(&igs_input_sel);
1012
1013   if (ACCESSING_BITS_0_7)
1014   {
1015      coin_counter_w(0,   data & 0x20   );
1016      //  coin out        data & 0x40
1017      igs_hopper      =   data & 0x80;
1018   }
1019
1020   if ( igs_input_sel & (~0xff) )
1021      logerror("%06x: warning, unknown bits written in igs_input_sel = %02x\n", cpu_get_pc(space->cpu), igs_input_sel);
1022
1023//  popmessage("sel2 %02x",igs_input_sel&~0x1f);
1024}
1025
1026static READ16_HANDLER( lhb_inputs_r )
1027{
1028   switch(offset)
1029   {
1030      case 0:      return igs_input_sel;
1031
1032      case 1:
1033         if (~igs_input_sel & 0x01)   return input_port_read(space->machine, "KEY0");
1034         if (~igs_input_sel & 0x02)   return input_port_read(space->machine, "KEY1");
1035         if (~igs_input_sel & 0x04)   return input_port_read(space->machine, "KEY2");
1036         if (~igs_input_sel & 0x08)   return input_port_read(space->machine, "KEY3");
1037         if (~igs_input_sel & 0x10)   return input_port_read(space->machine, "KEY4");
1038
1039         logerror("%06x: warning, reading with igs_input_sel = %02x\n", cpu_get_pc(space->cpu), igs_input_sel);
1040         break;
1041   }
1042   return 0;
1043}
1044
1045
1046
1047static WRITE16_HANDLER( vbowl_magic_w )
1048{
1049   COMBINE_DATA(&igs_magic[offset]);
1050
1051   if (offset == 0)
1052      return;
1053
1054   switch(igs_magic[0])
1055   {
1056      case 0x02:
1057         if (ACCESSING_BITS_0_7)
1058         {
1059            coin_counter_w(0,data & 1);
1060            coin_counter_w(1,data & 2);
1061         }
1062
1063         if (data & ~0x3)
1064            logerror("%06x: warning, unknown bits written in coin counter = %02x\n", cpu_get_pc(space->cpu), data);
1065
1066         break;
1067
1068      default:
1069//          popmessage("magic %x <- %04x",igs_magic[0],data);
1070         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
1071   }
1072}
1073
1074static READ16_HANDLER( vbowl_magic_r )
1075{
1076   switch(igs_magic[0])
1077   {
1078      case 0x00:   return input_port_read(space->machine, "IN0");
1079      case 0x01:   return input_port_read(space->machine, "IN1");
1080
1081      case 0x20:   return 0x49;
1082      case 0x21:   return 0x47;
1083      case 0x22:   return 0x53;
1084
1085      case 0x24:   return 0x41;
1086      case 0x25:   return 0x41;
1087      case 0x26:   return 0x7f;
1088      case 0x27:   return 0x41;
1089      case 0x28:   return 0x41;
1090
1091      case 0x2a:   return 0x3e;
1092      case 0x2b:   return 0x41;
1093      case 0x2c:   return 0x49;
1094      case 0x2d:   return 0xf9;
1095      case 0x2e:   return 0x0a;
1096
1097      case 0x30:   return 0x26;
1098      case 0x31:   return 0x49;
1099      case 0x32:   return 0x49;
1100      case 0x33:   return 0x49;
1101      case 0x34:   return 0x32;
1102
1103      default:
1104         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
1105   }
1106
1107   return 0;
1108}
1109
1110
1111
1112static WRITE16_HANDLER( xymg_magic_w )
1113{
1114   COMBINE_DATA(&igs_magic[offset]);
1115
1116   if (offset == 0)
1117      return;
1118
1119   switch(igs_magic[0])
1120   {
1121      case 0x01:
1122         COMBINE_DATA(&igs_input_sel);
1123
1124         if (ACCESSING_BITS_0_7)
1125         {
1126            coin_counter_w(0,   data & 0x20);
1127            //  coin out        data & 0x40
1128         }
1129
1130         if ( igs_input_sel & ~0x3f )
1131            logerror("%06x: warning, unknown bits written in igs_input_sel = %02x\n", cpu_get_pc(space->cpu), igs_input_sel);
1132
1133//          popmessage("sel2 %02x",igs_input_sel&~0x1f);
1134         break;
1135
1136      default:
1137         logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data);
1138   }
1139}
1140
1141static READ16_HANDLER( xymg_magic_r )
1142{
1143   switch(igs_magic[0])
1144   {
1145      case 0x00:   return input_port_read(space->machine, "COIN");
1146
1147      case 0x02:
1148         if (~igs_input_sel & 0x01)   return input_port_read(space->machine, "KEY0");
1149         if (~igs_input_sel & 0x02)   return input_port_read(space->machine, "KEY1");
1150         if (~igs_input_sel & 0x04)   return input_port_read(space->machine, "KEY2");
1151         if (~igs_input_sel & 0x08)   return input_port_read(space->machine, "KEY3");
1152         if (~igs_input_sel & 0x10)   return input_port_read(space->machine, "KEY4");
1153         /* fall through */
1154
1155      case 0x20:   return 0x49;
1156      case 0x21:   return 0x47;
1157      case 0x22:   return 0x53;
1158
1159      case 0x24:   return 0x41;
1160      case 0x25:   return 0x41;
1161      case 0x26:   return 0x7f;
1162      case 0x27:   return 0x41;
1163      case 0x28:   return 0x41;
1164
1165      case 0x2a:   return 0x3e;
1166      case 0x2b:   return 0x41;
1167      case 0x2c:   return 0x49;
1168      case 0x2d:   return 0xf9;
1169      case 0x2e:   return 0x0a;
1170
1171      case 0x30:   return 0x26;
1172      case 0x31:   return 0x49;
1173      case 0x32:   return 0x49;
1174      case 0x33:   return 0x49;
1175      case 0x34:   return 0x32;
1176
1177      default:
1178         logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(space->cpu), igs_magic[0]);
1179         break;
1180   }
1181
1182   return 0;
1183}
1184
1185
1186
1187/***************************************************************************
1188
1189    Memory Maps
1190
1191***************************************************************************/
1192
1193static ADDRESS_MAP_START( drgnwrld, ADDRESS_SPACE_PROGRAM, 16 )
1194   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1195   AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size )
1196   AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
1197   AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1198   AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT( "COIN" )
1199   AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1200   AM_RANGE( 0x700000, 0x700003 ) AM_DEVWRITE8( "ymsnd", ym3812_w, 0x00ff )
1201   AM_RANGE( 0x800000, 0x800003 ) AM_WRITE( drgnwrld_magic_w )
1202   AM_RANGE( 0x800002, 0x800003 ) AM_READ ( drgnwrld_magic_r )
1203   AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE( igs011_priority_w )
1204   AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE( igs_dips_w )
1205   AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE( igs011_blit_x_w )
1206   AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE( igs011_blit_y_w )
1207   AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE( igs011_blit_w_w )
1208   AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE( igs011_blit_h_w )
1209   AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1210   AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1211   AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE( igs011_blit_flags_w )
1212   AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE( igs011_blit_pen_w )
1213   AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE( igs011_blit_depth_w )
1214   AM_RANGE( 0xa88000, 0xa88001 ) AM_READ( igs_3_dips_r )
1215ADDRESS_MAP_END
1216
1217
1218static ADDRESS_MAP_START( lhb2, ADDRESS_SPACE_PROGRAM, 16 )
1219   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1220   AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size )
1221   AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1222   AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8( "ymsnd", ym2413_w, 0x00ff )
1223   AM_RANGE( 0x208000, 0x208003 ) AM_WRITE( lhb2_magic_w )
1224   AM_RANGE( 0x208002, 0x208003 ) AM_READ ( lhb2_magic_r )
1225   AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_BASE(&igs011_priority_ram)
1226   AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1227   AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" )
1228   AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
1229   AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE( igs011_priority_w )
1230   AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE( igs_dips_w )
1231   AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE( igs011_blit_x_w )
1232   AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE( igs011_blit_y_w )
1233   AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE( igs011_blit_w_w )
1234   AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE( igs011_blit_h_w )
1235   AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1236   AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1237   AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE( igs011_blit_flags_w )
1238   AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE( igs011_blit_pen_w )
1239   AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE( igs011_blit_depth_w )
1240   AM_RANGE( 0xa88000, 0xa88001 ) AM_READ( igs_3_dips_r )
1241ADDRESS_MAP_END
1242
1243
1244static ADDRESS_MAP_START( wlcc, ADDRESS_SPACE_PROGRAM, 16 )
1245   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1246   AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size )
1247   AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
1248   AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
1249   AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1250   AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
1251   AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1252   AM_RANGE( 0x800000, 0x800003 ) AM_WRITE( wlcc_magic_w )
1253   AM_RANGE( 0x800002, 0x800003 ) AM_READ ( wlcc_magic_r )
1254   AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE( igs011_priority_w )
1255   AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE( igs_dips_w )
1256   AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE( igs011_blit_x_w )
1257   AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE( igs011_blit_y_w )
1258   AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE( igs011_blit_w_w )
1259   AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE( igs011_blit_h_w )
1260   AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1261   AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1262   AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE( igs011_blit_flags_w )
1263   AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE( igs011_blit_pen_w )
1264   AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE( igs011_blit_depth_w )
1265   AM_RANGE( 0xa88000, 0xa88001 ) AM_READ( igs_4_dips_r )
1266ADDRESS_MAP_END
1267
1268
1269// Only values 0 and 7 are written (1 bit per irq source?)
1270static UINT16 lhb_irq_enable;
1271static WRITE16_HANDLER( lhb_irq_enable_w )
1272{
1273   COMBINE_DATA( &lhb_irq_enable );
1274}
1275
1276static ADDRESS_MAP_START( lhb, ADDRESS_SPACE_PROGRAM, 16 )
1277   AM_RANGE( 0x010000, 0x010001 ) AM_DEVWRITE( "oki", lhb_okibank_w )
1278   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1279   AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size )
1280   AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
1281   AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
1282   AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1283   AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1284   AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT( "COIN" )
1285   AM_RANGE( 0x700002, 0x700005 ) AM_READ ( lhb_inputs_r )
1286   AM_RANGE( 0x700002, 0x700003 ) AM_WRITE( lhb_inputs_w )
1287   AM_RANGE( 0x820000, 0x820001 ) AM_WRITE( igs011_priority_w )
1288   AM_RANGE( 0x838000, 0x838001 ) AM_WRITE( lhb_irq_enable_w )
1289   AM_RANGE( 0x840000, 0x840001 ) AM_WRITE( igs_dips_w )
1290   AM_RANGE( 0x858000, 0x858001 ) AM_WRITE( igs011_blit_x_w )
1291   AM_RANGE( 0x858800, 0x858801 ) AM_WRITE( igs011_blit_y_w )
1292   AM_RANGE( 0x859000, 0x859001 ) AM_WRITE( igs011_blit_w_w )
1293   AM_RANGE( 0x859800, 0x859801 ) AM_WRITE( igs011_blit_h_w )
1294   AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1295   AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1296   AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE( igs011_blit_flags_w )
1297   AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE( igs011_blit_pen_w )
1298   AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE( igs011_blit_depth_w )
1299   AM_RANGE( 0x888000, 0x888001 ) AM_READ( igs_5_dips_r )
1300ADDRESS_MAP_END
1301
1302
1303
1304
1305static READ16_DEVICE_HANDLER( ics2115_word_r )
1306{
1307   switch(offset)
1308   {
1309      case 0:   return ics2115_r(device,0);
1310      case 1:   return ics2115_r(device,1);
1311      case 2:   return (ics2115_r(device,3) << 8) | ics2115_r(device,2);
1312   }
1313   return 0xff;
1314}
1315
1316static WRITE16_DEVICE_HANDLER( ics2115_word_w )
1317{
1318   switch(offset)
1319   {
1320      case 1:
1321         if (ACCESSING_BITS_0_7)      ics2115_w(device,1,data);
1322         break;
1323      case 2:
1324         if (ACCESSING_BITS_0_7)      ics2115_w(device,2,data);
1325         if (ACCESSING_BITS_8_15)   ics2115_w(device,3,data>>8);
1326         break;
1327   }
1328}
1329
1330static READ16_HANDLER( vbowl_unk_r )
1331{
1332   return 0xffff;
1333}
1334
1335static UINT16 *vbowl_trackball;
1336static VIDEO_EOF( vbowl )
1337{
1338   vbowl_trackball[0] = vbowl_trackball[1];
1339   vbowl_trackball[1] = (input_port_read(machine, "AN1") << 8) | input_port_read(machine, "AN0");
1340}
1341
1342static WRITE16_HANDLER( vbowl_pen_hi_w )
1343{
1344   if (ACCESSING_BITS_0_7)
1345   {
1346      lhb2_pen_hi = data & 0x07;
1347   }
1348
1349   if (data & ~0x7)
1350      logerror("%06x: warning, unknown bits written to pen_hi = %04x\n", cpu_get_pc(space->cpu), igs011_priority);
1351}
1352
1353static WRITE16_HANDLER( vbowl_link_0_w )   { }
1354static WRITE16_HANDLER( vbowl_link_1_w )   { }
1355static WRITE16_HANDLER( vbowl_link_2_w )   { }
1356static WRITE16_HANDLER( vbowl_link_3_w )   { }
1357
1358static ADDRESS_MAP_START( vbowl, ADDRESS_SPACE_PROGRAM, 16 )
1359   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1360   AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size )
1361   AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
1362   AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
1363   AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1364   AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" )
1365   AM_RANGE( 0x600000, 0x600007 ) AM_DEVREADWRITE( "ics", ics2115_word_r, ics2115_word_w )
1366   AM_RANGE( 0x700000, 0x700003 ) AM_RAM AM_BASE( &vbowl_trackball )
1367   AM_RANGE( 0x700004, 0x700005 ) AM_WRITE( vbowl_pen_hi_w )
1368   AM_RANGE( 0x800000, 0x800003 ) AM_WRITE( vbowl_magic_w )
1369   AM_RANGE( 0x800002, 0x800003 ) AM_READ( vbowl_magic_r )
1370
1371   AM_RANGE( 0xa00000, 0xa00001 ) AM_WRITE( vbowl_link_0_w )
1372   AM_RANGE( 0xa08000, 0xa08001 ) AM_WRITE( vbowl_link_1_w )
1373   AM_RANGE( 0xa10000, 0xa10001 ) AM_WRITE( vbowl_link_2_w )
1374   AM_RANGE( 0xa18000, 0xa18001 ) AM_WRITE( vbowl_link_3_w )
1375
1376   AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE( igs011_priority_w )
1377   AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE( igs_dips_w )
1378   AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE( igs011_blit_x_w )
1379   AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE( igs011_blit_y_w )
1380   AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE( igs011_blit_w_w )
1381   AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE( igs011_blit_h_w )
1382   AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1383   AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1384   AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE( igs011_blit_flags_w )
1385   AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE( igs011_blit_pen_w )
1386   AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE( igs011_blit_depth_w )
1387
1388   AM_RANGE( 0xa80000, 0xa80001 ) AM_READ( vbowl_unk_r )
1389   AM_RANGE( 0xa88000, 0xa88001 ) AM_READ( igs_4_dips_r )
1390   AM_RANGE( 0xa90000, 0xa90001 ) AM_READ( vbowl_unk_r )
1391   AM_RANGE( 0xa98000, 0xa98001 ) AM_READ( vbowl_unk_r )
1392ADDRESS_MAP_END
1393
1394
1395
1396static ADDRESS_MAP_START( xymg, ADDRESS_SPACE_PROGRAM, 16 )
1397   AM_RANGE( 0x010000, 0x010001 ) AM_DEVWRITE( "oki", lhb_okibank_w )
1398   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
1399   AM_RANGE( 0x100000, 0x103fff ) AM_RAM
1400   AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE( &igs011_priority_ram )
1401   AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE( igs011_layers_r, igs011_layers_w )
1402   AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE( igs011_palette ) AM_BASE( &paletteram16 )
1403   AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff )
1404   AM_RANGE( 0x700000, 0x700003 ) AM_WRITE( xymg_magic_w )
1405   AM_RANGE( 0x700002, 0x700003 ) AM_READ ( xymg_magic_r )
1406   AM_RANGE( 0x820000, 0x820001 ) AM_WRITE( igs011_priority_w )
1407   AM_RANGE( 0x840000, 0x840001 ) AM_WRITE( igs_dips_w )
1408   AM_RANGE( 0x858000, 0x858001 ) AM_WRITE( igs011_blit_x_w )
1409   AM_RANGE( 0x858800, 0x858801 ) AM_WRITE( igs011_blit_y_w )
1410   AM_RANGE( 0x859000, 0x859001 ) AM_WRITE( igs011_blit_w_w )
1411   AM_RANGE( 0x859800, 0x859801 ) AM_WRITE( igs011_blit_h_w )
1412   AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE( igs011_blit_gfx_lo_w )
1413   AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE( igs011_blit_gfx_hi_w )
1414   AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE( igs011_blit_flags_w )
1415   AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE( igs011_blit_pen_w )
1416   AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE( igs011_blit_depth_w )
1417   AM_RANGE( 0x888000, 0x888001 ) AM_READ( igs_3_dips_r )
1418   AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_BASE( &generic_nvram16 ) AM_SIZE( &generic_nvram_size ) // extra ram
1419ADDRESS_MAP_END
1420
1421
1422
1423/***************************************************************************
1424
1425    Input Ports
1426
1427***************************************************************************/
1428
1429static INPUT_PORTS_START( drgnwrldc )
1430   PORT_START("DSW1")
1431   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1432   PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) )
1433   PORT_DIPSETTING(    0x01, DEF_STR( 4C_1C ) )
1434   PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
1435   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
1436   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
1437   PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
1438   PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
1439   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
1440   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1441   PORT_DIPSETTING(    0x18, DEF_STR( Normal  ) )   // 513
1442   PORT_DIPSETTING(    0x10, DEF_STR( Hard    ) )   // 627
1443   PORT_DIPSETTING(    0x08, DEF_STR( Harder  ) )   // 741
1444   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )   // 855
1445   PORT_DIPUNKNOWN( 0x20, 0x20 )
1446   PORT_DIPUNKNOWN( 0x40, 0x40 )
1447   PORT_DIPUNKNOWN( 0x80, 0x80 )
1448
1449   PORT_START("DSW2")
1450   PORT_DIPNAME( 0x01, 0x01, "Open Girl?" )
1451   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1452   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1453   PORT_DIPNAME( 0x02, 0x02, "Sex Question?" )   // "background" in test mode
1454   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1455   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1456   PORT_DIPNAME( 0x04, 0x04, "Background" )   // "sex question" in test mode
1457   PORT_DIPSETTING(    0x04, "Girl" )
1458   PORT_DIPSETTING(    0x00, "Landscape" )
1459   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
1460   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1461   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1462   PORT_DIPNAME( 0x10, 0x10, "Tiles" )
1463   PORT_DIPSETTING(    0x10, "Mahjong" )
1464   PORT_DIPSETTING(    0x00, "Symbols" )
1465   PORT_DIPUNKNOWN( 0x20, 0x20 )
1466   PORT_DIPNAME( 0x40, 0x40, "Bang Turtle?" )
1467   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1468   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1469   PORT_DIPNAME( 0x80, 0x80, "Test?" )
1470   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1471   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1472
1473     PORT_START("DSW3")
1474   PORT_DIPUNKNOWN( 0x01, 0x01 )
1475   PORT_DIPUNKNOWN( 0x02, 0x02 )
1476   PORT_DIPUNKNOWN( 0x04, 0x04 )
1477   PORT_DIPUNKNOWN( 0x08, 0x08 )
1478   PORT_DIPUNKNOWN( 0x10, 0x10 )
1479   PORT_DIPUNKNOWN( 0x20, 0x20 )
1480   PORT_DIPUNKNOWN( 0x40, 0x40 )
1481   PORT_DIPUNKNOWN( 0x80, 0x80 )
1482
1483   PORT_START("COIN")
1484   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1485   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1486   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
1487   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
1488   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )   // used?
1489   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 )   // used?
1490   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1491   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1492
1493   PORT_START("IN0")
1494   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1495   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1496   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
1497   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1498   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
1499   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1500   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )   // press in girl test to pause, button 3 advances
1501   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1502
1503   PORT_START("IN1")
1504   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1505   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1506   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1507   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1508   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1509   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1510   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1511   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1512
1513   PORT_START("IN2")
1514   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
1515   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
1516   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
1517   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 )
1518   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
1519   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1520   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1521   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1522INPUT_PORTS_END
1523
1524
1525static INPUT_PORTS_START( drgnwrld )
1526   PORT_START("DSW1")
1527   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1528   PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) )
1529   PORT_DIPSETTING(    0x01, DEF_STR( 4C_1C ) )
1530   PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
1531   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
1532   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
1533   PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
1534   PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
1535   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
1536   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1537   PORT_DIPSETTING(    0x18, DEF_STR( Normal  ) )   // 513
1538   PORT_DIPSETTING(    0x10, DEF_STR( Hard    ) )   // 627
1539   PORT_DIPSETTING(    0x08, DEF_STR( Harder  ) )   // 741
1540   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )   // 855
1541   PORT_DIPUNKNOWN( 0x20, 0x20 )
1542   PORT_DIPUNKNOWN( 0x40, 0x40 )
1543   PORT_DIPUNKNOWN( 0x80, 0x80 )
1544
1545   PORT_START("DSW2")
1546   PORT_DIPNAME( 0x01, 0x01, "Background" )
1547   PORT_DIPSETTING(    0x01, "Girl" )
1548   PORT_DIPSETTING(    0x00, "Landscape" )
1549   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
1550   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1551   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1552   PORT_DIPNAME( 0x04, 0x04, "Tiles" )
1553   PORT_DIPSETTING(    0x04, "Mahjong" )
1554   PORT_DIPSETTING(    0x00, "Symbols" )
1555   PORT_DIPNAME( 0x08, 0x08, "Send Boom?" )
1556   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1557   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1558   PORT_DIPUNKNOWN( 0x10, 0x10 )
1559   PORT_DIPUNKNOWN( 0x20, 0x20 )
1560   PORT_DIPUNKNOWN( 0x40, 0x40 )
1561   PORT_DIPNAME( 0x80, 0x80, "Test?" )
1562   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1563   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1564
1565     PORT_START("DSW3")
1566   PORT_DIPUNKNOWN( 0x01, 0x01 )
1567   PORT_DIPUNKNOWN( 0x02, 0x02 )
1568   PORT_DIPUNKNOWN( 0x04, 0x04 )
1569   PORT_DIPUNKNOWN( 0x08, 0x08 )
1570   PORT_DIPUNKNOWN( 0x10, 0x10 )
1571   PORT_DIPUNKNOWN( 0x20, 0x20 )
1572   PORT_DIPUNKNOWN( 0x40, 0x40 )
1573   PORT_DIPUNKNOWN( 0x80, 0x80 )
1574
1575   PORT_START("COIN")
1576   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1577   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1578   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
1579   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
1580   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )   // used?
1581   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 )   // used?
1582   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1583   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1584
1585   PORT_START("IN0")
1586   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1587   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1588   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
1589   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1590   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
1591   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1592   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )   // press in girl test to pause, button 3 advances
1593   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1594
1595   PORT_START("IN1")
1596   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1597   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1598   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1599   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1600   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1601   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1602   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1603   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1604
1605   PORT_START("IN2")
1606   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
1607   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
1608   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
1609   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 )
1610   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
1611   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1612   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1613   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1614INPUT_PORTS_END
1615
1616
1617static INPUT_PORTS_START( lhb2 )
1618   PORT_START("DSW1")
1619   PORT_DIPNAME( 0x07, 0x02, "Pay Out (%)" )
1620   PORT_DIPSETTING(    0x07, "50" )
1621   PORT_DIPSETTING(    0x06, "54" )
1622   PORT_DIPSETTING(    0x05, "58" )
1623   PORT_DIPSETTING(    0x04, "62" )
1624   PORT_DIPSETTING(    0x03, "66" )
1625   PORT_DIPSETTING(    0x02, "70" )
1626   PORT_DIPSETTING(    0x01, "74" )
1627   PORT_DIPSETTING(    0x00, "78" )
1628   PORT_DIPNAME( 0x08, 0x08, "Odds Rate" )
1629   PORT_DIPSETTING(    0x08, "1,2,3,5,8,15,30,50" )
1630   PORT_DIPSETTING(    0x00, "1,2,3,4,5,6,7,8" )
1631   PORT_DIPNAME( 0x10, 0x10, "Max Bet" )
1632   PORT_DIPSETTING(    0x00, "5" )
1633   PORT_DIPSETTING(    0x10, "10" )
1634   PORT_DIPNAME( 0x60, 0x60, "Min Credits To Start" )
1635   PORT_DIPSETTING(    0x60, "1" )
1636   PORT_DIPSETTING(    0x40, "2" )
1637   PORT_DIPSETTING(    0x20, "3" )
1638   PORT_DIPSETTING(    0x00, "5" )
1639   PORT_DIPUNKNOWN( 0x80, 0x80 )
1640
1641   PORT_START("DSW2")
1642   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )   // Only when bit 4 = 1
1643   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1644   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1645   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1646   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1647   PORT_DIPNAME( 0x04, 0x04, "Credits Per Note" )   // Only when bit 4 = 0
1648   PORT_DIPSETTING(    0x04, "10" )
1649   PORT_DIPSETTING(    0x00, "100" )
1650   PORT_DIPNAME( 0x08, 0x08, "Max Note Credits" )
1651   PORT_DIPSETTING(    0x08, "100" )
1652   PORT_DIPSETTING(    0x00, "500" )
1653   PORT_DIPNAME( 0x10, 0x10, "Money Type" )   // Decides whether to use bits 0&1 or bit 2
1654   PORT_DIPSETTING(    0x10, "Coins" )
1655   PORT_DIPSETTING(    0x00, "Notes" )
1656   PORT_DIPNAME( 0x20, 0x20, "Pay Out Type" )
1657   PORT_DIPSETTING(    0x20, "Coins" )
1658   PORT_DIPSETTING(    0x00, "Notes" )
1659   PORT_DIPUNKNOWN( 0x40, 0x40 )
1660   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
1661   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1662   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1663
1664     PORT_START("DSW3")
1665   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) )
1666   PORT_DIPSETTING(    0x03, "500" )
1667   PORT_DIPSETTING(    0x02, "1000" )
1668   PORT_DIPSETTING(    0x01, "2000" )
1669   PORT_DIPSETTING(    0x00, "30000" )
1670   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
1671   PORT_DIPSETTING(    0x0c, "0" )
1672   PORT_DIPSETTING(    0x08, "1" )
1673   PORT_DIPSETTING(    0x04, "2" )
1674//  PORT_DIPSETTING(    0x00, "2" )
1675   PORT_DIPNAME( 0x70, 0x70, DEF_STR( Unknown ) )
1676   PORT_DIPSETTING(    0x70, "1 : 1" )
1677   PORT_DIPSETTING(    0x60, "1 : 2" )
1678   PORT_DIPSETTING(    0x50, "1 : 5" )
1679   PORT_DIPSETTING(    0x40, "1 : 6" )
1680   PORT_DIPSETTING(    0x30, "1 : 7" )
1681   PORT_DIPSETTING(    0x20, "1 : 8" )
1682   PORT_DIPSETTING(    0x10, "1 : 9" )
1683   PORT_DIPSETTING(    0x00, "1 : 10" )
1684   PORT_DIPUNKNOWN( 0x80, 0x80 )
1685
1686   PORT_START("COIN")
1687   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1    )
1688   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )   // data clear
1689   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
1690   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(igs_hopper_r, (void *)0)   // hopper switch
1691   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )   // stats
1692   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER    ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)   // clear coin
1693   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN  )
1694   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN  )
1695
1696   PORT_START("KEY0")
1697   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
1698   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
1699   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
1700   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
1701   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
1702   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1703   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )   // ? set to 0 both
1704   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )   // ? and you can't start a game
1705
1706   PORT_START("KEY1")
1707   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
1708   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
1709   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
1710   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
1711   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
1712   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
1713   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1714   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1715
1716   PORT_START("KEY2")
1717   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
1718   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
1719   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
1720   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
1721   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
1722   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1723   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1724   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1725
1726   PORT_START("KEY3")
1727   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
1728   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
1729   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
1730   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
1731   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1732   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1733   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1734   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1735
1736   PORT_START("KEY4")
1737   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1738   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1739   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1740   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1741   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1742   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1743   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1744   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1745INPUT_PORTS_END
1746
1747
1748static INPUT_PORTS_START( drgnwrldj )
1749   PORT_START("DSW1")
1750   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1751   PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) )
1752   PORT_DIPSETTING(    0x01, DEF_STR( 4C_1C ) )
1753   PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
1754   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
1755   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
1756   PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
1757   PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
1758   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
1759   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1760   PORT_DIPSETTING(    0x18, DEF_STR( Normal  ) )   // 513
1761   PORT_DIPSETTING(    0x10, DEF_STR( Hard    ) )   // 627
1762   PORT_DIPSETTING(    0x08, DEF_STR( Harder  ) )   // 741
1763   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )   // 855
1764   PORT_DIPUNKNOWN( 0x20, 0x20 )
1765   PORT_DIPUNKNOWN( 0x40, 0x40 )
1766   PORT_DIPUNKNOWN( 0x80, 0x80 )
1767
1768   PORT_START("DSW2")
1769   PORT_DIPNAME( 0x01, 0x01, "Open Girl?" )
1770   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1771   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1772   PORT_DIPNAME( 0x02, 0x02, "Background" )
1773   PORT_DIPSETTING(    0x02, "Girl" )
1774   PORT_DIPSETTING(    0x00, "Landscape" )
1775   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
1776   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1777   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1778   PORT_DIPNAME( 0x08, 0x08, "Bang Turtle?" )
1779   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1780   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1781   PORT_DIPNAME( 0x10, 0x10, "Send Boom?" )
1782   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1783   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1784   PORT_DIPUNKNOWN( 0x20, 0x20 )
1785   PORT_DIPUNKNOWN( 0x40, 0x40 )
1786   PORT_DIPNAME( 0x80, 0x80, "Test?" )
1787   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1788   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1789
1790     PORT_START("DSW3")
1791   PORT_DIPUNKNOWN( 0x01, 0x01 )
1792   PORT_DIPUNKNOWN( 0x02, 0x02 )
1793   PORT_DIPUNKNOWN( 0x04, 0x04 )
1794   PORT_DIPUNKNOWN( 0x08, 0x08 )
1795   PORT_DIPUNKNOWN( 0x10, 0x10 )
1796   PORT_DIPUNKNOWN( 0x20, 0x20 )
1797   PORT_DIPUNKNOWN( 0x40, 0x40 )
1798   PORT_DIPUNKNOWN( 0x80, 0x80 )
1799
1800   PORT_START("COIN")
1801   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1802   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1803   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
1804   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
1805   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )   // used?
1806   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 )   // used?
1807   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1808   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1809
1810   PORT_START("IN0")
1811   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1812   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1813   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
1814   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1815   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
1816   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1817   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )   // press in girl test to pause, button 3 advances
1818   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1819
1820   PORT_START("IN1")
1821   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1822   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1823   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1824   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1825   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1826   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1827   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1828   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1829
1830   PORT_START("IN2")
1831   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
1832   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
1833   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
1834   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 )
1835   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
1836   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1837   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1838   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1839INPUT_PORTS_END
1840
1841
1842static INPUT_PORTS_START( wlcc )
1843   PORT_START("DSW1")
1844   PORT_DIPUNKNOWN( 0x01, 0x01 )
1845   PORT_DIPUNKNOWN( 0x02, 0x02 )
1846   PORT_DIPUNKNOWN( 0x04, 0x04 )
1847   PORT_DIPUNKNOWN( 0x08, 0x08 )
1848   PORT_DIPUNKNOWN( 0x10, 0x10 )
1849   PORT_DIPUNKNOWN( 0x20, 0x20 )
1850   PORT_DIPUNKNOWN( 0x40, 0x40 )
1851   PORT_DIPUNKNOWN( 0x80, 0x80 )
1852
1853   PORT_START("DSW2")
1854   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) )
1855   PORT_DIPSETTING(    0x03, "1000" )
1856   PORT_DIPSETTING(    0x02, "1500" )
1857   PORT_DIPSETTING(    0x01, "2000" )
1858   PORT_DIPSETTING(    0x00, "3000" )
1859   PORT_DIPNAME( 0x0c, 0x0c, "Min Credits To Start" )
1860   PORT_DIPSETTING(    0x0c, "1" )
1861   PORT_DIPSETTING(    0x08, "2" )
1862   PORT_DIPSETTING(    0x04, "3" )
1863   PORT_DIPSETTING(    0x00, "5" )
1864   PORT_DIPUNKNOWN( 0x10, 0x10 )      // shown in test mode
1865   PORT_DIPUNKNOWN( 0x20, 0x20 )
1866   PORT_DIPNAME( 0x40, 0x40, "Hide Title" )
1867   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1868   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1869   PORT_DIPUNKNOWN( 0x80, 0x80 )
1870
1871     PORT_START("DSW3")
1872   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
1873   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1874   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1875   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1876   PORT_DIPSETTING(    0x00, DEF_STR( 1C_4C ) )
1877   PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
1878   PORT_DIPSETTING(    0x0c, "10" )
1879   PORT_DIPSETTING(    0x08, "20" )
1880   PORT_DIPSETTING(    0x04, "50" )
1881   PORT_DIPSETTING(    0x00, "100" )
1882   PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
1883   PORT_DIPSETTING(    0x10, "500" )
1884   PORT_DIPSETTING(    0x00, "9999" )
1885   PORT_DIPNAME( 0x20, 0x20, "Money Type" )
1886   PORT_DIPSETTING(    0x20, "Coins" )   // use bits 0-1
1887   PORT_DIPSETTING(    0x00, "Notes" )   // use bits 2-3
1888   PORT_DIPNAME( 0x40, 0x00, "Pay Out Type" )
1889   PORT_DIPSETTING(    0x00, "Coins" )
1890   PORT_DIPSETTING(    0x40, "Notes" )
1891   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
1892   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1893   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1894
1895   PORT_START("DSW4")
1896   PORT_DIPUNKNOWN( 0x01, 0x01 )
1897   PORT_DIPUNKNOWN( 0x02, 0x02 )
1898   PORT_DIPUNKNOWN( 0x04, 0x04 )
1899   PORT_DIPUNKNOWN( 0x08, 0x08 )
1900   PORT_DIPUNKNOWN( 0x10, 0x10 )
1901   PORT_DIPUNKNOWN( 0x20, 0x20 )
1902   PORT_DIPUNKNOWN( 0x40, 0x40 )
1903   PORT_DIPUNKNOWN( 0x80, 0x80 )
1904
1905   PORT_START("COIN")
1906   PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1     )
1907   PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_COIN2     )
1908   PORT_SERVICE_NO_TOGGLE( 0x04,   IP_ACTIVE_LOW )   // keep pressed while booting
1909   PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_SERVICE1  )
1910   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_SERVICE2  )   // shown in test mode
1911   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
1912   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_OTHER     ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)   // clear coin
1913   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL   ) PORT_CUSTOM(igs_hopper_r, (void *)0)   // hopper switch
1914
1915   PORT_START("IN0")
1916   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1917   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
1918   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
1919   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
1920   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
1921   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
1922   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )   // bet
1923   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
1924INPUT_PORTS_END
1925
1926
1927static INPUT_PORTS_START( lhb )
1928   PORT_START("DSW1")
1929   PORT_DIPNAME( 0x0f, 0x07, "Pay Out (%)" )
1930   PORT_DIPSETTING(    0x0f, "96" )
1931   PORT_DIPSETTING(    0x0e, "93" )
1932   PORT_DIPSETTING(    0x0d, "90" )
1933   PORT_DIPSETTING(    0x0c, "87" )
1934   PORT_DIPSETTING(    0x0b, "84" )
1935   PORT_DIPSETTING(    0x0a, "81" )
1936   PORT_DIPSETTING(    0x09, "78" )
1937   PORT_DIPSETTING(    0x08, "75" )
1938   PORT_DIPSETTING(    0x07, "71" )
1939   PORT_DIPSETTING(    0x06, "68" )
1940   PORT_DIPSETTING(    0x05, "65" )
1941   PORT_DIPSETTING(    0x04, "62" )
1942   PORT_DIPSETTING(    0x03, "59" )
1943   PORT_DIPSETTING(    0x02, "56" )
1944   PORT_DIPSETTING(    0x01, "53" )
1945   PORT_DIPSETTING(    0x00, "50" )
1946   PORT_DIPNAME( 0x30, 0x30, "YAKUMAN Point" )
1947   PORT_DIPSETTING(    0x30, "1" )
1948   PORT_DIPSETTING(    0x20, "2" )
1949   PORT_DIPSETTING(    0x10, "3" )
1950   PORT_DIPSETTING(    0x00, "4" )
1951   PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
1952   PORT_DIPSETTING(    0xc0, "1" )
1953   PORT_DIPSETTING(    0x80, "5" )
1954   PORT_DIPSETTING(    0x40, "10" )
1955   PORT_DIPSETTING(    0x00, "20" )
1956
1957   PORT_START("DSW2")
1958   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
1959   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1960   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1961   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1962   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1963   PORT_DIPNAME( 0x0c, 0x0c, "Min Credits To Start" )
1964   PORT_DIPSETTING(    0x0c, "1" )
1965   PORT_DIPSETTING(    0x08, "2" )
1966   PORT_DIPSETTING(    0x04, "3" )
1967   PORT_DIPSETTING(    0x00, "5" )
1968   PORT_DIPNAME( 0x70, 0x70, "DAI MANGUAN Cycle" )
1969   PORT_DIPSETTING(    0x70, "300" )
1970//  PORT_DIPSETTING(    0x60, "300" )
1971//  PORT_DIPSETTING(    0x50, "300" )
1972//  PORT_DIPSETTING(    0x40, "300" )
1973//  PORT_DIPSETTING(    0x30, "300" )
1974//  PORT_DIPSETTING(    0x20, "300" )
1975//  PORT_DIPSETTING(    0x10, "300" )
1976//  PORT_DIPSETTING(    0x00, "300" )
1977   PORT_DIPNAME( 0x80, 0x80, "DAI MANGUAN Times" )
1978   PORT_DIPSETTING(    0x80, "2" )
1979//  PORT_DIPSETTING(    0x00, "2" )
1980
1981     PORT_START("DSW3")
1982   PORT_DIPNAME( 0x03, 0x03, "Max Credit" )
1983   PORT_DIPSETTING(    0x03, "1000" )
1984   PORT_DIPSETTING(    0x02, "2000" )
1985   PORT_DIPSETTING(    0x01, "5000" )
1986   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1987   PORT_DIPNAME( 0x0c, 0x0c, "Max Note" )
1988   PORT_DIPSETTING(    0x0c, "1000" )
1989   PORT_DIPSETTING(    0x08, "2000" )
1990   PORT_DIPSETTING(    0x04, "5000" )
1991   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1992   PORT_DIPNAME( 0x10, 0x10, "CPU Strength" )
1993   PORT_DIPSETTING(    0x10, "Strong" )
1994   PORT_DIPSETTING(    0x00, "Weak" )
1995   PORT_DIPNAME( 0x20, 0x20, "Money Type" )
1996   PORT_DIPSETTING(    0x20, "Coins" )
1997   PORT_DIPSETTING(    0x00, "Notes" )
1998   PORT_DIPNAME( 0xc0, 0xc0, "DONDEN Times" )
1999   PORT_DIPSETTING(    0xc0, "0" )
2000   PORT_DIPSETTING(    0x80, "3" )
2001   PORT_DIPSETTING(    0x40, "5" )
2002   PORT_DIPSETTING(    0x00, "8" )
2003
2004   PORT_START("DSW4")
2005   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
2006   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2007   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2008   PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
2009   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2010   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2011   PORT_DIPNAME( 0x0c, 0x00, "Girls" )
2012   PORT_DIPSETTING(    0x0c, DEF_STR( No ) )
2013   PORT_DIPSETTING(    0x08, "Dressed" )
2014   PORT_DIPSETTING(    0x04, "Underwear" )
2015   PORT_DIPSETTING(    0x00, "Nude" )
2016   PORT_DIPNAME( 0x10, 0x10, "Note Rate" )
2017   PORT_DIPSETTING(    0x10, "5" )
2018   PORT_DIPSETTING(    0x00, "10" )
2019   PORT_DIPNAME( 0x20, 0x20, "Pay Out" )
2020   PORT_DIPSETTING(    0x20, "Score" )
2021   PORT_DIPSETTING(    0x00, "Coin" )
2022   PORT_DIPNAME( 0x40, 0x40, "Coin In" )
2023   PORT_DIPSETTING(    0x40, "Credit" )
2024   PORT_DIPSETTING(    0x00, "Score" )
2025   PORT_DIPNAME( 0x80, 0x80, "Last Chance" )
2026   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2027   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
2028
2029   PORT_START("DSW5")
2030   PORT_DIPNAME( 0x01, 0x01, "In-Game Bet" )
2031   PORT_DIPSETTING(    0x01, DEF_STR( No ) )
2032   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2033   PORT_DIPUNKNOWN( 0x02, 0x02 )
2034   PORT_DIPUNKNOWN( 0x04, 0x04 )
2035   PORT_DIPUNKNOWN( 0x08, 0x08 )
2036   PORT_DIPUNKNOWN( 0x10, 0x10 )
2037   PORT_DIPUNKNOWN( 0x20, 0x20 )
2038   PORT_DIPUNKNOWN( 0x40, 0x40 )
2039   PORT_DIPUNKNOWN( 0x80, 0x80 )
2040
2041   PORT_START("COIN")
2042   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(igs_hopper_r, (void *)0)   // hopper switch
2043   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 )   // system reset
2044   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
2045   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )   // stats
2046   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1    ) PORT_IMPULSE(5)
2047   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER    ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)   // clear coins
2048   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER    ) PORT_NAME("0") PORT_CODE(KEYCODE_0_PAD)   // shown in test mode
2049   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN  )
2050
2051   PORT_START("KEY0")
2052   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
2053   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
2054   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
2055   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
2056   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
2057   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
2058   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2059   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2060
2061   PORT_START("KEY1")
2062   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
2063   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
2064   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
2065   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
2066   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
2067   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
2068   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2069   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2070
2071   PORT_START("KEY2")
2072   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
2073   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
2074   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
2075   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
2076   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
2077   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2078   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2079   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2080
2081   PORT_START("KEY3")
2082   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
2083   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
2084   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
2085   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
2086   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2087   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2088   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2089   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2090
2091   PORT_START("KEY4")
2092   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
2093   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
2094   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
2095   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )   // shown in test mode
2096   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
2097   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
2098   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2099   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2100INPUT_PORTS_END
2101
2102
2103static INPUT_PORTS_START( vbowl )
2104   PORT_START("DSW1")
2105   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
2106   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
2107   PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
2108   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
2109   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
2110   PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
2111   PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
2112   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
2113   PORT_DIPSETTING(    0x03, DEF_STR( 1C_5C ) )
2114   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2115   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2116   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2117   PORT_DIPNAME( 0x10, 0x10, "Special Picture" ) /* Sexy Interlude pics */
2118   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2119   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
2120   PORT_DIPNAME( 0x20, 0x20, "Open Picture" )
2121   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2122   PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
2123   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) )
2124   PORT_DIPSETTING(    0x40, DEF_STR( Joystick ) )
2125   PORT_DIPSETTING(    0x00, DEF_STR( Trackball ) )
2126   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) )
2127   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2128   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2129
2130   PORT_START("DSW2")
2131   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) )
2132   PORT_DIPSETTING(    0x03, DEF_STR( Easy   ) )   // 5
2133   PORT_DIPSETTING(    0x02, DEF_STR( Normal ) )   // 7
2134   PORT_DIPSETTING(    0x01, DEF_STR( Medium ) )   // 9
2135   PORT_DIPSETTING(    0x00, DEF_STR( Hard   ) )   // 11
2136   PORT_DIPNAME( 0x04, 0x04, "Spares To Win (Frames 1-5)" )
2137   PORT_DIPSETTING(    0x04, "3" )
2138   PORT_DIPSETTING(    0x00, "4" )
2139   PORT_DIPNAME( 0x18, 0x18, "Points To Win (Frames 6-10)" )
2140   PORT_DIPSETTING(    0x18, "160" )
2141   PORT_DIPSETTING(    0x10, "170" )
2142   PORT_DIPSETTING(    0x08, "180" )
2143   PORT_DIPSETTING(    0x00, "190" )
2144   PORT_DIPUNKNOWN( 0x20, 0x20 )
2145   PORT_DIPUNKNOWN( 0x40, 0x40 )
2146   PORT_DIPUNKNOWN( 0x80, 0x80 )
2147
2148     PORT_START("DSW3")
2149   PORT_DIPNAME( 0x03, 0x03, "Cabinet ID" )
2150   PORT_DIPSETTING(    0x03, "1" )
2151   PORT_DIPSETTING(    0x02, "2" )
2152   PORT_DIPSETTING(    0x01, "3" )
2153   PORT_DIPSETTING(    0x00, "4" )
2154   PORT_DIPNAME( 0x04, 0x04, "Linked Cabinets" )
2155   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2156   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2157   PORT_DIPUNKNOWN( 0x08, 0x08 )
2158   PORT_DIPUNKNOWN( 0x10, 0x10 )
2159   PORT_DIPUNKNOWN( 0x20, 0x20 )
2160   PORT_DIPUNKNOWN( 0x40, 0x40 )
2161   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
2162
2163   PORT_START("DSW4")
2164   PORT_DIPUNKNOWN( 0x01, 0x01 )
2165   PORT_DIPUNKNOWN( 0x02, 0x02 )
2166   PORT_DIPUNKNOWN( 0x04, 0x04 )
2167   PORT_DIPUNKNOWN( 0x08, 0x08 )
2168   PORT_DIPUNKNOWN( 0x10, 0x10 )
2169   PORT_DIPUNKNOWN( 0x20, 0x20 )
2170   PORT_DIPUNKNOWN( 0x40, 0x40 )
2171   PORT_DIPUNKNOWN( 0x80, 0x80 )
2172
2173   PORT_START("COIN")
2174   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
2175   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
2176   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2177   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
2178   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2179   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2180   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2181   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2182
2183   PORT_START("IN0")
2184   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2185   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
2186   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
2187   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
2188   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
2189   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
2190   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
2191   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
2192
2193   PORT_START("IN1")
2194   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
2195   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
2196   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
2197   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
2198   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
2199   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
2200   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
2201   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
2202
2203   PORT_START("AN0")
2204    PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_PLAYER(1)
2205
2206   PORT_START("AN1")
2207    PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_PLAYER(1)
2208INPUT_PORTS_END
2209
2210
2211static INPUT_PORTS_START( vbowlj )
2212   PORT_START("DSW1")
2213   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
2214   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
2215   PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
2216   PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
2217   PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
2218   PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
2219   PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
2220   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
2221   PORT_DIPSETTING(    0x03, DEF_STR( 1C_5C ) )
2222   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
2223   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2224   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2225   PORT_DIPNAME( 0x10, 0x10, "Special Picture" ) /* Sexy Interlude pics */
2226   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2227   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
2228   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Controls ) )
2229   PORT_DIPSETTING(    0x20, DEF_STR( Joystick ) )
2230   PORT_DIPSETTING(    0x00, DEF_STR( Trackball ) )
2231   PORT_DIPUNKNOWN( 0x40, 0x40 )
2232   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) )
2233   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2234   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2235
2236   PORT_START("DSW2")
2237   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) )
2238   PORT_DIPSETTING(    0x03, DEF_STR( Easy   ) )   // 5
2239   PORT_DIPSETTING(    0x02, DEF_STR( Normal ) )   // 7
2240   PORT_DIPSETTING(    0x01, DEF_STR( Medium ) )   // 9
2241   PORT_DIPSETTING(    0x00, DEF_STR( Hard   ) )   // 11
2242   PORT_DIPNAME( 0x04, 0x04, "Spares To Win (Frames 1-5)" )
2243   PORT_DIPSETTING(    0x04, "3" )
2244   PORT_DIPSETTING(    0x00, "4" )
2245   PORT_DIPNAME( 0x18, 0x18, "Points To Win (Frames 6-10)" )
2246   PORT_DIPSETTING(    0x18, "160" )
2247   PORT_DIPSETTING(    0x10, "170" )
2248   PORT_DIPSETTING(    0x08, "180" )
2249   PORT_DIPSETTING(    0x00, "190" )
2250   PORT_DIPUNKNOWN( 0x20, 0x20 )
2251   PORT_DIPUNKNOWN( 0x40, 0x40 )
2252   PORT_DIPUNKNOWN( 0x80, 0x80 )
2253
2254     PORT_START("DSW3")
2255   PORT_DIPNAME( 0x03, 0x03, "Cabinet ID" )
2256   PORT_DIPSETTING(    0x03, "1" )
2257   PORT_DIPSETTING(    0x02, "2" )
2258   PORT_DIPSETTING(    0x01, "3" )
2259   PORT_DIPSETTING(    0x00, "4" )
2260   PORT_DIPNAME( 0x04, 0x04, "Linked Cabinets" )
2261   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2262   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2263   PORT_DIPUNKNOWN( 0x08, 0x08 )
2264   PORT_DIPUNKNOWN( 0x10, 0x10 )
2265   PORT_DIPUNKNOWN( 0x20, 0x20 )
2266   PORT_DIPUNKNOWN( 0x40, 0x40 )
2267   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
2268
2269   PORT_START("DSW4")
2270   PORT_DIPUNKNOWN( 0x01, 0x01 )
2271   PORT_DIPUNKNOWN( 0x02, 0x02 )
2272   PORT_DIPUNKNOWN( 0x04, 0x04 )
2273   PORT_DIPUNKNOWN( 0x08, 0x08 )
2274   PORT_DIPUNKNOWN( 0x10, 0x10 )
2275   PORT_DIPUNKNOWN( 0x20, 0x20 )
2276   PORT_DIPUNKNOWN( 0x40, 0x40 )
2277   PORT_DIPUNKNOWN( 0x80, 0x80 )
2278
2279   PORT_START("COIN")
2280   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
2281   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
2282   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2283   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
2284   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2285   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2286   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2287   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2288
2289   PORT_START("IN0")
2290   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
2291   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
2292   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
2293   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
2294   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
2295   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
2296   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
2297   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
2298
2299   PORT_START("IN1")
2300   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
2301   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
2302   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
2303   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
2304   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
2305   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
2306   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
2307   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
2308
2309   PORT_START("AN0")
2310    PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_PLAYER(1)
2311
2312   PORT_START("AN1")
2313    PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_PLAYER(1)
2314INPUT_PORTS_END
2315
2316
2317static INPUT_PORTS_START( xymg )
2318   PORT_START("DSW1")
2319   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
2320   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
2321   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
2322   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
2323   PORT_DIPSETTING(    0x00, DEF_STR( 1C_4C ) )
2324   PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
2325   PORT_DIPSETTING(    0x0c, "10" )
2326   PORT_DIPSETTING(    0x08, "20" )
2327   PORT_DIPSETTING(    0x04, "50" )
2328   PORT_DIPSETTING(    0x00, "100" )
2329   PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
2330   PORT_DIPSETTING(    0x10, "500" )
2331   PORT_DIPSETTING(    0x00, "9999" )
2332   PORT_DIPNAME( 0x20, 0x20, "Money Type" )
2333   PORT_DIPSETTING(    0x20, "Coins" )   // use bits 0-1
2334   PORT_DIPSETTING(    0x00, "Notes" )   // use bits 2-3
2335   PORT_DIPUNKNOWN( 0x40, 0x40 )
2336   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
2337   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2338   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2339
2340   PORT_START("DSW2")
2341   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) )
2342   PORT_DIPSETTING(    0x03, "1000" )
2343   PORT_DIPSETTING(    0x02, "1500" )
2344   PORT_DIPSETTING(    0x01, "2000" )
2345   PORT_DIPSETTING(    0x00, "3000" )
2346   PORT_DIPNAME( 0x0c, 0x0c, "Min Credits To Start" )
2347   PORT_DIPSETTING(    0x0c, "1" )
2348   PORT_DIPSETTING(    0x08, "2" )
2349   PORT_DIPSETTING(    0x04, "3" )
2350   PORT_DIPSETTING(    0x00, "5" )
2351   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )   // shown in test mode
2352   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
2353   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2354   PORT_DIPUNKNOWN( 0x20, 0x20 )
2355   PORT_DIPUNKNOWN( 0x40, 0x40 )
2356   PORT_DIPUNKNOWN( 0x80, 0x80 )
2357
2358     PORT_START("DSW3")
2359   PORT_DIPUNKNOWN( 0x01, 0x01 )
2360   PORT_DIPUNKNOWN( 0x02, 0x02 )
2361   PORT_DIPUNKNOWN( 0x04, 0x04 )
2362   PORT_DIPUNKNOWN( 0x08, 0x08 )
2363   PORT_DIPUNKNOWN( 0x10, 0x10 )
2364   PORT_DIPUNKNOWN( 0x20, 0x20 )
2365   PORT_DIPUNKNOWN( 0x40, 0x40 )
2366   PORT_DIPUNKNOWN( 0x80, 0x80 )
2367
2368   PORT_START("COIN")
2369   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2370   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2371   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )   // keep pressed while booting
2372   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )   // stats
2373   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
2374   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER    ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)   // clear coin
2375   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2376   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2377
2378   PORT_START("KEY0")
2379   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
2380   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
2381   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
2382   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
2383   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
2384   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
2385   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2386   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2387
2388   PORT_START("KEY1")
2389   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
2390   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
2391   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
2392   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
2393   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
2394   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
2395   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2396   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2397
2398   PORT_START("KEY2")
2399   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
2400   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
2401   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
2402   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
2403   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
2404   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2405   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2406   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2407
2408   PORT_START("KEY3")
2409   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
2410   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
2411   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
2412   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
2413   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2414   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2415   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2416   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2417
2418   PORT_START("KEY4")
2419   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
2420   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
2421   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
2422   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2423   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
2424   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
2425   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2426   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2427INPUT_PORTS_END
2428
2429
2430
2431/***************************************************************************
2432
2433    Machine Drivers
2434
2435***************************************************************************/
2436
2437// for debugging
2438
2439#if 0
2440static const gfx_layout layout_8x8x4 =
2441{
2442   8,8,
2443   RGN_FRAC(1,1),
2444   4,
2445   { STEP4(0,1) },
2446   { 4, 0, 12,  8, 20,16, 28,24 },
2447   { STEP8(0,8*4) },
2448   8*8*4
2449};
2450static const gfx_layout layout_16x16x4 =
2451{
2452   16,16,
2453   RGN_FRAC(1,1),
2454   4,
2455   { STEP4(0,1) },
2456   { 4, 0, 12, 8, 20,16, 28,24,
2457     36,32, 44,40, 52,48, 60,56 },
2458   { STEP16(0,16*4) },
2459   16*16*4
2460};
2461static const gfx_layout layout_8x8x8 =
2462{
2463   8,8,
2464   RGN_FRAC(1,1),
2465   8,
2466   { STEP8(0,1) },
2467   { STEP8(0,8) },
2468   { STEP8(0,8*8) },
2469   8*8*8
2470};
2471static const gfx_layout layout_16x16x8 =
2472{
2473   16,16,
2474   RGN_FRAC(1,1),
2475   8,
2476   { STEP8(0,1) },
2477   { STEP16(0,8) },
2478   { STEP16(0,16*8) },
2479   16*16*8
2480};
2481static const gfx_layout layout_16x16x1 =
2482{
2483   16,16,
2484   RGN_FRAC(1,1),
2485   1,
2486   { 0 },
2487   { STEP16(15,-1) },
2488   { STEP16(0,16*1) },
2489   16*16*1
2490};
2491
2492static GFXDECODE_START( igs011_blit )
2493   GFXDECODE_ENTRY( "blitter", 0, layout_8x8x4,   0, 0x80 )
2494   GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
2495   GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8,   0, 0x08 )
2496   GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
2497GFXDECODE_END
2498static GFXDECODE_START( lhb2 )
2499   GFXDECODE_ENTRY( "blitter", 0, layout_8x8x4,   0, 0x80 )
2500   GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
2501   GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8,   0, 0x08 )
2502   GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
2503   GFXDECODE_ENTRY( "blitter_hi", 0, layout_16x16x1, 0, 0x80 )
2504GFXDECODE_END
2505#endif
2506
2507static MACHINE_DRIVER_START( igs011_base )
2508   MDRV_CPU_ADD("maincpu",M68000, XTAL_22MHz/3)
2509
2510   MDRV_NVRAM_HANDLER(generic_0fill)
2511
2512   /* video hardware */
2513   MDRV_SCREEN_ADD("screen", RASTER)
2514   MDRV_SCREEN_REFRESH_RATE(60)
2515   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
2516   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
2517   MDRV_SCREEN_SIZE(512, 256)
2518   MDRV_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
2519
2520   MDRV_PALETTE_LENGTH(0x800)
2521//  MDRV_GFXDECODE(igs011_blit)
2522
2523   MDRV_VIDEO_START( igs011 )
2524   MDRV_VIDEO_UPDATE( igs011 )
2525
2526   /* sound hardware */
2527   MDRV_SPEAKER_STANDARD_MONO("mono")
2528   MDRV_SOUND_ADD("oki", OKIM6295, XTAL_22MHz/21)
2529   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
2530   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
2531MACHINE_DRIVER_END
2532
2533
2534static INTERRUPT_GEN( lhb2_interrupt )
2535{
2536   switch (cpu_getiloops(device))
2537   {
2538      case 0:   cpu_set_input_line(device, 6, HOLD_LINE);   break;
2539      default:
2540      case 1:   cpu_set_input_line(device, 5, HOLD_LINE);   break;
2541   }
2542}
2543
2544static MACHINE_DRIVER_START( lhb2 )
2545   MDRV_IMPORT_FROM(igs011_base)
2546   MDRV_CPU_MODIFY("maincpu")
2547   MDRV_CPU_PROGRAM_MAP(lhb2)
2548   MDRV_CPU_VBLANK_INT_HACK(lhb2_interrupt,1+4)   // lev5 frequency drives the music tempo
2549
2550//  MDRV_GFXDECODE(lhb2)
2551
2552   MDRV_SOUND_ADD("ymsnd", YM2413, 3579545)
2553   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
2554MACHINE_DRIVER_END
2555
2556
2557static MACHINE_DRIVER_START( drgnwrld )
2558   MDRV_IMPORT_FROM(igs011_base)
2559   MDRV_CPU_MODIFY("maincpu")
2560   MDRV_CPU_PROGRAM_MAP(drgnwrld)
2561   MDRV_CPU_VBLANK_INT_HACK(lhb2_interrupt,1+4)   // lev5 frequency drives the music tempo
2562
2563   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
2564   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
2565MACHINE_DRIVER_END
2566
2567
2568static INTERRUPT_GEN( wlcc_interrupt )
2569{
2570   switch (cpu_getiloops(device))
2571   {
2572      case 0:   cpu_set_input_line(device, 3, HOLD_LINE);   break;
2573      case 1:   cpu_set_input_line(device, 6, HOLD_LINE);   break;
2574   }
2575}
2576
2577static MACHINE_DRIVER_START( wlcc )
2578   MDRV_IMPORT_FROM(igs011_base)
2579   MDRV_CPU_MODIFY("maincpu")
2580   MDRV_CPU_PROGRAM_MAP(wlcc)
2581   MDRV_CPU_VBLANK_INT_HACK(wlcc_interrupt,2)
2582MACHINE_DRIVER_END
2583
2584
2585
2586static INTERRUPT_GEN( lhb_interrupt )
2587{
2588   if (!lhb_irq_enable)
2589      return;
2590
2591   switch (cpu_getiloops(device))
2592   {
2593      case 0:   cpu_set_input_line(device, 3, HOLD_LINE);   break;
2594      case 2:   cpu_set_input_line(device, 6, HOLD_LINE);   break;
2595      default:
2596            // It reads the inputs. Must be called more than once for test mode on boot to work
2597            cpu_set_input_line(device, 5, HOLD_LINE);   break;
2598   }
2599}
2600
2601static MACHINE_DRIVER_START( lhb )
2602   MDRV_IMPORT_FROM(igs011_base)
2603   MDRV_CPU_MODIFY("maincpu")
2604   MDRV_CPU_PROGRAM_MAP(lhb)
2605   MDRV_CPU_VBLANK_INT_HACK(lhb_interrupt,3+1)
2606MACHINE_DRIVER_END
2607
2608
2609
2610static void sound_irq(const device_config *device, int state)
2611{
2612//   cputag_set_input_line(machine, "maincpu", 3, state);
2613}
2614
2615static const ics2115_interface vbowl_ics2115_interface = {
2616   sound_irq
2617};
2618
2619static INTERRUPT_GEN( vbowl_interrupt )
2620{
2621   switch (cpu_getiloops(device))
2622   {
2623      case 0:   cpu_set_input_line(device, 4, HOLD_LINE);   break;
2624      case 1:   cpu_set_input_line(device, 5, HOLD_LINE);   break;
2625      case 2:   cpu_set_input_line(device, 6, HOLD_LINE);   break;
2626      default:
2627      case 3:   cpu_set_input_line(device, 3, HOLD_LINE);   break;   // sound
2628   }
2629}
2630
2631static MACHINE_DRIVER_START( vbowl )
2632   MDRV_IMPORT_FROM(igs011_base)
2633   MDRV_CPU_MODIFY("maincpu")
2634   MDRV_CPU_PROGRAM_MAP(vbowl)
2635   MDRV_CPU_VBLANK_INT_HACK(vbowl_interrupt,3+4)
2636
2637   MDRV_VIDEO_EOF(vbowl)   // trackball
2638//  MDRV_GFXDECODE(lhb2)
2639
2640   MDRV_DEVICE_REMOVE("oki")
2641   MDRV_SOUND_ADD("ics", ICS2115, 0)
2642   MDRV_SOUND_CONFIG(vbowl_ics2115_interface)
2643   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0)
2644MACHINE_DRIVER_END
2645
2646
2647
2648static MACHINE_DRIVER_START( xymg )
2649   MDRV_IMPORT_FROM(igs011_base)
2650   MDRV_CPU_MODIFY("maincpu")
2651   MDRV_CPU_PROGRAM_MAP(xymg)
2652   MDRV_CPU_VBLANK_INT_HACK(wlcc_interrupt,2)
2653MACHINE_DRIVER_END
2654
2655
2656
2657static DRIVER_INIT( lhb2 )
2658{
2659   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2660
2661   lhb2_decrypt(machine);
2662   lhb2_decrypt_gfx(machine);
2663
2664   // PROTECTION CHECKS
2665   rom[0x034f4/2]   =   0x4e71;      // 0034F4: 660E    bne 3504   (rom test, fills palette with white otherwise)
2666   rom[0x03502/2]   =   0x6032;      // 003502: 6732    beq 3536   (rom test, fills palette with white otherwise)
2667   rom[0x1afea/2]   =   0x6034;      // 01AFEA: 6734    beq 1b020  (fills palette with black otherwise)
2668   rom[0x24b8a/2]   =   0x6036;      // 024B8A: 6736    beq 24bc2  (fills palette with green otherwise)
2669   rom[0x29ef8/2]   =   0x6036;      // 029EF8: 6736    beq 29f30  (fills palette with red otherwise)
2670   rom[0x2e69c/2]   =   0x6036;      // 02E69C: 6736    beq 2e6d4  (fills palette with green otherwise)
2671   rom[0x2fe96/2]   =   0x6036;      // 02FE96: 6736    beq 2fece  (fills palette with red otherwise)
2672   rom[0x325da/2]   =   0x6036;      // 0325DA: 6736    beq 32612  (fills palette with green otherwise)
2673   rom[0x3d80a/2]   =   0x6034;      // 03D80A: 6734    beq 3d840  (fills palette with black otherwise)
2674   rom[0x3ed80/2]   =   0x6036;      // 03ED80: 6736    beq 3edb8  (fills palette with red otherwise)
2675   rom[0x41d72/2]   =   0x6034;      // 041D72: 6734    beq 41da8  (fills palette with black otherwise)
2676   rom[0x44834/2]   =   0x6034;      // 044834: 6734    beq 4486a  (fills palette with black otherwise)
2677}
2678
2679static DRIVER_INIT( nkishusp )
2680{
2681   nkishusp_decrypt(machine);
2682
2683   // PROTECTION CHECKS (similar to lhb2?)
2684}
2685
2686static DRIVER_INIT( drgnwrld )
2687{
2688   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2689
2690   drgnwrld_type1_decrypt(machine);
2691   drgnwrld_gfx_decrypt(machine);
2692
2693   // PROTECTION CHECKS
2694   rom[0x032ee/2]   =   0x606c;      // 0032EE: 676C        beq 335c     (ASIC11 CHECK PORT ERROR 3)
2695   rom[0x23d5e/2]   =   0x606c;      // 023D5E: 676C        beq 23dcc    (CHECK PORT ERROR 1)
2696   rom[0x23fd0/2]   =   0x606c;      // 023FD0: 676C        beq 2403e    (CHECK PORT ERROR 2)
2697   rom[0x24170/2]   =   0x606c;      // 024170: 676C        beq 241de    (CHECK PORT ERROR 3)
2698   rom[0x24348/2]   =   0x606c;      // 024348: 676C        beq 243b6    (ASIC11 CHECK PORT ERROR 4)
2699   rom[0x2454e/2]   =   0x606c;      // 02454E: 676C        beq 245bc    (ASIC11 CHECK PORT ERROR 3)
2700   rom[0x246cc/2]   =   0x606c;      // 0246CC: 676C        beq 2473a    (ASIC11 CHECK PORT ERROR 2)
2701   rom[0x24922/2]   =   0x606c;      // 024922: 676C        beq 24990    (ASIC11 CHECK PORT ERROR 1)
2702   rom[0x24b66/2]   =   0x606c;      // 024B66: 676C        beq 24bd4    (ASIC12 CHECK PORT ERROR 4)
2703   rom[0x24de2/2]   =   0x606c;      // 024DE2: 676C        beq 24e50    (ASIC12 CHECK PORT ERROR 3)
2704   rom[0x2502a/2]   =   0x606c;      // 02502A: 676C        beq 25098    (ASIC12 CHECK PORT ERROR 2)
2705   rom[0x25556/2]   =   0x6000;      // 025556: 6700 E584   beq 23adc    (ASIC12 CHECK PORT ERROR 1)
2706   rom[0x2a16c/2]   =   0x606c;      // 02A16C: 676C        beq 2a1da    (ASIC11 CHECK PORT ERROR 2)
2707}
2708
2709static DRIVER_INIT( drgnwrldv30 )
2710{
2711   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2712
2713   drgnwrld_type1_decrypt(machine);
2714   drgnwrld_gfx_decrypt(machine);
2715
2716   // PROTECTION CHECKS
2717   rom[0x032ee/2]   =   0x606c;      // 0032EE: 676C        beq 335c     (ASIC11 CHECK PORT ERROR 3)
2718   rom[0x23d5e/2]   =   0x606c;      // 023D5E: 676C        beq 23dcc    (CHECK PORT ERROR 1)
2719   rom[0x23fd0/2]   =   0x606c;      // 023FD0: 676C        beq 2403e    (CHECK PORT ERROR 2)
2720   rom[0x24170/2]   =   0x606c;      // 024170: 676C        beq 241de    (CHECK PORT ERROR 3)
2721   rom[0x24348/2]   =   0x606c;      // 024348: 676C        beq 243b6    (ASIC11 CHECK PORT ERROR 4)
2722   rom[0x2454e/2]   =   0x606c;      // 02454E: 676C        beq 245bc    (ASIC11 CHECK PORT ERROR 3)
2723   rom[0x246cc/2]   =   0x606c;      // 0246CC: 676C        beq 2473a    (ASIC11 CHECK PORT ERROR 2)
2724   rom[0x24922/2]   =   0x606c;      // 024922: 676C        beq 24990    (ASIC11 CHECK PORT ERROR 1)
2725   rom[0x24b66/2]   =   0x606c;      // 024B66: 676C        beq 24bd4    (ASIC12 CHECK PORT ERROR 4)
2726   rom[0x24de2/2]   =   0x606c;      // 024DE2: 676C        beq 24e50    (ASIC12 CHECK PORT ERROR 3)
2727   rom[0x2502a/2]   =   0x606c;      // 02502A: 676C        beq 25098    (ASIC12 CHECK PORT ERROR 2)
2728   rom[0x25556/2]   =   0x6000;      // 025556: 6700 E584   beq 23adc    (ASIC12 CHECK PORT ERROR 1)
2729   // different from drgnwrld:
2730   rom[0x2a162/2]   =   0x606c;      // 02A162: 676C        beq 2a1d0    (ASIC11 CHECK PORT ERROR 2)
2731}
2732
2733static DRIVER_INIT( drgnwrldv21 )
2734{
2735   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2736
2737   drgnwrld_type2_decrypt(machine);
2738   drgnwrld_gfx_decrypt(machine);
2739
2740   // PROTECTION CHECKS
2741   rom[0x032ee/2]   =   0x606c;      // 0032EE: 676C        beq 335c     (ASIC11 CHECK PORT ERROR 3)
2742   rom[0x11ca8/2]   =   0x606c;      // ??
2743   rom[0x23d5e/2]   =   0x606c;      // 023D5E: 676C        beq 23dcc    (CHECK PORT ERROR 1)
2744   rom[0x23fd0/2]   =   0x606c;      // 023FD0: 676C        beq 2403e    (CHECK PORT ERROR 2)
2745   rom[0x24170/2]   =   0x606c;      // 024170: 676C        beq 241de    (CHECK PORT ERROR 3)
2746   rom[0x24348/2]   =   0x606c;      // 024348: 676C        beq 243b6    (ASIC11 CHECK PORT ERROR 4)
2747   rom[0x2454e/2]   =   0x606c;      // 02454E: 676C        beq 245bc    (ASIC11 CHECK PORT ERROR 3)
2748   rom[0x246cc/2]   =   0x606c;      // 0246CC: 676C        beq 2473a    (ASIC11 CHECK PORT ERROR 2)
2749   rom[0x24922/2]   =   0x606c;      // 024922: 676C        beq 24990    (ASIC11 CHECK PORT ERROR 1)
2750   rom[0x24b66/2]   =   0x606c;      // 024B66: 676C        beq 24bd4    (ASIC12 CHECK PORT ERROR 4)
2751   rom[0x24de2/2]   =   0x606c;      // 024DE2: 676C        beq 24e50    (ASIC12 CHECK PORT ERROR 3)
2752   rom[0x2502a/2]   =   0x606c;      // 02502A: 676C        beq 25098    (ASIC12 CHECK PORT ERROR 2)
2753   rom[0x25556/2]   =   0x6000;      // 025556: 6700 E584   beq 23adc    (ASIC12 CHECK PORT ERROR 1)
2754   rom[0x269de/2]   =   0x606c;      // ??
2755   rom[0x2766a/2]   =   0x606c;      // ??
2756   rom[0x2a830/2]   =   0x606c;      // ??
2757}
2758
2759static DRIVER_INIT( drgnwrldv10c )
2760{
2761   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2762
2763   drgnwrld_type1_decrypt(machine);
2764   drgnwrld_gfx_decrypt(machine);
2765
2766   // PROTECTION CHECKS
2767   rom[0x033d2/2]   =   0x606c;      // 0033D2: 676C        beq 3440     (ASIC11 CHECK PORT ERROR 3)
2768   rom[0x23d0e/2]   =   0x606c;      // 023D0E: 676C        beq 23d7c    (CHECK PORT ERROR 1)
2769   rom[0x23f58/2]   =   0x606c;      // 023F58: 676C        beq 23fc6    (CHECK PORT ERROR 2)
2770   rom[0x240d0/2]   =   0x606c;      // 0240D0: 676C        beq 2413e    (CHECK PORT ERROR 3)
2771   rom[0x242a8/2]   =   0x606c;      // 0242A8: 676C        beq 24316    (ASIC11 CHECK PORT ERROR 4)
2772   rom[0x244ae/2]   =   0x606c;      // 0244AE: 676C        beq 2451c    (ASIC11 CHECK PORT ERROR 3)
2773   rom[0x2462c/2]   =   0x606c;      // 02462C: 676C        beq 2469a    (ASIC11 CHECK PORT ERROR 2)
2774   rom[0x24882/2]   =   0x606c;      // 024882: 676C        beq 248f0    (ASIC11 CHECK PORT ERROR 1)
2775   rom[0x24ac6/2]   =   0x606c;      // 024AC6: 676C        beq 24b34    (ASIC12 CHECK PORT ERROR 4)
2776   rom[0x24d42/2]   =   0x606c;      // 024D42: 676C        beq 24db0    (ASIC12 CHECK PORT ERROR 3)
2777   rom[0x24f8a/2]   =   0x606c;      // 024F8A: 676C        beq 24ff8    (ASIC12 CHECK PORT ERROR 2)
2778   rom[0x254b6/2]   =   0x6000;      // 0254B6: 6700 E5FC   beq 23ab4    (ASIC12 CHECK PORT ERROR 1)
2779   rom[0x2a23a/2]   =   0x606c;      // 02A23A: 676C        beq 2a2a8    (ASIC11 CHECK PORT ERROR 2)
2780
2781}
2782
2783static DRIVER_INIT( drgnwrldv11h )
2784{
2785   drgnwrld_type1_decrypt(machine);
2786   drgnwrld_gfx_decrypt(machine);
2787
2788   // PROTECTION CHECKS
2789   // the protection checks are already pathed out like we do!
2790}
2791
2792static DRIVER_INIT( drgnwrldv21j )
2793{
2794   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2795
2796   drgnwrld_type3_decrypt(machine);
2797   drgnwrld_gfx_decrypt(machine);
2798
2799   // PROTECTION CHECKS
2800   rom[0x033d2/2]   =   0x606c;      // 0033D2: 676C        beq 3440     (ASIC11 CHECK PORT ERROR 3)
2801   rom[0x11c74/2]   =   0x606c;      // 011C74: 676C        beq 11ce2    (CHECK PORT ERROR 1)
2802   rom[0x23d2a/2]   =   0x606c;      // 023D2A: 676C        beq 23d98
2803   rom[0x23f68/2]   =   0x606c;      // 023F68: 676C        beq 23fd6
2804   rom[0x240d4/2]   =   0x606c;      // 0240D4: 676C        beq 24142    (CHECK PORT ERROR 3)
2805   rom[0x242ac/2]   =   0x606c;      // 0242AC: 676C        beq 2431a
2806   rom[0x244b2/2]   =   0x606c;      // 0244B2: 676C        beq 24520
2807   rom[0x24630/2]   =   0x606c;      // 024630: 676C        beq 2469e
2808   rom[0x24886/2]   =   0x606c;      // 024886: 676C        beq 248f4
2809   rom[0x24aca/2]   =   0x606c;      // 024ACA: 676C        beq 24b38
2810   rom[0x24d46/2]   =   0x606c;      // 024D46: 676C        beq 24db4
2811   rom[0x24f8e/2]   =   0x606c;      // 024F8E: 676C        beq 24ffc
2812   rom[0x254ba/2]   =   0x6000;      // 0254BA: 6700 E620   beq 23adc    (ASIC12 CHECK PORT ERROR 1)
2813   rom[0x26a52/2]   =   0x606c;      // 026A52: 676C        beq 26ac0    (ASIC12 CHECK PORT ERROR 1)
2814   rom[0x276aa/2]   =   0x606c;      // 0276AA: 676C        beq 27718    (CHECK PORT ERROR 3)
2815   rom[0x2a870/2]   =   0x606c;      // 02A870: 676C        beq 2a8de    (ASIC11 CHECK PORT ERROR 2)
2816}
2817
2818static DRIVER_INIT( drgnwrldv20j )
2819{
2820   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2821
2822   drgnwrld_type3_decrypt(machine);
2823   drgnwrld_gfx_decrypt(machine);
2824
2825   // PROTECTION CHECKS
2826   rom[0x033d2/2]   =   0x606c;      // 0033D2: 676C        beq 3440     (ASIC11 CHECK PORT ERROR 3)
2827   rom[0x11c74/2]   =   0x606c;      // 011C74: 676C        beq 11ce2    (CHECK PORT ERROR 1)
2828   rom[0x23d2a/2]   =   0x606c;      // 023D2A: 676C        beq 23d98
2829   rom[0x23f68/2]   =   0x606c;      // 023F68: 676C        beq 23fd6
2830   rom[0x240d4/2]   =   0x606c;      // 0240D4: 676C        beq 24142    (CHECK PORT ERROR 3)
2831   rom[0x242ac/2]   =   0x606c;      // 0242AC: 676C        beq 2431a
2832   rom[0x244b2/2]   =   0x606c;      // 0244B2: 676C        beq 24520
2833   rom[0x24630/2]   =   0x606c;      // 024630: 676C        beq 2469e
2834   rom[0x24886/2]   =   0x606c;      // 024886: 676C        beq 248f4
2835   rom[0x24aca/2]   =   0x606c;      // 024ACA: 676C        beq 24b38
2836   rom[0x24d46/2]   =   0x606c;      // 024D46: 676C        beq 24db4
2837   rom[0x24f8e/2]   =   0x606c;      // 024F8E: 676C        beq 24ffc
2838   rom[0x254ba/2]   =   0x6000;      // 0254BA: 6700 E620   beq 23adc    (ASIC12 CHECK PORT ERROR 1)
2839   rom[0x26a52/2]   =   0x606c;      // 026A52: 676C        beq 26ac0    (ASIC12 CHECK PORT ERROR 1)
2840   // different from drgnwrldv21j:
2841   rom[0x276a0/2]   =   0x606c;      // 0276A0: 676C        beq 2770e    (CHECK PORT ERROR 3)
2842   rom[0x2a86e/2]   =   0x606c;      // 02A86E: 676C        beq 2a8dc    (ASIC11 CHECK PORT ERROR 2)
2843}
2844
2845static DRIVER_INIT( wlcc )
2846{
2847   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2848
2849   wlcc_decrypt(machine);
2850
2851   // PROTECTION CHECKS
2852   rom[0x16b96/2]   =   0x6000;      // 016B96: 6700 02FE    beq 16e96  (fills palette with red otherwise)
2853   rom[0x16e5e/2]   =   0x6036;      // 016E5E: 6736         beq 16e96  (fills palette with green otherwise)
2854   rom[0x17852/2]   =   0x6000;      // 017852: 6700 01F2    beq 17a46  (fills palette with green otherwise)
2855   rom[0x17a0e/2]   =   0x6036;      // 017A0E: 6736         beq 17a46  (fills palette with red otherwise)
2856   rom[0x23636/2]   =   0x6036;      // 023636: 6736         beq 2366e  (fills palette with red otherwise)
2857   rom[0x2b1e6/2]   =   0x6000;      // 02B1E6: 6700 0218    beq 2b400  (fills palette with green otherwise)
2858   rom[0x2f9f2/2]   =   0x6000;      // 02F9F2: 6700 04CA    beq 2febe  (fills palette with green otherwise)
2859   rom[0x2fb2e/2]   =   0x6000;      // 02FB2E: 6700 038E    beq 2febe  (fills palette with red otherwise)
2860   rom[0x2fcf2/2]   =   0x6000;      // 02FCF2: 6700 01CA    beq 2febe  (fills palette with red otherwise)
2861   rom[0x2fe86/2]   =   0x6036;      // 02FE86: 6736         beq 2febe  (fills palette with red otherwise)
2862   rom[0x3016e/2]   =   0x6000;      // 03016E: 6700 03F6    beq 30566  (fills palette with green otherwise)
2863   rom[0x303c8/2]   =   0x6000;      // 0303C8: 6700 019C    beq 30566  (fills palette with green otherwise)
2864   rom[0x3052e/2]   =   0x6036;      // 03052E: 6736         beq 30566  (fills palette with green otherwise)
2865}
2866
2867static DRIVER_INIT( lhb )
2868{
2869   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2870
2871   lhb_decrypt(machine);
2872
2873   // PROTECTION CHECKS
2874   rom[0x2eef6/2]   =   0x4e75;      // 02EEF6: 4E56 FE00    link A6, #-$200  (fills palette with pink otherwise)
2875}
2876
2877static DRIVER_INIT( lhba )
2878{
2879   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2880
2881   lhb_decrypt(machine);
2882
2883   // PROTECTION CHECKS
2884   rom[0x2e988/2]   =   0x4e75;      // 02E988: 4E56 FE00    link A6, #-$200  (fills palette with pink otherwise)
2885}
2886
2887static DRIVER_INIT( vbowl )
2888{
2889   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2890   UINT8  *gfx = (UINT8 *)  memory_region(machine, "blitter");
2891   int i;
2892
2893   vbowlj_decrypt(machine);
2894
2895   for (i = 0x400000-1; i >= 0; i--)
2896   {
2897      gfx[i * 2 + 1] = (gfx[i] & 0xf0) >> 4;
2898      gfx[i * 2 + 0] = (gfx[i] & 0x0f) >> 0;
2899   }
2900
2901   // Patch the bad dump so that it doesn't reboot at the end of a game (the patched value is from vbowlj)
2902   rom[0x080e0/2] = 0xe549;   // 0080E0: 0449 dc.w $0449; ILLEGAL
2903
2904   // PROTECTION CHECKS
2905   rom[0x3764/2] = 0x4e75;   // 003764: 4E56 0000 link    A6, #$0
2906}
2907
2908static DRIVER_INIT( vbowlj )
2909{
2910   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2911   UINT8  *gfx = (UINT8 *)  memory_region(machine, "blitter");
2912   int i;
2913
2914   vbowlj_decrypt(machine);
2915
2916   for (i = 0x400000-1; i >= 0; i--)
2917   {
2918      gfx[i * 2 + 1] = (gfx[i] & 0xf0) >> 4;
2919      gfx[i * 2 + 0] = (gfx[i] & 0x0f) >> 0;
2920   }
2921
2922   // PROTECTION CHECKS
2923   rom[0x37b4/2] = 0x4e75;   // 0037B4: 4E56 0000 link    A6, #$0
2924}
2925
2926static DRIVER_INIT( xymg )
2927{
2928   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2929
2930   lhb_decrypt(machine);
2931
2932   // PROTECTION CHECKS
2933   rom[0x00502/2]   =   0x6006;      // 000502: 6050         bra 554
2934   rom[0x0fc1c/2]   =   0x6036;      // 00FC1C: 6736         beq fc54  (fills palette with red otherwise)
2935   rom[0x1232a/2]   =   0x6036;      // 01232A: 6736         beq 12362 (fills palette with red otherwise)
2936   rom[0x18244/2]   =   0x6036;      // 018244: 6736         beq 1827c (fills palette with red otherwise)
2937   rom[0x1e15e/2]   =   0x6036;      // 01E15E: 6736         beq 1e196 (fills palette with red otherwise)
2938   rom[0x22286/2]   =   0x6000;      // 022286: 6700 02D2    beq 2255a (fills palette with green otherwise)
2939   rom[0x298ce/2]   =   0x6036;      // 0298CE: 6736         beq 29906 (fills palette with red otherwise)
2940   rom[0x2e07c/2]   =   0x6036;      // 02E07C: 6736         beq 2e0b4 (fills palette with red otherwise)
2941   rom[0x38f1c/2]   =   0x6000;      // 038F1C: 6700 071C    beq 3963a (ASIC11 ERROR 1)
2942   rom[0x390e8/2]   =   0x6000;      // 0390E8: 6700 0550    beq 3963a (ASIC11 ERROR 2)
2943   rom[0x3933a/2]   =   0x6000;      // 03933A: 6700 02FE    beq 3963a (ASIC11 ERROR 3)
2944   rom[0x3955c/2]   =   0x6000;      // 03955C: 6700 00DC    beq 3963a (ASIC11 ERROR 4)
2945   rom[0x397f4/2]   =   0x6000;      // 0397F4: 6700 02C0    beq 39ab6 (fills palette with green otherwise)
2946   rom[0x39976/2]   =   0x6000;      // 039976: 6700 013E    beq 39ab6 (fills palette with green otherwise)
2947   rom[0x39a7e/2]   =   0x6036;      // 039A7E: 6736         beq 39ab6 (fills palette with green otherwise)
2948   rom[0x4342c/2]   =   0x4e75;      // 04342C: 4E56 0000    link A6, #$0
2949   rom[0x49966/2]   =   0x6036;      // 049966: 6736         beq 4999e (fills palette with blue otherwise)
2950   rom[0x58140/2]   =   0x6036;      // 058140: 6736         beq 58178 (fills palette with red otherwise)
2951   rom[0x5e05a/2]   =   0x6036;      // 05E05A: 6736         beq 5e092 (fills palette with red otherwise)
2952   rom[0x5ebf0/2]   =   0x6000;      // 05EBF0: 6700 0208    beq 5edfa (fills palette with red otherwise)
2953   rom[0x5edc2/2]   =   0x6036;      // 05EDC2: 6736         beq 5edfa (fills palette with green otherwise)
2954   rom[0x5f71c/2]   =   0x6000;      // 05F71C: 6700 01F2    beq 5f910 (fills palette with green otherwise)
2955   rom[0x5f8d8/2]   =   0x6036;      // 05F8D8: 6736         beq 5f910 (fills palette with red otherwise)
2956   rom[0x64836/2]   =   0x6036;      // 064836: 6736         beq 6486e (fills palette with red otherwise)
2957}
2958
2959static DRIVER_INIT( dbc )
2960{
2961   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2962
2963   dbc_decrypt(machine);
2964
2965   // PROTECTION CHECKS
2966   rom[0x04c42/2]   =   0x602e;      // 004C42: 6604         bne 4c48  (rom test error otherwise)
2967   rom[0x08694/2]   =   0x6008;      // 008694: 6408         bcc 869e  (fills screen with characters otherwise)
2968   rom[0x0a05e/2]   =   0x4e71;      // 00A05E: 6408         bcc a068  (fills screen with characters otherwise)
2969   rom[0x0bec2/2]   =   0x6008;      // 00BEC2: 6408         bcc becc  (fills screen with characters otherwise)
2970   rom[0x0c0d4/2]   =   0x600a;      // 00C0D4: 640A         bcc c0e0  (wrong game state otherwise)
2971   rom[0x0c0f0/2]   =   0x4e71;      // 00C0F0: 6408         bcc c0fa  (wrong palette otherwise)
2972   rom[0x0e292/2]   =   0x6008;      // 00E292: 6408         bcc e29c  (fills screen with characters otherwise)
2973   rom[0x11b42/2]   =   0x6008;      // 011B42: 6408         bcc 11b4c (wrong game state otherwise)
2974   rom[0x11b5c/2]   =   0x4e71;      // 011B5C: 6408         bcc 11b66 (wrong palette otherwise)
2975   rom[0x170ae/2]   =   0x4e71;      // 0170AE: 6408         bcc 170b8 (fills screen with characters otherwise)
2976   rom[0x1842a/2]   =   0x6024;      // 01842A: 6724         beq 18450 (ASIC11 ERROR otherwise)
2977   rom[0x18538/2]   =   0x6008;      // 018538: 6408         bcc 18542 (wrong game state otherwise)
2978   rom[0x18552/2]   =   0x4e71;      // 018552: 6408         bcc 1855c (wrong palette otherwise)
2979   rom[0x18c0e/2]   =   0x6006;      // 018C0E: 6406         bcc 18c16 (fills screen with characters otherwise)
2980   rom[0x1923e/2]   =   0x4e71;      // 01923E: 6408         bcc 19248 (fills screen with characters otherwise)
2981
2982   // Fix for the palette fade on title screen
2983//  rom[0x19E90/2]  =   0x00ff;
2984}
2985
2986static DRIVER_INIT( ryukobou )
2987{
2988   UINT16 *rom = (UINT16 *) memory_region(machine, "maincpu");
2989
2990   ryukobou_decrypt(machine);
2991
2992   // PROTECTION CHECKS
2993   rom[0x2df68/2]   =   0x4e75;      // 02DF68: 4E56 FE00    link A6, #-$200  (fills palette with pink otherwise)
2994}
2995
2996
2997/***************************************************************************
2998
2999    ROMs Loading
3000
3001***************************************************************************/
3002
3003/***************************************************************************
3004
3005Dragon World (World, V0400)
3006(C) 1997 IGS / ALTA
3007
3008Chips:
3009  1x 68000 (main)
3010  1x AC0A26 (equivalent to OKI M6295)(sound)
3011  1x 6564L (equivalent to YM3812)(sound)
3012  1x custom IGS003c (marked on PCB as 8255)
3013  1x oscillator 22.0000MHz (main)
3014  1x oscillator 3.579545MHz (sound)
3015  1x custom IGS011 (FPGA?)
3016
3017ROMs:
3018  1x MX27C4096 (u3)(main) (dumped)
3019  1x custom IGSD0301 (mask rom) (not dumped yet)
3020  1x NEC D27C2001D (IGSS0302)(sound) (not dumped yet)
3021
3022Notes:
3023  1x JAMMA edge connector
3024  1x trimmer (volume)
3025  3x 8 switches dips
3026  PCB serial number is: 0105-5
3027
3028***************************************************************************/
3029
3030ROM_START( drgnwrld )
3031   ROM_REGION( 0x80000, "maincpu", 0 )
3032   ROM_LOAD16_WORD_SWAP( "chinadr-v0400.u3", 0x00000, 0x80000, CRC(a6daa2b8) SHA1(0cbfd001c1fd82a6385453d1c2a808add67746af) )
3033
3034   ROM_REGION( 0x400000, "blitter", 0 )
3035   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3036
3037   ROM_REGION( 0x40000, "oki", 0 )
3038   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
3039ROM_END
3040
3041/***************************************************************************
3042
3043Dragon World (World, V0300)
3044(C) 1995 IGS
3045
3046Chips:
3047  1x MC68HC000P10 (main)
3048  1x CUSTOM IGS011
3049
3050ROMs:
3051  1x MX27C4096 (main)
3052
3053***************************************************************************/
3054
3055ROM_START( drgnwrldv30 )
3056   ROM_REGION( 0x80000, "maincpu", 0 )
3057   ROM_LOAD16_WORD_SWAP( "chinadr-v0300.u3", 0x00000, 0x80000, CRC(5ac243e5) SHA1(50cccff0307239187ac2b65331ad2bcc666f8033) )
3058
3059   ROM_REGION( 0x400000, "blitter", 0 )
3060   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3061
3062   ROM_REGION( 0x40000, "oki", 0 )
3063   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
3064ROM_END
3065
3066ROM_START( drgnwrldv21 )
3067   ROM_REGION( 0x80000, "maincpu", 0 )
3068   ROM_LOAD16_WORD_SWAP( "china-dr-v-0210.u3", 0x00000, 0x80000, CRC(60c2b018) SHA1(58563e3ccb51bd9d8362aa17c23743bb5a593c3b) )
3069
3070   ROM_REGION( 0x400000, "blitter", 0 )
3071   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3072
3073   ROM_REGION( 0x40000, "oki", 0 )
3074   ROM_LOAD( "china-dr-sp.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
3075ROM_END
3076
3077/***************************************************************************
3078
3079Zhong Guo Long (China, V0303)
3080(C) 1995 IGS
3081
3082Chips:
3083  CPU 1x MC68HC000P10 (main)
3084  1x AR17961-AP0642 (equivalent to OKI M6295)(sound)
3085  1x 6564L (equivalent to YM3812)(sound)
3086  1x LS138S (sound)
3087  1x LM7805CV (sound)
3088  1x UPC1242H (sound)
3089  1x custom IGS003 (marked on PCB as 8255)
3090  1x oscillator 22.0000MHz (main)
3091  1x oscillator 3.579545MHz (sound)
3092  1x custom IGS011 (FPGA?)
3093
3094ROMs:
3095  1x maskrom 256x16 IGSD0303 (u3)(main)
3096  1x maskrom 2Mx16 UM23V32000 (IGSD0301)(u39)(gfx)
3097  1x empty socket for 27C040 (u44)
3098  1x maskrom NEC D27C2001D (IGSS0302)(u43)(sound)
3099  2x PAL16L8ACN (u17,u18)(read protected)
3100  2x PALATF22V10B (u15,u45)
3101  1x empty space for additional PALATV750 (u16)
3102
3103Notes:
3104  1x JAMMA edge connector
3105  1x trimmer (volume)
3106  3x 8x2 switches DIP
3107
3108The PCB is perfectly working, empty spaces and empty sockets are clearly intended to be empty.
310925/07/2007 f205v Corrado Tomaselli Gnoppi
3110
3111***************************************************************************/
3112
3113ROM_START( drgnwrldv10c )
3114   ROM_REGION( 0x80000, "maincpu", 0 )
3115   ROM_LOAD16_WORD_SWAP( "igs-d0303.u3", 0x00000, 0x80000, CRC(3b3c29bb) SHA1(77b7e58104314303985c283cce3aec40bd7b9334) )
3116
3117   ROM_REGION( 0x400000, "blitter", 0 )
3118   //ROM_LOAD( "igs-0301.u39", 0x000000, 0x400000, CRC(655ab941) SHA1(4bbefb27e8971446998508969661042c5111bc72) ) // bad dump
3119   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3120
3121   ROM_REGION( 0x40000, "oki", 0 )
3122   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
3123
3124   ROM_REGION( 0x40000, "user1", 0 )
3125   ROM_LOAD( "ccdu15.u15", 0x000, 0x2e5, CRC(a15fce69) SHA1(3e38d75c7263bfb36aebdbbd55ebbdd7ca601633) )
3126   //ROM_LOAD( "ccdu17.u17.bad.dump", 0x000, 0x104, CRC(e9cd78fb) SHA1(557d3e7ef3b25c1338b24722cac91bca788c02b8) )
3127   //ROM_LOAD( "ccdu18.u18.bad.dump", 0x000, 0x104, CRC(e9cd78fb) SHA1(557d3e7ef3b25c1338b24722cac91bca788c02b8) )
3128   ROM_LOAD( "ccdu45.u45", 0x000, 0x2e5, CRC(a15fce69) SHA1(3e38d75c7263bfb36aebdbbd55ebbdd7ca601633) )
3129ROM_END
3130
3131/***************************************************************************
3132
3133Chuugokuryuu (china dragon jpn ver.)
3134(c)IGS
3135Distributed by ALTA
3136
3137MAIN CPU   : 68000
3138I/O        : IGS003 (=8255)
3139SOUND ?    : 6564L  (=OPL?)  , AR17961 (=M6295?)
3140CRTC ?     : IGS011
3141SOUND CPU? : IGSD0301 (DIP 42P)
3142OSC        : 22Mhz , 3.579545Mhz
3143DIPSW      : 8bitx 3 (SW3 is not used)
3144OTHER      : IGS012
3145
3146MAIN PRG   : "CHINA DRAGON U020J" (japan)
3147SOUND PRG? : "CHINA DRAGON SP"
3148SOUND DATA?: "CHINA DRAGON U44"
3149
3150***************************************************************************/
3151
3152ROM_START( drgnwrldv20j )
3153   ROM_REGION( 0x80000, "maincpu", 0 )
3154   ROM_LOAD16_WORD_SWAP( "china_jp.v20", 0x00000, 0x80000, CRC(9e018d1a) SHA1(fe14e6344434cabf43685e50fd49c90f05f565be) )
3155
3156   ROM_REGION( 0x420000, "blitter", 0 )
3157   // igs-d0301.u39 wasn't in this set
3158   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3159   ROM_LOAD( "china.u44",     0x400000, 0x020000, CRC(10549746) SHA1(aebd83796679c85b43ad514b2771897f94e61294) ) // 1xxxxxxxxxxxxxxxx = 0x00
3160
3161   ROM_REGION( 0x40000, "oki", 0 )
3162   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) ) // original label: "sp"
3163ROM_END
3164
3165ROM_START( drgnwrldv21j )
3166   ROM_REGION( 0x80000, "maincpu", 0 )
3167   ROM_LOAD16_WORD_SWAP( "v-021j", 0x00000, 0x80000, CRC(2f87f6e4) SHA1(d43065b078fdd9605c121988ad3092dce6cf0bf1) )
3168
3169   ROM_REGION( 0x420000, "blitter", 0 )
3170   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3171   ROM_LOAD( "cg",            0x400000, 0x020000, CRC(2dda0be3) SHA1(587b7cab747d4336515c98eb3365341bb6c7e5e4) )
3172
3173   ROM_REGION( 0x40000, "oki", 0 )
3174   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) ) // original label: "sp"
3175ROM_END
3176
3177/***************************************************************************
3178
3179    Dong Fang Zhi Zhu (Hong Kong version of Zhong Guo Long, V011H)
3180
3181***************************************************************************/
3182
3183ROM_START( drgnwrldv11h )
3184   ROM_REGION( 0x80000, "maincpu", 0 )
3185   ROM_LOAD16_WORD_SWAP( "c_drgn_hk.u3", 0x00000, 0x80000, CRC(182037ce) SHA1(141b698777533e57493e588d2526523d4bd3e17d) )
3186
3187   ROM_REGION( 0x400000, "blitter", 0 )
3188   ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
3189
3190   ROM_REGION( 0x40000, "oki", 0 )
3191   ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
3192ROM_END
3193
3194/***************************************************************************
3195
3196    Wan Li Chang Cheng (The Great Wall)
3197
3198    Other files in the zip:
3199
3200     5.942    16-6126.G16
3201    14.488    U3-9911.G22
3202    14.488    U4-82E6.G22
3203    14.488    U5-6C5E.G22
3204
3205***************************************************************************/
3206
3207ROM_START( wlcc )
3208   ROM_REGION( 0x80000, "maincpu", 0 )
3209   ROM_LOAD16_WORD_SWAP( "wlcc4096.rom", 0x00000, 0x80000, CRC(3b16729f) SHA1(4ef4e5cbd6ccc65775e36c2c8b459bc1767d6574) )
3210   ROM_CONTINUE        (                 0x00000, 0x80000 ) // 1ST+2ND IDENTICAL
3211
3212   ROM_REGION( 0x280000, "blitter", ROMREGION_ERASE00 )
3213   ROM_LOAD( "m0201-ig.160", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3214   ROM_LOAD( "wlcc.gfx",  0x200000, 0x080000, CRC(1f7ad299) SHA1(ab0a8fb31906519b9352ba172def48456e8d565c) )
3215
3216   ROM_REGION( 0x80000, "oki", 0 )
3217   ROM_LOAD( "040-c3c2.snd", 0x00000, 0x80000, CRC(220949aa) SHA1(1e0dba168a0687d32aaaed42714ae24358f4a3e7) ) // 2 banks
3218   ROM_CONTINUE(             0x00000, 0x80000 ) // 1ST+2ND IDENTICAL
3219ROM_END
3220
3221/***************************************************************************
3222
3223    Long Hu Bang (V035C)
3224
3225    Other files in the zip:
3226
3227     5.938    16V8.jed
3228    14.464    LHB-U33.jed
3229    14.488    LHB-U34.jed
3230    14.488    LHB-U35.jed
3231
3232***************************************************************************/
3233
3234ROM_START( lhb )
3235   ROM_REGION( 0x80000, "maincpu", 0 )
3236   // identical to LHB-4096
3237   ROM_LOAD16_WORD_SWAP( "v305j-409", 0x00000, 0x80000, CRC(701de8ef) SHA1(4a77160f642f4de02fa6fbacf595b75c0d4a505d) )
3238
3239   ROM_REGION( 0x200000, "blitter", 0 )
3240   ROM_LOAD( "m0201-ig.160", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3241
3242   ROM_REGION( 0x80000, "oki", 0 )
3243   // identical to 040-c3c2.snd
3244   ROM_LOAD( "m0202.snd", 0x00000, 0x80000, CRC(220949aa) SHA1(1e0dba168a0687d32aaaed42714ae24358f4a3e7) ) // 2 banks
3245   ROM_CONTINUE(          0x00000, 0x80000 ) // 1ST+2ND IDENTICAL
3246ROM_END
3247
3248/***************************************************************************
3249
3250Long Hu Bang (V033C)
3251
3252PCB Layout
3253----------
3254
3255IGS PCB NO-T0093
3256|---------------------------------------|
3257|uPD1242H     VOL       DSW5            |
3258|  IGS_M0202                            |
3259|             AR17961   DSW4            |
3260|                             CY7C185   |
3261|                       DSW3            |
3262|      8255             DSW2  CY7C185   |
3263|                       DSW1            |
3264|1                                      |
3265|8                           DIP32      |
3266|W             |-------|                |
3267|A             |       |     IGS_M0201  |
3268|Y  BATTERY    |IGS011 |                |
3269|              |       |          PAL   |
3270|              |-------|                |
3271|                         TC524256      |
3272|    MAJ_V-033C                         |
3273|                         TC524256      |
3274|1      6264                            |
3275|0                        TC524256      |
3276|W      6264    22.285MHz               |
3277|A         PAL            TC524256      |
3278|Y         PAL                          |
3279| SPDT_SW  PAL      68000               |
3280|---------------------------------------|
3281Notes:
3282      Uses common 10-way/18-way Mahjong pinout
3283      TC524256 - Toshiba TC524256BZ-80 256k x4 Dual Port VRAM (ZIP28)
3284      CY7C185  - Cypress CY7C185-20PC 8k x8 SRAM (DIP28)
3285      6264     - UT6264PC-70LL 8k x8 SRAM (DIP28)
3286      IGS011   - Custom IGS IC (QFP160)
3287      AR17961  - == OkiM6295 (QFP44)
3288      DIP32    - Empty socket, maybe a ROM missing, maybe not used?
3289
3290      ROMs -
3291            MAJ_V-033C - Main Program (27C4096)
3292            IGS_M0201  - Graphics (16M maskROM)
3293            IGS_M0202  - OKI samples (4M maskROM)
3294
3295***************************************************************************/
3296
3297ROM_START( lhba )
3298   ROM_REGION( 0x80000, "maincpu", 0 )
3299   ROM_LOAD16_WORD_SWAP( "maj_v-033c.u30", 0x00000, 0x80000, CRC(02a0b716) SHA1(cd0ee32ea69f66768196b0e9b4df0fae3af84ed3) )
3300
3301   ROM_REGION( 0x200000, "blitter", 0 )
3302   ROM_LOAD( "igs_m0201.u15", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3303
3304   ROM_REGION( 0x80000, "oki", 0 )
3305   // identical to 040-c3c2.snd
3306   ROM_LOAD( "igs_m0202.u39", 0x00000, 0x80000, CRC(106ac5f7) SHA1(5796a880c3424e3d2251b2223a0e594957afecaf) ) // 2 banks
3307
3308ROM_END
3309
3310/***************************************************************************
3311
3312Da Ban Cheng
3313
3314PCB Layout
3315----------
3316
3317IGS PCB NO-T0084-1
3318|---------------------------------------|
3319|uPD1242H     VOL       DSW5            |
3320|  IGS_M0202                            |
3321|             AR17961   DSW4            |
3322|                             CY7C185   |
3323|                       DSW3            |
3324|      8255             DSW2  CY7C185   |
3325|                       DSW1            |
3326|1                                      |
3327|8                           MAJ-H_CG   |
3328|W    PAL      |-------|                |
3329|A             |       |     IGS_M0201  |
3330|Y    PAL      |IGS011 |                |
3331|              |       |          PAL   |
3332|     PAL      |-------|                |
3333|                         TC524256      |
3334|     6264                              |
3335|                         TC524256      |
3336|1    6264                              |
3337|0           22.0994MHz   TC524256      |
3338|W    MAJ-H_V027H                       |
3339|A                        TC524256      |
3340|Y         BATTERY                      |
3341| SPDT_SW           68000               |
3342|---------------------------------------|
3343Notes:
3344      Uses common 10-way/18-way Mahjong pinout
3345      TC524256 - Toshiba TC524256BZ-80 256k x4 Dual Port VRAM (ZIP28)
3346      CY7C185  - Cypress CY7C185-20PC 8k x8 SRAM (DIP28)
3347      6264     - UT6264PC-70LL 8k x8 SRAM (DIP28)
3348      IGS011   - Custom IGS IC (QFP160)
3349      AR17961  - == OkiM6295 (QFP44)
3350
3351      ROMs -
3352            MAJ-H_V027H- Main Program (27C4096)
3353            IGS_M0201  - Graphics (16M maskROM)
3354            IGS_M0202  - OKI samples (4M maskROM)
3355            MAJ-H_CG   - Graphics (27c4001 EPROM)
3356
3357***************************************************************************/
3358
3359ROM_START( dbc )
3360   ROM_REGION( 0x80000, "maincpu", 0 )
3361   ROM_LOAD16_WORD_SWAP( "maj-h_v027h.u30", 0x00000, 0x80000, CRC(5d5ccd5b) SHA1(7a1223923f9a5825fd919ae9a36912284e705382) )
3362
3363   ROM_REGION( 0x280000, "blitter", 0 )
3364   ROM_LOAD( "igs_m0201.u15", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3365   ROM_LOAD( "maj-h_cg.u8",   0x200000, 0x080000, CRC(ee45cc46) SHA1(ed011f758a02026222994aaea0677a4e9580fbda) )   // 1xxxxxxxxxxxxxxxxxx = 0x00
3366
3367   ROM_REGION( 0x80000, "oki", 0 )
3368   ROM_LOAD( "igs_m0202.u39", 0x00000, 0x80000, CRC(106ac5f7) SHA1(5796a880c3424e3d2251b2223a0e594957afecaf) ) // 2 banks
3369ROM_END
3370
3371/***************************************************************************
3372
3373Mahjong Ryukobou
3374Alta, 1995
3375
3376PCB Layout
3377----------
3378
3379IGS PCB NO-T0094
3380|------------------------------------|
3381|UPC1242  VOL  LM7805  DSW5          |
3382|   MAJ-J_SP           DSW4          |
3383|  TD62003     M6295   DSW3 CY7C185  |
3384|        8255          DSW2 CY7C185  |
3385|M                     DSW1 MAJ-J_CG |
3386|A                                   |
3387|H              IGS011      IGS_M0201|
3388|J                               PAL |
3389|O                                   |
3390|N  MAJ_V030J     22MHz              |
3391|G    6264              TC524256     |
3392|     6264              TC524256     |
3393|     PAL               TC524256     |
3394|     PAL      68000P10 TC524256     |
3395|     PAL                            |
3396|------------------------------------|
3397Notes:
3398      68000 - clock 7.33333MHz [22/3]
3399      M6295 - clock 1.04762MHz [22/21]
3400      VSync - 60.0078Hz
3401      HSync - 15.620kHz
3402
3403***************************************************************************/
3404
3405ROM_START( ryukobou )
3406   ROM_REGION( 0x80000, "maincpu", 0 )
3407   ROM_LOAD16_WORD_SWAP( "maj_v030j.u30", 0x000000, 0x80000, CRC(186f2b4e) SHA1(380a3d94722d9f5fa5ec206ed0af6dbb8dd81715) )
3408
3409   ROM_REGION( 0x280000, "blitter", 0 )
3410   ROM_LOAD( "igs_m0201.u15", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3411   ROM_LOAD( "maj-j_cg.u8",   0x200000, 0x080000, CRC(3c8de5d1) SHA1(51e43bfe7b5157112ded9a34b7032f73b7ffad11) )
3412
3413   ROM_REGION( 0x80000, "oki", 0 )
3414   ROM_LOAD( "maj-j_sp.u39", 0x000000, 0x80000, CRC(82f670f3) SHA1(d10dd67e40aee0e1c4f4b2c1217ce0935cb86406) )
3415ROM_END
3416
3417/***************************************************************************
3418
3419Long Hu Bang II
3420IGS, 1996
3421
3422PCB Layout
3423----------
3424
3425IGS PCB NO-0115
3426|---------------------------------------------|
3427|                  M6295  IGSS0503.U38        |
3428|  UM3567  3.57945MHz                         |
3429|                          DSW3               |
3430|                          DSW2     PAL       |
3431| IGSM0502.U5              DSW1    6264       |
3432| IGSM0501.U7     PAL              6264       |
3433|                 PAL                         |
3434|                 PAL            IGS011       |
3435|                 PAL                         |
3436|                 PAL                         |
3437|                                             |
3438|   MC68HC000P10          22MHz  TC524258AZ-10|
3439|           6264         8255    TC524258AZ-10|
3440|    BATT   6264   MAJ2V185H.U29 TC524258AZ-10|
3441|                                TC524258AZ-10|
3442|---------------------------------------------|
3443
3444Notes:
3445        68k clock: 7.3333MHz (i.e. 22/3)
3446      M6295 clock: 1.0476MHz (i.e. 22/21) \
3447         M6295 SS: HIGH                   / Therefore sampling freq = 7.936363636kHz (i.e. 1047600 / 132)
3448           UM3567: Compatible with YM2413, clock = 3.57945MHz
3449            HSync: 15.78kHz
3450            VSync: 60Hz
3451
3452***************************************************************************/
3453
3454ROM_START( lhb2 )
3455   ROM_REGION( 0x80000, "maincpu", 0 )
3456   ROM_LOAD16_WORD_SWAP( "maj2v185h.u29", 0x00000, 0x80000, CRC(2572d59a) SHA1(1d5362e209dadf8b21c10d1351d4bb038bfcaaef) )
3457
3458   ROM_REGION( 0x200000, "blitter", 0 )
3459   ROM_LOAD( "igsm0501.u7", 0x00000, 0x200000, CRC(1c952bd6) SHA1(a6b6f1cdfb29647e81c032ffe59c94f1a10ceaf8) )
3460
3461   ROM_REGION( 0x80000, "blitter_hi", 0 ) // high order bit of graphics (5th bit)
3462   /* these are identical ..seems ok as igs number is same, only ic changed */
3463   ROM_LOAD( "igsm0502.u4", 0x00000, 0x80000, CRC(5d73ae99) SHA1(7283aa3d6b15ceb95db80756892be46eb997ef15) )
3464   ROM_LOAD( "igsm0502.u5", 0x00000, 0x80000, CRC(5d73ae99) SHA1(7283aa3d6b15ceb95db80756892be46eb997ef15) )
3465
3466   ROM_REGION( 0x80000, "oki", 0 )
3467   ROM_LOAD( "igss0503.u38", 0x00000, 0x80000, CRC(c9609c9c) SHA1(f036e682b792033409966e84292a69275eaa05e5) )   // 2 banks
3468ROM_END
3469
3470/***************************************************************************
3471
3472Mahjong Nenrikishu SP
3473IGS/Alta, 1998
3474
3475PCB Layout
3476----------
3477
3478IGS PCB NO-0115-5
3479|----------------------------------|
3480|UPC1242H VOL M6295     SP         |
3481|   U3567 LM7805                   |
3482|   CG   3.579545MHz   DSW3        |
3483|  M0502               DSW2   PAL  |
3484|M                     DSW1  6264  |
3485|A M0501                     6264  |
3486|H              PAL        IGS011  |
3487|J              PAL                |
3488|O              PAL                |
3489|N              PAL                |
3490|G                                 |
3491|                   22MHz M5M442256|
3492|     68000P16            M5M442256|
3493|RESET    6264     8255   M5M442256|
3494| BATT    6264  V250J     M5M442256|
3495|----------------------------------|
3496Notes:
3497      68000 - Clock 7.3333MHz [22/2]
3498      U3567 - YM2413, clock 3.579545MHz
3499      M6295 - Clock 1.0476 [22/21]. pin 7 high
3500      VSync - 60.0052Hz
3501      HSync - 15.620kHz
3502
3503***************************************************************************/
3504
3505ROM_START( nkishusp )
3506   ROM_REGION( 0x80000, "maincpu", 0 )
3507   ROM_LOAD16_WORD_SWAP( "v250j.u29", 0x00000, 0x80000, CRC(500cb919) SHA1(76eed80b59c43e8cc1e258056cfe08b33a651852) )
3508
3509   ROM_REGION( 0x200000, "blitter", 0 )
3510   ROM_LOAD( "m0501.u7", 0x00000, 0x200000, CRC(1c952bd6) SHA1(a6b6f1cdfb29647e81c032ffe59c94f1a10ceaf8) ) // Identical to igsm0501.u7
3511
3512   ROM_REGION( 0x80000, "blitter_hi", 0 ) // high order bit of graphics (5th bit)
3513   ROM_LOAD( "m0502.u6", 0x000000, 0x80000, CRC(5d73ae99) SHA1(7283aa3d6b15ceb95db80756892be46eb997ef15) ) // Identical to igsm0502.u4, igsm0502.u5
3514   ROM_LOAD( "cg.u4",    0x000000, 0x80000, CRC(fe60f485) SHA1(d75e5f7a187161137a7f7b54d495d1cb3e1802a4) )
3515
3516   ROM_REGION( 0x80000, "oki", 0 )
3517   ROM_LOAD( "sp.u38", 0x00000, 0x80000, CRC(d80e28e2) SHA1(c03441686e770227db6a2a41922fbb4284710571) )
3518ROM_END
3519
3520/***************************************************************************
3521
3522Virtua Bowling by IGS
3523
3524PCB # 0101
3525
3526U45  (27c240) is probably program
3527next to 68000 processor
3528U68,U69 probably images   (27c800 - mask)
3529U67, U66 sound and ????  (27c040)
3530
3531ASIC chip used
3532
3533SMD - custom chip IGS 011      F5XD  174
3534SMD - custom --near sound section - unknown -- i.d. rubbed off
3535SMD - custom  -- near inputs and 68000  IGS 012    9441EK001
3536
3537XTL near sound 33.868mhz
3538XTL near 68000  22.0000mhz
3539
3540there are 4 banks of 8 dip switches
3541
3542***************************************************************************/
3543
3544ROM_START( vbowl )
3545   ROM_REGION( 0x80000, "maincpu", 0 )
3546   ROM_LOAD16_WORD_SWAP( "bowlingv101xcm.u45", 0x00000, 0x80000, BAD_DUMP CRC(ab8e3f1f) SHA1(69159e22559d6a26fe2afafd770aa640c192ba4b) )
3547
3548   ROM_REGION( 0x400000 * 2, "blitter", 0)
3549   ROM_LOAD( "vrbowlng.u69", 0x000000, 0x400000, CRC(b0d339e8) SHA1(a26a5e0202a78e8cdc562b10d64e14eadfa4e115) )
3550   // extra space to expand every 4 bits to 8
3551
3552   ROM_REGION( 0x100000, "blitter_hi", ROMREGION_INVERT )
3553   ROM_LOAD( "vrbowlng.u68", 0x000000, 0x100000, CRC(b0ce27e7) SHA1(6d3ef97edd606f384b1e05b152fbea12714887b7) )
3554
3555   ROM_REGION( 0x400000, "ics", 0 )
3556   ROM_LOAD( "vrbowlng.u67", 0x00000, 0x80000, CRC(53000936) SHA1(e50c6216f559a9248c095bdfae05c3be4be79ff3) )   // 8 bit signed mono & u-law
3557   ROM_LOAD( "vrbowlng.u66", 0x80000, 0x80000, CRC(f62cf8ed) SHA1(c53e47e2c619ed974ad40ee4aaa4a35147ea8311) )   // 8 bit signed mono
3558   ROM_COPY( "ics", 0, 0x100000,0x100000)
3559   ROM_COPY( "ics", 0, 0x200000,0x100000)
3560   ROM_COPY( "ics", 0, 0x300000,0x100000)
3561ROM_END
3562
3563ROM_START( vbowlj )
3564   ROM_REGION( 0x80000, "maincpu", 0 )
3565   ROM_LOAD16_WORD_SWAP( "vrbowlng.u45", 0x00000, 0x80000, CRC(091c19c1) SHA1(5a7bfbee357122e9061b38dfe988c3853b0984b0) ) // second half all 00
3566
3567   ROM_REGION( 0x400000 * 2, "blitter", 0)
3568   ROM_LOAD( "vrbowlng.u69", 0x000000, 0x400000, CRC(b0d339e8) SHA1(a26a5e0202a78e8cdc562b10d64e14eadfa4e115) )
3569   // extra space to expand every 4 bits to 8
3570
3571   ROM_REGION( 0x100000, "blitter_hi", ROMREGION_INVERT )
3572   ROM_LOAD( "vrbowlng.u68", 0x000000, 0x100000, CRC(b0ce27e7) SHA1(6d3ef97edd606f384b1e05b152fbea12714887b7) )
3573
3574   ROM_REGION( 0x400000, "ics", 0 )
3575   ROM_LOAD( "vrbowlng.u67", 0x00000, 0x80000, CRC(53000936) SHA1(e50c6216f559a9248c095bdfae05c3be4be79ff3) )   // 8 bit signed mono & u-law
3576   ROM_LOAD( "vrbowlng.u66", 0x80000, 0x80000, CRC(f62cf8ed) SHA1(c53e47e2c619ed974ad40ee4aaa4a35147ea8311) )   // 8 bit signed mono
3577   ROM_COPY( "ics", 0, 0x100000,0x100000)
3578   ROM_COPY( "ics", 0, 0x200000,0x100000)
3579   ROM_COPY( "ics", 0, 0x300000,0x100000)
3580ROM_END
3581
3582/***************************************************************************
3583
3584    Xing Yen Man Guan
3585
3586    Other files in the zip:
3587
3588    14.484 U33-82E6.jed
3589    14.484 U34-1.jed
3590    14.484 U35-7068.jed
3591
3592***************************************************************************/
3593
3594ROM_START( xymg )
3595   ROM_REGION( 0x80000, "maincpu", 0 )
3596   ROM_LOAD16_WORD_SWAP( "u30-ebac.rom", 0x00000, 0x80000, CRC(7d272b6f) SHA1(15fd1be23cabdc77b747541f5cd9fed6b08be4ad) )
3597
3598   ROM_REGION( 0x280000, "blitter", 0 )
3599   ROM_LOAD( "m0201-ig.160", 0x000000, 0x200000, CRC(ec54452c) SHA1(0ee7ffa3d4845af083944e64faf5a1c78247aaa2) )
3600   ROM_LOAD( "ygxy-u8.rom",  0x200000, 0x080000, CRC(56a2706f) SHA1(98bf4b3153eef53dd449e2538b4b7ff2cc2fe6fa) )
3601
3602   ROM_REGION( 0x80000, "oki", 0 )
3603   // identical to 040-c3c2.snd
3604   ROM_LOAD( "m0202.snd", 0x00000, 0x80000, CRC(220949aa) SHA1(1e0dba168a0687d32aaaed42714ae24358f4a3e7) ) // 2 banks
3605   ROM_CONTINUE(          0x00000, 0x80000 ) // 1ST+2ND IDENTICAL
3606ROM_END
3607
3608
3609/***************************************************************************
3610
3611    Game Drivers
3612
3613***************************************************************************/
3614
3615GAME( 1995, lhb,          0,        lhb,      lhb,       lhb,          ROT0, "IGS",        "Long Hu Bang (China, V035C)",          0 )
3616GAME( 1995, lhba,         lhb,      lhb,      lhb,       lhba,         ROT0, "IGS",        "Long Hu Bang (China, V033C)",          0 )
3617GAME( 1995, dbc,          lhb,      lhb,      lhb,       dbc,          ROT0, "IGS",        "Da Ban Cheng (Hong Kong, V027H)",      0 )
3618GAME( 1995, ryukobou,     lhb,      lhb,      lhb,       ryukobou,     ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)",      0 )
3619GAME( 1996, lhb2,         0,        lhb2,     lhb2,      lhb2,         ROT0, "IGS",        "Long Hu Bang II (Hong Kong, V185H)",   0 )
3620GAME( 1996, xymg,         0,        xymg,     xymg,      xymg,         ROT0, "IGS",        "Xing Yun Man Guan (China, V651C)",     0 )
3621GAME( 1996, wlcc,         xymg,     wlcc,     wlcc,      wlcc,         ROT0, "IGS",        "Wan Li Chang Cheng (China, V638C)",    0 )
3622GAME( 1996, vbowl,        0,        vbowl,    vbowl,     vbowl,        ROT0, "IGS",        "Virtua Bowling (World, V101XCM)",      GAME_IMPERFECT_SOUND )
3623GAME( 1996, vbowlj,       vbowl,    vbowl,    vbowlj,    vbowlj,       ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)",      GAME_IMPERFECT_SOUND )
3624GAME( 1998, nkishusp,     0,        lhb2,     lhb2,      nkishusp,     ROT0, "IGS / Alta", "Mahjong Nenrikishu SP",                0 )
3625
3626GAME( 1997, drgnwrld,     0,        drgnwrld, drgnwrld,  drgnwrld,     ROT0, "IGS",        "Dragon World (World, V040O)",          0 )
3627GAME( 1995, drgnwrldv30,  drgnwrld, drgnwrld, drgnwrld,  drgnwrldv30,  ROT0, "IGS",        "Dragon World (World, V030O)",          0 )
3628GAME( 1995, drgnwrldv21,  drgnwrld, drgnwrld, drgnwrld,  drgnwrldv21,  ROT0, "IGS",        "Dragon World (World, V021O)",          0 )
3629GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld, drgnwrldj, drgnwrldv21j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)",        0 )
3630GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld, drgnwrldj, drgnwrldv20j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)",        0 )
3631GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, drgnwrldv10c, ROT0, "IGS",        "Zhong Guo Long (China, V010C)",        0 )
3632GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, drgnwrldv11h, ROT0, "IGS",        "Dong Fang Zhi Zhu (Hong Kong, V011H)", 0 )
src/mame/drivers/sf.c
r6428r6429
258258   AM_RANGE(0x0000, 0x7fff) AM_ROM
259259   AM_RANGE(0xc000, 0xc7ff) AM_RAM
260260   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
261   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
261   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
262262ADDRESS_MAP_END
263263
264264/* Yes, _no_ ram */
r6428r6429
835835   /* sound hardware */
836836   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
837837
838   MDRV_SOUND_ADD("ym", YM2151, 3579545)
838   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
839839   MDRV_SOUND_CONFIG(ym2151_config)
840840   MDRV_SOUND_ROUTE(0, "lspeaker", 0.60)
841841   MDRV_SOUND_ROUTE(1, "rspeaker", 0.60)
src/mame/drivers/cave.c
r6428r6429
987987   AM_RANGE(0x00, 0x00) AM_WRITE(hotdogst_rombank_w)               // ROM bank
988988   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                  // From Main CPU
989989   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                  //
990   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)      //
990   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)      //
991991   AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   // M6295
992992   AM_RANGE(0x70, 0x70) AM_WRITE(hotdogst_okibank_w)               // Samples bank
993993ADDRESS_MAP_END
r6428r6429
10181018   AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w)         // ROM bank
10191019   AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w)            // To Main CPU
10201020   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)            // From Main CPU
1021   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2203_w)         // YM2203
1022   AM_RANGE(0x52, 0x53) AM_DEVREAD("ym", ym2203_r)            // YM2203
1021   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym2203_w)         // YM2203
1022   AM_RANGE(0x52, 0x53) AM_DEVREAD("ymsnd", ym2203_r)            // YM2203
10231023   AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w)         // M6295
10241024   AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w)         // Samples bank
10251025ADDRESS_MAP_END
r6428r6429
10681068   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                  // Communication
10691069   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)               // From Main CPU
10701070   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)               //
1071   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
1071   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   // YM2151
10721072   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w)         // M6295 #0
10731073   AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w)            // Samples Bank #0
10741074   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w)         // M6295 #1
r6428r6429
11001100   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)   // M6295
11011101   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)   //
11021102   AM_RANGE(0x10, 0x17) AM_WRITE(NMK112_okibank_w)                     // Samples bank
1103   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)         //
1103   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)         //
11041104   AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w)                     // To Main CPU
11051105//  AM_RANGE(0x51, 0x51) AM_WRITE(SMH_NOP)                                  // ?? volume
11061106   AM_RANGE(0x80, 0x80) AM_WRITE(pwrinst2_rombank_w)                  // ROM bank
r6428r6429
11641164   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                        // Communication
11651165   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                     // From Main CPU
11661166   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                     //
1167   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         // YM2151
1167   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)         // YM2151
11681168   AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)   // M6295 #0
11691169   AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w)                  // Samples Bank #0
11701170   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)   // M6295 #1
r6428r6429
19731973   /* sound hardware */
19741974   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19751975
1976   MDRV_SOUND_ADD("ym", YM2203, XTAL_4MHz)
1976   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz)
19771977   MDRV_SOUND_CONFIG(ym2203_config)
19781978   MDRV_SOUND_ROUTE(0, "lspeaker",  0.20)
19791979   MDRV_SOUND_ROUTE(0, "rspeaker", 0.20)
r6428r6429
20682068   /* sound hardware */
20692069   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20702070
2071   MDRV_SOUND_ADD("ym", YM2203, XTAL_4MHz)
2071   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz)
20722072   MDRV_SOUND_CONFIG(ym2203_config)
20732073   MDRV_SOUND_ROUTE(0, "lspeaker",  0.20)
20742074   MDRV_SOUND_ROUTE(0, "rspeaker", 0.20)
r6428r6429
21242124   /* sound hardware */
21252125   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21262126
2127   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz / 4)
2127   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4)
21282128   MDRV_SOUND_CONFIG(ym2151_config)
21292129   MDRV_SOUND_ROUTE(0, "lspeaker", 1.20)
21302130   MDRV_SOUND_ROUTE(1, "rspeaker", 1.20)
r6428r6429
21792179   /* sound hardware */
21802180   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21812181
2182   MDRV_SOUND_ADD("ym", YM2203, XTAL_16MHz / 4)
2182   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4)
21832183   MDRV_SOUND_CONFIG(ym2203_config)
21842184   MDRV_SOUND_ROUTE(0, "lspeaker",  0.40)
21852185   MDRV_SOUND_ROUTE(0, "rspeaker", 0.40)
r6428r6429
22392239
22402240   /* sound hardware */
22412241   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
2242   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4)
2242   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)
22432243   MDRV_SOUND_CONFIG(ym2151_config)
22442244   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
22452245   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
src/mame/drivers/slotcarn.c
r6428r6429
174174   AM_RANGE(0x7000, 0xafff) AM_ROM // spielbud
175175
176176
177   AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("ay", ay8910_address_w)
178   AM_RANGE(0xb100, 0xb100) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
177   AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_address_w)
178   AM_RANGE(0xb100, 0xb100) AM_DEVREADWRITE("aysnd", ay8910_r, ay8910_data_w)
179179
180180   AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
181181   AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* Input Ports */
r6428r6429
196196
197197// spielbud - is the ay mirrored, or are there now 2?
198198static ADDRESS_MAP_START( spielbud_io_map, ADDRESS_SPACE_IO, 8 )
199   AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("ay", ay8910_address_w)
200   AM_RANGE(0xb100, 0xb100) AM_DEVWRITE("ay", ay8910_data_w)
199   AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_address_w)
200   AM_RANGE(0xb100, 0xb100) AM_DEVWRITE("aysnd", ay8910_data_w)
201201ADDRESS_MAP_END
202202
203203/********************************
r6428r6429
619619   /* sound hardware */
620620   MDRV_SPEAKER_STANDARD_MONO("mono")
621621
622   MDRV_SOUND_ADD("ay",AY8910, SND_CLOCK)
622   MDRV_SOUND_ADD("aysnd",AY8910, SND_CLOCK)
623623   MDRV_SOUND_CONFIG(scarn_ay8910_config)
624624   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
625625MACHINE_DRIVER_END
src/mame/drivers/battlane.c
r6428r6429
1212#include "driver.h"
1313#include "cpu/m6809/m6809.h"
1414#include "sound/3526intf.h"
15#include "battlane.h"
1516
16extern UINT8 *battlane_spriteram;
17extern UINT8 *battlane_tileram;
17/*************************************
18 *
19 *  Memory handlers
20 *
21 *************************************/
1822
19extern WRITE8_HANDLER( battlane_palette_w );
20extern WRITE8_HANDLER( battlane_scrollx_w );
21extern WRITE8_HANDLER( battlane_scrolly_w );
22extern WRITE8_HANDLER( battlane_tileram_w );
23extern WRITE8_HANDLER( battlane_spriteram_w );
24extern WRITE8_HANDLER( battlane_bitmap_w );
25extern WRITE8_HANDLER( battlane_video_ctrl_w );
26
27extern VIDEO_START( battlane );
28extern VIDEO_UPDATE( battlane );
29
30
31/* CPU interrupt control register */
32int battlane_cpu_control;
33
3423static WRITE8_HANDLER( battlane_cpu_command_w )
3524{
36   battlane_cpu_control = data;
25   battlane_state *state = (battlane_state *)space->machine->driver_data;
3726
27   state->cpu_control = data;
28
3829   /*
39    CPU control register
30      CPU control register
4031
4132        0x80    = Video Flip
4233        0x08    = NMI
r6428r6429
5647    */
5748
5849    /*
59    if (~battlane_cpu_control & 0x08)
50    if (~state->cpu_control & 0x08)
6051    {
6152        cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
6253        cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
r6428r6429
8879   cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE);
8980}
9081
82static INTERRUPT_GEN( battlane_cpu1_interrupt )
83{
84   battlane_state *state = (battlane_state *)device->machine->driver_data;
85
86   /* See note in battlane_cpu_command_w */
87   if (~state->cpu_control & 0x08)
88   {
89      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
90      cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
91   }
92}
93
94
95/*************************************
96 *
97 *  Address maps
98 *
99 *************************************/
100
91101static ADDRESS_MAP_START( battlane_map, ADDRESS_SPACE_PROGRAM, 8 )
92102   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
93   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(battlane_tileram_w) AM_SHARE(2) AM_BASE(&battlane_tileram)
94   AM_RANGE(0x1800, 0x18ff) AM_RAM_WRITE(battlane_spriteram_w) AM_SHARE(3) AM_BASE(&battlane_spriteram)
103   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(battlane_tileram_w) AM_SHARE(2) AM_BASE_MEMBER(battlane_state, tileram)
104   AM_RANGE(0x1800, 0x18ff) AM_RAM_WRITE(battlane_spriteram_w) AM_SHARE(3) AM_BASE_MEMBER(battlane_state, spriteram)
95105   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("P1") AM_WRITE(battlane_video_ctrl_w)
96106   AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P2") AM_WRITE(battlane_scrollx_w)
97107   AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("DSW1") AM_WRITE(battlane_scrolly_w)
98108   AM_RANGE(0x1c03, 0x1c03) AM_READ_PORT("DSW2") AM_WRITE(battlane_cpu_command_w)
99   AM_RANGE(0x1c04, 0x1c05) AM_DEVREADWRITE("ym", ym3526_r, ym3526_w)
109   AM_RANGE(0x1c04, 0x1c05) AM_DEVREADWRITE("ymsnd", ym3526_r, ym3526_w)
100110   AM_RANGE(0x1e00, 0x1e3f) AM_WRITE(battlane_palette_w)
101111   AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(battlane_bitmap_w) AM_SHARE(4)
102112   AM_RANGE(0x4000, 0xffff) AM_ROM
103113ADDRESS_MAP_END
104114
105static INTERRUPT_GEN( battlane_cpu1_interrupt )
106{
107   /* See note in battlane_cpu_command_w */
108115
109   if (~battlane_cpu_control & 0x08)
110   {
111      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
112      cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
113   }
114}
116/*************************************
117 *
118 *  Input ports
119 *
120 *************************************/
115121
116
117122static INPUT_PORTS_START( battlane )
118123   PORT_START("P1")
119124   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
r6428r6429
176181INPUT_PORTS_END
177182
178183
184/*************************************
185 *
186 *  Graphics definitions
187 *
188 *************************************/
189
179190static const gfx_layout spritelayout =
180191{
181192   16, 16,
r6428r6429
239250GFXDECODE_END
240251
241252
242static void irqhandler(const device_config *device, int irq)
253/*************************************
254 *
255 *  Sound interface
256 *
257 *************************************/
258
259static void irqhandler( const device_config *device, int irq )
243260{
244261   cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
245262}
r6428r6429
250267};
251268
252269
270/*************************************
271 *
272 *  Machine driver
273 *
274 *************************************/
275
276static MACHINE_RESET( battlane )
277{
278   battlane_state *state = (battlane_state *)machine->driver_data;
279
280   state->video_ctrl = 0;
281   state->cpu_control = 0;
282}
283
253284static MACHINE_DRIVER_START( battlane )
254285
286   /* driver data */
287   MDRV_DRIVER_DATA(battlane_state)
288
255289   /* basic machine hardware */
256290   MDRV_CPU_ADD("maincpu", M6809, 1250000)        /* 1.25 MHz ? */
257291   MDRV_CPU_PROGRAM_MAP(battlane_map)
r6428r6429
262296
263297   MDRV_QUANTUM_TIME(HZ(6000))
264298
299   MDRV_MACHINE_RESET(battlane)
300
265301   /* video hardware */
266302   MDRV_SCREEN_ADD("screen", RASTER)
267303   MDRV_SCREEN_REFRESH_RATE(60)
r6428r6429
278314   /* sound hardware */
279315   MDRV_SPEAKER_STANDARD_MONO("mono")
280316
281   MDRV_SOUND_ADD("ym", YM3526, 3000000)
317   MDRV_SOUND_ADD("ymsnd", YM3526, 3000000)
282318   MDRV_SOUND_CONFIG(ym3526_config)
283319   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
284320MACHINE_DRIVER_END
285321
286322
287/***************************************************************************
323/*************************************
324 *
325 *  ROM definition(s)
326 *
327 *************************************/
288328
289  Game driver(s)
290
291***************************************************************************/
292
293329ROM_START( battlane )
294330   ROM_REGION( 0x8000, "user1", 0 )     /*  */
295331   ROM_LOAD( "da00-5",     0x0000, 0x8000, CRC(85b4ed73) SHA1(b8e61eedf8fb75bb07f1df91a7465cee2b6ff372) )
r6428r6429
375411ROM_END
376412
377413
378GAME( 1986, battlane,  0,        battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", 0 )
379GAME( 1986, battlane2, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", 0 )
380GAME( 1986, battlane3, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", 0 )
414/*************************************
415 *
416 *  Game driver(s)
417 *
418 *************************************/
419
420GAME( 1986, battlane,  0,        battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", GAME_SUPPORTS_SAVE )
421GAME( 1986, battlane2, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", GAME_SUPPORTS_SAVE )
422GAME( 1986, battlane3, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", GAME_SUPPORTS_SAVE )
src/mame/drivers/bigfghtr.c
r6428r6429
365365
366366static ADDRESS_MAP_START( soundport, ADDRESS_SPACE_IO, 8 )
367367   ADDRESS_MAP_GLOBAL_MASK(0xff)
368   AM_RANGE(0x0, 0x1) AM_DEVWRITE("ym", ym3812_w)
368   AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_w)
369369   AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w)
370370   AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_signed_w)
371371   AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r)
r6428r6429
448448   /* sound hardware */
449449   MDRV_SPEAKER_STANDARD_MONO("mono")
450450
451   MDRV_SOUND_ADD("ym", YM3812, 4000000)
451   MDRV_SOUND_ADD("ymsnd", YM3812, 4000000)
452452   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
453453
454454   MDRV_SOUND_ADD("dac1", DAC, 0)
src/mame/drivers/crimfght.c
r6428r6429
7373static ADDRESS_MAP_START( crimfght_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
7474   AM_RANGE(0x0000, 0x7fff) AM_ROM                                    /* ROM 821l01.h4 */
7575   AM_RANGE(0x8000, 0x87ff) AM_RAM                                    /* RAM */
76   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         /* YM2151 */
76   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)         /* YM2151 */
7777   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)                        /* soundlatch_r */
7878   AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)   /* 007232 registers */
7979ADDRESS_MAP_END
r6428r6429
242242   /* sound hardware */
243243   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
244244
245   MDRV_SOUND_ADD("ym", YM2151, 3579545)   /* verified with PCB */
245   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)   /* verified with PCB */
246246   MDRV_SOUND_CONFIG(ym2151_config)
247247   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
248248   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
src/mame/drivers/asuka.c
r6428r6429
276276   }
277277   else
278278   {
279      adpcm_data = memory_region(device->machine, "ym")[adpcm_pos];
279      adpcm_data = memory_region(device->machine, "ymsnd")[adpcm_pos];
280280      adpcm_pos = (adpcm_pos + 1) & 0xffff;
281281      msm5205_data_w(device, adpcm_data >> 4);
282282   }
r6428r6429
391391   AM_RANGE(0x0000, 0x3fff) AM_ROM
392392   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
393393   AM_RANGE(0xc000, 0xdfff) AM_RAM
394   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
394   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
395395   AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w)
396396   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
397397   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r6428r6429
405405   AM_RANGE(0x0000, 0x3fff) AM_ROM
406406   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
407407   AM_RANGE(0x8000, 0x8fff) AM_RAM
408   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
408   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
409409//  AM_RANGE(0x9002, 0x9100) AM_READNOP
410410   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
411411   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
r6428r6429
419419   AM_RANGE(0x0000, 0x3fff) AM_ROM
420420   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
421421   AM_RANGE(0x8000, 0x8fff) AM_RAM
422   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
422   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
423423   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
424424   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
425425ADDRESS_MAP_END
r6428r6429
820820   /* sound hardware */
821821   MDRV_SPEAKER_STANDARD_MONO("mono")
822822
823   MDRV_SOUND_ADD("ym", YM2610, 8000000)
823   MDRV_SOUND_ADD("ymsnd", YM2610, 8000000)
824824   MDRV_SOUND_CONFIG(ym2610_config)
825825   MDRV_SOUND_ROUTE(0, "mono", 0.25)
826826   MDRV_SOUND_ROUTE(1, "mono", 1.0)
r6428r6429
859859   /* sound hardware */
860860   MDRV_SPEAKER_STANDARD_MONO("mono")
861861
862   MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */
862   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */
863863   MDRV_SOUND_CONFIG(ym2151_config)
864864   MDRV_SOUND_ROUTE(0, "mono", 0.50)
865865   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
901901   /* sound hardware */
902902   MDRV_SPEAKER_STANDARD_MONO("mono")
903903
904   MDRV_SOUND_ADD("ym", YM2151, XTAL_8MHz/2)   /* verified on pcb */
904   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_8MHz/2)   /* verified on pcb */
905905   MDRV_SOUND_CONFIG(ym2151_config)
906906   MDRV_SOUND_ROUTE(0, "mono", 0.50)
907907   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
939939   /* sound hardware */
940940   MDRV_SPEAKER_STANDARD_MONO("mono")
941941
942   MDRV_SOUND_ADD("ym", YM2151, 4000000)
942   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
943943   MDRV_SOUND_CONFIG(ym2151_config)
944944   MDRV_SOUND_ROUTE(0, "mono", 0.50)
945945   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
981981   /* sound hardware */
982982   MDRV_SPEAKER_STANDARD_MONO("mono")
983983
984   MDRV_SOUND_ADD("ym", YM2151, 4000000)
984   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
985985   MDRV_SOUND_CONFIG(ym2151_config)
986986   MDRV_SOUND_ROUTE(0, "mono", 0.50)
987987   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
10191019   /* sound hardware */
10201020   MDRV_SPEAKER_STANDARD_MONO("mono")
10211021
1022   MDRV_SOUND_ADD("ym", YM2151, 4000000)
1022   MDRV_SOUND_ADD("ymsnd", YM2151, 4000000)
10231023   MDRV_SOUND_CONFIG(ym2151_config)
10241024   MDRV_SOUND_ROUTE(0, "mono", 0.50)
10251025   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
10511051
10521052   /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */
10531053
1054   ROM_REGION( 0x80000, "ym", 0 )     /* ADPCM samples */
1054   ROM_REGION( 0x80000, "ymsnd", 0 )     /* ADPCM samples */
10551055   ROM_LOAD( "b41-04.48",  0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
10561056ROM_END
10571057
r6428r6429
10761076
10771077   /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */
10781078
1079   ROM_REGION( 0x80000, "ym", 0 )     /* ADPCM samples */
1079   ROM_REGION( 0x80000, "ymsnd", 0 )     /* ADPCM samples */
10801080   ROM_LOAD( "b41-04.48",  0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
10811081ROM_END
10821082
r6428r6429
11011101
11021102   /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */
11031103
1104   ROM_REGION( 0x80000, "ym", 0 )     /* ADPCM samples */
1104   ROM_REGION( 0x80000, "ymsnd", 0 )     /* ADPCM samples */
11051105   ROM_LOAD( "b41-04.48",  0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
11061106ROM_END
11071107
r6428r6429
11261126
11271127   /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */
11281128
1129   ROM_REGION( 0x80000, "ym", 0 )     /* ADPCM samples */
1129   ROM_REGION( 0x80000, "ymsnd", 0 )     /* ADPCM samples */
11301130   ROM_LOAD( "b41-04.48",  0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
11311131ROM_END
11321132
r6428r6429
11491149   ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
11501150   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
11511151
1152   ROM_REGION( 0x10000, "ym", 0 )   /* ADPCM samples */
1152   ROM_REGION( 0x10000, "ymsnd", 0 )   /* ADPCM samples */
11531153   ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
11541154ROM_END
11551155
r6428r6429
11721172   ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
11731173   ROM_CONTINUE(             0x10000, 0x0c000 )   /* banked stuff */
11741174
1175   ROM_REGION( 0x10000, "ym", 0 )   /* ADPCM samples */
1175   ROM_REGION( 0x10000, "ymsnd", 0 )   /* ADPCM samples */
11761176   ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
11771177ROM_END
11781178
r6428r6429
11951195   ROM_LOAD( "c17-07.bin", 0x00000, 0x04000, CRC(cdb7bc2c) SHA1(5113055c954a39918436db75cc06b53c29c60728) )
11961196   ROM_CONTINUE(           0x10000, 0x0c000 )   /* banked stuff */
11971197
1198   ROM_REGION( 0x10000, "ym", 0 )   /* ADPCM samples */
1198   ROM_REGION( 0x10000, "ymsnd", 0 )   /* ADPCM samples */
11991199   ROM_LOAD( "c17-06.bin", 0x00000, 0x10000, CRC(5c332125) SHA1(408f42df18b38347c8a4e177a9484162a66877e1) )
12001200ROM_END
12011201
src/mame/drivers/rollerg.c
r6428r6429
106106   AM_RANGE(0x0000, 0x7fff) AM_ROM
107107   AM_RANGE(0x8000, 0x87ff) AM_RAM
108108   AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("konami", k053260_r,k053260_w)
109   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
109   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)
110110   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
111111ADDRESS_MAP_END
112112
r6428r6429
247247   /* sound hardware */
248248   MDRV_SPEAKER_STANDARD_MONO("mono")
249249
250   MDRV_SOUND_ADD("ym", YM3812, 3579545)
250   MDRV_SOUND_ADD("ymsnd", YM3812, 3579545)
251251   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
252252
253253   MDRV_SOUND_ADD("konami", K053260, 3579545)
src/mame/drivers/hvyunit.c
r6428r6429
428428static ADDRESS_MAP_START(sound_io, ADDRESS_SPACE_IO, 8 )
429429   ADDRESS_MAP_GLOBAL_MASK(0xff)
430430   AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
431   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
431   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
432432   AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r)
433433ADDRESS_MAP_END
434434
r6428r6429
668668   /* sound hardware */
669669   MDRV_SPEAKER_STANDARD_MONO("mono")
670670
671   MDRV_SOUND_ADD("ym", YM2203, 3000000)
671   MDRV_SOUND_ADD("ymsnd", YM2203, 3000000)
672672   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
673673MACHINE_DRIVER_END
674674
src/mame/drivers/royalmah.c
r6428r6429
55
66driver by Zsolt Vasvari, Nicola Salmoria, Luca Elia
77
8CPU:    Z80 / TLCS-90
8CPU:    Z80 or TLCS-90
99Video:  Framebuffer
1010Sound:  AY-3-8910
1111OSC:    18.432MHz and 8MHz
r6428r6429
441441
442442static ADDRESS_MAP_START( royalmah_iomap, ADDRESS_SPACE_IO, 8 )
443443   ADDRESS_MAP_GLOBAL_MASK(0xff)
444   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
445   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
444   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
445   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
446446   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
447447   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
448448ADDRESS_MAP_END
449449
450450static ADDRESS_MAP_START( ippatsu_iomap, ADDRESS_SPACE_IO, 8 )
451451   ADDRESS_MAP_GLOBAL_MASK(0xff)
452   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
453   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
452   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
453   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
454454   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
455455   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
456456   AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2")
r6428r6429
459459
460460static ADDRESS_MAP_START( suzume_iomap, ADDRESS_SPACE_IO, 8 )
461461   ADDRESS_MAP_GLOBAL_MASK(0xff)
462   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
463   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
462   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
463   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
464464   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
465465   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
466466   AM_RANGE( 0x80, 0x80 ) AM_READ( suzume_dsw_r )
r6428r6429
469469
470470static ADDRESS_MAP_START( dondenmj_iomap, ADDRESS_SPACE_IO, 8 )
471471   ADDRESS_MAP_GLOBAL_MASK(0xff)
472   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
473   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w)
472   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
473   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w)
474474   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
475475   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
476476   AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW2")   // DSW2
r6428r6429
480480
481481static ADDRESS_MAP_START( makaijan_iomap, ADDRESS_SPACE_IO, 8 )
482482   ADDRESS_MAP_GLOBAL_MASK(0xff)
483   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
484   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w)
483   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
484   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w)
485485   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
486486   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
487487   AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("DSW2")   // DSW2
r6428r6429
491491
492492static ADDRESS_MAP_START( daisyari_iomap, ADDRESS_SPACE_IO, 8 )
493493   ADDRESS_MAP_GLOBAL_MASK(0xff)
494   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
495   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w)
494   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
495   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w)
496496   AM_RANGE( 0x10, 0x10 ) AM_WRITE( royalmah_palbank_w )
497497   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
498498   AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE( daisyari_dsw_r, daisyari_bank_w )
r6428r6429
501501static ADDRESS_MAP_START( mjclub_iomap, ADDRESS_SPACE_IO, 8 )
502502   ADDRESS_MAP_GLOBAL_MASK(0xff)
503503   AM_RANGE( 0x00, 0x00 ) AM_READWRITE( mjclub_dsw_r, mjclub_bank_w )
504   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
505   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w)
504   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
505   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w)
506506   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
507507   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
508508ADDRESS_MAP_END
509509
510510static ADDRESS_MAP_START( mjdiplob_iomap, ADDRESS_SPACE_IO, 8 )
511511   ADDRESS_MAP_GLOBAL_MASK(0xff)
512   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
513   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
512   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
513   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
514514   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
515515   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
516516   AM_RANGE( 0x61, 0x61 ) AM_WRITE(tontonb_bank_w)
r6428r6429
520520
521521static ADDRESS_MAP_START( tontonb_iomap, ADDRESS_SPACE_IO, 8 )
522522   ADDRESS_MAP_GLOBAL_MASK(0xff)
523   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
524   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
523   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
524   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
525525   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
526526   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
527527   AM_RANGE( 0x44, 0x44 ) AM_WRITE( tontonb_bank_w )
r6428r6429
531531
532532static ADDRESS_MAP_START( majs101b_iomap, ADDRESS_SPACE_IO, 8 )
533533   ADDRESS_MAP_GLOBAL_MASK(0xff)
534   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
535   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
534   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
535   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
536536   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w )
537537   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
538538   AM_RANGE( 0x00, 0x00 ) AM_READWRITE( majs101b_dsw_r, dynax_bank_w )
r6428r6429
540540
541541static ADDRESS_MAP_START( mjderngr_iomap, ADDRESS_SPACE_IO, 8 )
542542   ADDRESS_MAP_GLOBAL_MASK(0xff)
543   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
544   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
543   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
544   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
545545//  AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1")
546546   AM_RANGE( 0x10, 0x10 ) AM_WRITE( mjderngr_coin_w )   // palette bank is set separately
547547   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
r6428r6429
554554static ADDRESS_MAP_START( mjapinky_iomap, ADDRESS_SPACE_IO, 8 )
555555   ADDRESS_MAP_GLOBAL_MASK(0xff)
556556   AM_RANGE( 0x00, 0x00 ) AM_WRITE( mjapinky_bank_w )
557   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "ay", ay8910_r )
558   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
557   AM_RANGE( 0x01, 0x01 ) AM_DEVREAD( "aysnd", ay8910_r )
558   AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
559559   AM_RANGE( 0x04, 0x04 ) AM_READ_PORT("DSW2")
560560   AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( mjapinky_palbank_w )
561561   AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
r6428r6429
767767   AM_RANGE( 0x20, 0x20 ) AM_READWRITE( janptr96_unknown_r, janptr96_rambank_w )
768768   AM_RANGE( 0x50, 0x50 ) AM_WRITE( mjderngr_palbank_w )
769769   AM_RANGE( 0x60, 0x6f ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)
770   AM_RANGE( 0x81, 0x81 ) AM_DEVREAD( "ay", ay8910_r )
771   AM_RANGE( 0x82, 0x83 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
770   AM_RANGE( 0x81, 0x81 ) AM_DEVREAD( "aysnd", ay8910_r )
771   AM_RANGE( 0x82, 0x83 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
772772   AM_RANGE( 0x93, 0x93 ) AM_WRITE( input_port_select_w )
773773   AM_RANGE( 0xd8, 0xd8 ) AM_WRITE( janptr96_coin_counter_w )
774774   AM_RANGE( 0xd9, 0xd9 ) AM_READ_PORT("SYSTEM")
r6428r6429
798798   {
799799      case 0x8000:   return input_port_read(space->machine, "DSW4");      // dsw 4
800800      case 0x8200:   return input_port_read(space->machine, "DSW3");      // dsw 3
801      case 0x9001:   return ay8910_r(devtag_get_device(space->machine,"ay"), 0);   // inputs
801      case 0x9001:   return ay8910_r(devtag_get_device(space->machine,"aysnd"), 0);   // inputs
802802      case 0x9011:   return input_port_read(space->machine, "SYSTEM");
803803   }
804804
r6428r6429
819819   switch(offset)
820820   {
821821      case 0x8e00:   palette_base = data & 0x1f;   return;
822      case 0x9002:   ay8910_data_w(devtag_get_device(space->machine,"ay"),0,data);         return;
823      case 0x9003:   ay8910_address_w(devtag_get_device(space->machine,"ay"),0,data);      return;
822      case 0x9002:   ay8910_data_w(devtag_get_device(space->machine,"aysnd"),0,data);         return;
823      case 0x9003:   ay8910_address_w(devtag_get_device(space->machine,"aysnd"),0,data);      return;
824824      case 0x9010:
825825         mjifb_coin_counter_w(space,0,data);
826826         return;
r6428r6429
905905   {
906906      case 0x8000:   return input_port_read(space->machine, "DSW2");      // dsw 2
907907      case 0x8001:   return input_port_read(space->machine, "DSW1");      // dsw 1
908      case 0x9001:   return ay8910_r(devtag_get_device(space->machine,"ay"), 0);   // inputs
908      case 0x9001:   return ay8910_r(devtag_get_device(space->machine,"aysnd"), 0);   // inputs
909909      case 0x9011:   return input_port_read(space->machine, "SYSTEM");
910910   }
911911
r6428r6429
925925   switch(offset)
926926   {
927927      case 0x8802:   palette_base = data & 0x1f;               return;
928      case 0x9002:   ay8910_data_w(devtag_get_device(space->machine,"ay"),0,data);      return;
929      case 0x9003:   ay8910_address_w(devtag_get_device(space->machine,"ay"),0,data);   return;
928      case 0x9002:   ay8910_data_w(devtag_get_device(space->machine,"aysnd"),0,data);      return;
929      case 0x9003:   ay8910_address_w(devtag_get_device(space->machine,"aysnd"),0,data);   return;
930930      case 0x9010:   mjifb_coin_counter_w(space,0,data);      return;
931931      case 0x9011:   input_port_select_w(space,0,data);      return;
932932      case 0x9013:
r6428r6429
972972static ADDRESS_MAP_START( mjtensin_map, ADDRESS_SPACE_PROGRAM, 8 )
973973   AM_RANGE( 0x0000, 0x5fff ) AM_ROM
974974   AM_RANGE( 0x6000, 0x6fbf ) AM_RAM
975   AM_RANGE( 0x6fc1, 0x6fc1 ) AM_DEVREAD( "ay", ay8910_r )
976   AM_RANGE( 0x6fc2, 0x6fc3 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
975   AM_RANGE( 0x6fc1, 0x6fc1 ) AM_DEVREAD( "aysnd", ay8910_r )
976   AM_RANGE( 0x6fc2, 0x6fc3 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
977977   AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE( janptr96_coin_counter_w )
978978   AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
979979   AM_RANGE( 0x6fe0, 0x6fef ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)
r6428r6429
10401040static ADDRESS_MAP_START( cafetime_map, ADDRESS_SPACE_PROGRAM, 8 )
10411041   AM_RANGE( 0x0000, 0x5fff ) AM_ROM
10421042   AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
1043   AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD( "ay", ay8910_r )
1044   AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
1043   AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD( "aysnd", ay8910_r )
1044   AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
10451045   AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE( janptr96_coin_counter_w )
10461046   AM_RANGE( 0x7fd1, 0x7fd1 ) AM_READ_PORT("SYSTEM") AM_WRITENOP
10471047   AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE( input_port_select_w )
r6428r6429
11751175   AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
11761176   AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE(&videoram)
11771177
1178   AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD( "ay", ay8910_r )
1179   AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE( "ay", ay8910_data_address_w )
1178   AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD( "aysnd", ay8910_r )
1179   AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w )
11801180   AM_RANGE( 0x10010, 0x10010 ) AM_WRITE( mjvegasa_coin_counter_w )
11811181   AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w )
11821182   AM_RANGE( 0x10013, 0x10013 ) AM_WRITE( input_port_select_w )
r6428r6429
12051205   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
12061206   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
12071207   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
1208   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_7)
1208   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_O)
12091209   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Credit Clear") PORT_CODE(KEYCODE_8)
12101210
12111211   PORT_START("KEY1")   /* P1 IN1 */
r6428r6429
12471247   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
12481248   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
12491249   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
1250   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) PORT_CODE(KEYCODE_3)
1250   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
12511251   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
12521252   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
12531253
r6428r6429
12571257   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
12581258   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
12591259   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
1260   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) PORT_CODE(KEYCODE_4)
1260   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
12611261   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
12621262
12631263   PORT_START("KEY7")   /* P2 IN2 */
r6428r6429
12851285   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
12861286
12871287   PORT_START("SYSTEM")   /* IN10 */
1288   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 )   /* "Note" ("Paper Money") = 10 Credits */
1289   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE3 )   /* Memory Reset */
1290   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE2 )   /* Analizer (Statistics) */
1288   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )   /* "Note" ("Paper Money") = 10 Credits */
1289   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE2 )   /* Memory Reset */
1290   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 )   /* Analizer (Statistics) */
12911291   PORT_SERVICE( 0x08, IP_ACTIVE_HIGH )
12921292   PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
12931293INPUT_PORTS_END
r6428r6429
12971297   PORT_INCLUDE( mjctrl1 )
12981298
12991299   PORT_MODIFY("KEY0")
1300   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_7)
1300   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_O)
13011301   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
13021302INPUT_PORTS_END
13031303
r6428r6429
13061306
13071307   PORT_MODIFY("KEY5")
13081308   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )   // "COIN2"
1309   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )   // "COIN1", but not working
1309   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )   // "COIN1", but not working
13101310
13111311   PORT_START("DSW1")   /* DSW  (inport $10) */
13121312   PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" )
r6428r6429
22662266   PORT_DIPSETTING(    0x20, "2 3 6 8 12 15 30 50" )
22672267   PORT_DIPSETTING(    0x10, "1 2 3 5 10 25 50 100" )
22682268   PORT_DIPNAME( 0xc0, 0xc0, "Maximum Bet" )
2269   PORT_DIPSETTING(    0xc0, "1" )
2270   PORT_DIPSETTING(    0x80, "5" )
2271   PORT_DIPSETTING(    0x40, "10" )
22692272   PORT_DIPSETTING(    0x00, "20" )
2270   PORT_DIPSETTING(    0x40, "10" )
2271   PORT_DIPSETTING(    0x80, "5" )
2272   PORT_DIPSETTING(    0xc0, "1" )
22732273
22742274   PORT_START("DSWTOP")   /* IN15 */
22752275   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
r6428r6429
26782678
26792679   PORT_MODIFY("KEY5")
26802680   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )   // "COIN2"
2681   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )   // "COIN1", but not working
2681   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )   // "COIN1", but not working
26822682
26832683
26842684   PORT_START("DSW1") /* DSW  (inport $10) */
r6428r6429
29712971   PORT_DIPSETTING(    0x01, "53%" )
29722972   PORT_DIPSETTING(    0x00, "50%" )
29732973   PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
2974   PORT_DIPSETTING(    0x30, "32 24 16 12 8 4 2 1" )
2975   PORT_DIPSETTING(    0x00, "50 30 15 8 5 3 2 1" )
2976   PORT_DIPSETTING(    0x10, "100 50 25 10 5 3 2 1" )
2977   PORT_DIPSETTING(    0x20, "200 100 50 10 5 3 2 1" )
2974   PORT_DIPSETTING(    0x30, "1 2 4 8 12 16 24 32" )
2975   PORT_DIPSETTING(    0x00, "1 2 3 5 8 15 30 50" )
2976   PORT_DIPSETTING(    0x10, "1 2 3 5 10 25 50 100" )
2977   PORT_DIPSETTING(    0x20, "1 2 3 5 10 50 100 200" )
29782978   PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
29792979   PORT_DIPSETTING(    0xc0, "1" )
29802980   PORT_DIPSETTING(    0x80, "5" )
r6428r6429
29942994   PORT_DIPSETTING(    0x00, "5" )
29952995   PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
29962996   PORT_DIPSETTING(    0x70, "Cut" )
2997   PORT_DIPSETTING(    0x60, "300" )
2998   PORT_DIPSETTING(    0x50, "500" )
2999   PORT_DIPSETTING(    0x40, "700" )
3000   PORT_DIPSETTING(    0x30, "1000" )
3001   PORT_DIPSETTING(    0x20, "1000?" )
3002   PORT_DIPSETTING(    0x10, "1000?" )
3003   PORT_DIPSETTING(    0x00, "1000?" )
2997   PORT_DIPSETTING(    0x60, "100?" )
2998   PORT_DIPSETTING(    0x50, "300" )
2999   PORT_DIPSETTING(    0x40, "500" )
3000   PORT_DIPSETTING(    0x30, "700" )
3001   PORT_DIPSETTING(    0x20, "1000" )
3002//  PORT_DIPSETTING(    0x10, "1000" )
3003//  PORT_DIPSETTING(    0x00, "1000" )
30043004   PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
30053005   PORT_DIPSETTING(    0x00, "1" )
30063006   PORT_DIPSETTING(    0x80, "2" )
r6428r6429
30353035   PORT_DIPNAME( 0x01, 0x01, "Unknown 4-0" )
30363036   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
30373037   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3038   PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
3039   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
3040   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3038   PORT_DIPNAME( 0x02, 0x02, "Show Clock" )
3039   PORT_DIPSETTING(    0x02, DEF_STR( No ) )
3040   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
30413041   PORT_DIPNAME( 0x04, 0x00, "Girls" )
30423042   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
30433043   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r6428r6429
30713071   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
30723072   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
30733073   PORT_DIPNAME( 0x10, 0x10, "Flip-Flop Key" )
3074   PORT_DIPSETTING(    0x10, "Flip-Flop" )
3075   PORT_DIPSETTING(    0x00, "Start" )
3074   PORT_DIPSETTING(    0x00, "Flip-Flop" )
3075   PORT_DIPSETTING(    0x10, "Start" )
30763076   PORT_DIPNAME( 0x20, 0x20, "Don Den Times" )
3077   PORT_DIPSETTING(    0x20, "5" )
3078   PORT_DIPSETTING(    0x00, "8" )
3077   PORT_DIPSETTING(    0x00, "5" )
3078   PORT_DIPSETTING(    0x20, "8" )
30793079   PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
30803080   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
30813081   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r6428r6429
31183118   /* sound hardware */
31193119   MDRV_SPEAKER_STANDARD_MONO("mono")
31203120
3121   MDRV_SOUND_ADD("ay", AY8910, 18432000/12)
3121   MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12)
31223122   MDRV_SOUND_CONFIG(ay8910_config)
31233123   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
31243124MACHINE_DRIVER_END
src/mame/drivers/crospang.c
r6428r6429
113113
114114static ADDRESS_MAP_START( crospang_sound_io_map, ADDRESS_SPACE_IO, 8 )
115115   ADDRESS_MAP_GLOBAL_MASK(0xff)
116   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
116   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
117117   AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
118118   AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r)
119119ADDRESS_MAP_END
r6428r6429
328328   /* sound hardware */
329329   MDRV_SPEAKER_STANDARD_MONO("mono")
330330
331   MDRV_SOUND_ADD("ym", YM3812, 14318180/4)
331   MDRV_SOUND_ADD("ymsnd", YM3812, 14318180/4)
332332   MDRV_SOUND_CONFIG(ym3812_config)
333333   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
334334
r6428r6429
365365   /* sound hardware */
366366   MDRV_SPEAKER_STANDARD_MONO("mono")
367367
368   MDRV_SOUND_ADD("ym", YM3812, 14318180/4)
368   MDRV_SOUND_ADD("ymsnd", YM3812, 14318180/4)
369369   MDRV_SOUND_CONFIG(ym3812_config)
370370   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
371371
src/mame/drivers/darkmist.c
r6428r6429
273273   /* sound hardware */
274274   MDRV_SPEAKER_STANDARD_MONO("mono")
275275
276   MDRV_SOUND_ADD("ym", YM2151, 14318180/4)   /* 3.579545 MHz */
276   MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4)   /* 3.579545 MHz */
277277   MDRV_SOUND_CONFIG(t5182_ym2151_interface)
278278   MDRV_SOUND_ROUTE(0, "mono", 1.0)
279279   MDRV_SOUND_ROUTE(1, "mono", 1.0)
src/mame/drivers/ajax.c
r6428r6429
5555   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r, k007232_w)      /* 007232 registers (chip 2) */
5656   AM_RANGE(0xb80c, 0xb80c) AM_DEVWRITE("konami2", k007232_extvol_w)         /* extra volume, goes to the 007232 w/ A11 */
5757                                                /* selecting a different latch for the external port */
58   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)      /* YM2151 */
58   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)      /* YM2151 */
5959   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)            /* soundlatch_r */
6060ADDRESS_MAP_END
6161
r6428r6429
215215   /* sound hardware */
216216   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
217217
218   MDRV_SOUND_ADD("ym", YM2151, 3579545)
218   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
219219   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
220220   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
221221
src/mame/drivers/shisen.c
r6428r6429
7272
7373static ADDRESS_MAP_START( shisen_sound_io_map, ADDRESS_SPACE_IO, 8 )
7474   ADDRESS_MAP_GLOBAL_MASK(0xff)
75   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
75   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
7676   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r)
7777   AM_RANGE(0x80, 0x81) AM_WRITE(shisen_sample_addr_w)
7878   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w)
r6428r6429
248248   /* sound hardware */
249249   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
250250
251   MDRV_SOUND_ADD("ym", YM2151, 3579545)
251   MDRV_SOUND_ADD("ymsnd", YM2151, 3579545)
252252   MDRV_SOUND_CONFIG(ym2151_config)
253253   MDRV_SOUND_ROUTE(0, "lspeaker", 0.5)
254254   MDRV_SOUND_ROUTE(1, "rspeaker", 0.5)
src/mame/drivers/nmk16.c
r6428r6429
403403
404404static ADDRESS_MAP_START( tharrier_sound_io_map, ADDRESS_SPACE_IO, 8 )
405405   ADDRESS_MAP_GLOBAL_MASK(0xff)
406   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
406   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
407407ADDRESS_MAP_END
408408
409409//Read input port 1 030c8/  BAD
r6428r6429
10841084static ADDRESS_MAP_START( raphero_sound_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
10851085   AM_RANGE( 0x0000, 0x7fff ) AM_ROM
10861086   AM_RANGE( 0x8000, 0xbfff ) AM_READ( SMH_BANK(1) )
1087   AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w )
1087   AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w )
10881088   AM_RANGE( 0xc800, 0xc800 ) AM_DEVREADWRITE( "oki1", okim6295_r, okim6295_w )
10891089   AM_RANGE( 0xc808, 0xc808 ) AM_DEVREADWRITE( "oki2", okim6295_r, okim6295_w )
10901090   AM_RANGE( 0xc810, 0xc817 ) AM_WRITE( NMK112_okibank_w )
r6428r6429
11051105
11061106static ADDRESS_MAP_START( macross2_sound_io_map, ADDRESS_SPACE_IO, 8 )
11071107   ADDRESS_MAP_GLOBAL_MASK(0xff)
1108   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
1108   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
11091109   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
11101110   AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
11111111   AM_RANGE(0x90, 0x97) AM_WRITE(NMK112_okibank_w)
r6428r6429
35633563   /* sound hardware */
35643564   MDRV_SPEAKER_STANDARD_MONO("mono")
35653565
3566   MDRV_SOUND_ADD("ym", YM2203, 1500000)
3566   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
35673567   MDRV_SOUND_CONFIG(ym2203_config)
35683568   MDRV_SOUND_ROUTE(0, "mono", 0.50)
35693569   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
36093609   /* sound hardware */
36103610   MDRV_SPEAKER_STANDARD_MONO("mono")
36113611
3612   MDRV_SOUND_ADD("ym", YM2203, 1500000)
3612   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
36133613   MDRV_SOUND_CONFIG(ym2203_config)
36143614   MDRV_SOUND_ROUTE(0, "mono", 0.50)
36153615   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
36543654   /* sound hardware */
36553655   MDRV_SPEAKER_STANDARD_MONO("mono")
36563656
3657   MDRV_SOUND_ADD("ym", YM2203, 1500000)
3657   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
36583658   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
36593659   MDRV_SOUND_ROUTE(0, "mono", 0.50)
36603660   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
37333733   /* sound hardware */
37343734   MDRV_SPEAKER_STANDARD_MONO("mono")
37353735
3736   MDRV_SOUND_ADD("ym", YM2203, BIOSHIP_CRYSTAL2 / 8) /* 1.5 Mhz (verified) */
3736   MDRV_SOUND_ADD("ymsnd", YM2203, BIOSHIP_CRYSTAL2 / 8) /* 1.5 Mhz (verified) */
37373737   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
37383738   MDRV_SOUND_ROUTE(0, "mono", 0.50)
37393739   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
37773777   /* sound hardware */
37783778   MDRV_SPEAKER_STANDARD_MONO("mono")
37793779
3780   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */
3780   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
37813781   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
37823782   MDRV_SOUND_ROUTE(0, "mono", 0.50)
37833783   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
38573857   /* sound hardware */
38583858   MDRV_SPEAKER_STANDARD_MONO("mono")
38593859
3860   MDRV_SOUND_ADD("ym", YM2203, 1500000) /* (verified on pcb) */
3860   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) /* (verified on pcb) */
38613861   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
38623862   MDRV_SOUND_ROUTE(0, "mono", 0.50)
38633863   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
39363936   /* sound hardware */
39373937   MDRV_SPEAKER_STANDARD_MONO("mono")
39383938
3939   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */
3939   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
39403940   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
39413941   MDRV_SOUND_ROUTE(0, "mono", 0.50)
39423942   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
40164016   /* sound hardware */
40174017   MDRV_SPEAKER_STANDARD_MONO("mono")
40184018
4019   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4019   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
40204020   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
40214021   MDRV_SOUND_ROUTE(0, "mono", 0.50)
40224022   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
40614061   /* sound hardware */
40624062   MDRV_SPEAKER_STANDARD_MONO("mono")
40634063
4064   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4064   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
40654065   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
40664066   MDRV_SOUND_ROUTE(0, "mono", 0.50)
40674067   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
41054105   /* sound hardware */
41064106   MDRV_SPEAKER_STANDARD_MONO("mono")
41074107
4108   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4108   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
41094109   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
41104110   MDRV_SOUND_ROUTE(0, "mono", 0.50)
41114111   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
41494149   /* sound hardware */
41504150   MDRV_SPEAKER_STANDARD_MONO("mono")
41514151
4152   MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8 ) /* verified on pcb */
4152   MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8 ) /* verified on pcb */
41534153   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
41544154   MDRV_SOUND_ROUTE(0, "mono", 0.50)
41554155   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
41934193   /* sound hardware */
41944194   MDRV_SPEAKER_STANDARD_MONO("mono")
41954195
4196   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4196   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
41974197   MDRV_SOUND_CONFIG(ym2203_nmk004_interface)
41984198   MDRV_SOUND_ROUTE(0, "mono", 0.50)
41994199   MDRV_SOUND_ROUTE(1, "mono", 0.50)
r6428r6429
42414241   /* sound hardware */
42424242   MDRV_SPEAKER_STANDARD_MONO("mono")
42434243
4244   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4244   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
42454245   MDRV_SOUND_CONFIG(ym2203_config)
42464246   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
42474247
r6428r6429
42864286   /* sound hardware */
42874287   MDRV_SPEAKER_STANDARD_MONO("mono")
42884288
4289   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4289   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
42904290   MDRV_SOUND_CONFIG(ym2203_config)
42914291   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
42924292
r6428r6429
43304330   /* sound hardware */
43314331   MDRV_SPEAKER_STANDARD_MONO("mono")
43324332
4333   MDRV_SOUND_ADD("ym", YM2203, 1500000)
4333   MDRV_SOUND_ADD("ymsnd", YM2203, 1500000)
43344334   MDRV_SOUND_CONFIG(ym2203_config)
43354335   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
43364336
r6428r6429
47274727   AM_RANGE(0x0000, 0xefff) AM_ROM
47284728   AM_RANGE(0xf000, 0xf7ff) AM_RAM                           // RAM
47294729   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)               // From Main CPU
4730   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
4730   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)   // YM2151
47314731   AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)      // M6295
47324732ADDRESS_MAP_END
47334733
r6428r6429
48794879   /* sound hardware */
48804880   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
48814881
4882   MDRV_SOUND_ADD("ym", YM2151, XTAL_4MHz) /* verified on pcb */
4882   MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_4MHz) /* verified on pcb */
48834883   MDRV_SOUND_CONFIG(afega_ym2151_intf)
48844884   MDRV_SOUND_ROUTE(0, "lspeaker", 0.30)
48854885   MDRV_SOUND_ROUTE(1, "rspeaker", 0.30)
src/mame/drivers/m10.c
r6428r6429
128128
129129#define LOG(x) do { if (DEBUG) printf x; } while (0)
130130
131static WRITE8_DEVICE_HANDLER(ic8j1_output_changed)
131static WRITE8_DEVICE_HANDLER( ic8j1_output_changed )
132132{
133133   LOG(("ic8j1: %d %d\n", data, video_screen_get_vpos(device->machine->primary_screen)));
134134   cputag_set_input_line(device->machine, "maincpu", 0, !data ? CLEAR_LINE : ASSERT_LINE);
135135}
136136
137static WRITE8_DEVICE_HANDLER(ic8j2_output_changed)
137static WRITE8_DEVICE_HANDLER( ic8j2_output_changed )
138138{
139   m10_state *state = (m10_state *)device->machine->driver_data;
140
139141   /* written from /Q to A with slight delight */
140142   LOG(("ic8j2: %d\n", data));
141143   ttl74123_a_w(device, 0, data);
142   ttl74123_a_w(devtag_get_device(device->machine, "ic8j1"), 0, data);
144   ttl74123_a_w(state->ic8j1, 0, data);
143145}
144146
145147static const ttl74123_config ic8j1_intf =
146148{
147149   /* completely illegible */
148150   TTL74123_NOT_GROUNDED_DIODE,   /* the hook up type */
149   RES_K(1),         /* resistor connected to RCext */
150   CAP_U(1),      /* capacitor connected to Cext and RCext */
151   RES_K(1),            /* resistor connected to RCext */
152   CAP_U(1),            /* capacitor connected to Cext and RCext */
151153   1,               /* A pin - driven by the CRTC */
152154   1,               /* B pin - pulled high */
153155   1,               /* Clear pin - pulled high */
r6428r6429
158160{
159161   TTL74123_NOT_GROUNDED_DIODE,   /* the hook up type */
160162   /* 10k + 20k variable resistor */
161   RES_K(22),         /* resistor connected to RCext */
162   CAP_U(2.2),      /* capacitor connected to Cext and RCext */
163   RES_K(22),            /* resistor connected to RCext */
164   CAP_U(2.2),            /* capacitor connected to Cext and RCext */
163165   1,               /* A pin - driven by the CRTC */
164166   1,               /* B pin - pulled high */
165167   1,               /* Clear pin - pulled high */
r6428r6429
189191   }
190192}
191193
192static MACHINE_RESET( irem )
194static MACHINE_START( m10 )
193195{
194196   m10_state *state = (m10_state *)machine->driver_data;
195197
198   state->ic8j1 = devtag_get_device(machine, "ic8j1");
199   state->ic8j2 = devtag_get_device(machine, "ic8j2");
200   state->samples = devtag_get_device(machine, "samples");
201
196202   state_save_register_global(machine, state->bottomline);
197203   state_save_register_global(machine, state->flip);
204   state_save_register_global(machine, state->last);
198205}
199206
207static MACHINE_RESET( m10 )
208{
209   m10_state *state = (m10_state *)machine->driver_data;
210
211   state->bottomline = 0;
212   state->flip = 0;
213   state->last = 0;
214}
215
200216/*************************************
201217 *
202218 *  I/O handling
r6428r6429
224240
225241static WRITE8_HANDLER( m10_ctrl_w )
226242{
227   const device_config *samples = devtag_get_device(space->machine, "samples");
228243   m10_state *state = (m10_state *)space->machine->driver_data;
229244
230245#if DEBUG
r6428r6429
249264         break;
250265      case 0x01:
251266         /* MISSILE sound */
252         sample_start(samples, 0, 0, 0);
267         sample_start(state->samples, 0, 0, 0);
253268         break;
254269      case 0x02:
255270         /* EXPLOSION sound */
256         sample_start(samples, 1, 1, 0);
271         sample_start(state->samples, 1, 1, 0);
257272         break;
258273      case 0x03:
259274         /* INVADER HIT sound */
260         sample_start(samples, 2, 2, 0);
275         sample_start(state->samples, 2, 2, 0);
261276         break;
262277      case 0x04:
263278         /* BONUS BASE sound */
264         sample_start(samples, 3, 8, 0);
279         sample_start(state->samples, 3, 8, 0);
265280         break;
266281      case 0x05:
267282         /* FLEET MOVE sound */
268         sample_start(samples, 3, 3, 0);
283         sample_start(state->samples, 3, 3, 0);
269284         break;
270285      case 0x06:
271286         /* SAUCER HIT SOUND */
272         sample_start(samples, 2, 7, 0);
287         sample_start(state->samples, 2, 7, 0);
273288         break;
274289      default:
275290         popmessage("Unknown sound M10: %02x\n", data & 0x07);
r6428r6429
277292   }
278293   /* UFO SOUND */
279294   if (data & 0x08)
280      sample_stop(samples, 4);
295      sample_stop(state->samples, 4);
281296   else
282      sample_start(samples, 4, 9, 1);
297      sample_start(state->samples, 4, 9, 1);
283298
284299}
285300
r6428r6429
305320   m10_state *state = (m10_state *)space->machine->driver_data;
306321
307322#if DEBUG
308   if (data & 0x4C)
323   if (data & 0x4c)
309324      popmessage("M11 ctrl: %02x",data);
310325#endif
311326
r6428r6429
338353   m10_state *state = (m10_state *)space->machine->driver_data;
339354
340355#if DEBUG
341   if (data & 0xF0)
356   if (data & 0xf0)
342357      popmessage("M15 ctrl: %02x",data);
343358#endif
344359   if (input_port_read(space->machine, "CAB") & 0x01)
r6428r6429
364379static WRITE8_HANDLER( m10_a500_w )
365380{
366381#if DEBUG
367   if (data & 0xFC)
382   if (data & 0xfc)
368383      popmessage("a500: %02x",data);
369384#endif
370385}
371386
372387static WRITE8_HANDLER( m11_a100_w )
373388{
374   static int last = 0x00;
375   const device_config *samples = devtag_get_device(space->machine, "samples");
376   int raising_bits = data & ~last;
377   //int falling_bits = ~data & last;
389   m10_state *state = (m10_state *)space->machine->driver_data;
390   int raising_bits = data & ~state->last;
391   //int falling_bits = ~data & state->last;
378392
379393   // should a falling bit stop a sample?
380394   // This port is written to about 20x per vblank
381395#if DEBUG
382   if ((last & 0xE8) != (data & 0xE8))
396   if ((state->last & 0xe8) != (data & 0xe8))
383397      popmessage("A100: %02x\n", data);
384398#endif
385   last = data;
399   state->last = data;
400
386401   // audio control!
387402   /* MISSILE sound */
388403   if (raising_bits & 0x01)
389      sample_start(samples, 0, 0, 0);
404      sample_start(state->samples, 0, 0, 0);
390405
391406   /* EXPLOSION sound */
392407   if (raising_bits & 0x02)
393      sample_start(samples, 1, 1, 0);
408      sample_start(state->samples, 1, 1, 0);
394409
395410   /* Rapidly falling parachute */
396411   if (raising_bits & 0x04)
397      sample_start(samples, 3, 8, 0);
412      sample_start(state->samples, 3, 8, 0);
398413
399414   /* Background sound ? */
400415   if (data & 0x10)
401      sample_start(samples, 4, 9, 1);
416      sample_start(state->samples, 4, 9, 1);
402417   else
403      sample_stop(samples, 4);
418      sample_stop(state->samples, 4);
404419
405420}
406421
407422static WRITE8_HANDLER( m15_a100_w )
408423{
409   static int last = 0x00;
410   const device_config *samples = devtag_get_device(space->machine, "samples");
411   //int raising_bits = data & ~last;
412   int falling_bits = ~data & last;
424   m10_state *state = (m10_state *)space->machine->driver_data;
425   //int raising_bits = data & ~state->last;
426   int falling_bits = ~data & state->last;
413427
414428   // should a falling bit stop a sample?
415429   // Bit 4 is used
r6428r6429
425439   // 0x40: dot
426440
427441#if DEBUG
428   if ((last & 0x82) != (data & 0x82))
442   if ((state->last & 0x82) != (data & 0x82))
429443      popmessage("A100: %02x\n", data);
430444#endif
431445   /* DOT sound */
432446   if (falling_bits & 0x40)
433      sample_start(samples, 0, 0, 0);
447      sample_start(state->samples, 0, 0, 0);
434448#if 0
435449   if (raising_bits & 0x40)
436      sample_stop(samples, 0);
450      sample_stop(state->samples, 0);
437451#endif
438452
439453   /* EXPLOSION sound */
440454   if (falling_bits & 0x08)
441      sample_start(samples, 1, 1, 0);
455      sample_start(state->samples, 1, 1, 0);
442456#if 0
443457   if (raising_bits & 0x08)
444      sample_stop(samples, 1);
458      sample_stop(state->samples, 1);
445459#endif
446460
447461   /* player changes lane */
448462   if (falling_bits & 0x10)
449      sample_start(samples, 3, 3, 0);
463      sample_start(state->samples, 3, 3, 0);
450464#if 0
451465   if (raising_bits & 0x10)
452      sample_stop(samples, 3);
466      sample_stop(state->samples, 3);
453467#endif
454468
455469   /* computer car changes lane */
456470   if (falling_bits & 0x20)
457      sample_start(samples, 4, 4, 0);
471      sample_start(state->samples, 4, 4, 0);
458472#if 0
459473   if (raising_bits & 0x20)
460      sample_stop(samples, 4);
474      sample_stop(state->samples, 4);
461475#endif
462476
463   last = data;
477   state->last = data;
464478}
465479
466480static READ8_HANDLER( m10_a700_r )
467481{
468      //LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen)));
482    m10_state *state = (m10_state *)space->machine->driver_data;
483     //LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen)));
469484   LOG(("clear\n"));
470   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 0);
471   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 1);
485   ttl74123_clear_w(state->ic8j1, 0, 0);
486   ttl74123_clear_w(state->ic8j1, 0, 1);
472487   return 0x00;
473488}
474489
475490static READ8_HANDLER( m11_a700_r )
476491{
492   m10_state *state = (m10_state *)space->machine->driver_data;
477493      //LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen)));
478494   //cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
479495   LOG(("clear\n"));
480   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 0);
481   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 1);
496   ttl74123_clear_w(state->ic8j1, 0, 0);
497   ttl74123_clear_w(state->ic8j1, 0, 1);
482498   return 0x00;
483499}
484500
r6428r6429
497513
498514static TIMER_CALLBACK( interrupt_callback )
499515{
500    if (param==0)
501    {
502       cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
503       timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART+16, 0), NULL, 1,interrupt_callback);
504    }
505    if (param==1)
506    {
507       cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
508       timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART+24, 0), NULL, 2,interrupt_callback);
509    }
510    if (param==-1)
511       cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
516   if (param == 0)
517   {
518      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
519      timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART + 16, 0), NULL, 1, interrupt_callback);
520   }
521   if (param == 1)
522   {
523      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
524      timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART + 24, 0), NULL, 2, interrupt_callback);
525   }
526   if (param == -1)
527      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
512528
513529}
514530
r6428r6429
516532static INTERRUPT_GEN( m11_interrupt )
517533{
518534   cpu_set_input_line(device, 0, ASSERT_LINE);
519   //timer_set(device->machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBEND, 0), NULL, -1,interrupt_callback);
535   //timer_set(device->machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBEND, 0), NULL, -1, interrupt_callback);
520536}
521537
522538static INTERRUPT_GEN( m10_interrupt )
r6428r6429
528544static INTERRUPT_GEN( m15_interrupt )
529545{
530546   cpu_set_input_line(device, 0, ASSERT_LINE);
531      timer_set(device->machine, video_screen_get_time_until_pos(device->machine->primary_screen, IREMM10_VBSTART+1, 80), NULL, -1,interrupt_callback);
547      timer_set(device->machine, video_screen_get_time_until_pos(device->machine->primary_screen, IREMM10_VBSTART + 1, 80), NULL, -1, interrupt_callback);
532548}
533549
534550/*************************************
r6428r6429
540556static ADDRESS_MAP_START( m10_main, ADDRESS_SPACE_PROGRAM, 8 )
541557   AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
542558   AM_RANGE(0x1000, 0x2fff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
543   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
544   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE(&colorram) /* foreground colour  */
559   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE(&videoram_size)
560   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour  */
545561   AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(m10_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
546562   AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
547563   AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS")
r6428r6429
554570static ADDRESS_MAP_START( m11_main, ADDRESS_SPACE_PROGRAM, 8 )
555571   AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
556572   AM_RANGE(0x1000, 0x2fff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
557   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
558   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE(&colorram) /* foreground colour  */
573   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE(&videoram_size)
574   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour  */
559575   AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
560576   AM_RANGE(0xa100, 0xa100) AM_WRITE(m11_a100_w) /* sound writes ???? */
561577   AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
r6428r6429
568584static ADDRESS_MAP_START( m15_main, ADDRESS_SPACE_PROGRAM, 8 )
569585   AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
570586   AM_RANGE(0x1000, 0x33ff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
571   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
572   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE(&colorram) /* foreground colour  */
587   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE(&videoram_size)
588   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour  */
573589   AM_RANGE(0x5000, 0x57ff) AM_RAM_WRITE(m15_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
574590   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")
575591   AM_RANGE(0xa100, 0xa100) AM_WRITE(m15_a100_w) /* sound writes ???? */
r6428r6429
821837   MDRV_CPU_ADD("maincpu", M6502,IREMM10_CPU_CLOCK)
822838   MDRV_CPU_PROGRAM_MAP(m10_main)
823839
824   MDRV_MACHINE_RESET(irem)
840   MDRV_MACHINE_START(m10)
841   MDRV_MACHINE_RESET(m10)
825842
826843   //MDRV_CPU_VBLANK_INT("screen", m10_interrupt)
827844
r6428r6429
873890   MDRV_CPU_ADD("maincpu", M6502,IREMM15_CPU_CLOCK)
874891   MDRV_CPU_PROGRAM_MAP(m15_main)
875892
876   MDRV_MACHINE_RESET(irem)
893   MDRV_MACHINE_START(m10)
894   MDRV_MACHINE_RESET(m10)
877895
878896   MDRV_CPU_VBLANK_INT("screen", m15_interrupt)
879897
r6428r6429
10391057   ROM_LOAD( "gb9", 0x3000, 0x0400, CRC(c27b9ba3) SHA1(a2f4f0c4b61eb03bba13ae5d25dc01009a4f86ee) ) // ok ?
10401058ROM_END
10411059
1042GAME( 1979, andromed,  0,        m11,     skychut,  andromed, ROT270, "Irem", "Andromeda (Japan?)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING )
1043GAME( 1979, ipminvad,  0,        m10,     ipminvad, 0,        ROT270, "Irem", "I P M Invader", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
1044GAME( 1979, ipminvad1, ipminvad, m10,     ipminvad, ipminva1, ROT270, "Irem", "I P M Invader (Incomplete Dump)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
1045GAME( 1980, skychut,   0,        m11,     skychut,  0,        ROT270, "Irem", "Sky Chuter", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS )
1046GAME( 1979, spacbeam,  0,        m15,     spacbeam, 0,        ROT270, "Irem", "Space Beam", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS )
1047GAME( 1979, headoni,   0,        headoni, headoni,  0,        ROT270, "Irem", "Head On (Irem, M-15 Hardware)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS )
1048GAME( 1980, greenber,  0,        m15,     spacbeam, 0,        ROT270, "Irem", "Green Beret (Irem)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING )
1060GAME( 1979, andromed,  0,        m11,     skychut,  andromed, ROT270, "Irem", "Andromeda (Japan?)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
1061GAME( 1979, ipminvad,  0,        m10,     ipminvad, 0,        ROT270, "Irem", "I P M Invader", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1062GAME( 1979, ipminvad1, ipminvad, m10,     ipminvad, ipminva1, ROT270, "Irem", "I P M Invader (Incomplete Dump)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
1063GAME( 1980, skychut,   0,        m11,     skychut,  0,        ROT270, "Irem", "Sky Chuter", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1064GAME( 1979, spacbeam,  0,        m15,     spacbeam, 0,        ROT270, "Irem", "Space Beam", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1065GAME( 1979, headoni,   0,        headoni, headoni,  0,        ROT270, "Irem", "Head On (Irem, M-15 Hardware)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1066GAME( 1980, greenber,  0,        m15,     spacbeam, 0,        ROT270, "Irem", "Green Beret (Irem)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
src/emu/cpu/m68000/m68000.h
r6428r6429
2929   M68K_CPU_TYPE_68EC030,
3030   M68K_CPU_TYPE_68030,
3131   M68K_CPU_TYPE_68EC040,
32   M68K_CPU_TYPE_68LC040,
3233   M68K_CPU_TYPE_68040,
3334   M68K_CPU_TYPE_SCC68070
3435};
r6428r6429
9394#define CPU_M68EC030 CPU_GET_INFO_NAME( m68ec030 )
9495#define CPU_M68030 CPU_GET_INFO_NAME( m68030 )
9596#define CPU_M68EC040 CPU_GET_INFO_NAME( m68ec040 )
97#define CPU_M68LC040 CPU_GET_INFO_NAME( m68lc040 )
9698#define CPU_M68040 CPU_GET_INFO_NAME( m68040 )
9799
98100#define CPU_SCC68070 CPU_GET_INFO_NAME( scc68070 )
src/emu/cpu/m68000/m68kfpu.c
r6428r6429
9595      {
9696         switch (reg)
9797         {
98            case 0:      // (xxx).W
99            {
100               UINT32 ea = (UINT32)OPER_I_16(m68k);
101               return m68ki_read_8(m68k, ea);
102            }
98103            case 1:      // (xxx).L
99104            {
100105               UINT32 d1 = OPER_I_16(m68k);
r6428r6429
146151      {
147152         switch (reg)
148153         {
154            case 0:      // (xxx).W
155            {
156               UINT32 ea = (UINT32)OPER_I_16(m68k);
157               return m68ki_read_16(m68k, ea);
158            }
149159            case 1:      // (xxx).L
150160            {
151161               UINT32 d1 = OPER_I_16(m68k);
r6428r6429
203213      {
204214         switch (reg)
205215         {
216            case 0:      // (xxx).W
217            {
218               UINT32 ea = (UINT32)OPER_I_16(m68k);
219               return m68ki_read_32(m68k, ea);
220            }
206221            case 1:      // (xxx).L
207222            {
208223               UINT32 d1 = OPER_I_16(m68k);
r6428r6429
228243   return 0;
229244}
230245
246static UINT64 READ_EA_64(m68ki_cpu_core *m68k, int ea)
247{
248   int mode = (ea >> 3) & 0x7;
249   int reg = (ea & 0x7);
250   UINT32 h1, h2;
251
252   switch (mode)
253   {
254      case 2:      // (An)
255      {
256         UINT32 ea = REG_A[reg];
257         h1 = m68ki_read_32(m68k, ea+0);
258         h2 = m68ki_read_32(m68k, ea+4);
259         return  (UINT64)(h1) << 32 | (UINT64)(h2);
260      }
261      case 3:      // (An)+
262      {
263         UINT32 ea = REG_A[reg];
264         REG_A[reg] += 8;
265         h1 = m68ki_read_32(m68k, ea+0);
266         h2 = m68ki_read_32(m68k, ea+4);
267         return  (UINT64)(h1) << 32 | (UINT64)(h2);
268      }
269      case 5:      // (d16, An)
270      {
271         UINT32 ea = EA_AY_DI_32(m68k);
272         h1 = m68ki_read_32(m68k, ea+0);
273         h2 = m68ki_read_32(m68k, ea+4);
274         return  (UINT64)(h1) << 32 | (UINT64)(h2);
275      }
276      case 7:
277      {
278         switch (reg)
279         {
280            case 4:      // #<data>
281            {
282               h1 = OPER_I_32(m68k);
283               h2 = OPER_I_32(m68k);
284               return  (UINT64)(h1) << 32 | (UINT64)(h2);
285            }
286            case 2:      // (d16, PC)
287            {
288               UINT32 ea = EA_PCDI_32(m68k);
289               h1 = m68ki_read_32(m68k, ea+0);
290               h2 = m68ki_read_32(m68k, ea+4);
291               return  (UINT64)(h1) << 32 | (UINT64)(h2);
292            }
293            default:   fatalerror("MC68040: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC);
294         }
295         break;
296      }
297      default:   fatalerror("MC68040: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC);
298   }
299
300   return 0;
301}
302
231303static void WRITE_EA_8(m68ki_cpu_core *m68k, int ea, UINT8 data)
232304{
233305   int mode = (ea >> 3) & 0x7;
r6428r6429
376448         REG_D[reg] = data;
377449         break;
378450      }
451      case 1:      // An
452      {
453         REG_A[reg] = data;
454         break;
455      }
379456      case 2:      // (An)
380457      {
381458         UINT32 ea = REG_A[reg];
r6428r6429
432509   }
433510}
434511
435static UINT64 READ_EA_64(m68ki_cpu_core *m68k, int ea)
436{
437   int mode = (ea >> 3) & 0x7;
438   int reg = (ea & 0x7);
439   UINT32 h1, h2;
440
441   switch (mode)
442   {
443      case 2:      // (An)
444      {
445         UINT32 ea = REG_A[reg];
446         h1 = m68ki_read_32(m68k, ea+0);
447         h2 = m68ki_read_32(m68k, ea+4);
448         return  (UINT64)(h1) << 32 | (UINT64)(h2);
449      }
450      case 3:      // (An)+
451      {
452         UINT32 ea = REG_A[reg];
453         REG_A[reg] += 8;
454         h1 = m68ki_read_32(m68k, ea+0);
455         h2 = m68ki_read_32(m68k, ea+4);
456         return  (UINT64)(h1) << 32 | (UINT64)(h2);
457      }
458      case 5:      // (d16, An)
459      {
460         UINT32 ea = EA_AY_DI_32(m68k);
461         h1 = m68ki_read_32(m68k, ea+0);
462         h2 = m68ki_read_32(m68k, ea+4);
463         return  (UINT64)(h1) << 32 | (UINT64)(h2);
464      }
465      case 7:
466      {
467         switch (reg)
468         {
469            case 4:      // #<data>
470            {
471               h1 = OPER_I_32(m68k);
472               h2 = OPER_I_32(m68k);
473               return  (UINT64)(h1) << 32 | (UINT64)(h2);
474            }
475            case 2:      // (d16, PC)
476            {
477               UINT32 ea = EA_PCDI_32(m68k);
478               h1 = m68ki_read_32(m68k, ea+0);
479               h2 = m68ki_read_32(m68k, ea+4);
480               return  (UINT64)(h1) << 32 | (UINT64)(h2);
481            }
482            default:   fatalerror("MC68040: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC);
483         }
484         break;
485      }
486      default:   fatalerror("MC68040: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC);
487   }
488
489   return 0;
490}
491
492512static void WRITE_EA_64(m68ki_cpu_core *m68k, int ea, UINT64 data)
493513{
494514   int mode = (ea >> 3) & 0x7;
src/emu/cpu/m68000/m68kcpu.h
r6428r6429
8181#define CPU_TYPE_EC030  (0x00000020)
8282#define CPU_TYPE_030    (0x00000040)
8383#define CPU_TYPE_EC040  (0x00000080)
84#define CPU_TYPE_040    (0x00000100)
85#define CPU_TYPE_SCC070 (0x00000200)
84#define CPU_TYPE_LC040  (0x00000100)
85#define CPU_TYPE_040    (0x00000200)
86#define CPU_TYPE_SCC070 (0x00000400)
8687
8788/* Different ways to stop the CPU */
8889#define STOP_LEVEL_STOP 1
src/emu/cpu/m68000/m68kmake.c
r6428r6429
33/* ======================================================================== */
44/*
55 *                                  MUSASHI
6 *                                Version 4.10
6 *                                Version 4.55
77 *
88 * A portable Motorola M680x0 processor emulation engine.
99 * Copyright Karl Stenerud.  All rights reserved.
r6428r6429
5555 */
5656
5757
58static const char g_version[] = "4.10";
58static const char g_version[] = "4.55";
5959
6060/* ======================================================================== */
6161/* =============================== INCLUDES =============================== */
r6428r6429
767767         }
768768         /* Found a directive with no matching replace string */
769769         if(!found)
770            error_exit("Unknown " ID_BASE " directive");
770            error_exit("Unknown " ID_BASE " directive [%s]", output);
771771      }
772772      fprintf(filep, "%s\n", output);
773773   }
src/emu/cpu/m68000/m68kmmu.h
r6428r6429
1212*/
1313INLINE UINT32 pmmu_translate_addr(m68ki_cpu_core *m68k, UINT32 addr_in)
1414{
15   UINT32 addr_out, tbl_entry = 0, tbl_entry2, tamode = 0, tbmode = 0;
15   UINT32 addr_out, tbl_entry = 0, tbl_entry2, tamode = 0, tbmode = 0, tcmode = 0;
1616   UINT32 root_aptr, root_limit, tofs, is, abits, bbits, cbits;
1717   UINT32 resolved, tptr, shift;
1818
r6428r6429
108108   // if table A wasn't early-out, continue to process table B
109109   if (!resolved)
110110   {
111      // get table C offset and pointer
112      tofs = (addr_in<<(is+abits+bbits))>>(32-cbits);
113      tptr = tbl_entry & 0xfffffff0;
114
111115      switch (tbmode)
112116      {
113117         case 0:   // invalid, should cause MMU exception
118            fatalerror("680x0 PMMU: Unhandled Table B mode %d (addr_in %08x PC %x)\n", tbmode, addr_in, m68k->pc);
119            break;
120
114121         case 2: // 4-byte table C descriptor
122            tofs *= 4;
123//              logerror("PMMU: reading table C entry at %08x\n", tofs + tptr);
124            tbl_entry = memory_read_dword_32be(m68k->program, tofs + tptr);
125            tcmode = tbl_entry & 3;
126//              logerror("PMMU: addr %08x entry %08x mode %x tofs %x\n", addr_in, tbl_entry, tbmode, tofs);
127            break;
128
115129         case 3: // 8-byte table C descriptor
116            fatalerror("680x0 PMMU: Unhandled Table B mode %d (addr_in %08x)\n", tbmode, addr_in);
130            tofs *= 8;
131//              logerror("PMMU: reading table C entries at %08x\n", tofs + tptr);
132            tbl_entry2 = memory_read_dword_32be(m68k->program, tofs + tptr);
133            tbl_entry = memory_read_dword_32be(m68k->program, tofs + tptr + 4);
134            tcmode = tbl_entry2 & 3;
135//              logerror("PMMU: addr %08x entry %08x entry2 %08x mode %x tofs %x\n", addr_in, tbl_entry, tbl_entry2, tbmode, tofs);
117136            break;
118137
119         case 1: // early termination descriptor
138         case 1: // termination descriptor
120139            tbl_entry &= 0xffffff00;
121140
122141            shift = is+abits+bbits;
r6428r6429
126145      }
127146   }
128147
129//  if ((addr_in < 0x40000000) || (addr_in > 0x4fffffff)) printf("PMMU: [%08x] => [%08x]\n", addr_in, addr_out);
148   if (!resolved)
149   {
150      switch (tcmode)
151      {
152         case 0:   // invalid, should cause MMU exception
153         case 2: // 4-byte ??? descriptor
154         case 3: // 8-byte ??? descriptor
155            fatalerror("680x0 PMMU: Unhandled Table B mode %d (addr_in %08x PC %x)\n", tbmode, addr_in, m68k->pc);
156            break;
130157
158         case 1: // termination descriptor
159            tbl_entry &= 0xffffff00;
160
161            shift = is+abits+bbits+cbits;
162            addr_out = ((addr_in<<shift)>>shift) + tbl_entry;
163            resolved = 1;
164            break;
165      }
166   }
167
168
169//  logerror("PMMU: [%08x] => [%08x]\n", addr_in, addr_out);
170
131171   return addr_out;
132172}
133173
134174/*
175    m68881_mmu_ops: COP 0 MMU opcode handling
135176
136maincpu at 40804366: called unimplemented instruction f000 (cpgen)
137PMMU: tcr 80f05570 limit 7fff0003 aptr 043ffcc0 is 0
138PMMU: reading table A entries at 043ffce0
139PMMU: addr 4080438a entry 00000000 entry2 7ffffc18 mode 0 aofs 20
140680x0 PMMU: Unhandled Table A mode 0
177*/
141178
142enable, PS = f
179void m68881_mmu_ops(m68ki_cpu_core *m68k)
180{
181   UINT16 modes;
182   UINT32 ea = m68k->ir & 0x3f;
183   UINT64 temp64;
143184
144tblA @ 043ffcc0:
185   // catch the 2 "weird" encodings up front (PBcc)
186   if ((m68k->ir & 0xffc0) == 0xf0c0)
187   {
188      logerror("680x0: unhandled PBcc\n");
189      return;
190   }
191   else if ((m68k->ir & 0xffc0) == 0xf080)
192   {
193      logerror("680x0: unhandled PBcc\n");
194      return;
195   }
196   else   // the rest are 1111000xxxXXXXXX where xxx is the instruction family
197   {
198      switch ((m68k->ir>>9) & 0x7)
199      {
200         case 0:
201            modes = OPER_I_16(m68k);
145202
146043ffcc0 0001fc0a 043ffcb0  =>  00000019 04000019
147043ffcc8 7ffffc18 00000000
148043ffcd0 7ffffc18 00000000
149043ffcd8 7ffffc18 00000000
150043ffce0 7ffffc18 00000000
151043ffce8 7ffffc18 00000000
152043ffcf0 7ffffc18 00000000
153043ffcf8 7ffffc18 00000000
154043ffd00 7ffffc19 40000000
155043ffd08 7ffffc19 48000000
156043ffd10 7ffffc59 50000000
157043ffd18 7ffffc59 58000000
158043ffd20 7ffffc59 60000000
159043ffd28 7ffffc59 68000000
160043ffd30 7ffffc59 70000000
161043ffd38 7ffffc59 78000000
162043ffd40 7ffffc59 80000000
163043ffd48 7ffffc59 88000000
164043ffd50 7ffffc59 90000000
165043ffd58 7ffffc59 98000000
166043ffd60 7ffffc59 a0000000
167043ffd68 7ffffc59 a8000000
168043ffd70 7ffffc59 b0000000
169043ffd78 7ffffc59 b8000000
170043ffd80 7ffffc59 c0000000
171043ffd88 7ffffc59 c8000000
172043ffd90 7ffffc59 d0000000
173043ffd98 7ffffc59 d8000000
174043ffda0 7ffffc59 e0000000
175043ffda8 7ffffc59 e8000000
176043ffdb0 7ffffc59 f0000000
177043ffdb8 7ffffc59 f8000000
203            if ((modes & 0xfde0) == 0x2000)   // PLOAD
204            {
205               logerror("680x0: unhandled PLOAD\n");
206               return;
207            }
208            else if ((modes & 0xe200) == 0x2000)   // PFLUSH
209            {
210               logerror("680x0: unhandled PFLUSH PC=%x\n", m68k->pc);
211               return;
212            }
213            else if (modes == 0xa000)   // PFLUSHR
214            {
215               logerror("680x0: unhandled PFLUSHR\n");
216               return;
217            }
218            else if (modes == 0x2800)   // PVALID (FORMAT 1)
219            {
220               logerror("680x0: unhandled PVALID1\n");
221               return;
222            }
223            else if ((modes & 0xfff8) == 0x2c00)   // PVALID (FORMAT 2)
224            {
225               logerror("680x0: unhandled PVALID2\n");
226               return;
227            }
228            else if ((modes & 0xe000) == 0x8000)   // PTEST
229            {
230               logerror("680x0: unhandled PTEST\n");
231               return;
232            }
233            else
234            {
235               switch ((modes>>13) & 0x7)
236               {
237                  case 0:   // MC68030/040 form with FD bit
238                  case 2:   // MC68881 form, FD never set
239                     if (modes & 0x200)
240                     {
241                         switch ((modes>>10) & 7)
242                        {
243                           case 0:   // translation control register
244                              WRITE_EA_32(m68k, ea, m68k->mmu_tc);
245                              break;
178246
179*/
247                           case 2: // supervisor root pointer
248                              WRITE_EA_64(m68k, ea, (UINT64)m68k->mmu_srp_limit<<32 | (UINT64)m68k->mmu_srp_aptr);
249                              break;
180250
251                           case 3: // CPU root pointer
252                              WRITE_EA_64(m68k, ea, (UINT64)m68k->mmu_crp_limit<<32 | (UINT64)m68k->mmu_crp_aptr);
253                              break;
254
255                           default:
256                              logerror("680x0: PMOVE from unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
257                              break;
258                        }
259                     }
260                     else
261                     {
262                         switch ((modes>>10) & 7)
263                        {
264                           case 0:   // translation control register
265                              m68k->mmu_tc = READ_EA_32(m68k, ea);
266
267                              if (m68k->mmu_tc & 0x80000000)
268                              {
269                                 m68k->pmmu_enabled = 1;
270                              }
271                              else
272                              {
273                                 m68k->pmmu_enabled = 0;
274                              }
275                              break;
276
277                           case 2:   // supervisor root pointer
278                              temp64 = READ_EA_64(m68k, ea);
279                              m68k->mmu_srp_limit = (temp64>>32) & 0xffffffff;
280                              m68k->mmu_srp_aptr = temp64 & 0xffffffff;
281                              break;
282
283                           case 3:   // CPU root pointer
284                              temp64 = READ_EA_64(m68k, ea);
285                              m68k->mmu_crp_limit = (temp64>>32) & 0xffffffff;
286                              m68k->mmu_crp_aptr = temp64 & 0xffffffff;
287                              break;
288
289                           default:
290                              logerror("680x0: PMOVE to unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
291                              break;
292                        }
293                     }
294                     break;
295
296                  case 3:   // MC68030 to/from status reg
297                     if (modes & 0x200)
298                     {
299                        WRITE_EA_32(m68k, ea, m68k->mmu_sr);
300                     }
301                     else
302                     {
303                        m68k->mmu_sr = READ_EA_32(m68k, ea);
304                     }
305                     break;
306
307                  default:
308                     logerror("680x0: unknown PMOVE mode %x (modes %04x) (PC %x)\n", (modes>>13) & 0x7, modes, m68k->pc);
309                     break;
310               }
311            }
312            break;
313
314         default:
315            logerror("680x0: unknown PMMU instruction group %d\n", (m68k->ir>>9) & 0x7);
316            break;
317      }
318   }
319}
320
src/emu/cpu/m68000/m68kdasm.c
r6428r6429
146146/* make signed integers 100% portably */
147147static int make_int_8(int value);
148148static int make_int_16(int value);
149static int make_int_32(int value);
149150
150151/* make a string of a hex value */
151152static char* make_signed_hex_str_8(UINT32 val);
r6428r6429
230231   "tc", "drp", "srp", "crp", "cal", "val", "sccr", "acr"
231232};
232233
234static const char *const g_mmucond[16] =
235{
236   "bs", "bc", "ls", "lc", "ss", "sc", "as", "ac",
237   "ws", "wc", "is", "ic", "gs", "gc", "cs", "cc"
238};
239
233240/* ======================================================================== */
234241/* =========================== UTILITY FUNCTIONS ========================== */
235242/* ======================================================================== */
r6428r6429
304311   return (value & 0x8000) ? value | ~0xffff : value & 0xffff;
305312}
306313
314static int make_int_32(int value)
315{
316   return (value & 0x80000000) ? value | ~0xffffffff : value & 0xffffffff;
317}
307318
308319/* Get string representation of hex values */
309320static char* make_signed_hex_str_8(UINT32 val)
r6428r6429
25632574   sprintf(g_dasm_str, "pea     %s", get_ea_mode_str_32(g_cpu_ir));
25642575}
25652576
2577// this is a 68040-specific form of PFLUSH
25662578static void d68040_pflush(void)
25672579{
25682580   LIMIT_CPU_TYPES(M68040_PLUS);
r6428r6429
30193031}
30203032
30213033
3022static void d68030_pmove(void)
3034// PFLUSH:  001xxx0xxxxxxxxx
3035// PLOAD:   001000x0000xxxxx
3036// PVALID1: 0010100000000000
3037// PVALID2: 0010110000000xxx
3038// PMOVE 1: 010xxxx000000000
3039// PMOVE 2: 011xxxx0000xxx00
3040// PMOVE 3: 011xxxx000000000
3041// PTEST:   100xxxxxxxxxxxxx
3042// PFLUSHR:  1010000000000000
3043static void d68851_p000(void)
30233044{
30243045   char* str;
30253046   UINT16 modes = read_imm_16();
r6428r6429
30403061      return;
30413062   }
30423063
3043   if ((modes & 0xe200) == 0x2000)   // PFLUSHA
3064   if ((modes & 0xe200) == 0x2000)   // PFLUSH
30443065   {
3045      if (modes & 0x0200)
3046      {
3047          sprintf(g_dasm_str, "pflush %s, %s", g_mmuregs[(modes>>10)&7], str);
3048      }
3049      else
3050      {
3051          sprintf(g_dasm_str, "pflush %s, %s", str, g_mmuregs[(modes>>10)&7]);
3052      }
3066      sprintf(g_dasm_str, "pflushr %x, %x, %s", modes & 0x1f, (modes>>5)&0xf, str);
30533067      return;
30543068   }
30553069
3070   if (modes == 0xa000)   // PFLUSHR
3071   {
3072      sprintf(g_dasm_str, "pflushr %s", str);
3073   }
3074
3075   if (modes == 0x2800)   // PVALID (FORMAT 1)
3076   {
3077      sprintf(g_dasm_str, "pvalid VAL, %s", str);
3078      return;
3079   }
3080
3081   if ((modes & 0xfff8) == 0x2c00)   // PVALID (FORMAT 2)
3082   {
3083      sprintf(g_dasm_str, "pvalid A%d, %s", modes & 0xf, str);
3084      return;
3085   }
3086
3087   if ((modes & 0xe000) == 0x8000)   // PTEST
3088   {
3089      sprintf(g_dasm_str, "ptest #%d, %s", modes & 0x1f, str);
3090      return;
3091   }
3092
30563093   switch ((modes>>13) & 0x7)
30573094   {
30583095      case 0:   // MC68030/040 form with FD bit
r6428r6429
30983135   }
30993136}
31003137
3138static void d68851_pbcc16(void)
3139{
3140   UINT32 temp_pc = g_cpu_pc;
31013141
3142   sprintf(g_dasm_str, "pb%s %x", g_mmucond[g_cpu_ir&0xf], temp_pc + make_int_16(read_imm_16()));
3143}
3144
3145static void d68851_pbcc32(void)
3146{
3147   UINT32 temp_pc = g_cpu_pc;
3148
3149   sprintf(g_dasm_str, "pb%s %x", g_mmucond[g_cpu_ir&0xf], temp_pc + make_int_32(read_imm_32()));
3150}
3151
3152static void d68851_pdbcc(void)
3153{
3154   UINT32 temp_pc = g_cpu_pc;
3155   UINT16 modes = read_imm_16();
3156
3157   sprintf(g_dasm_str, "pb%s %x", g_mmucond[modes&0xf], temp_pc + make_int_16(read_imm_16()));
3158}
3159
3160// PScc:  0000000000xxxxxx
3161static void d68851_p001(void)
3162{
3163   sprintf(g_dasm_str, "MMU 001 group");
3164}
3165
31023166/* ======================================================================== */
31033167/* ======================= INSTRUCTION TABLE BUILDER ====================== */
31043168/* ======================================================================== */
r6428r6429
34213485   {d68000_unlk         , 0xfff8, 0x4e58, 0x000},
34223486   {d68020_unpk_rr      , 0xf1f8, 0x8180, 0x000},
34233487   {d68020_unpk_mm      , 0xf1f8, 0x8188, 0x000},
3424   {d68030_pmove        , 0xffc0, 0xf000, 0x278},
3488   {d68851_p000         , 0xffc0, 0xf000, 0x000},
3489   {d68851_pbcc16       , 0xffc0, 0xf080, 0x000},
3490   {d68851_pbcc32       , 0xffc0, 0xf0c0, 0x000},
3491   {d68851_pdbcc        , 0xfff8, 0xf048, 0x000},
3492   {d68851_p001         , 0xffc0, 0xf040, 0x000},
34253493   {0, 0, 0, 0}
34263494};
34273495
r6428r6429
35513619         g_cpu_type = TYPE_68010;
35523620         break;
35533621      case M68K_CPU_TYPE_68EC020:
3554         g_cpu_type = TYPE_68020;
3555         break;
35563622      case M68K_CPU_TYPE_68020:
35573623         g_cpu_type = TYPE_68020;
35583624         break;
3625      case M68K_CPU_TYPE_68EC030:
35593626      case M68K_CPU_TYPE_68030:
35603627         g_cpu_type = TYPE_68030;
35613628         break;
35623629      case M68K_CPU_TYPE_68040:
3630      case M68K_CPU_TYPE_68EC040:
3631      case M68K_CPU_TYPE_68LC040:
35633632         g_cpu_type = TYPE_68040;
35643633         break;
35653634      default:
r6428r6429
37523821      case M68K_CPU_TYPE_68EC020:
37533822      case M68K_CPU_TYPE_68020:
37543823      case M68K_CPU_TYPE_68030:
3824      case M68K_CPU_TYPE_68EC030:
37553825         if(g_instruction_table[instruction] == d68040_cinv)
37563826            return 0;
37573827         if(g_instruction_table[instruction] == d68040_cpush)
r6428r6429
37663836            return 0;
37673837         if(g_instruction_table[instruction] == d68040_move16_al_ai)
37683838            return 0;
3769         if(g_instruction_table[instruction] == d68040_pflush)
3770            return 0;
37713839      case M68K_CPU_TYPE_68040:
3840      case M68K_CPU_TYPE_68EC040:
3841      case M68K_CPU_TYPE_68LC040:
37723842         if(g_instruction_table[instruction] == d68020_cpbcc_16)
37733843            return 0;
37743844         if(g_instruction_table[instruction] == d68020_cpbcc_32)
r6428r6429
37893859            return 0;
37903860         if(g_instruction_table[instruction] == d68020_cptrapcc_32)
37913861            return 0;
3862         if(g_instruction_table[instruction] == d68040_pflush)
3863            return 0;
37923864   }
37933865   if(cpu_type != M68K_CPU_TYPE_68020 && cpu_type != M68K_CPU_TYPE_68EC020 &&
37943866     (g_instruction_table[instruction] == d68020_callm ||
src/emu/cpu/m68000/m68k_in.c
r6428r6429
262262#include "mame.h"
263263extern void m68040_fpu_op0(m68ki_cpu_core *m68k);
264264extern void m68040_fpu_op1(m68ki_cpu_core *m68k);
265extern void m68881_mmu_ops(m68ki_cpu_core *m68k);
265266
266267/* ======================================================================== */
267268/* ========================= INSTRUCTION HANDLERS ========================= */
r6428r6429
748749pack      16  mm    .     1000...101001...  ..........  . . U U U   .   .  13  13  13
749750pea       32  .     .     0100100001......  A..DXWLdx.  U U U U U   6   6   5   5   5
750751pflush    32  .     .     1111010100011000  ..........  . . . . S   .   .   .   .   4   TODO: correct timing
751pmove     32  .     .     1111000000......  A..DXWLdx.  . . S S S   .   .   8   8   8
752pmmu      32  .     .     1111000.........  ..........  . . S S S   .   .   8   8   8
752753reset      0  .     .     0100111001110000  ..........  S S S S S   0   0   0   0   0
753754ror        8  s     .     1110...000011...  ..........  U U U U U   6   6   8   8   8
754755ror       16  s     .     1110...001011...  ..........  U U U U U   6   6   8   8   8
r6428r6429
79947995   m68ki_push_32(m68k, ea);
79957996}
79967997
7997
79987998M68KMAKE_OP(pflush, 32, ., .)
79997999{
80008000   if ((CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type)) && (m68k->has_pmmu))
80018001   {
8002      logerror("680x0: unhandled PFLUSH\n");
8002      logerror("68040: unhandled PFLUSH\n");
80038003      return;
80048004   }
80058005   m68ki_exception_1111(m68k);
80068006}
80078007
8008M68KMAKE_OP(pmove, 32, ., .)
8008M68KMAKE_OP(pmmu, 32, ., .)
80098009{
8010   UINT16 modes;
8011   UINT32 ea;
8012
80138010   if ((CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type)) && (m68k->has_pmmu))
80148011   {
8015      modes = m68ki_read_imm_16(m68k);
8016      ea = M68KMAKE_GET_EA_AY_32;
8017
8018      if ((modes & 0xfde0) == 0x2000)   // PLOAD
8019      {
8020         logerror("680x0: unhandled PLOAD\n");
8021         return;
8022      }
8023
8024      if ((modes & 0xe200) == 0x2000)   // PFLUSHA
8025      {
8026         logerror("680x0: unhandled PFLUSHA\n");
8027         return;
8028      }
8029
8030      switch ((modes>>13) & 0x7)
8031      {
8032         case 0:   // MC68030/040 form with FD bit
8033         case 2:   // MC68881 form, FD never set
8034            if (modes & 0x200)
8035            {
8036                switch ((modes>>10) & 7)
8037               {
8038                  case 0:   // translation control register
8039                     memory_write_word_32be(m68k->program, ea, m68k->mmu_tc>>16);
8040                     memory_write_word_32be(m68k->program, ea+2, m68k->mmu_tc&0xffff);
8041                     break;
8042
8043                  case 2: // supervisor root pointer
8044                     memory_write_word_32be(m68k->program, ea, m68k->mmu_srp_limit>>16);
8045                     memory_write_word_32be(m68k->program, ea+2, m68k->mmu_srp_limit&0xffff);
8046                     memory_write_word_32be(m68k->program, ea+4, m68k->mmu_srp_aptr>>16);
8047                     memory_write_word_32be(m68k->program, ea+6, m68k->mmu_srp_aptr&0xffff);
8048                     break;
8049
8050                  case 3: // CPU root pointer
8051                     memory_write_word_32be(m68k->program, ea, m68k->mmu_crp_limit>>16);
8052                     memory_write_word_32be(m68k->program, ea+2, m68k->mmu_crp_limit&0xffff);
8053                     memory_write_word_32be(m68k->program, ea+4, m68k->mmu_crp_aptr>>16);
8054                     memory_write_word_32be(m68k->program, ea+6, m68k->mmu_crp_aptr&0xffff);
8055                     break;
8056
8057                  default:
8058                     logerror("680x0: PMOVE from unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
8059                     break;
8060               }
8061            }
8062            else
8063            {
8064                switch ((modes>>10) & 7)
8065               {
8066                  case 0:   // translation control register
8067                     m68k->mmu_tc = memory_read_word_32be(m68k->program, ea)<<16;
8068                     m68k->mmu_tc |= memory_read_word_32be(m68k->program, ea+2);
8069
8070                     if (m68k->mmu_tc & 0x80000000)
8071                     {
8072                        m68k->pmmu_enabled = 1;
8073                     }
8074                     else
8075                     {
8076                        m68k->pmmu_enabled = 0;
8077                     }
8078                     break;
8079
8080                  case 2:   // supervisor root pointer
8081                     m68k->mmu_srp_limit = memory_read_word_32be(m68k->program, ea)<<16;
8082                     m68k->mmu_srp_limit |= memory_read_word_32be(m68k->program, ea+2);
8083                     m68k->mmu_srp_aptr = memory_read_word_32be(m68k->program, ea+4)<<16;
8084                     m68k->mmu_srp_aptr |= memory_read_word_32be(m68k->program, ea+6);
8085                     break;
8086
8087                  case 3:   // CPU root pointer
8088                     m68k->mmu_crp_limit = memory_read_word_32be(m68k->program, ea)<<16;
8089                     m68k->mmu_crp_limit |= memory_read_word_32be(m68k->program, ea+2);
8090                     m68k->mmu_crp_aptr = memory_read_word_32be(m68k->program, ea+4)<<16;
8091                     m68k->mmu_crp_aptr |= memory_read_word_32be(m68k->program, ea+6);
8092                     break;
8093
8094                  default:
8095                     logerror("680x0: PMOVE to unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
8096                     break;
8097               }
8098            }
8099            break;
8100
8101         case 3:   // MC68030 to/from status reg
8102            if (modes & 0x200)
8103            {
8104               memory_write_word_32be(m68k->program, ea, m68k->mmu_sr);
8105            }
8106            else
8107            {
8108               m68k->mmu_sr = memory_read_word_32be(m68k->program, ea);
8109            }
8110            break;
8111
8112         default:
8113            logerror("680x0: unknown PMOVE mode %x (modes %04x) (PC %x)\n", (modes>>13) & 0x7, modes, m68k->pc);
8114            break;
8115      }
8116
8012      m68881_mmu_ops(m68k);
81178013   }
81188014   else
81198015   {
src/emu/cpu/m68000/m68kcpu.c
r6428r6429
55#if 0
66static const char copyright_notice[] =
77"MUSASHI\n"
8"Version 4.5 (2009-10-09)\n"
8"Version 4.55 (2009-10-31)\n"
99"A portable Motorola M680x0 processor emulation engine.\n"
1010"Copyright Karl Stenerud.  All rights reserved.\n"
1111"\n"
r6428r6429
4242
4343extern void m68040_fpu_op0(m68ki_cpu_core *m68k);
4444extern void m68040_fpu_op1(m68ki_cpu_core *m68k);
45extern void m68881_mmu_ops(m68ki_cpu_core *m68k);
4546
4647/* ======================================================================== */
4748/* ================================= DATA ================================= */
r6428r6429
17201721}
17211722
17221723/****************************************************************************
1723 * M680EC30 section
1724 * M68EC040 section
17241725 ****************************************************************************/
17251726
17261727static CPU_INIT( m68ec040 )
r6428r6429
17631764}
17641765
17651766/****************************************************************************
1767 * M68LC040 section
1768 ****************************************************************************/
1769
1770static CPU_INIT( m68lc040 )
1771{
1772   m68ki_cpu_core *m68k = get_safe_token(device);
1773
1774   CPU_INIT_CALL(m68k);
1775
1776   m68k->cpu_type         = CPU_TYPE_LC040;
1777   m68k->state.subtypemask = m68k->cpu_type;
1778   m68k->dasm_type        = M68K_CPU_TYPE_68LC040;
1779   m68k->memory           = interface_d32;
1780   m68k->sr_mask          = 0xf71f; /* T1 T0 S  M  -- I2 I1 I0 -- -- -- X  N  Z  V  C  */
1781   m68k->cyc_instruction  = m68ki_cycles[4];
1782   m68k->cyc_exception    = m68ki_exception_cycle_table[4];
1783   m68k->cyc_bcc_notake_b = -2;
1784   m68k->cyc_bcc_notake_w = 0;
1785   m68k->cyc_dbcc_f_noexp = 0;
1786   m68k->cyc_dbcc_f_exp   = 4;
1787   m68k->cyc_scc_r_true   = 0;
1788   m68k->cyc_movem_w      = 2;
1789   m68k->cyc_movem_l      = 2;
1790   m68k->cyc_shift        = 0;
1791   m68k->cyc_reset        = 518;
1792   m68k->has_pmmu          = 1;
1793}
1794
1795CPU_GET_INFO( m68lc040 )
1796{
1797   switch (state)
1798   {
1799      /* --- the following bits of info are returned as pointers to data or functions --- */
1800      case CPUINFO_FCT_INIT:         info->init = CPU_INIT_NAME(m68lc040);               break;
1801
1802      /* --- the following bits of info are returned as NULL-terminated strings --- */
1803      case DEVINFO_STR_NAME:                     strcpy(info->s, "68LC040");            break;
1804
1805      default:                              CPU_GET_INFO_CALL(m68040);            break;
1806   }
1807}
1808
1809/****************************************************************************
17661810 * SCC-68070 section
17671811 ****************************************************************************/
17681812
src/emu/cpu/cpu.mak
r6428r6429
976976
977977# rule to ensure we build the header before building the core CPU file
978978$(CPUOBJ)/m68000/m68kcpu.o:    $(CPUOBJ)/m68000/m68kops.c \
979                        $(CPUSRC)/m68000/m68kcpu.h
979                        $(CPUSRC)/m68000/m68kcpu.h $(CPUSRC)/m68000/m68kfpu.c $(CPUSRC)/m68000/m68kmmu.h
980980
981981
982982
r6428r6429
992992
993993$(CPUOBJ)/dsp56k/dsp56k.o:   $(CPUSRC)/dsp56k/dsp56k.c \
994994                     $(CPUSRC)/dsp56k/dsp56ops.c \
995                     $(CPUSRC)/dsp56k/dsp56mem.c \
996                     $(CPUSRC)/dsp56k/dsp56pcu.c \
995997                     $(CPUSRC)/dsp56k/dsp56k.h
996998
997999
src/emu/cpu/x86log.c
r6428r6429
7474***************************************************************************/
7575
7676static void reset_log(x86log_context *log);
77extern int i386_dasm_one(char *buffer, UINT64 eip, const UINT8 *oprom, int mode);
77extern int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode);
7878
7979
8080
r6428r6429
237237      else
238238      {
239239#ifdef PTR64
240         bytes = i386_dasm_one(buffer, (FPTR)cur, cur, 64) & DASMFLAG_LENGTHMASK;
240         bytes = i386_dasm_one_ex(buffer, (FPTR)cur, cur, 64) & DASMFLAG_LENGTHMASK;
241241#else
242         bytes = i386_dasm_one(buffer, (FPTR)cur, cur, 32) & DASMFLAG_LENGTHMASK;
242         bytes = i386_dasm_one_ex(buffer, (FPTR)cur, cur, 32) & DASMFLAG_LENGTHMASK;
243243#endif
244244      }
245245
src/emu/cpu/dsp56k/dsp56ops.c
r6428r6429
28652865   /* HACK */
28662866    if (lValue >= 0xfff0)
28672867   {
2868      logerror("Dsp56k : DO_2 operation changed %04x to 0000.\n", lValue);
28682869      lValue = 0x0000;
2869      logerror("Dsp56k : DO_2 operation changed %04x to 0000.\n", lValue);
28702870   }
28712871
28722872   /* TODO: Fix for special cased SP S */
src/emu/cpu/dsp56k/dsp56pcu.c
r6428r6429
9090/***************************************************************************
9191    INITIALIZATION AND RESET
9292***************************************************************************/
93static void pcu_init(dsp56k_core* cpustate)
93static void pcu_init(dsp56k_core* cpustate, const device_config *device)
9494{
95   // Init the irq table
95   /* Init the irq table */
9696   dsp56k_irq_table_init();
97
98   /* save states - dsp56k_pcu members */
99   state_save_register_device_item(device, 0, cpustate->PCU.pc);
100   state_save_register_device_item(device, 0, cpustate->PCU.la);
101   state_save_register_device_item(device, 0, cpustate->PCU.lc);
102   state_save_register_device_item(device, 0, cpustate->PCU.sr);
103   state_save_register_device_item(device, 0, cpustate->PCU.omr);
104   state_save_register_device_item(device, 0, cpustate->PCU.sp);
105   state_save_register_device_item_array(device, 0, cpustate->PCU.ss);
106   state_save_register_device_item_array(device, 0, cpustate->PCU.pending_interrupts);
107   state_save_register_device_item(device, 0, cpustate->PCU.reset_vector);
97108}
98109
99110static void pcu_reset(dsp56k_core* cpustate)
100111{
101112   int i;
102113
103   // When reset is deasserted, set MA, MB, and MC from MODA, MODB, and MODC lines.
114   /* When reset is deasserted, set MA, MB, and MC from MODA, MODB, and MODC lines. */
104115   MA_bit_set(cpustate, cpustate->modA_state);
105116   MB_bit_set(cpustate, cpustate->modB_state);
106117   MC_bit_set(cpustate, cpustate->modC_state);
107118
108   // Reset based on the operating mode.
119   /* Reset based on the operating mode. */
109120   switch(dsp56k_operating_mode(cpustate))
110121   {
111122      case 0x00:
112123         logerror("Dsp56k in Special Bootstrap Mode 1\n");
113124
114         // HACK - We don't need to put the bootstrap mode on here since
115         //        we'll simulate it entirely in this function
125         /* HACK - We don't need to put the bootstrap mode on here since */
126         /*        we'll simulate it entirely in this function */
116127         cpustate->bootstrap_mode = BOOTSTRAP_OFF;
117128
118         // HACK - Simply copy over 0x1000 bytes of data located at program memory 0xc000.
119         //        This, in actuality, is handled with the internal boot ROM.
129         /* HACK - Simply copy over 0x1000 bytes of data located at program memory 0xc000. */
130         /*        This, in actuality, is handled with the internal boot ROM. */
120131         for (i = 0; i < 0x800; i++)
121132         {
122133            UINT32 mem_offset = (0xc000<<1) + (i<<1);   /* TODO: TEST */
123134
124            // TODO - DO I HAVE TO FLIP THIS WORD?
125            // P:$c000 -> Internal P:$0000 low byte
126            // P:$c001 -> Internal P:$0000 high byte
127            // ...
128            // P:$cffe -> Internal P:$07ff low byte
129            // P:$cfff -> Internal P:$07ff high byte
135            /* TODO - DO I HAVE TO FLIP THIS WORD? */
136            /* P:$c000 -> Internal P:$0000 low byte */
137            /* P:$c001 -> Internal P:$0000 high byte */
138            /* ... */
139            /* P:$cffe -> Internal P:$07ff low byte */
140            /* P:$cfff -> Internal P:$07ff high byte */
130141            UINT8 mem_value_low  = memory_read_byte_16le(cpustate->program, mem_offset);      /* TODO: IS THIS READING RIGHT? */
131142            UINT8 mem_value_high = memory_read_byte_16be(cpustate->program, mem_offset);
132143            dsp56k_program_ram[i] = (mem_value_high << 8) || mem_value_low;
133144         }
134145
135         // HACK - Set the PC to 0x0000 as per the boot ROM.
146         /* HACK - Set the PC to 0x0000 as per the boot ROM. */
136147         PC = 0x0000;
137148
138         // HACK - All done!  Set the Operating Mode to 2 as per the boot ROM.
149         /* HACK - All done!  Set the Operating Mode to 2 as per the boot ROM. */
139150         MB_bit_set(cpustate, 1);
140151         MA_bit_set(cpustate, 0);
141152         cpustate->PCU.reset_vector = 0xe000;
r6428r6429
144155      case 0x01:
145156         logerror("Dsp56k in Special Bootstrap Mode 2\n");
146157
147         // HACK - Turn bootstrap mode on.  This hijacks the CPU execute loop and lets
148         //        Either the host interface or the SSIO interface suck in all the data
149         //        they need.  Once they've had their fill, they turn bootstrap mode off
150         //        and the CPU begins execution at 0x0000;
151         // HACK - Read bit 15 at 0xc000 to see if we're working with the SSIO or host interface.
158         /* HACK - Turn bootstrap mode on.  This hijacks the CPU execute loop and lets */
159         /*        Either the host interface or the SSIO interface suck in all the data */
160         /*        they need.  Once they've had their fill, they turn bootstrap mode off */
161         /*        and the CPU begins execution at 0x0000; */
162         /* HACK - Read bit 15 at 0xc000 to see if we're working with the SSIO or host interface. */
152163         if (memory_read_word_16le(cpustate->program, 0xc000<<1) & 0x8000)
153164         {
154165            cpustate->bootstrap_mode = BOOTSTRAP_SSIX;
r6428r6429
160171            logerror("DSP56k : Currently in (hacked) bootstrap mode - reading from Host Interface.\n");
161172         }
162173
163         // HACK - Set the PC to 0x0000 as per the boot ROM.
174         /* HACK - Set the PC to 0x0000 as per the boot ROM. */
164175         PC = 0x0000;
165176
166         // HACK - Not done yet, but set the Operating Mode to 2 in preparation.
177         /* HACK - Not done yet, but set the Operating Mode to 2 in preparation. */
167178         MB_bit_set(cpustate, 1);
168179         MA_bit_set(cpustate, 0);
169180         cpustate->PCU.reset_vector = 0xe000;
r6428r6429
177188
178189      case 0x03:
179190         logerror("Dsp56k in Development Expanded Mode\n");
180         // TODO: Disable internal ROM, etc.  Likely a tricky thing for MAME?
191         /* TODO: Disable internal ROM, etc.  Likely a tricky thing for MAME? */
181192         PC = 0x0000;
182193         cpustate->PCU.reset_vector = 0x0000;
183194         break;
184195   }
185196
186   // Set registers properly
187   // 1-17 Clear Interrupt Priority Register (IPR)
197   /* Set registers properly */
198   /* 1-17 Clear Interrupt Priority Register (IPR) */
188199   IPR = 0x0000;
189200
190   // FM.5-4
201   /* FM.5-4 */
191202   I_bits_set(cpustate, 0x03);
192203   S_bits_set(cpustate, 0);
193204   L_bit_set(cpustate, 0);
194205   S_bit_set(cpustate, 0);
195206   FV_bit_set(cpustate, 0);
196207
197   // FM.7-25
208   /* FM.7-25 */
198209   E_bit_set(cpustate, 0);
199210   U_bit_set(cpustate, 0);
200211   N_bit_set(cpustate, 0);
201212   V_bit_set(cpustate, 0);
202213   Z_bit_set(cpustate, 0);
203214
204   // FM.5-4+
215   /* FM.5-4+ */
205216   C_bit_set(cpustate, 0);
206217   LF_bit_set(cpustate, 0);
207218   SP = 0x0000;
208219
209   // FM.5-14 (OMR)
220   /* FM.5-14 (OMR) */
210221   SA_bit_set(cpustate, 0);
211222   R_bit_set(cpustate, 0);
212223   SD_bit_set(cpustate, 0);
213224   CD_bit_set(cpustate, 0);
214225
215   // Clear out the pending interrupt list
226   /* Clear out the pending interrupt list */
216227   dsp56k_clear_pending_interrupts(cpustate);
217228}
218229
r6428r6429
227238
228239static dsp56k_irq_data dsp56k_interrupt_sources[32];
229240
230// TODO: Figure out how to switch on level versus edge-triggered.
241/* TODO: Figure out how to switch on level versus edge-triggered. */
231242static void pcu_service_interrupts(dsp56k_core* cpustate)
232243{
233244   int i;
234245
235   // Count list of pending interrupts
246   /* Count list of pending interrupts */
236247   int num_servicable = dsp56k_count_pending_interrupts(cpustate);
237248
238249   if (num_servicable == 0)
239250      return;
240251
241   // Sort list according to priority
252   /* Sort list according to priority */
242253   dsp56k_sort_pending_interrupts(cpustate, num_servicable);
243254
244   // Service each interrupt in order
245   // TODO: This just *can't* be right :)
255   /* Service each interrupt in order */
256   /* TODO: This just *can't* be right :) */
246257   for (i = 0; i < num_servicable; i++)
247258   {
248259      const int interrupt_index = cpustate->PCU.pending_interrupts[i];
249260
250      // Get the priority of the interrupt - a return value of -1 means disabled!
261      /* Get the priority of the interrupt - a return value of -1 means disabled! */
251262      INT8 priority = dsp56k_get_irq_priority(cpustate, interrupt_index);
252263
253      // 1-12 Make sure you're not masked out against the Interrupt Mask Bits (disabled is handled for free here)
264      /* 1-12 Make sure you're not masked out against the Interrupt Mask Bits (disabled is handled for free here) */
254265      if (priority >= I_bits(cpustate))
255266      {
256         // TODO: Implement long interrupts & fast interrupts correctly!
257         //       Right now they are handled in the JSR & BSR ops.  SupahLame.
267         /* TODO: Implement long interrupts & fast interrupts correctly! */
268         /*       Right now they are handled in the JSR & BSR ops.  SupahLame. */
258269         cpustate->ppc = PC;
259270
260         // Are you anything but the Host Command interrupt?
271         /* Are you anything but the Host Command interrupt? */
261272         if (interrupt_index != 22)
262273         {
263            // Execute a normal interrupt
274            /* Execute a normal interrupt */
264275            PC = dsp56k_interrupt_sources[interrupt_index].irq_vector;
265276         }
266277         else
267278         {
268            // The host command input has a floating vector.
279            /* The host command input has a floating vector. */
269280            const UINT16 irq_vector = HV_bits(cpustate) << 1;
270281
271282            PC = irq_vector;
272283
273            // TODO: 5-9 5-11 Gotta' Clear HC (HCP gets it too) when taking this exception!
284            /* TODO: 5-9 5-11 Gotta' Clear HC (HCP gets it too) when taking this exception! */
274285            HC_bit_set(cpustate, 0);
275286         }
276287      }
r6428r6429
306317/* Construct a table containing pertient IRQ information */
307318static void dsp56k_irq_table_init(void)
308319{
309   // 1-14 + 1-18
310   // TODO: Cull host command stuff appropriately
320   /* 1-14 + 1-18 */
321   /* TODO: Cull host command stuff appropriately */
311322   /* array index . vector . token */
312323   dsp56k_set_irq_source(0,  0x0000, "Hardware RESET");
313324   dsp56k_set_irq_source(1,  0x0002, "Illegal Instruction");
r6428r6429
370381{
371382   int i, j;
372383
373   // We're going to be sorting the priorities
384   /* We're going to be sorting the priorities */
374385   int priority_list[32];
375386   for (i = 0; i < num; i++)
376387   {
377388      priority_list[i] = dsp56k_get_irq_priority(cpustate, cpustate->PCU.pending_interrupts[i]);
378389   }
379390
380   // Bubble sort should be good enough for us
391   /* Bubble sort should be good enough for us */
381392   for (i = 0; i < num; i++)
382393   {
383394       for(j = 0; j < num-1; j++)
r6428r6429
386397         {
387398            int holder;
388399
389            // Swap priorities
400            /* Swap priorities */
390401            holder = priority_list[j+1];
391402            priority_list[j+1] = priority_list[j];
392403            priority_list[j] = holder;
393404
394            // Swap irq indices.
405            /* Swap irq indices. */
395406            holder = cpustate->PCU.pending_interrupts[j+1];
396407            cpustate->PCU.pending_interrupts[j+1] = cpustate->PCU.pending_interrupts[j];
397408            cpustate->PCU.pending_interrupts[j] = holder;
r6428r6429
399410      }
400411   }
401412
402   // TODO: 1-17 Now sort each of the priority levels within their categories.
413   /* TODO: 1-17 Now sort each of the priority levels within their categories. */
403414}
404415
405416/* Given an index into the irq table, return the interrupt's current priority */
406417static INT8 dsp56k_get_irq_priority(dsp56k_core* cpustate, int index)
407418{
408   // 1-12
419   /* 1-12 */
409420   switch (index)
410421   {
411      // Non-maskable
412      case 0:  return 3; // Hardware RESET
413      case 1:  return 3; // Illegal Instruction
414      case 2:  return 3; // Stack Error
415      case 3:  return 3; // Reserved
416      case 4:  return 3; // SWI
422      /* Non-maskable */
423      case 0:  return 3; /* Hardware RESET */
424      case 1:  return 3; /* Illegal Instruction */
425      case 2:  return 3; /* Stack Error */
426      case 3:  return 3; /* Reserved */
427      case 4:  return 3; /* SWI */
417428
418      // Poll the IPR for these guys.
419      case 5:  return irqa_ipl(cpustate);  // IRQA
420      case 6:  return irqb_ipl(cpustate);  // IRQB
421      case 7:  return -1;                // Reserved
422      case 8:  return ssi0_ipl(cpustate);  // SSI0 Receive Data with Exception
423      case 9:  return ssi0_ipl(cpustate);  // SSI0 Receive Data
424      case 10: return ssi0_ipl(cpustate);  // SSI0 Transmit Data with Exception
425      case 11: return ssi0_ipl(cpustate);  // SSI0 Transmit Data
426      case 12: return ssi1_ipl(cpustate);  // SSI1 Receive Data with Exception
427      case 13: return ssi1_ipl(cpustate);  // SSI1 Receive Data
428      case 14: return ssi1_ipl(cpustate);  // SSI1 Transmit Data with Exception
429      case 15: return ssi1_ipl(cpustate);  // SSI1 Transmit Data
430      case 16: return tm_ipl(cpustate);    // Timer Overflow
431      case 17: return tm_ipl(cpustate);    // Timer Compare
432      case 18: return host_ipl(cpustate);  // Host DMA Receive Data
433      case 19: return host_ipl(cpustate);  // Host DMA Transmit Data
434      case 20: return host_ipl(cpustate);  // Host Receive Data
435      case 21: return host_ipl(cpustate);  // Host Transmit Data
436      case 22: return host_ipl(cpustate);  // Host Command 0 (Default)
437      case 23: return codec_ipl(cpustate); // Codec Receive/Transmit
438      case 24: return host_ipl(cpustate);  // Host Command 1              // TODO: Are all host ipl's the same?
439      case 25: return host_ipl(cpustate);  // Host Command 2
440      case 26: return host_ipl(cpustate);  // Host Command 3
441      case 27: return host_ipl(cpustate);  // Host Command 4
442      case 28: return host_ipl(cpustate);  // Host Command 5
443      case 29: return host_ipl(cpustate);  // Host Command 6
444      case 30: return host_ipl(cpustate);  // Host Command 7
445      case 31: return host_ipl(cpustate);  // Host Command 8
429      /* Poll the IPR for these guys. */
430      case 5:  return irqa_ipl(cpustate);  /* IRQA */
431      case 6:  return irqb_ipl(cpustate);  /* IRQB */
432      case 7:  return -1;                /* Reserved */
433      case 8:  return ssi0_ipl(cpustate);  /* SSI0 Receive Data with Exception */
434      case 9:  return ssi0_ipl(cpustate);  /* SSI0 Receive Data */
435      case 10: return ssi0_ipl(cpustate);  /* SSI0 Transmit Data with Exception */
436      case 11: return ssi0_ipl(cpustate);  /* SSI0 Transmit Data */
437      case 12: return ssi1_ipl(cpustate);  /* SSI1 Receive Data with Exception */
438      case 13: return ssi1_ipl(cpustate);  /* SSI1 Receive Data */
439      case 14: return ssi1_ipl(cpustate);  /* SSI1 Transmit Data with Exception */
440      case 15: return ssi1_ipl(cpustate);  /* SSI1 Transmit Data */
441      case 16: return tm_ipl(cpustate);    /* Timer Overflow */
442      case 17: return tm_ipl(cpustate);    /* Timer Compare */
443      case 18: return host_ipl(cpustate);  /* Host DMA Receive Data */
444      case 19: return host_ipl(cpustate);  /* Host DMA Transmit Data */
445      case 20: return host_ipl(cpustate);  /* Host Receive Data */
446      case 21: return host_ipl(cpustate);  /* Host Transmit Data */
447      case 22: return host_ipl(cpustate);  /* Host Command 0 (Default) */
448      case 23: return codec_ipl(cpustate); /* Codec Receive/Transmit */
449      case 24: return host_ipl(cpustate);  /* Host Command 1              // TODO: Are all host ipl's the same? */
450      case 25: return host_ipl(cpustate);  /* Host Command 2 */
451      case 26: return host_ipl(cpustate);  /* Host Command 3 */
452      case 27: return host_ipl(cpustate);  /* Host Command 4 */
453      case 28: return host_ipl(cpustate);  /* Host Command 5 */
454      case 29: return host_ipl(cpustate);  /* Host Command 6 */
455      case 30: return host_ipl(cpustate);  /* Host Command 7 */
456      case 31: return host_ipl(cpustate);  /* Host Command 8 */
446457
447458      default: break;
448459   }
src/emu/cpu/dsp56k/dsp56k.c
r6428r6429
5151/***************************************************************************
5252    COMPONENT FUNCTIONALITY
5353***************************************************************************/
54// 1-9 ALU
54/* 1-9 ALU */
5555// #include "dsp56alu.c"
5656
57// 1-10 Address Generation Unit (AGU)
57/* 1-10 Address Generation Unit (AGU) */
5858// #include "dsp56agu.c"
5959
60// 1-11 Program Control Unit (PCU)
60/* 1-11 Program Control Unit (PCU) */
6161#include "dsp56pcu.c"
6262
63// 5-1 Host Interface (HI)
63/* 5-1 Host Interface (HI) */
6464//#include "dsp56hi.c"
6565
66// 4-8 Memory handlers for on-chip peripheral memory.
66/* 4-8 Memory handlers for on-chip peripheral memory. */
6767#include "dsp56mem.c"
6868
6969
r6428r6429
154154         break;
155155   }
156156
157   // If the reset line isn't asserted, service interrupts
157   /* If the reset line isn't asserted, service interrupts */
158158   // TODO: Is it right to immediately service interrupts?
159159   //if (cpustate->reset_state != TRUE)
160160   //  pcu_service_interrupts();
r6428r6429
164164/***************************************************************************
165165    INITIALIZATION AND SHUTDOWN
166166***************************************************************************/
167static void agu_init(dsp56k_core* cpustate, const device_config *device)
168{
169   /* save states - dsp56k_agu members */
170   state_save_register_device_item(device, 0, cpustate->AGU.r0);
171   state_save_register_device_item(device, 0, cpustate->AGU.r1);
172   state_save_register_device_item(device, 0, cpustate->AGU.r2);
173   state_save_register_device_item(device, 0, cpustate->AGU.r3);
174   state_save_register_device_item(device, 0, cpustate->AGU.n0);
175   state_save_register_device_item(device, 0, cpustate->AGU.n1);
176   state_save_register_device_item(device, 0, cpustate->AGU.n2);
177   state_save_register_device_item(device, 0, cpustate->AGU.n3);
178   state_save_register_device_item(device, 0, cpustate->AGU.m0);
179   state_save_register_device_item(device, 0, cpustate->AGU.m1);
180   state_save_register_device_item(device, 0, cpustate->AGU.m2);
181   state_save_register_device_item(device, 0, cpustate->AGU.m3);
182   state_save_register_device_item(device, 0, cpustate->AGU.temp);
183}
184
185static void alu_init(dsp56k_core* cpustate, const device_config *device)
186{
187   /* save states - dsp56k_alu members */
188   state_save_register_device_item(device, 0, cpustate->ALU.x);
189   state_save_register_device_item(device, 0, cpustate->ALU.y);
190   state_save_register_device_item(device, 0, cpustate->ALU.a);
191   state_save_register_device_item(device, 0, cpustate->ALU.b);
192}
193
167194static CPU_INIT( dsp56k )
168195{
169196   dsp56k_core* cpustate = get_safe_token(device);
170197
171   // Call specific module inits
172   pcu_init(cpustate);
173   // agu_init(cpustate);
174   // alu_init(cpustate);
198   /* Call specific module inits */
199   pcu_init(cpustate, device);
200   agu_init(cpustate, device);
201   alu_init(cpustate, device);
175202
176   // HACK - You're not in bootstrap mode upon bootup
203   /* HACK - You're not in bootstrap mode upon bootup */
177204   cpustate->bootstrap_mode = BOOTSTRAP_OFF;
178205
179   // Clear the irq states
206   /* Clear the irq states */
180207   cpustate->modA_state = FALSE;
181208   cpustate->modB_state = FALSE;
182209   cpustate->modC_state = FALSE;
183210   cpustate->reset_state = FALSE;
184211
185   /* Save the core's state */
186   // state_save_register_device_item(device, 0, modA_state);
187   // ...
212   /* save states - dsp56k_core members */
213   state_save_register_device_item(device, 0, cpustate->modA_state);
214   state_save_register_device_item(device, 0, cpustate->modB_state);
215   state_save_register_device_item(device, 0, cpustate->modC_state);
216   state_save_register_device_item(device, 0, cpustate->reset_state);
217   state_save_register_device_item(device, 0, cpustate->bootstrap_mode);
218   state_save_register_device_item(device, 0, cpustate->repFlag);
219   state_save_register_device_item(device, 0, cpustate->repAddr);
220   state_save_register_device_item(device, 0, cpustate->icount);
221   state_save_register_device_item(device, 0, cpustate->ppc);
222   state_save_register_device_item(device, 0, cpustate->op);
223   state_save_register_device_item(device, 0, cpustate->interrupt_cycles);
188224
225   /* save states - dsp56k_host_interface members */
226   state_save_register_device_item(device, 0, cpustate->HI.icr);
227   state_save_register_device_item(device, 0, cpustate->HI.cvr);
228   state_save_register_device_item(device, 0, cpustate->HI.isr);
229   state_save_register_device_item(device, 0, cpustate->HI.ivr);
230   state_save_register_device_item(device, 0, cpustate->HI.trxh);
231   state_save_register_device_item(device, 0, cpustate->HI.trxl);
232   state_save_register_device_item(device, 0, cpustate->HI.bootstrap_offset);
233
189234   //cpustate->config = device->static_config;
190235   //cpustate->irq_callback = irqcallback;
191236   cpustate->device = device;
r6428r6429
197242   memory_set_direct_update_handler(cpustate->program, dsp56k_direct_handler);
198243}
199244
245
246/***************************************************************************
247    RESET BEHAVIOR
248***************************************************************************/
200249static void agu_reset(dsp56k_core* cpustate)
201250{
202   // FM.4-3
251   /* FM.4-3 */
203252   R0 = 0x0000;
204253   R1 = 0x0000;
205254   R2 = 0x0000;
r6428r6429
263312/***************************************************************************
264313    CORE EXECUTION LOOP
265314***************************************************************************/
266
267315static CPU_EXECUTE( dsp56k )
268316{
269317   dsp56k_core* cpustate = get_safe_token(device);
r6428r6429
272320   if (cpustate->reset_state)
273321      return cycles;
274322
275   // HACK - if you're in bootstrap mode, simply pretend you ate up all your cycles waiting for data.
323   /* HACK - if you're in bootstrap mode, simply pretend you ate up all your cycles waiting for data. */
276324   if (cpustate->bootstrap_mode != BOOTSTRAP_OFF)
277325      return cycles;
278326
r6428r6429
304352 *  Internal Memory Maps
305353 ****************************************************************************/
306354static ADDRESS_MAP_START( dsp56156_program_map, ADDRESS_SPACE_PROGRAM, 16 )
307   AM_RANGE(0x0000,0x07ff) AM_RAM AM_BASE(&dsp56k_program_ram)   // 1-5
308//  AM_RANGE(0x2f00,0x2fff) AM_ROM                              // 1-5 PROM reserved memory.  Is this the right spot for it?
355   AM_RANGE(0x0000,0x07ff) AM_RAM AM_BASE(&dsp56k_program_ram)   /* 1-5 */
356//  AM_RANGE(0x2f00,0x2fff) AM_ROM                              /* 1-5 PROM reserved memory.  Is this the right spot for it? */
309357ADDRESS_MAP_END
310358
311359static ADDRESS_MAP_START( dsp56156_x_data_map, ADDRESS_SPACE_DATA, 16 )
312   AM_RANGE(0x0000,0x07ff) AM_RAM                        // 1-5
313   AM_RANGE(0xffc0,0xffff) AM_READWRITE(peripheral_register_r, peripheral_register_w) AM_BASE(&dsp56k_peripheral_ram)   // 1-5 On-chip peripheral registers memory mapped in data space
360   AM_RANGE(0x0000,0x07ff) AM_RAM                        /* 1-5 */
361   AM_RANGE(0xffc0,0xffff) AM_READWRITE(peripheral_register_r, peripheral_register_w) AM_BASE(&dsp56k_peripheral_ram)   /* 1-5 On-chip peripheral registers memory mapped in data space */
314362ADDRESS_MAP_END
315363
316364
317365/**************************************************************************
318366 * Generic set_info/get_info
319367 **************************************************************************/
320
321368static CPU_SET_INFO( dsp56k )
322369{
323370   dsp56k_core* cpustate = get_safe_token(device);
r6428r6429
344391      case CPUINFO_INT_REGISTER + DSP56K_X:         X   = info->i & 0xffffffff;            break;
345392      case CPUINFO_INT_REGISTER + DSP56K_Y:         Y   = info->i & 0xffffffff;            break;
346393
347      case CPUINFO_INT_REGISTER + DSP56K_A:         A   = info->i & (UINT64)U64(0xffffffffffffffff); break;   // could benefit from a better mask?
348      case CPUINFO_INT_REGISTER + DSP56K_B:         B   = info->i & (UINT64)U64(0xffffffffffffffff); break;   // could benefit from a better mask?
394      case CPUINFO_INT_REGISTER + DSP56K_A:         A   = info->i & (UINT64)U64(0xffffffffffffffff); break;   /* could benefit from a better mask? */
395      case CPUINFO_INT_REGISTER + DSP56K_B:         B   = info->i & (UINT64)U64(0xffffffffffffffff); break;   /* could benefit from a better mask? */
349396
350397      case CPUINFO_INT_REGISTER + DSP56K_R0:         R0  = info->i & 0xffff;               break;
351398      case CPUINFO_INT_REGISTER + DSP56K_R1:         R1  = info->i & 0xffff;               break;
r6428r6429
392439
393440   switch (state)
394441   {
395      // --- the following bits of info are returned as 64-bit signed integers ---
442      /* --- the following bits of info are returned as 64-bit signed integers --- */
396443      case CPUINFO_INT_CONTEXT_SIZE:               info->i = sizeof(dsp56k_core);         break;
397444      case CPUINFO_INT_INPUT_LINES:               info->i = 4;                     break;
398445      case CPUINFO_INT_DEFAULT_IRQ_VECTOR:         info->i = 0x0000;                  break;
r6428r6429
404451      case CPUINFO_INT_MIN_CYCLES:               info->i = 1;                     break;   // ?
405452      case CPUINFO_INT_MAX_CYCLES:               info->i = 8;                     break;   // ?
406453
407      case CPUINFO_INT_DATABUS_WIDTH_PROGRAM:         info->i = 16;                     break;   // 1-5
408      case CPUINFO_INT_ADDRBUS_WIDTH_PROGRAM:       info->i = 16;                     break;   // 1-5
454      case CPUINFO_INT_DATABUS_WIDTH_PROGRAM:         info->i = 16;                     break;   /* 1-5 */
455      case CPUINFO_INT_ADDRBUS_WIDTH_PROGRAM:       info->i = 16;                     break;   /* 1-5 */
409456      case CPUINFO_INT_ADDRBUS_SHIFT_PROGRAM:       info->i = -1;                     break;
410457      case CPUINFO_INT_DATABUS_WIDTH_DATA:         info->i = 16;                     break;
411458      case CPUINFO_INT_ADDRBUS_WIDTH_DATA:          info->i = 16;                     break;
r6428r6429
455502      /*  case CPUINFO_INT_REGISTER + DSP56K_TEMP:    info->i = TEMP;                         break;  */
456503      /*  case CPUINFO_INT_REGISTER + DSP56K_STATUS:  info->i = STATUS;                       break;  */
457504
458      // The CPU stack
505      /* The CPU stack */
459506      case CPUINFO_INT_REGISTER + DSP56K_ST0:         info->i = ST0;                     break;
460507      case CPUINFO_INT_REGISTER + DSP56K_ST1:         info->i = ST1;                     break;
461508      case CPUINFO_INT_REGISTER + DSP56K_ST2:         info->i = ST2;                     break;
r6428r6429
473520      case CPUINFO_INT_REGISTER + DSP56K_ST14:      info->i = ST14;                     break;
474521      case CPUINFO_INT_REGISTER + DSP56K_ST15:      info->i = ST15;                     break;
475522
476      // --- the following bits of info are returned as pointers to data or functions ---
523      /* --- the following bits of info are returned as pointers to data or functions --- */
477524      case CPUINFO_FCT_SET_INFO:                  info->setinfo = CPU_SET_INFO_NAME(dsp56k); break;
478525      case CPUINFO_FCT_INIT:                     info->init = CPU_INIT_NAME(dsp56k);      break;
479526      case CPUINFO_FCT_RESET:                     info->reset = CPU_RESET_NAME(dsp56k);   break;
r6428r6429
492539       case CPUINFO_PTR_INTERNAL_MEMORY_MAP_PROGRAM:
493540          info->internal_map16 = ADDRESS_MAP_NAME(dsp56156_program_map);                  break;
494541
495      // --- the following bits of info are returned as NULL-terminated strings ---
542      /* --- the following bits of info are returned as NULL-terminated strings --- */
496543      case DEVINFO_STR_NAME:                     strcpy(info->s, "DSP56156");         break;
497544      case DEVINFO_STR_FAMILY:                  strcpy(info->s, "Motorola DSP56156");   break;
498545      case DEVINFO_STR_VERSION:                  strcpy(info->s, "0.1");               break;
r6428r6429
550597      /*  case CPUINFO_STR_REGISTER + DSP56K_TEMP:    sprintf(info->s, "TMP: %04x", TEMP);    break;  */
551598      /*  case CPUINFO_STR_REGISTER + DSP56K_STATUS:  sprintf(info->s, "STS: %02x", STATUS);  break;  */
552599
553      // The CPU stack
600      /* The CPU stack */
554601      case CPUINFO_STR_REGISTER + DSP56K_ST0:         sprintf(info->s, "ST0 : %08x", ST0);   break;
555602      case CPUINFO_STR_REGISTER + DSP56K_ST1:         sprintf(info->s, "ST1 : %08x", ST1);   break;
556603      case CPUINFO_STR_REGISTER + DSP56K_ST2:         sprintf(info->s, "ST2 : %08x", ST2);   break;
src/emu/cpu/i386/i386dasm.c
r6428r6429
21152115   sprintf(s, "???");
21162116}
21172117
2118static int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode)
2118int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode)
21192119{
21202120   UINT8 op;
21212121
src/emu/cpu/i386/i386op16.c
r6428r6429
11441144   UINT8 x;
11451145   UINT16 frameptr;
11461146   PUSH16(cpustate,REG16(BP));
1147   
1147
11481148   if(!STACK_32BIT)
11491149      frameptr = REG16(SP);
11501150   else
11511151      frameptr = REG32(ESP);
1152   
1152
11531153   if(level > 0)
11541154   {
11551155      for(x=1;x<level-1;x++)
src/emu/cpu/i386/i386op32.c
r6428r6429
10091009      frameptr = REG16(SP);
10101010   else
10111011      frameptr = REG32(ESP);
1012   
1012
10131013   if(level > 0)
10141014   {
10151015      for(x=1;x<level-1;x++)
src/emu/cpu/powerpc/ppcdrc.c
r6428r6429
12571257   UML_MOV(block, MEM(&ppc->param0), IREG(0));                                    // mov     [param0],i0
12581258   UML_MOV(block, MEM(&ppc->param1), IMM(TRANSLATE_FETCH));                        // mov     [param1],TRANSLATE_FETCH
12591259   UML_CALLC(block, ppccom_tlb_fill, ppc);                                       // callc   tlbfill,ppc
1260   UML_SHR(block, IREG(1), IREG(0), IMM(12));                                    // shr     i1,i0,11
1260   UML_SHR(block, IREG(1), IREG(0), IMM(12));                                    // shr     i1,i0,12
12611261   UML_LOAD(block, IREG(1), (void *)vtlb_table(ppc->vtlb), IREG(1), DWORD);            // load    i1,[vtlb],i1,dword
12621262   UML_TEST(block, IREG(1), IMM(VTLB_FETCH_ALLOWED));                              // test    i1,VTLB_FETCH_ALLOWED
12631263   UML_JMPc(block, IF_Z, isi = label++);                                       // jmp     isi,z
src/emu/cpu/powerpc/ppccom.c
r6428r6429
522522   /* if we're simulating the 603 MMU, fill in the data and stop here */
523523   if (ppc->cap & PPCCAP_603_MMU)
524524   {
525      UINT32 entry = vtlb_table(ppc->vtlb)[*address >> 12];
525526      ppc->mmu603_cmp = 0x80000000 | ((segreg & 0xffffff) << 7) | (0 << 6) | ((*address >> 22) & 0x3f);
526527      ppc->mmu603_hash[0] = hashbase | ((hash << 6) & hashmask);
527528      ppc->mmu603_hash[1] = hashbase | ((~hash << 6) & hashmask);
529      if ((entry & (VTLB_FLAG_FIXED | VTLB_FLAG_VALID)) == (VTLB_FLAG_FIXED | VTLB_FLAG_VALID))
530      {
531         *address = (entry & 0xfffff000) | (*address & 0x00000fff);
532         return 0x001;
533      }
528534      return DSISR_NOT_FOUND | ((transtype == TRANSLATE_WRITE) ? DSISR_STORE : 0);
529535   }
530536
src/emu/cpu/tms32010/32010dsm.c
r6428r6429
255255   }
256256   if (op == -1)
257257   {
258      sprintf(buffer, "dw   $%04X (invalid op)", code);
258      sprintf(buffer, "dw   %04Xh *(invalid op)", code);
259259      return cnt | DASMFLAG_SUPPORTED;
260260   }
261261   buffertmp = buffer;
r6428r6429
313313         cp++;
314314         switch (*cp++)
315315         {
316            case 'A': sprintf(num,"$%02X",a); break;
317            case 'B': sprintf(num,"$%04X",b); break;
316            case 'A': sprintf(num,"%02Xh",a); break; // was $%02X
317            case 'B': sprintf(num,"%04Xh",b); break; // was $%04X
318318            case 'D': sprintf(num,"%02Xh",d); break;
319319            case 'K': sprintf(num,"%d",k); break;
320320            case 'N': sprintf(num,"%s",nextar[n]); break;
src/emu/cpu/sm8500/sm8500.c
r6428r6429
159159         if ( cpustate->IFLAGS & ( 1 << irqline ) ) {
160160            cpustate->halted = 0;
161161            switch( irqline ) {
162            case WDT_INT:
162            case ILL_INT:
163163               sm8500_do_interrupt( cpustate, 0x101C );
164164               break;
165            case ILL_INT:
165            case WDT_INT:
166166               sm8500_do_interrupt( cpustate, 0x101E );
167167               break;
168168            case NMI_INT:
src/emu/cpu/drcumlsh.h
r6428r6429
121121#define UML_ROLAND(block, dst, src, shift, mask)         do { drcuml_block_append_4(block, DRCUML_OP_ROLAND,  4, IF_ALWAYS,  dst, src, shift, mask); } while (0)
122122#define UML_ROLINS(block, dst, src, shift, mask)         do { drcuml_block_append_4(block, DRCUML_OP_ROLINS,  4, IF_ALWAYS,  dst, src, shift, mask); } while (0)
123123#define UML_ADD(block, dst, src1, src2)                  do { drcuml_block_append_3(block, DRCUML_OP_ADD,     4, IF_ALWAYS,  dst, src1, src2); } while (0)
124#define UML_ADDc(block, cond, dst, src1, src2)            do { drcuml_block_append_3(block, DRCUML_OP_ADD,     4, cond,       dst, src1, src2); } while (0)
125124#define UML_ADDC(block, dst, src1, src2)               do { drcuml_block_append_3(block, DRCUML_OP_ADDC,    4, IF_ALWAYS,  dst, src1, src2); } while (0)
126125#define UML_SUB(block, dst, src1, src2)                  do { drcuml_block_append_3(block, DRCUML_OP_SUB,     4, IF_ALWAYS,  dst, src1, src2); } while (0)
127126#define UML_SUBB(block, dst, src1, src2)               do { drcuml_block_append_3(block, DRCUML_OP_SUBB,    4, IF_ALWAYS,  dst, src1, src2); } while (0)
src/emu/cpu/mips/mips3com.h
r6428r6429
204204   UINT64         count_zero_time;
205205   UINT32         compare_armed;
206206   emu_timer *      compare_int_timer;
207   
207
208208   /* derived info based on flavor */
209209   UINT32         pfnmask;
210210   UINT8         tlbentries;
src/emu/cpu/mips/mips3drc.c
r6428r6429
11251125   drcuml_state *drcuml = mips3->impstate->drcuml;
11261126   UINT32 offset = 0x180;
11271127   drcuml_codelabel next = 1;
1128   drcuml_codelabel skip = 2;
11281129   drcuml_block *block;
11291130   jmp_buf errorbuf;
11301131
r6428r6429
11471148   UML_HANDLE(block, *exception_handle);                                 // handle  name
11481149
11491150   /* exception parameter is expected to be the fault address in this case */
1150   if (exception == EXCEPTION_TLBLOAD || exception == EXCEPTION_TLBSTORE || exception == EXCEPTION_ADDRLOAD || exception == EXCEPTION_ADDRSTORE)
1151   if (exception == EXCEPTION_TLBLOAD || exception == EXCEPTION_TLBSTORE || exception == EXCEPTION_TLBMOD || exception == EXCEPTION_ADDRLOAD || exception == EXCEPTION_ADDRSTORE)
11511152   {
11521153      /* set BadVAddr to the fault address */
11531154      UML_GETEXP(block, IREG(0));                                       // getexp  i0
r6428r6429
12031204   /* choose our target PC */
12041205   UML_ADD(block, IREG(0), IREG(3), IMM(0xbfc00200));                        // add     i0,i3,0xbfc00200
12051206   UML_TEST(block, IREG(1), IMM(SR_BEV));                                 // test    i1,SR_BEV
1206   UML_ADDc(block, IF_Z, IREG(0), IREG(3), IMM(0x80000000));                  // add     i0,i3,0x80000000,z
1207   UML_JMPc(block, IF_NZ, skip);                                       // jnz     <skip>
1208   UML_ADD(block, IREG(0), IREG(3), IMM(0x80000000));                        // add     i0,i3,0x80000000,z
1209   UML_LABEL(block, skip);                                          // <skip>:
12071210
12081211   /* adjust cycles */
12091212   UML_SUB(block, MEM(&mips3->icount), MEM(&mips3->icount), IREG(1));             // sub icount,icount,cycles,S
src/emu/cpu/mips/mips3com.c
r6428r6429
8686   mips->icache_size = config->icache;
8787   mips->dcache_size = config->dcache;
8888   mips->system_clock = config->system_clock;
89   
89
9090   /* configure flavor-specific parameters */
9191   mips->pfnmask = 0x00ffffff;
9292   mips->tlbentries = MIPS3_MAX_TLB_ENTRIES;
93   
93
9494   /* VR4300 and VR5432 have 4 fewer PFN bits, and only 32 TLB entries */
9595   if (flavor == MIPS3_TYPE_VR4300)
9696   {
src/emu/cpu/cp1610/cp1610.c
r6428r6429
35123512         sprintf(info->s, "%c%c%c%c",
35133513            cpustate->flags & 0x80 ? 'S':'.',
35143514            cpustate->flags & 0x40 ? 'Z':'.',
3515            cpustate->flags & 0x20 ? 'V':'.',
3515            cpustate->flags & 0x10 ? 'V':'.',
35163516            cpustate->flags & 0x10 ? 'C':'.');
35173517         break;
35183518   case CPUINFO_STR_REGISTER+CP1610_R0: sprintf(info->s, "R0:%04X", cpustate->r[0]); break;
src/emu/cpu/cp1610/1610dasm.c
r6428r6429
44
55CPU_DISASSEMBLE( cp1610 )
66{
7   UINT16 oprom16[4]={ (oprom[0]<<8)|oprom[1], (oprom[2]<<8)|oprom[3], (oprom[4]<<8)|oprom[5], (oprom[6]<<8)|oprom[7] };
8   UINT16 op = oprom16[0];
7   UINT16 op = oprom[0];
98   UINT16 subop;
109   UINT16 ea, ea1, ea2;
1110   unsigned size = 1;
r6428r6429
1918        sprintf(buffer, "HLT");
2019      break;
2120   case 0x001: /* 0 000 000 001 */
22      subop = oprom16[1];
21      subop = oprom[1];
2322      switch (subop & 0x3f8)
2423      {
2524         case 0x280: /* 1 010 000 xxx */
r6428r6429
3332            size += 1;
3433            break;
3534         case 0x2b8: /* 1 010 111 xxx */
36            ea1 = oprom16[2];
37            ea2 = oprom16[3];
35            ea1 = oprom[2];
36            ea2 = oprom[3];
3837            ea = ((ea2&0xff)<<8) | (ea1&0xff);
3938            sprintf(buffer,"MVII #%04X, R%01d",ea,subop&7);
4039            size += 3;
r6428r6429
5049            size += 1;
5150            break;
5251         case 0x2f8: /* 1 011 111 xxx */
53            ea1 = oprom16[2];
54            ea2 = oprom16[3];
52            ea1 = oprom[2];
53            ea2 = oprom[3];
5554            ea = ((ea2&0xff)<<8) | (ea1&0xff);
5655            sprintf(buffer,"ADDI #%04X, R%01d",ea,subop&7);
5756            size += 3;
r6428r6429
6766            size += 1;
6867            break;
6968         case 0x338: /* 1 100 111 xxx */
70            ea1 = oprom16[2];
71            ea2 = oprom16[3];
69            ea1 = oprom[2];
70            ea2 = oprom[3];
7271            ea = ((ea2&0xff)<<8) | (ea1&0xff);
7372            sprintf(buffer,"SUBI #%04X, R%01d",ea,subop&7);
7473            size += 3;
r6428r6429
8483            size += 1;
8584            break;
8685         case 0x378: /* 1 101 111 xxx */
87            ea1 = oprom16[2];
88            ea2 = oprom16[3];
86            ea1 = oprom[2];
87            ea2 = oprom[3];
8988            ea = ((ea2&0xff)<<8) | (ea1&0xff);
9089            sprintf(buffer,"CMPI #%04X, R%01d",ea,subop&7);
9190            size += 3;
r6428r6429
101100            size += 1;
102101            break;
103102         case 0x3b8: /* 1 110 111 xxx */
104            ea1 = oprom16[2];
105            ea2 = oprom16[3];
103            ea1 = oprom[2];
104            ea2 = oprom[3];
106105            ea = ((ea2&0xff)<<8) | (ea1&0xff);
107106            sprintf(buffer,"ANDI #%04X, R%01d",ea,subop&7);
108107            size += 3;
r6428r6429
118117            size += 1;
119118            break;
120119         case 0x3f8: /* 1 111 111 xxx */
121            ea1 = oprom16[2];
122            ea2 = oprom16[3];
120            ea1 = oprom[2];
121            ea2 = oprom[3];
123122            ea = ((ea2&0xff)<<8) | (ea1&0xff);
124123            sprintf(buffer,"XORI #%04X, R%01d",ea,subop&7);
125124            size += 3;
r6428r6429
137136      break;
138137   case 0x004: /* 0 000 000 100 */
139138      size += 2;
140      ea1 = oprom16[1];
141      ea2 = oprom16[2];
139      ea1 = oprom[1];
140      ea2 = oprom[2];
142141      ea = ((ea1<<8)&0xfc00) + (ea2&0x3ff);
143142      if ((ea1&0x300) == 0x300)
144143      {
r6428r6429
762761      break;
763762   case 0x200: /* 1 000 000 000 */
764763      size += 1;
765      ea = oprom16[1];
764      ea = oprom[1];
766765      sprintf(buffer, "B    %04X",pc+2+ea);
767766      break;
768767   case 0x201: /* 1 000 000 001 */
769768      size += 1;
770      ea = oprom16[1];
769      ea = oprom[1];
771770      sprintf(buffer, "BC   %04X",pc+2+ea);
772771      break;
773772   case 0x202: /* 1 000 000 010 */
774773      size += 1;
775      ea = oprom16[1];
774      ea = oprom[1];
776775      sprintf(buffer, "BOV  %04X",pc+2+ea);
777776      break;
778777   case 0x203: /* 1 000 000 011 */
779778      size += 1;
780      ea = oprom16[1];
779      ea = oprom[1];
781780      sprintf(buffer, "BPL  %04X",pc+2+ea);
782781      break;
783782   case 0x204: /* 1 000 000 100 */
784783      size += 1;
785      ea = oprom16[1];
784      ea = oprom[1];
786785      sprintf(buffer, "BZE  %04X",pc+2+ea);
787786      break;
788787   case 0x205: /* 1 000 000 101 */
789788      size += 1;
790      ea = oprom16[1];
789      ea = oprom[1];
791790      sprintf(buffer, "BLT  %04X",pc+2+ea);
792791      break;
793792   case 0x206: /* 1 000 000 110 */
794793      size += 1;
795      ea = oprom16[1];
794      ea = oprom[1];
796795      sprintf(buffer, "BLE  %04X",pc+2+ea);
797796      break;
798797   case 0x207: /* 1 000 000 111 */
799798      size += 1;
800      ea = oprom16[1];
799      ea = oprom[1];
801800      sprintf(buffer, "BUSC %04X",pc+2+ea);
802801      break;
803802   case 0x208: /* 1 000 001 000 */
804803      size += 1;
805      ea = oprom16[1];
804      ea = oprom[1];
806805      sprintf(buffer, "NOPP %04X",pc+2+ea);
807806      break;
808807   case 0x209: /* 1 000 001 001 */
809808      size += 1;
810      ea = oprom16[1];
809      ea = oprom[1];
811810      sprintf(buffer, "BNC  %04X",pc+2+ea);
812811      break;
813812   case 0x20a: /* 1 000 001 010 */
814813      size += 1;
815      ea = oprom16[1];
814      ea = oprom[1];
816815      sprintf(buffer, "BNOV %04X",pc+2+ea);
817816      break;
818817   case 0x20b: /* 1 000 001 011 */
819818      size += 1;
820      ea = oprom16[1];
819      ea = oprom[1];
821820      sprintf(buffer, "BMI  %04X",pc+2+ea);
822821      break;
823822   case 0x20c: /* 1 000 001 100 */
824823      size += 1;
825      ea = oprom16[1];
824      ea = oprom[1];
826825      sprintf(buffer, "BNZE %04X",pc+2+ea);
827826      break;
828827   case 0x20d: /* 1 000 001 101 */
829828      size += 1;
830      ea = oprom16[1];
829      ea = oprom[1];
831830      sprintf(buffer, "BGE  %04X",pc+2+ea);
832831      break;
833832   case 0x20e: /* 1 000 001 110 */
834833      size += 1;
835      ea = oprom16[1];
834      ea = oprom[1];
836835      sprintf(buffer, "BGT  %04X",pc+2+ea);
837836      break;
838837   case 0x20f: /* 1 000 001 111 */
839838      size += 1;
840      ea = oprom16[1];
839      ea = oprom[1];
841840      sprintf(buffer, "BESC %04X",pc+2+ea);
842841      break;
843842   case 0x210: /* 1 000 010 000 */
r6428r6429
857856   case 0x21e: /* 1 000 011 110 */
858857   case 0x21f: /* 1 000 011 111 */
859858      size += 1;
860      ea = oprom16[1];
859      ea = oprom[1];
861860      sprintf(buffer, "BEXT %04X,%01X",pc+2+ea,op&0x0f);
862861      break;
863862   case 0x220: /* 1 000 100 000 */
864863      size += 1;
865      ea = oprom16[1];
864      ea = oprom[1];
866865      sprintf(buffer, "B    %04X",pc+1-ea);
867866      break;
868867   case 0x221: /* 1 000 100 001 */
869868      size += 1;
870      ea = oprom16[1];
869      ea = oprom[1];
871870      sprintf(buffer, "BC   %04X",pc+1-ea);
872871      break;
873872   case 0x222: /* 1 000 100 010 */
874873      size += 1;
875      ea = oprom16[1];
874      ea = oprom[1];
876875      sprintf(buffer, "BOV  %04X",pc+1-ea);
877876      break;
878877   case 0x223: /* 1 000 100 011 */
879878      size += 1;
880      ea = oprom16[1];
879      ea = oprom[1];
881880      sprintf(buffer, "BPL  %04X",pc+1-ea);
882881      break;
883882   case 0x224: /* 1 000 100 100 */
884883      size += 1;
885      ea = oprom16[1];
884      ea = oprom[1];
886885      sprintf(buffer, "BZE  %04X",pc+1-ea);
887886      break;
888887   case 0x225: /* 1 000 100 101 */
889888      size += 1;
890      ea = oprom16[1];
889      ea = oprom[1];
891890      sprintf(buffer, "BLT  %04X",pc+1-ea);
892891      break;
893892   case 0x226: /* 1 000 100 110 */
894893      size += 1;
895      ea = oprom16[1];
894      ea = oprom[1];
896895      sprintf(buffer, "BLE  %04X",pc+1-ea);
897896      break;
898897   case 0x227: /* 1 000 100 111 */
899898      size += 1;
900      ea = oprom16[1];
899      ea = oprom[1];
901900      sprintf(buffer, "BUSC %04X",pc+1-ea);
902901      break;
903902   case 0x228: /* 1 000 101 000 */
904903      size += 1;
905      ea = oprom16[1];
904      ea = oprom[1];
906905      sprintf(buffer, "NOPP %04X",pc+1-ea);
907906      break;
908907   case 0x229: /* 1 000 101 001 */
909908      size += 1;
910      ea = oprom16[1];
909      ea = oprom[1];
911910      sprintf(buffer, "BNC  %04X",pc+1-ea);
912911      break;
913912   case 0x22a: /* 1 000 101 010 */
914913      size += 1;
915      ea = oprom16[1];
914      ea = oprom[1];
916915      sprintf(buffer, "BNOV %04X",pc+1-ea);
917916      break;
918917   case 0x22b: /* 1 000 101 011 */
919918      size += 1;
920      ea = oprom16[1];
919      ea = oprom[1];
921920      sprintf(buffer, "BMI  %04X",pc+1-ea);
922921      break;
923922   case 0x22c: /* 1 000 101 100 */
924923      size += 1;
925      ea = oprom16[1];
924      ea = oprom[1];
926925      sprintf(buffer, "BNZE %04X",pc+1-ea);
927926      break;
928927   case 0x22d: /* 1 000 101 101 */
929928      size += 1;
930      ea = oprom16[1];
929      ea = oprom[1];
931930      sprintf(buffer, "BGE  %04X",pc+1-ea);
932931      break;
933932   case 0x22e: /* 1 000 101 110 */
934933      size += 1;
935      ea = oprom16[1];
934      ea = oprom[1];
936935      sprintf(buffer, "BGT  %04X",pc+1-ea);
937936      break;
938937   case 0x22f: /* 1 000 101 111 */
939938      size += 1;
940      ea = oprom16[1];
939      ea = oprom[1];
941940      sprintf(buffer, "BESC %04X",pc+1-ea);
942941      break;
943942   case 0x230: /* 1 000 110 000 */
r6428r6429
957956   case 0x23e: /* 1 000 111 110 */
958957   case 0x23f: /* 1 000 111 111 */
959958      size += 1;
960      ea = oprom16[1];
959      ea = oprom[1];
961960      sprintf(buffer, "BEXT %04X,%01X",pc+1-ea,op&0x0f);
962961      break;
963962   case 0x240: /* 1 001 000 000 */
r6428r6429
969968   case 0x246: /* 1 001 000 110 */
970969   case 0x247: /* 1 001 000 111 */
971970      size += 1;
972      ea = oprom16[1];
971      ea = oprom[1];
973972      sprintf(buffer, "MVO  R%01d,(%04X)",op&0x7,ea);
974973      break;
975974   case 0x248: /* 1 001 001 000 */
r6428r6429
10441043   case 0x286: /* 1 010 000 110 */
10451044   case 0x287: /* 1 010 000 111 */
10461045      size += 1;
1047      ea = oprom16[1];
1046      ea = oprom[1];
10481047      sprintf(buffer, "MVI  (%04X),R%01d",ea,op&0x7);
10491048      break;
10501049   case 0x288: /* 1 010 001 000 */
r6428r6429
11081107   case 0x2be: /* 1 010 111 110 */
11091108   case 0x2bf: /* 1 010 111 111 */
11101109      size += 1;
1111      ea = oprom16[1];
1110      ea = oprom[1];
11121111      sprintf(buffer, "MVII #%04X,R%01d",ea,op&0x7);
11131112      break;
11141113   case 0x2c0: /* 1 011 010 000 */
r6428r6429
11201119   case 0x2c6: /* 1 011 010 110 */
11211120   case 0x2c7: /* 1 011 010 111 */
11221121      size += 1;
1123      ea = oprom16[1];
1122      ea = oprom[1];
11241123      sprintf(buffer, "ADD  (%04X),R%01d",ea,op&0x7);
11251124      break;
11261125   case 0x2c8: /* 1 011 001 000 */
r6428r6429
11821181   case 0x2fe: /* 1 011 111 110 */
11831182   case 0x2ff: /* 1 011 111 111 */
11841183      size += 1;
1185      ea = oprom16[1];
1184      ea = oprom[1];
11861185      sprintf(buffer, "ADDI #%04X,R%01d",ea,op&0x7);
11871186      break;
11881187   case 0x300: /* 1 100 000 000 */
r6428r6429
11941193   case 0x306: /* 1 100 000 110 */
11951194   case 0x307: /* 1 100 000 111 */
11961195      size += 1;
1197      ea = oprom16[1];
1196      ea = oprom[1];
11981197      sprintf(buffer, "SUB  (%04X),R%01d",ea,op&0x7);
11991198      break;
12001199   case 0x308: /* 1 100 001 000 */
r6428r6429
12561255   case 0x33e: /* 1 100 111 110 */
12571256   case 0x33f: /* 1 100 111 111 */
12581257      size += 1;
1259      ea = oprom16[1];
1258      ea = oprom[1];
12601259      sprintf(buffer, "SUBI #%04X,R%01d",ea,op&0x7);
12611260      break;
12621261   case 0x340: /* 1 101 000 000 */
r6428r6429
12681267   case 0x346: /* 1 101 000 110 */
12691268   case 0x347: /* 1 101 000 111 */
12701269      size += 1;
1271      ea = oprom16[1];
1270      ea = oprom[1];
12721271      sprintf(buffer, "CMP  (%04X),R%01d",ea,op&0x7);
12731272      break;
12741273   case 0x348: /* 1 101 001 000 */
r6428r6429
13301329   case 0x37e: /* 1 101 111 110 */
13311330   case 0x37f: /* 1 101 111 111 */
13321331      size += 1;
1333      ea = oprom16[1];
1332      ea = oprom[1];
13341333      sprintf(buffer, "CMPI #%04X,R%01d",ea,op&0x7);
13351334      break;
13361335   case 0x380: /* 1 110 000 000 */
r6428r6429
13421341   case 0x386: /* 1 110 000 110 */
13431342   case 0x387: /* 1 110 000 111 */
13441343      size += 1;
1345      ea = oprom16[1];
1344      ea = oprom[1];
13461345      sprintf(buffer, "AND  (%04X),R%01d",ea,op&0x7);
13471346      break;
13481347   case 0x388: /* 1 110 001 000 */
r6428r6429
14041403   case 0x3be: /* 1 110 111 110 */
14051404   case 0x3bf: /* 1 110 111 111 */
14061405      size += 1;
1407      ea = oprom16[1];
1406      ea = oprom[1];
14081407      sprintf(buffer, "ANDI #%04X,R%01d",ea,op&0x7);
14091408      break;
14101409   case 0x3c0: /* 1 111 000 000 */
r6428r6429
14161415   case 0x3c6: /* 1 111 000 110 */
14171416   case 0x3c7: /* 1 111 000 111 */
14181417      size += 1;
1419      ea = oprom16[1];
1418      ea = oprom[1];
14201419      sprintf(buffer, "XOR  (%04X),R%01d",ea,op&0x7);
14211420      break;
14221421   case 0x3c8: /* 1 111 001 000 */
r6428r6429
14781477   case 0x3fe: /* 1 111 111 110 */
14791478   case 0x3ff: /* 1 111 111 111 */
14801479      size += 1;
1481      ea = oprom16[1];
1480      ea = oprom[1];
14821481      sprintf(buffer, "XORI #%04X,R%01d",ea,op&0x7);
14831482      break;
14841483   default:
src/emu/memory.c
r6428r6429
197197   UINT8 *               data;               /* pointer to the data for this block */
198198};
199199
200/* a bank is a global pointer to memory that can be shared across devices and changed dynamically */
200/* a bank reference is an entry in a list of address spaces that reference a given bank */
201201typedef struct _bank_reference bank_reference;
202202struct _bank_reference
203203{
204   bank_reference *      next;
205   const address_space *   space;
204   bank_reference *      next;               /* link to the next reference */
205   const address_space *   space;               /* address space that references us */
206206};
207207
208/* a bank is a global pointer to memory that can be shared across devices and changed dynamically */
208209typedef struct _bank_data bank_info;
209210struct _bank_data
210211{
src/emu/machine/z80dma.h
r6428r6429
77
88****************************************************************************
99                            _____   _____
10               A5    1 |*    \_/     | 40  A6
11               A4   2 |             | 39  A7
12               A3    3 |             | 38  IEI
13               A2    4 |             | 37  _INT/_PULSE
14               A1   5 |             | 36  IEO
15               A0   6 |             | 35  D0
16               CLK   7 |             | 34  D1
17               _WR   8 |             | 33  D2
10                    A5   1 |*    \_/     | 40  A6
11                    A4   2 |             | 39  A7
12                    A3   3 |             | 38  IEI
13                    A2   4 |             | 37  _INT/_PULSE
14                    A1   5 |             | 36  IEO
15                    A0   6 |             | 35  D0
16                   CLK   7 |             | 34  D1
17                   _WR   8 |             | 33  D2
1818                   _RD   9 |             | 32  D3
19            _IORQ  10 |    Z8410    | 31  D4
19                 _IORQ  10 |    Z8410    | 31  D4
2020                   +5V  11 |             | 30  GND
2121                 _MREQ  12 |             | 29  D5
2222                  _BAO  13 |             | 28  D6
src/emu/machine/8257dma.h
r6428r6429
1616                  HLDA   7 |             | 34  A2
1717                 ADSTB   8 |             | 33  A1
1818                   AEN   9 |             | 32  A0
19               HRQ  10 |     8257    | 31  Vcc
19                   HRQ  10 |     8257    | 31  Vcc
2020                   _CS  11 |             | 30  D0
2121                   CLK  12 |             | 29  D1
2222                 RESET  13 |             | 28  D2
src/emu/machine/eepromdev.c
r6428r6429
1212#define SERIAL_BUFFER_LENGTH 40
1313#define MEMORY_SIZE 1024
1414
15/* FIXME: many drivers do not need default_data / default_data_size and put them to 0 in the drivers seems a waste of code */
16UINT8 *eeprom_empty_default_data = NULL;
17
1518typedef struct _eeprom_state eeprom_state;
1619struct _eeprom_state
1720{
r6428r6429
276279   return res;
277280}
278281
279/*CUSTOM_INPUT( eeprom_bit_r )
282CUSTOM_INPUT( eepromdev_bit_r )
280283{
281    return eeprom_read_bit();
282}*/
284   const char *devtag = (const char *)param;
285   const device_config *eeprom = devtag_get_device(field->port->machine, devtag);
283286
287   /* we test if the device is indeed an eeprom when calling this device handler */
288   return eepromdev_read_bit(eeprom);
289}
290
284291void eepromdev_set_cs_line(const device_config *device, int state)
285292{
286293   eeprom_state *c = get_safe_token(device);
src/emu/machine/eepromdev.h
r6428r6429
5353   MDRV_DEVICE_CONFIG_DATAPTR(eeprom_config, default_data, &_data) \
5454   MDRV_DEVICE_CONFIG_DATA32(eeprom_config, default_data_size, _size)
5555
56/* FIXME: many drivers do not need default_data / default_data_size and put them to 0 in the drivers seems a waste of code */
57extern UINT8 *eeprom_empty_default_data;
5658
59#define MDRV_EEPROM_NODEFAULT_ADD(_tag, _interface) \
60   MDRV_EEPROM_ADD(_tag, _interface, 0, eeprom_empty_default_data)
61
5762void eepromdev_write_bit( const device_config *device, int bit );
5863int eepromdev_read_bit( const device_config *device );
59//CUSTOM_INPUT( eeprom_bit_r );
64CUSTOM_INPUT( eepromdev_bit_r );
6065void eepromdev_set_cs_line( const device_config *device, int state );
6166void eepromdev_set_clock_line( const device_config *device, int state );
6267
src/emu/machine/8237dma.c
r6428r6429
214214static void set_dack(i8237_t *i8237, int channel)
215215{
216216   int i;
217   
217
218218   for (i = 0; i < 4; i++)
219219   {
220220      int state = (i == channel) ^ !BIT(i8237->command, 7);
r6428r6429
603603WRITE_LINE_DEVICE_HANDLER( i8237_dreq2_w ) { dma8237_drq_write(device, 2, state); }
604604WRITE_LINE_DEVICE_HANDLER( i8237_dreq3_w ) { dma8237_drq_write(device, 3, state); }
605605
606WRITE_LINE_DEVICE_HANDLER( i8237_eop_w )
607{
608}
606609
610
607611/******************* Unfortunate hacks *******************/
608612
609613void i8237_run_transfer(const device_config *device, int channel)
src/emu/machine/8237dma.h
r6428r6429
1111                 _I/OW   2 |             | 39  A6
1212                 _MEMR   3 |             | 38  A5
1313                 _MEMW   4 |             | 37  A4
14                    5 |             | 36  _EOP
14                         5 |             | 36  _EOP
1515                 READY   6 |             | 35  A3
1616                  HLDA   7 |             | 34  A2
1717                 ADSTB   8 |             | 33  A1
1818                   AEN   9 |             | 32  A0
19               HRQ  10 |     8237    | 31  Vcc
19                   HRQ  10 |     8237    | 31  Vcc
2020                   _CS  11 |             | 30  DB0
2121                   CLK  12 |             | 29  DB1
2222                 RESET  13 |             | 28  DB2
r6428r6429
8888WRITE_LINE_DEVICE_HANDLER( i8237_dreq2_w );
8989WRITE_LINE_DEVICE_HANDLER( i8237_dreq3_w );
9090
91/* end of process */
92WRITE_LINE_DEVICE_HANDLER( i8237_eop_w );
93
9194DEVICE_GET_INFO( i8237 );
9295
9396/* unfortunate hack for the interim for PC HDC */
src/emu/sound/sn76496.c
r6428r6429
3535  different noise LFSR patttern: taps on bits A and E, output on E
3636  It uses a 15-bit ring buffer for periodic noise/arbitrary duty cycle.
3737  (all this chip's info needs to be verified)
38 
38
3939  28/03/2005 : Sebastien Chevalier
4040  Update th SN76496Write func, according to SN76489 doc found on SMSPower.
4141   - On write with 0x80 set to 0, when LastRegister is other then TONE,
r6428r6429
4848  28/04/2009 : Lord Nightmare
4949  Add READY line readback; cleaned up struct a bit. Cleaned up comments.
5050  Add more TODOs. Fixed some unsaved savestate related stuff.
51 
51
5252  04/11/2009 : Lord Nightmare
5353  Changed the way that the invert works (it now selects between XOR and XNOR
5454  for the taps), and added R->OldNoise to simulate the extra 0 that is always
5555  output before the noise LFSR contents are after an LFSR reset.
5656  This fixes SN76489/A to match chips. Added SN94624.
57 
57
5858  14/11/2009 : Lord Nightmare
5959  Removed STEP mess, vastly simplifying the code. Made output bipolar rather
6060  than always above the 0 line, but disabled that code due to pending issues.
61 
61
6262  16/11/2009 : Lord Nightmare
6363  Fix screeching in regulus: When summing together four equal channels, the
6464  size of the max amplitude per channel should be 1/4 of the max range, not
6565  1/3. Added NCR7496.
66 
66
6767  18/11/2009 : Lord Nightmare
6868  Modify Init functions to support negating the audio output. The gamegear
6969  psg does this. Change gamegear and sega psgs to use XOR rather than XNOR
r6428r6429
269269         R->Count[3] = R->Period[3];
270270      }
271271/* //bipolar output, doesn't seem to work right with sonic 2 on gamegear at least
272      out = (R->Output[0]?R->Volume[0]:(0-R->Volume[0]))
273         +(R->Output[1]?R->Volume[1]:(0-R->Volume[1]))
274         +(R->Output[2]?R->Volume[2]:(0-R->Volume[2]))
275         +(R->Output[3]?R->Volume[3]:(0-R->Volume[3]));
272        out = (R->Output[0]?R->Volume[0]:(0-R->Volume[0]))
273            +(R->Output[1]?R->Volume[1]:(0-R->Volume[1]))
274            +(R->Output[2]?R->Volume[2]:(0-R->Volume[2]))
275            +(R->Output[3]?R->Volume[3]:(0-R->Volume[3]));
276276*/
277277      if (R->Stereo)
278278      {
r6428r6429
280280            + (((R->StereoMask&0x20)&&R->Output[1])?R->Volume[1]:0)
281281            + (((R->StereoMask&0x40)&&R->Output[2])?R->Volume[2]:0)
282282            + (((R->StereoMask&0x80)&&R->Output[3])?R->Volume[3]:0);
283           
283
284284         out2 = (((R->StereoMask&0x1)&&R->Output[0])?R->Volume[0]:0)
285285            + (((R->StereoMask&0x2)&&R->Output[1])?R->Volume[1]:0)
286286            + (((R->StereoMask&0x4)&&R->Output[2])?R->Volume[2]:0)
src/emu/sound/ymf271.c
r6428r6429
160160
161161/* Notes about the LFO Frequency Table below;
162162
163    There appears to be at least 2 errors in the table from the original manual.
163    There are 2 known errors in the LFO table listed in the original manual.
164164
165    Both 201 & 202 where listed as 3.74490.  202 has be changed to 3.91513 which was computed based on formulas by OG & Nicola
166    232 was listed as 13.35547.  We use 14.35547 as this is the correct value based on the formula listed below:
165    Both 201 & 202 were listed as 3.74490.  202 has be corrected to 3.91513
166    232 was listed as 13.35547 but has been replaced with 14.35547.
167167
168  Corrections are computed values based on formulas by Olivier Galibert & Nicola Salmoria listed below:
169
168170LFO period seems easy to compute:
169171
170int lfo_period(int entry)
171{
172  int ma, ex;
172Olivier Galibert's version                       Nicola Salmoria's version
173
174int lfo_period(int entry)             or         int calc_lfo_period(int entry)
175{                                                {
176  int ma, ex;                                      entry = 256 - entry;
173177  entry = 256-entry;
174  ma = entry & 15;
175  ex = entry >> 4;
176  if(ex)
177    return (ma | 16) << (ex+6);
178  else
179    return ma << 7;
180}
178  ma = entry & 15;                                 if (entry < 16)
179                                                   {
180  ex = entry >> 4;                                    return (entry & 0x0f) << 7;
181  if(ex)                                           }
182    return (ma | 16) << (ex+6);                    else
183  else                                             {
184    return ma << 7;                                   int shift = 6 + (entry >> 4);
185}                                                     return (0x10 + (entry & 0x0f)) << shift;
186                                                   }
187lfo_freq = 44100 / lfo_period                    }
181188
182lfo_freq = 44100 / lfo_period
183
184189*/
185190
186191static const double LFO_frequency_table[256] =
src/emu/sound/tms5220.c
r6428r6429
293293   assert(device->token != NULL);
294294   assert(device->type == SOUND);
295295   assert(sound_get_type(device) == SOUND_TMS5220 ||
296         sound_get_type(device) == SOUND_TMS5220C ||
296297         sound_get_type(device) == SOUND_TMC0285 ||
297298         sound_get_type(device) == SOUND_TMS5200);
298299   return (tms5220_state *)device->token;
src/emu/validity.c
r6428r6429
205205      mame_printf_error("%s: %s has %s with 0-length tag\n", driver->source_file, driver->name, object);
206206      error = TRUE;
207207   }
208   if (strlen(begin) < MIN_TAG_LENGTH)
209   {
210      mame_printf_error("%s: %s has %s with tag '%s' < %d characters\n", driver->source_file, driver->name, object, tag, MIN_TAG_LENGTH);
211      error = TRUE;
212   }
208213   if (strlen(begin) > MAX_TAG_LENGTH)
209214   {
210215      mame_printf_error("%s: %s has %s with tag '%s' > %d characters\n", driver->source_file, driver->name, object, tag, MAX_TAG_LENGTH);
src/emu/mconfig.h
r6428r6429
2424    CONSTANTS
2525***************************************************************************/
2626
27/* by convention, tags should all lowercase and this length or less */
27/* by convention, tags should all lowercase and between 2-15 characters */
28#define MIN_TAG_LENGTH         2
2829#define MAX_TAG_LENGTH         15
2930
3031
src/emu/drivers/xtal.h
r6428r6429
8383   XTAL_10_730MHz      = 10730000,      /* Ruleta RE-900 VDP Clock */
8484   XTAL_10_733MHz      = 10733000,      /* The Fairyland Story */
8585   XTAL_10_738635MHz   = 10738635,      /* TMS9918 family */
86   XTAL_10_816MHz      = 10816000,      /* Universal 1979-1980 (Cosmic Alien, etc) */
8687   XTAL_11MHz         = 11000000,      /* Mario I8039 sound */
8788   XTAL_11_0592MHz     = 11059200,      /* Lethal Justice, Ruleta RE-900 */
8889   XTAL_11_2MHz        = 11200000,      /* New York, New York */
src/mess/mess.mak
r6428r6429
295295   $(MESSOBJ)/grundy.a \
296296   $(MESSOBJ)/hartung.a \
297297   $(MESSOBJ)/heathkit.a \
298   $(MESSOBJ)/hec2hrp.a \
298299   $(MESSOBJ)/hegener.a \
299300   $(MESSOBJ)/homebrew.a \
300301   $(MESSOBJ)/homelab.a \
301302   $(MESSOBJ)/hp.a \
302   $(MESSOBJ)/hec2hrp.a \
303   $(MESSOBJ)/interact.a \
304303   $(MESSOBJ)/intel.a \
305304   $(MESSOBJ)/intelgnt.a \
305   $(MESSOBJ)/interact.a \
306306   $(MESSOBJ)/interton.a \
307307   $(MESSOBJ)/intv.a \
308308   $(MESSOBJ)/jupiter.a \
docs/messnew.txt
r6428r6429
5353
5454Source Changes:
5555----------------
56- The core is based on MAME 0.135u1.  This incorporates all features of the
57  update to this core.  [MAME team]
58
5659- Cleanups (static qualifiers, headers, renames and more multisession
5760  friendly init code).  [Atari Ace]
5861

Previous 15994 Revisions Next


© 1998-2018 The MESS Team