| 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 |
| r6428 | r6429 | |
|---|---|---|
| 10 | 10 | #include "sound/dac.h" |
| 11 | 11 | #include "includes/n8080.h" |
| 12 | 12 | |
| 13 | static int n8080_hardware; | |
| 14 | ||
| 15 | static emu_timer* sound_timer[3]; | |
| 16 | ||
| 17 | static int helifire_dac_phase; | |
| 18 | ||
| 19 | 13 | static const double ATTACK_RATE = 10e-6 * 500; |
| 20 | 14 | static const double DECAY_RATE = 10e-6 * 16000; |
| 21 | 15 | |
| 22 | static double helifire_dac_volume; | |
| 23 | static double helifire_dac_timing; | |
| 24 | ||
| 25 | static UINT16 prev_sound_pins; | |
| 26 | static UINT16 curr_sound_pins; | |
| 27 | ||
| 28 | static int mono_flop[3]; | |
| 29 | ||
| 30 | ||
| 31 | ||
| 32 | 16 | static const sn76477_interface sheriff_sn76477_interface = |
| 33 | 17 | { |
| 34 | 18 | RES_K(36) , /* 04 */ |
| r6428 | r6429 | |
| 85 | 69 | }; |
| 86 | 70 | |
| 87 | 71 | |
| 88 | static void spacefev_update_SN76477_status(const device_config *sn) | |
| 72 | static void spacefev_update_SN76477_status( const device_config *sn ) | |
| 89 | 73 | { |
| 74 | n8080_state *state = (n8080_state *)sn->machine->driver_data; | |
| 90 | 75 | double dblR0 = RES_M(1.0); |
| 91 | 76 | double dblR1 = RES_M(1.5); |
| 92 | 77 | |
| 93 | if (!mono_flop[0]) | |
| 78 | if (!state->mono_flop[0]) | |
| 94 | 79 | { |
| 95 | 80 | dblR0 = 1 / (1 / RES_K(150) + 1 / dblR0); /* ? */ |
| 96 | 81 | } |
| 97 | if (!mono_flop[1]) | |
| 82 | if (!state->mono_flop[1]) | |
| 98 | 83 | { |
| 99 | 84 | dblR1 = 1 / (1 / RES_K(620) + 1 / dblR1); /* ? */ |
| 100 | 85 | } |
| r6428 | r6429 | |
| 104 | 89 | sn76477_vco_res_w(sn, dblR1); |
| 105 | 90 | |
| 106 | 91 | 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]); | |
| 110 | 95 | |
| 111 | sn76477_vco_w(sn, mono_flop[1]); | |
| 96 | sn76477_vco_w(sn, state->mono_flop[1]); | |
| 112 | 97 | |
| 113 | sn76477_mixer_b_w(sn, mono_flop[0]); | |
| 98 | sn76477_mixer_b_w(sn, state->mono_flop[0]); | |
| 114 | 99 | } |
| 115 | 100 | |
| 116 | 101 | |
| 117 | static void sheriff_update_SN76477_status(const device_config *sn) | |
| 102 | static void sheriff_update_SN76477_status( const device_config *sn ) | |
| 118 | 103 | { |
| 119 | if (mono_flop[1]) | |
| 104 | n8080_state *state = (n8080_state *)sn->machine->driver_data; | |
| 105 | if (state->mono_flop[1]) | |
| 120 | 106 | { |
| 121 | 107 | sn76477_vco_voltage_w(sn, 5); |
| 122 | 108 | } |
| r6428 | r6429 | |
| 126 | 112 | } |
| 127 | 113 | |
| 128 | 114 | sn76477_enable_w(sn, |
| 129 | !mono_flop[0] && | |
| 130 | !mono_flop[1]); | |
| 115 | !state->mono_flop[0] && | |
| 116 | !state->mono_flop[1]); | |
| 131 | 117 | |
| 132 | sn76477_vco_w(sn, mono_flop[0]); | |
| 118 | sn76477_vco_w(sn, state->mono_flop[0]); | |
| 133 | 119 | |
| 134 | sn76477_mixer_b_w(sn, !mono_flop[0]); | |
| 120 | sn76477_mixer_b_w(sn, !state->mono_flop[0]); | |
| 135 | 121 | } |
| 136 | 122 | |
| 137 | 123 | |
| 138 | static void update_SN76477_status(const device_config *device) | |
| 124 | static void update_SN76477_status( const device_config *device ) | |
| 139 | 125 | { |
| 140 | if (n8080_hardware == 1) | |
| 126 | n8080_state *state = (n8080_state *)device->machine->driver_data; | |
| 127 | if (state->n8080_hardware == 1) | |
| 141 | 128 | { |
| 142 | 129 | spacefev_update_SN76477_status(device); |
| 143 | 130 | } |
| 144 | if (n8080_hardware == 2) | |
| 131 | if (state->n8080_hardware == 2) | |
| 145 | 132 | { |
| 146 | 133 | sheriff_update_SN76477_status(device); |
| 147 | 134 | } |
| 148 | 135 | } |
| 149 | 136 | |
| 150 | 137 | |
| 151 | static void start_mono_flop(const device_config *sn, int n, attotime expire) | |
| 138 | static void start_mono_flop( const device_config *sn, int n, attotime expire ) | |
| 152 | 139 | { |
| 153 | mono_flop[n] = 1; | |
| 140 | n8080_state *state = (n8080_state *)sn->machine->driver_data; | |
| 141 | state->mono_flop[n] = 1; | |
| 154 | 142 | |
| 155 | 143 | update_SN76477_status(sn); |
| 156 | 144 | |
| 157 | timer_adjust_oneshot(sound_timer[n], expire, n); | |
| 145 | timer_adjust_oneshot(state->sound_timer[n], expire, n); | |
| 158 | 146 | } |
| 159 | 147 | |
| 160 | 148 | |
| 161 | static void stop_mono_flop(const device_config *sn, int n) | |
| 149 | static void stop_mono_flop( const device_config *sn, int n ) | |
| 162 | 150 | { |
| 163 | mono_flop[n] = 0; | |
| 151 | n8080_state *state = (n8080_state *)sn->machine->driver_data; | |
| 152 | state->mono_flop[n] = 0; | |
| 164 | 153 | |
| 165 | 154 | update_SN76477_status(sn); |
| 166 | 155 | |
| 167 | timer_adjust_oneshot(sound_timer[n], attotime_never, n); | |
| 156 | timer_adjust_oneshot(state->sound_timer[n], attotime_never, n); | |
| 168 | 157 | } |
| 169 | 158 | |
| 170 | 159 | |
| 171 | 160 | static TIMER_CALLBACK( stop_mono_flop_callback ) |
| 172 | 161 | { |
| 173 | stop_mono_flop(devtag_get_device(machine, "sn"), param); | |
| 162 | stop_mono_flop(devtag_get_device(machine, "snsnd"), param); | |
| 174 | 163 | } |
| 175 | 164 | |
| 176 | 165 | |
| 177 | static void spacefev_sound_pins_changed(running_machine *machine) | |
| 166 | static void spacefev_sound_pins_changed( running_machine *machine ) | |
| 178 | 167 | { |
| 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; | |
| 181 | 171 | |
| 182 | 172 | if (changes & (1 << 0x3)) |
| 183 | 173 | { |
| r6428 | r6429 | |
| 206 | 196 | } |
| 207 | 197 | |
| 208 | 198 | |
| 209 | static void sheriff_sound_pins_changed(running_machine *machine) | |
| 199 | static void sheriff_sound_pins_changed( running_machine *machine ) | |
| 210 | 200 | { |
| 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; | |
| 213 | 204 | |
| 214 | 205 | if (changes & (1 << 0x6)) |
| 215 | 206 | { |
| r6428 | r6429 | |
| 230 | 221 | } |
| 231 | 222 | |
| 232 | 223 | |
| 233 | static void helifire_sound_pins_changed(running_machine *machine) | |
| 224 | static void helifire_sound_pins_changed( running_machine *machine ) | |
| 234 | 225 | { |
| 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; | |
| 236 | 228 | |
| 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 */ | |
| 240 | 232 | |
| 241 | 233 | if (changes & (1 << 6)) |
| 242 | 234 | { |
| r6428 | r6429 | |
| 245 | 237 | } |
| 246 | 238 | |
| 247 | 239 | |
| 248 | static void sound_pins_changed(running_machine *machine) | |
| 240 | static void sound_pins_changed( running_machine *machine ) | |
| 249 | 241 | { |
| 250 | if (n8080_hardware == 1) | |
| 251 | { | |
| 242 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 243 | ||
| 244 | if (state->n8080_hardware == 1) | |
| 252 | 245 | spacefev_sound_pins_changed(machine); |
| 253 | } | |
| 254 | if (n8080_hardware == 2) | |
| 255 | { | |
| 246 | if (state->n8080_hardware == 2) | |
| 256 | 247 | sheriff_sound_pins_changed(machine); |
| 257 | } | |
| 258 | if (n8080_hardware == 3) | |
| 259 | { | |
| 248 | if (state->n8080_hardware == 3) | |
| 260 | 249 | helifire_sound_pins_changed(machine); |
| 261 | } | |
| 262 | 250 | |
| 263 | prev_sound_pins = curr_sound_pins; | |
| 251 | state->prev_sound_pins = state->curr_sound_pins; | |
| 264 | 252 | } |
| 265 | 253 | |
| 266 | 254 | |
| 267 | static void delayed_sound_1(running_machine *machine, int data) | |
| 255 | static void delayed_sound_1( running_machine *machine, int data ) | |
| 268 | 256 | { |
| 269 | stat | |
| 257 | n8080_state | |
| 270 | 258 | |
| 271 | curr_sound_pins &= ~( | |
| 259 | state->curr_sound_pins &= ~( | |
| 272 | 260 | (1 << 0x7) | |
| 273 | 261 | (1 << 0x5) | |
| 274 | 262 | (1 << 0x6) | |
| r6428 | r6429 | |
| 276 | 264 | (1 << 0x4) | |
| 277 | 265 | (1 << 0x1)); |
| 278 | 266 | |
| 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; | |
| 285 | 273 | |
| 286 | if (n8080_hardware == 1) | |
| 274 | if (state->n8080_hardware == 1) | |
| 287 | 275 | { |
| 288 | if (data & ~prev_data & 0x10) | |
| 276 | if (data & ~state->prev_snd_data & 0x10) | |
| 289 | 277 | { |
| 290 | 278 | spacefev_start_red_cannon(machine); |
| 291 | 279 | } |
| 292 | 280 | |
| 293 | spacefev_red_screen = data & 0x08; | |
| 281 | state->spacefev_red_screen = data & 0x08; | |
| 294 | 282 | } |
| 295 | 283 | |
| 296 | 284 | sound_pins_changed(machine); |
| 297 | 285 | |
| 298 | prev_data = data; | |
| 286 | state->prev_snd_data = data; | |
| 299 | 287 | } |
| 300 | 288 | |
| 301 | 289 | |
| r6428 | r6429 | |
| 305 | 293 | } |
| 306 | 294 | |
| 307 | 295 | |
| 308 | static void delayed_sound_2(running_machine *machine, int data) | |
| 296 | static void delayed_sound_2( running_machine *machine, int data ) | |
| 309 | 297 | { |
| 310 | curr_sound_pins &= ~( | |
| 298 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 299 | ||
| 300 | state->curr_sound_pins &= ~( | |
| 311 | 301 | (1 << 0x8) | |
| 312 | 302 | (1 << 0x9) | |
| 313 | (1 << 0xA) | | |
| 314 | (1 << 0xB) | | |
| 303 | (1 << 0xa) | | |
| 304 | (1 << 0xb) | | |
| 315 | 305 | (1 << 0x2) | |
| 316 | (1 << 0x | |
| 306 | (1 << 0xc)); | |
| 317 | 307 | |
| 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; | |
| 324 | 314 | |
| 325 | if (n8080_hardware == 1) | |
| 326 | { | |
| 315 | if (state->n8080_hardware == 1) | |
| 327 | 316 | 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; | |
| 333 | 319 | |
| 334 | 320 | sound_pins_changed(machine); |
| 335 | 321 | } |
| r6428 | r6429 | |
| 354 | 340 | |
| 355 | 341 | static READ8_HANDLER( n8080_8035_p1_r ) |
| 356 | 342 | { |
| 343 | n8080_state *state = (n8080_state *)space->machine->driver_data; | |
| 357 | 344 | UINT8 val = 0; |
| 358 | 345 | |
| 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; | |
| 367 | 354 | |
| 368 | 355 | return val; |
| 369 | 356 | } |
| r6428 | r6429 | |
| 371 | 358 | |
| 372 | 359 | static READ8_HANDLER( n8080_8035_t0_r ) |
| 373 | 360 | { |
| 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; | |
| 375 | 363 | } |
| 376 | 364 | static READ8_HANDLER( n8080_8035_t1_r ) |
| 377 | 365 | { |
| 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; | |
| 379 | 368 | } |
| 380 | 369 | |
| 381 | 370 | |
| 382 | 371 | static READ8_HANDLER( helifire_8035_t0_r ) |
| 383 | 372 | { |
| 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; | |
| 385 | 375 | } |
| 386 | 376 | static READ8_HANDLER( helifire_8035_t1_r ) |
| 387 | 377 | { |
| 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; | |
| 389 | 380 | } |
| 390 | 381 | |
| 391 | 382 | |
| 392 | 383 | static READ8_HANDLER( helifire_8035_external_ram_r ) |
| 393 | 384 | { |
| 385 | n8080_state *state = (n8080_state *)space->machine->driver_data; | |
| 394 | 386 | UINT8 val = 0; |
| 395 | 387 | |
| 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; | |
| 400 | 392 | |
| 401 | 393 | return val; |
| 402 | 394 | } |
| r6428 | r6429 | |
| 404 | 396 | |
| 405 | 397 | static READ8_HANDLER( helifire_8035_p2_r ) |
| 406 | 398 | { |
| 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 */ | |
| 408 | 401 | } |
| 409 | 402 | |
| 410 | 403 | |
| r6428 | r6429 | |
| 416 | 409 | |
| 417 | 410 | static WRITE8_HANDLER( helifire_dac_w ) |
| 418 | 411 | { |
| 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); | |
| 420 | 414 | } |
| 421 | 415 | |
| 422 | 416 | |
| 423 | 417 | static WRITE8_HANDLER( helifire_sound_ctrl_w ) |
| 424 | 418 | { |
| 425 | helifire_dac_phase = data & 0x80; | |
| 419 | n8080_state *state = (n8080_state *)space->machine->driver_data; | |
| 420 | state->helifire_dac_phase = data & 0x80; | |
| 426 | 421 | |
| 427 | 422 | /* data & 0x40 not emulated */ |
| 428 | 423 | /* data & 0x20 not emulated */ |
| 429 | 424 | |
| 430 | if (helifire_dac_phase) | |
| 425 | if (state->helifire_dac_phase) | |
| 431 | 426 | { |
| 432 | helifire_dac_timing = ATTACK_RATE * log(1 - helifire_dac_volume); | |
| 427 | state->helifire_dac_timing = ATTACK_RATE * log(1 - state->helifire_dac_volume); | |
| 433 | 428 | } |
| 434 | 429 | else |
| 435 | 430 | { |
| 436 | helifire_dac_timing = DECAY_RATE * log(helifire_dac_volume); | |
| 431 | state->helifire_dac_timing = DECAY_RATE * log(state->helifire_dac_volume); | |
| 437 | 432 | } |
| 438 | 433 | |
| 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)); | |
| 440 | 435 | } |
| 441 | 436 | |
| 442 | 437 | |
| 443 | 438 | static TIMER_CALLBACK( spacefev_vco_voltage_timer ) |
| 444 | 439 | { |
| 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; | |
| 446 | 442 | double voltage = 0; |
| 447 | 443 | |
| 448 | if (mono_flop[2]) | |
| 444 | if (state->mono_flop[2]) | |
| 449 | 445 | { |
| 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)); | |
| 451 | 447 | } |
| 452 | 448 | |
| 453 | 449 | sn76477_vco_voltage_w(sn, voltage); |
| r6428 | r6429 | |
| 456 | 452 | |
| 457 | 453 | static TIMER_CALLBACK( helifire_dac_volume_timer ) |
| 458 | 454 | { |
| 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)); | |
| 460 | 457 | |
| 461 | if (helifire_dac_phase) | |
| 458 | if (state->helifire_dac_phase) | |
| 462 | 459 | { |
| 463 | helifire_dac_volume = 1 - exp(t / ATTACK_RATE); | |
| 460 | state->helifire_dac_volume = 1 - exp(t / ATTACK_RATE); | |
| 464 | 461 | } |
| 465 | 462 | else |
| 466 | 463 | { |
| 467 | helifire_dac_volume = exp(t / DECAY_RATE); | |
| 464 | state->helifire_dac_volume = exp(t / DECAY_RATE); | |
| 468 | 465 | } |
| 469 | 466 | } |
| 470 | 467 | |
| 471 | 468 | |
| 472 | ||
| 469 | ||
| 473 | 470 | { |
| 474 | n8080_ | |
| 471 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 475 | 472 | |
| 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 | ||
| 484 | MACHINE_RESET( spacefev_sound ) | |
| 485 | { | |
| 486 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 487 | state->n8080_hardware = 1; | |
| 488 | ||
| 476 | 489 | timer_pulse(machine, ATTOTIME_IN_HZ(1000), NULL, 0, spacefev_vco_voltage_timer); |
| 477 | 490 | |
| 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; | |
| 481 | 497 | |
| 482 | mono_flop[0] = 0; | |
| 483 | mono_flop[1] = 0; | |
| 484 | mono_flop[2] = 0; | |
| 485 | ||
| 486 | 498 | delayed_sound_1(machine, 0); |
| 487 | 499 | delayed_sound_2(machine, 0); |
| 488 | 500 | } |
| 489 | 501 | |
| 490 | 502 | |
| 491 | ||
| 503 | ||
| 492 | 504 | { |
| 493 | n8080_ | |
| 505 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 494 | 506 | |
| 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); | |
| 497 | 509 | |
| 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 | } | |
| 500 | 516 | |
| 517 | MACHINE_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 | ||
| 501 | 528 | delayed_sound_1(machine, 0); |
| 502 | 529 | delayed_sound_2(machine, 0); |
| 503 | 530 | } |
| 504 | 531 | |
| 505 | 532 | |
| 506 | ||
| 533 | ||
| 507 | 534 | { |
| 508 | n8080_ | |
| 535 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 509 | 536 | |
| 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 | ||
| 546 | MACHINE_RESET( helifire_sound ) | |
| 547 | { | |
| 548 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 549 | state->n8080_hardware = 3; | |
| 550 | ||
| 510 | 551 | timer_pulse(machine, ATTOTIME_IN_HZ(1000), NULL, 0, helifire_dac_volume_timer); |
| 511 | 552 | |
| 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; | |
| 514 | 559 | |
| 515 | 560 | delayed_sound_1(machine, 0); |
| 516 | 561 | delayed_sound_2(machine, 0); |
| 517 | ||
| 518 | helifire_dac_phase = 0; | |
| 519 | 562 | } |
| 520 | 563 | |
| 521 | 564 | |
| r6428 | r6429 | |
| 553 | 596 | MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map) |
| 554 | 597 | MDRV_CPU_IO_MAP(n8080_sound_io_map) |
| 555 | 598 | |
| 556 | MDRV_MACHINE_RESET(spacefev_sound) | |
| 557 | ||
| 558 | 599 | /* sound hardware */ |
| 559 | 600 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 560 | 601 | |
| 561 | 602 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 562 | 603 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 563 | 604 | |
| 564 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 605 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 565 | 606 | MDRV_SOUND_CONFIG(spacefev_sn76477_interface) |
| 566 | 607 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 567 | 608 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 574 | 615 | MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map) |
| 575 | 616 | MDRV_CPU_IO_MAP(n8080_sound_io_map) |
| 576 | 617 | |
| 577 | MDRV_MACHINE_RESET(sheriff_sound) | |
| 578 | ||
| 579 | 618 | /* sound hardware */ |
| 580 | 619 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 581 | 620 | |
| 582 | 621 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 583 | 622 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 584 | 623 | |
| 585 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 624 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 586 | 625 | MDRV_SOUND_CONFIG(sheriff_sn76477_interface) |
| 587 | 626 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 588 | 627 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 595 | 634 | MDRV_CPU_PROGRAM_MAP(n8080_sound_cpu_map) |
| 596 | 635 | MDRV_CPU_IO_MAP(helifire_sound_io_map) |
| 597 | 636 | |
| 598 | MDRV_MACHINE_RESET(helifire_sound) | |
| 599 | ||
| 600 | 637 | /* sound hardware */ |
| 601 | 638 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 602 | 639 |
| r6428 | r6429 | |
|---|---|---|
| 64 | 64 | coin_counter_w(1, (data >> 5) & 1); |
| 65 | 65 | coin_counter_w(0, (data >> 4) & 1); |
| 66 | 66 | 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"); | |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 |
| r6428 | r6429 | |
|---|---|---|
| 13 | 13 | |
| 14 | 14 | WRITE8_HANDLER( laserbat_csound2_w ) |
| 15 | 15 | { |
| 16 | const device_config *sn = devtag_get_device(space->machine, "sn"); | |
| 16 | const device_config *sn = devtag_get_device(space->machine, "snsnd"); | |
| 17 | 17 | int ksound = 0; |
| 18 | 18 | |
| 19 | 19 | if (data & 0x01) |
| r6428 | r6429 | |
|---|---|---|
| 136 | 136 | |
| 137 | 137 | /* determine which sound hardware is installed */ |
| 138 | 138 | tms5220 = devtag_get_device(machine, "tms"); |
| 139 | ym2151 = devtag_get_device(machine, "ym"); | |
| 139 | ym2151 = devtag_get_device(machine, "ymsnd"); | |
| 140 | 140 | pokey = devtag_get_device(machine, "pokey"); |
| 141 | 141 | oki6295 = devtag_get_device(machine, "adpcm"); |
| 142 | 142 | oki6295_l = devtag_get_device(machine, "adpcml"); |
| r6428 | r6429 | |
| 723 | 723 | |
| 724 | 724 | static ADDRESS_MAP_START( atarijsa1_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 725 | 725 | 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) | |
| 727 | 727 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE(jsa1_io_r, jsa1_io_w) |
| 728 | 728 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 729 | 729 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 731 | 731 | |
| 732 | 732 | static ADDRESS_MAP_START( atarijsa2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 733 | 733 | 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) | |
| 735 | 735 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE(jsa2_io_r, jsa2_io_w) |
| 736 | 736 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 737 | 737 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 740 | 740 | /* full map verified from schematics and Batman GALs */ |
| 741 | 741 | static ADDRESS_MAP_START( atarijsa3_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 742 | 742 | 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) | |
| 744 | 744 | AM_RANGE(0x2800, 0x2fff) AM_READWRITE(jsa3_io_r, jsa3_io_w) |
| 745 | 745 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 746 | 746 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 748 | 748 | |
| 749 | 749 | static ADDRESS_MAP_START( atarijsa3s_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 750 | 750 | 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) | |
| 752 | 752 | AM_RANGE(0x2800, 0x2fff) AM_READWRITE(jsa3s_io_r, jsa3s_io_w) |
| 753 | 753 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 754 | 754 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 785 | 785 | /* sound hardware */ |
| 786 | 786 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 787 | 787 | |
| 788 | MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK) | |
| 788 | MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 789 | 789 | MDRV_SOUND_CONFIG(ym2151_config) |
| 790 | 790 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 791 | 791 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
| 799 | 799 | MDRV_IMPORT_FROM(jsa_i_stereo) |
| 800 | 800 | |
| 801 | 801 | /* sound hardware */ |
| 802 | MDRV_SOUND_REPLACE("ym", YM2151, JSA_MASTER_CLOCK) | |
| 802 | MDRV_SOUND_REPLACE("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 803 | 803 | MDRV_SOUND_CONFIG(ym2151_config) |
| 804 | 804 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.60) |
| 805 | 805 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.60) |
| r6428 | r6429 | |
| 830 | 830 | /* sound hardware */ |
| 831 | 831 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 832 | 832 | |
| 833 | MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK) | |
| 833 | MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 834 | 834 | MDRV_SOUND_CONFIG(ym2151_config) |
| 835 | 835 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 836 | 836 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 851 | 851 | /* sound hardware */ |
| 852 | 852 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 853 | 853 | |
| 854 | MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK) | |
| 854 | MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 855 | 855 | MDRV_SOUND_CONFIG(ym2151_config) |
| 856 | 856 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 857 | 857 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 897 | 897 | /* sound hardware */ |
| 898 | 898 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 899 | 899 | |
| 900 | MDRV_SOUND_ADD("ym", YM2151, JSA_MASTER_CLOCK) | |
| 900 | MDRV_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK) | |
| 901 | 901 | MDRV_SOUND_CONFIG(ym2151_config) |
| 902 | 902 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 903 | 903 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 518 | 518 | int i; |
| 519 | 519 | |
| 520 | 520 | /* 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); | |
| 522 | 522 | |
| 523 | 523 | /* allocate separate streams for the DMA and non-DMA DACs */ |
| 524 | 524 | dma_stream = stream_create(device, 0, 1, OUTPUT_RATE, (void *)dmaspace, leland_80186_dma_update); |
| r6428 | r6429 | |
| 2043 | 2043 | if (!has_ym2151) |
| 2044 | 2044 | return pit8254_r(space, offset | 0x40, mem_mask); |
| 2045 | 2045 | else |
| 2046 | return ym2151_r(devtag_get_device(space->machine, "ym"), offset); | |
| 2046 | return ym2151_r(devtag_get_device(space->machine, "ymsnd"), offset); | |
| 2047 | 2047 | |
| 2048 | 2048 | case 4: |
| 2049 | 2049 | if (is_redline) |
| r6428 | r6429 | |
| 2079 | 2079 | if (!has_ym2151) |
| 2080 | 2080 | pit8254_w(space, offset | 0x40, data, mem_mask); |
| 2081 | 2081 | else |
| 2082 | ym2151_w(devtag_get_device(space->machine, "ym"), offset, data); | |
| 2082 | ym2151_w(devtag_get_device(space->machine, "ymsnd"), offset, data); | |
| 2083 | 2083 | break; |
| 2084 | 2084 | |
| 2085 | 2085 | case 4: |
| r6428 | r6429 | |
|---|---|---|
| 39 | 39 | WRITE8_DEVICE_HANDLER( blockade_sound_freq_w ) |
| 40 | 40 | { |
| 41 | 41 | discrete_sound_w(device,BLOCKADE_NOTE_DATA, data); |
| 42 | ||
| 42 | | |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | 45 | WRITE8_HANDLER( blockade_env_on_w ) |
| 46 | 46 | { |
| 47 | 47 | 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; | |
| 51 | 51 | } |
| 52 | 52 | |
| 53 | 53 | WRITE8_HANDLER( blockade_env_off_w ) |
| 54 | 54 | { |
| 55 | if (BLOCKADE_LOG) mame_printf_debug("Boom End\n"); | |
| 56 | return; | |
| 55 | if (BLOCKADE_LOG) mame_printf_debug("Boom End\n"); | |
| 56 | return; | |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | static const char *const blockade_sample_names[] = |
| 60 | 60 | { |
| 61 | "*blockade", | |
| 62 | "boom.wav", | |
| 63 | 0 | |
| 61 | "*blockade", | |
| 62 | "boom.wav", | |
| 63 | 0 | |
| 64 | 64 | }; |
| 65 | 65 | |
| 66 | 66 | const samples_interface blockade_samples_interface = |
| 67 | 67 | { |
| 68 | ||
| 68 | | |
| 69 | 69 | blockade_sample_names |
| 70 | 70 | }; |
| r6428 | r6429 | |
|---|---|---|
| 475 | 475 | AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w) |
| 476 | 476 | AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w) |
| 477 | 477 | 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) | |
| 479 | 479 | AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r) |
| 480 | 480 | AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r) |
| 481 | 481 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r6428 | r6429 | |
| 494 | 494 | AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w) |
| 495 | 495 | AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w) |
| 496 | 496 | 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) | |
| 498 | 498 | AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r) |
| 499 | 499 | AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r) |
| 500 | 500 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r6428 | r6429 | |
| 512 | 512 | AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w) |
| 513 | 513 | AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w) |
| 514 | 514 | 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) | |
| 516 | 516 | AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r) |
| 517 | 517 | AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r) |
| 518 | 518 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r6428 | r6429 | |
|---|---|---|
| 98 | 98 | #define SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(freq1,freq2) \ |
| 99 | 99 | MDRV_SPEAKER_STANDARD_MONO("mono") \ |
| 100 | 100 | \ |
| 101 | MDRV_SOUND_ADD("ym", YM3812, freq1) \ | |
| 101 | MDRV_SOUND_ADD("ymsnd", YM3812, freq1) \ | |
| 102 | 102 | MDRV_SOUND_CONFIG(seibu_ym3812_interface) \ |
| 103 | 103 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) \ |
| 104 | 104 | \ |
| r6428 | r6429 | |
| 109 | 109 | #define SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(freq1,freq2) \ |
| 110 | 110 | MDRV_SPEAKER_STANDARD_MONO("mono") \ |
| 111 | 111 | \ |
| 112 | MDRV_SOUND_ADD("ym", YM3812, freq1) \ | |
| 112 | MDRV_SOUND_ADD("ymsnd", YM3812, freq1) \ | |
| 113 | 113 | MDRV_SOUND_CONFIG(seibu_ym3812_interface) \ |
| 114 | 114 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) \ |
| 115 | 115 | \ |
| r6428 | r6429 | |
| 120 | 120 | #define SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(freq1,freq2) \ |
| 121 | 121 | MDRV_SPEAKER_STANDARD_MONO("mono") \ |
| 122 | 122 | \ |
| 123 | MDRV_SOUND_ADD("ym", YM2151, freq1) \ | |
| 123 | MDRV_SOUND_ADD("ymsnd", YM2151, freq1) \ | |
| 124 | 124 | MDRV_SOUND_CONFIG(seibu_ym2151_interface) \ |
| 125 | 125 | MDRV_SOUND_ROUTE(0, "mono", 0.50) \ |
| 126 | 126 | MDRV_SOUND_ROUTE(1, "mono", 0.50) \ |
| r6428 | r6429 | |
| 133 | 133 | #define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1,freq2,regiona, regionb) \ |
| 134 | 134 | MDRV_SPEAKER_STANDARD_MONO("mono") \ |
| 135 | 135 | \ |
| 136 | MDRV_SOUND_ADD("ym", YM2151, freq1) \ | |
| 136 | MDRV_SOUND_ADD("ymsnd", YM2151, freq1) \ | |
| 137 | 137 | MDRV_SOUND_CONFIG(seibu_ym2151_interface) \ |
| 138 | 138 | MDRV_SOUND_ROUTE(0, "mono", 0.50) \ |
| 139 | 139 | MDRV_SOUND_ROUTE(1, "mono", 0.50) \ |
| r6428 | r6429 | |
|---|---|---|
| 469 | 469 | |
| 470 | 470 | static CUSTOM_INPUT( speech_drq_custom_r ) |
| 471 | 471 | { |
| 472 | return sp0250_drq_r(devtag_get_device(field->port->machine, "sp")); | |
| 472 | return sp0250_drq_r(devtag_get_device(field->port->machine, "spsnd")); | |
| 473 | 473 | } |
| 474 | 474 | |
| 475 | 475 | |
| r6428 | r6429 | |
| 506 | 506 | /* bit 6 = speech chip DATA PRESENT pin; high then low to make the chip read data */ |
| 507 | 507 | if ((previous & 0x40) == 0 && (data & 0x40) != 0) |
| 508 | 508 | { |
| 509 | const device_config *sp = devtag_get_device(space->machine, "sp"); | |
| 509 | const device_config *sp = devtag_get_device(space->machine, "spsnd"); | |
| 510 | 510 | sp0250_w(sp, 0, *sp0250_latch); |
| 511 | 511 | } |
| 512 | 512 | |
| 513 | 513 | /* bit 7 goes to the speech chip RESET pin */ |
| 514 | 514 | if ((previous ^ data) & 0x80) |
| 515 | 515 | { |
| 516 | const device_config *sp = devtag_get_device(space->machine, "sp"); | |
| 516 | const device_config *sp = devtag_get_device(space->machine, "spsnd"); | |
| 517 | 517 | device_reset(sp); |
| 518 | 518 | } |
| 519 | 519 | } |
| r6428 | r6429 | |
| 601 | 601 | MDRV_SOUND_ADD("ay2", AY8913, SOUND2_CLOCK/2) |
| 602 | 602 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 603 | 603 | |
| 604 | MDRV_SOUND_ADD("sp", SP0250, SOUND2_SPEECH_CLOCK) | |
| 604 | MDRV_SOUND_ADD("spsnd", SP0250, SOUND2_SPEECH_CLOCK) | |
| 605 | 605 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 606 | 606 | MACHINE_DRIVER_END |
| 607 | 607 |
| r6428 | r6429 | |
|---|---|---|
| 40 | 40 | WRITE8_HANDLER( invadpt2_sh_port_1_w ) |
| 41 | 41 | { |
| 42 | 42 | 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"); | |
| 44 | 44 | UINT8 rising_bits = data & ~port_1_last_extra; |
| 45 | 45 | |
| 46 | 46 | sn76477_enable_w(sn, !(data & 0x01)); /* SAUCER SOUND */ |
| r6428 | r6429 | |
| 92 | 92 | { |
| 93 | 93 | const device_config *samples = devtag_get_device(space->machine, "samples"); |
| 94 | 94 | 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"); | |
| 96 | 96 | UINT8 rising_bits = data & ~port_1_last_extra; |
| 97 | 97 | |
| 98 | 98 | sn76477_enable_w(sn, !(data & 0x01)); /* Saucer Sound */ |
| r6428 | r6429 | |
| 800 | 800 | WRITE8_HANDLER( schaser_sh_port_1_w ) |
| 801 | 801 | { |
| 802 | 802 | 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"); | |
| 804 | 804 | static int last_effect = 0; |
| 805 | 805 | int effect; |
| 806 | 806 | |
| r6428 | r6429 | |
| 895 | 895 | |
| 896 | 896 | static TIMER_CALLBACK( schaser_effect_555_cb ) |
| 897 | 897 | { |
| 898 | const device_config *sn = devtag_get_device(machine, "sn"); | |
| 898 | const device_config *sn = devtag_get_device(machine, "snsnd"); | |
| 899 | 899 | int effect = param; |
| 900 | 900 | attotime new_time; |
| 901 | 901 | /* Toggle 555 output */ |
| r6428 | r6429 | |
| 1032 | 1032 | WRITE8_HANDLER( lupin3_sh_port_1_w ) |
| 1033 | 1033 | { |
| 1034 | 1034 | 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"); | |
| 1036 | 1036 | UINT8 rising_bits = data & ~port_1_last_extra; |
| 1037 | 1037 | |
| 1038 | 1038 | if (rising_bits & 0x01) sample_start(samples, 0, 6, 0); /* Walking, get money */ |
| r6428 | r6429 | |
| 1120 | 1120 | WRITE8_HANDLER( yosakdon_sh_port_2_w ) |
| 1121 | 1121 | { |
| 1122 | 1122 | 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"); | |
| 1124 | 1124 | UINT8 rising_bits = data & ~port_2_last_extra; |
| 1125 | 1125 | |
| 1126 | 1126 | if (rising_bits & 0x01) sample_start(samples, 1, 6, 0); /* Ready? , Game Over */ |
| r6428 | r6429 | |
| 1146 | 1146 | /* bit 3 is high while you are alive and playing */ |
| 1147 | 1147 | |
| 1148 | 1148 | 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"); | |
| 1150 | 1150 | UINT8 rising_bits = data & ~port_1_last_extra; |
| 1151 | 1151 | |
| 1152 | 1152 | if (rising_bits & 0x01) sample_start(samples, 4, 4, 0); /* Fleet move */ |
| r6428 | r6429 | |
|---|---|---|
| 10 | 10 | #include "includes/astrof.h" |
| 11 | 11 | |
| 12 | 12 | |
| 13 | ||
| 14 | 13 | /************************************* |
| 15 | 14 | * |
| 16 | * Globals | |
| 17 | * | |
| 18 | *************************************/ | |
| 19 | ||
| 20 | static UINT8 port_1_last; | |
| 21 | static UINT8 port_2_last; | |
| 22 | static UINT8 astrof_start_explosion; | |
| 23 | static UINT8 astrof_death_playing; | |
| 24 | static UINT8 astrof_bosskill_playing; | |
| 25 | ||
| 26 | ||
| 27 | ||
| 28 | /************************************* | |
| 29 | * | |
| 30 | * Machine setup | |
| 31 | * | |
| 32 | *************************************/ | |
| 33 | ||
| 34 | ||
| 35 | MACHINE_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 | * | |
| 49 | 15 | * Astro Fighter |
| 50 | 16 | * |
| 51 | 17 | *************************************/ |
| r6428 | r6429 | |
| 68 | 34 | |
| 69 | 35 | WRITE8_HANDLER( astrof_audio_1_w ) |
| 70 | 36 | { |
| 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; | |
| 73 | 39 | |
| 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); | |
| 76 | 42 | |
| 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); | |
| 79 | 45 | |
| 80 | 46 | /* D2 - explosion */ |
| 81 | 47 | if (rising_bits & 0x04) |
| 82 | 48 | { |
| 83 | 49 | /* I *know* that the effect select port will be written shortly |
| 84 | 50 | after this one, so this works */ |
| 85 | astrof_start_explosion = 1; | |
| 51 | state->astrof_start_explosion = 1; | |
| 86 | 52 | } |
| 87 | 53 | |
| 88 | 54 | /* D0,D1,D3 - background noise */ |
| 89 | if ((data & 0x08) && (~port_1_last & 0x08)) | |
| 55 | if ((data & 0x08) && (~state->port_1_last & 0x08)) | |
| 90 | 56 | { |
| 91 | 57 | int sample = SAMPLE_WAVE + (data & 3); |
| 92 | sample_start(samples, CHANNEL_WAVE, sample, 1); | |
| 58 | sample_start(state->samples, CHANNEL_WAVE, sample, 1); | |
| 93 | 59 | } |
| 94 | 60 | |
| 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); | |
| 97 | 63 | |
| 98 | 64 | /* 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); | |
| 101 | 67 | |
| 102 | 68 | /* 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); | |
| 105 | 71 | |
| 106 | 72 | /* D6 - don't know. Probably something to do with the explosion sounds */ |
| 107 | 73 | |
| 108 | 74 | /* D7 - sound enable bit */ |
| 109 | 75 | sound_global_enable(space->machine, data & 0x80); |
| 110 | 76 | |
| 111 | port_1_last = data; | |
| 77 | state->port_1_last = data; | |
| 112 | 78 | } |
| 113 | 79 | |
| 114 | 80 | |
| 115 | 81 | WRITE8_HANDLER( astrof_audio_2_w ) |
| 116 | 82 | { |
| 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; | |
| 119 | 85 | |
| 120 | 86 | /* D0-D2 - explosion select (triggered by D2 of the other port */ |
| 121 | if (astrof_start_explosion) | |
| 87 | if (state->astrof_start_explosion) | |
| 122 | 88 | { |
| 123 | 89 | /* this is really a compound effect, made up of I believe 3 sound |
| 124 | 90 | effects, but since our sample contains them all, disable playing |
| 125 | 91 | the other effects while the explosion is playing */ |
| 126 | logerror("Explosion: %x\n", data); | |
| 92 | ||
| 93 | logerror("Explosion: %x\n", data); | |
| 127 | 94 | if (data & 0x04) |
| 128 | 95 | { |
| 129 | if (!astrof_bosskill_playing) | |
| 96 | if (!state->astrof_bosskill_playing) | |
| 130 | 97 | { |
| 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; | |
| 134 | 100 | } |
| 135 | 101 | } |
| 136 | 102 | else if (data & 0x02) |
| 137 | sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_BOSSHIT, 0); | |
| 103 | sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_BOSSHIT, 0); | |
| 138 | 104 | else if (data & 0x01) |
| 139 | sample_start(samples, CHANNEL_EXPLOSION, SAMPLE_EKILLED, 0); | |
| 105 | sample_start(state->samples, CHANNEL_EXPLOSION, SAMPLE_EKILLED, 0); | |
| 140 | 106 | else |
| 141 | 107 | { |
| 142 | if (!astrof_death_playing) | |
| 108 | if (!state->astrof_death_playing) | |
| 143 | 109 | { |
| 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; | |
| 147 | 112 | } |
| 148 | 113 | } |
| 149 | 114 | |
| 150 | astrof_start_explosion = 0; | |
| 115 | state->astrof_start_explosion = 0; | |
| 151 | 116 | } |
| 152 | 117 | |
| 153 | 118 | /* D3 - low fuel warning */ |
| 154 | 119 | if (rising_bits & 0x08) |
| 155 | sample_start(samples, CHANNEL_FUEL, SAMPLE_FUEL, 0); | |
| 120 | sample_start(state->samples, CHANNEL_FUEL, SAMPLE_FUEL, 0); | |
| 156 | 121 | |
| 157 | port_2_last = data; | |
| 122 | state->port_2_last = data; | |
| 158 | 123 | } |
| 159 | 124 | |
| 160 | 125 | |
| r6428 | r6429 | |
| 219 | 184 | |
| 220 | 185 | WRITE8_HANDLER( tomahawk_audio_w ) |
| 221 | 186 | { |
| 222 | | |
| 187 | a | |
| 223 | 188 | |
| 224 | 189 | /* D0 - sonar */ |
| 225 | 190 | |
| r6428 | r6429 | |
| 232 | 197 | /* D4 - UFO */ |
| 233 | 198 | |
| 234 | 199 | /* D5 - UFO under water */ |
| 235 | sn76477_enable_w(sn, (~data >> 5) & 0x01); | |
| 200 | sn76477_enable_w(state->sn, (~data >> 5) & 0x01); | |
| 236 | 201 | |
| 237 | 202 | /* D6 - explosion */ |
| 238 | 203 | |
| r6428 | r6429 | |
| 271 | 236 | |
| 272 | 237 | MACHINE_DRIVER_START( tomahawk_audio ) |
| 273 | 238 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 274 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 239 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 275 | 240 | MDRV_SOUND_CONFIG(tomahawk_sn76477_interface) |
| 276 | 241 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 277 | 242 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 171 | 171 | |
| 172 | 172 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 173 | 173 | |
| 174 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 174 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 175 | 175 | MDRV_SOUND_CONFIG(crbaloon_sn76477_interface) |
| 176 | 176 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) |
| 177 | 177 |
| r6428 | r6429 | |
|---|---|---|
| 307 | 307 | // 50 W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received) |
| 308 | 308 | ADDRESS_MAP_START( t5182_io, ADDRESS_SPACE_IO, 8 ) |
| 309 | 309 | 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) | |
| 311 | 311 | AM_RANGE(0x10, 0x10) AM_WRITE(t5182_sharedram_semaphore_snd_acquire_w) |
| 312 | 312 | AM_RANGE(0x11, 0x11) AM_WRITE(t5182_sharedram_semaphore_snd_release_w) |
| 313 | 313 | AM_RANGE(0x12, 0x12) AM_WRITE(t5182_ym2151_irq_ack_w) |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "irem.h" | |
| 9 | 8 | #include "cpu/m6800/m6800.h" |
| 10 | 9 | #include "sound/ay8910.h" |
| 11 | 10 | #include "sound/msm5205.h" |
| 12 | 11 | #include "sound/discrete.h" |
| 12 | #include "includes/iremz80.h" | |
| 13 | 13 | |
| 14 | static UINT8 port1, port2; | |
| 15 | 14 | |
| 16 | ||
| 17 | 15 | /************************************* |
| 18 | 16 | * |
| 19 | 17 | * Sound board initialization |
| r6428 | r6429 | |
| 22 | 20 | |
| 23 | 21 | static SOUND_START( irem_audio ) |
| 24 | 22 | { |
| 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); | |
| 27 | 32 | } |
| 28 | 33 | |
| 29 | 34 | |
| r6428 | r6429 | |
| 53 | 58 | |
| 54 | 59 | static WRITE8_HANDLER( m6803_port1_w ) |
| 55 | 60 | { |
| 56 | port1 = data; | |
| 61 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 62 | ||
| 63 | state->port1 = data; | |
| 57 | 64 | } |
| 58 | 65 | |
| 59 | 66 | |
| 60 | 67 | static WRITE8_HANDLER( m6803_port2_w ) |
| 61 | 68 | { |
| 69 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 70 | ||
| 62 | 71 | /* write latch */ |
| 63 | if ((port2 & 0x01) && !(data & 0x01)) | |
| 72 | if ((state->port2 & 0x01) && !(data & 0x01)) | |
| 64 | 73 | { |
| 65 | const device_config *ay1 = devtag_get_device(space->machine, "ay1"); | |
| 66 | const device_config *ay2 = devtag_get_device(space->machine, "ay2"); | |
| 67 | ||
| 68 | 74 | /* control or data port? */ |
| 69 | if (port2 & 0x04) | |
| 75 | if (state->port2 & 0x04) | |
| 70 | 76 | { |
| 71 | 77 | /* 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); | |
| 76 | 82 | } |
| 77 | 83 | else |
| 78 | 84 | { |
| 79 | 85 | /* 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); | |
| 84 | 90 | } |
| 85 | 91 | } |
| 86 | port2 = data; | |
| 92 | state->port2 = data; | |
| 87 | 93 | } |
| 88 | 94 | |
| 89 | 95 | |
| r6428 | r6429 | |
| 96 | 102 | |
| 97 | 103 | static READ8_HANDLER( m6803_port1_r ) |
| 98 | 104 | { |
| 105 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 106 | ||
| 99 | 107 | /* 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); | |
| 104 | 112 | return 0xff; |
| 105 | 113 | } |
| 106 | 114 | |
| r6428 | r6429 | |
| 120 | 128 | |
| 121 | 129 | static WRITE8_DEVICE_HANDLER( ay8910_0_portb_w ) |
| 122 | 130 | { |
| 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; | |
| 125 | 132 | |
| 126 | 133 | /* 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 */ | |
| 130 | 137 | |
| 131 | 138 | /* 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); | |
| 135 | 142 | } |
| 136 | 143 | |
| 137 | 144 | |
| r6428 | r6429 | |
| 158 | 165 | |
| 159 | 166 | static WRITE8_HANDLER( m52_adpcm_w ) |
| 160 | 167 | { |
| 168 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 169 | ||
| 161 | 170 | if (offset & 1) |
| 162 | 171 | { |
| 163 | const device_config *adpcm = devtag_get_device(space->machine, "msm1"); | |
| 164 | msm5205_data_w(adpcm, data); | |
| 172 | msm5205_data_w(state->adpcm1, data); | |
| 165 | 173 | } |
| 166 | 174 | if (offset & 2) |
| 167 | 175 | { |
| 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); | |
| 171 | 178 | } |
| 172 | 179 | } |
| 173 | 180 | |
| 174 | 181 | |
| 175 | 182 | static WRITE8_HANDLER( m62_adpcm_w ) |
| 176 | 183 | { |
| 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; | |
| 178 | 187 | if (adpcm != NULL) |
| 179 | 188 | msm5205_data_w(adpcm, data); |
| 180 | 189 | } |
| r6428 | r6429 | |
| 189 | 198 | |
| 190 | 199 | static void adpcm_int(const device_config *device) |
| 191 | 200 | { |
| 192 | | |
| 201 | | |
| 193 | 202 | |
| 194 | 203 | cputag_set_input_line(device->machine, "iremsound", INPUT_LINE_NMI, PULSE_LINE); |
| 195 | 204 | |
| 196 | 205 | /* the first MSM5205 clocks the second */ |
| 197 | if ( | |
| 206 | if ( | |
| 198 | 207 | { |
| 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); | |
| 201 | 210 | } |
| 202 | 211 | } |
| 203 | 212 |
| r6428 | r6429 | |
|---|---|---|
| 97 | 97 | /* CVSD readmem/writemem structures */ |
| 98 | 98 | static ADDRESS_MAP_START( williams_cvsd_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 99 | 99 | 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) | |
| 101 | 101 | AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("cvsdpia", pia6821_r, pia6821_w) |
| 102 | 102 | AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_DEVWRITE("cvsd", cvsd_digit_clock_clear_w) |
| 103 | 103 | AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_DEVWRITE("cvsd", cvsd_clock_set_w) |
| r6428 | r6429 | |
| 109 | 109 | /* NARC master readmem/writemem structures */ |
| 110 | 110 | static ADDRESS_MAP_START( williams_narc_master_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 111 | 111 | 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) | |
| 113 | 113 | AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_WRITE(narc_master_talkback_w) |
| 114 | 114 | AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_WRITE(narc_command2_w) |
| 115 | 115 | AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("dac1", dac_w) |
| r6428 | r6429 | |
| 139 | 139 | static ADDRESS_MAP_START( williams_adpcm_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 140 | 140 | AM_RANGE(0x0000, 0x1fff) AM_RAM |
| 141 | 141 | 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) | |
| 143 | 143 | AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_DEVWRITE("dac", dac_w) |
| 144 | 144 | AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 145 | 145 | AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_READ(adpcm_command_r) |
| r6428 | r6429 | |
| 201 | 201 | |
| 202 | 202 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 203 | 203 | |
| 204 | MDRV_SOUND_ADD("ym", YM2151, CVSD_FM_CLOCK) | |
| 204 | MDRV_SOUND_ADD("ymsnd", YM2151, CVSD_FM_CLOCK) | |
| 205 | 205 | MDRV_SOUND_CONFIG(cvsd_ym2151_interface) |
| 206 | 206 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 207 | 207 | |
| r6428 | r6429 | |
| 222 | 222 | |
| 223 | 223 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 224 | 224 | |
| 225 | MDRV_SOUND_ADD("ym", YM2151, NARC_FM_CLOCK) | |
| 225 | MDRV_SOUND_ADD("ymsnd", YM2151, NARC_FM_CLOCK) | |
| 226 | 226 | MDRV_SOUND_CONFIG(adpcm_ym2151_interface) |
| 227 | 227 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 228 | 228 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| r6428 | r6429 | |
| 247 | 247 | |
| 248 | 248 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 249 | 249 | |
| 250 | MDRV_SOUND_ADD("ym", YM2151, ADPCM_FM_CLOCK) | |
| 250 | MDRV_SOUND_ADD("ymsnd", YM2151, ADPCM_FM_CLOCK) | |
| 251 | 251 | MDRV_SOUND_CONFIG(adpcm_ym2151_interface) |
| 252 | 252 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 253 | 253 | |
| r6428 | r6429 | |
| 382 | 382 | static void init_audio_state(running_machine *machine) |
| 383 | 383 | { |
| 384 | 384 | /* reset the YM2151 state */ |
| 385 | devtag_reset(machine, "ym"); | |
| 385 | devtag_reset(machine, "ymsnd"); | |
| 386 | 386 | |
| 387 | 387 | /* clear all the interrupts */ |
| 388 | 388 | williams_sound_int_state = 0; |
| r6428 | r6429 | |
|---|---|---|
| 136 | 136 | static ADDRESS_MAP_START( redalert_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 137 | 137 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 138 | 138 | 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) | |
| 140 | 140 | AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x0ffe) AM_READWRITE(redalert_ay8910_latch_1_r, redalert_ay8910_latch_2_w) |
| 141 | 141 | AM_RANGE(0x2000, 0x6fff) AM_NOP |
| 142 | 142 | AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM |
| r6428 | r6429 | |
| 223 | 223 | MDRV_CPU_PROGRAM_MAP(redalert_audio_map) |
| 224 | 224 | MDRV_CPU_PERIODIC_INT(irq0_line_hold, REDALERT_AUDIO_CPU_IRQ_FREQ) |
| 225 | 225 | |
| 226 | MDRV_SOUND_ADD("ay", AY8910, REDALERT_AY8910_CLOCK) | |
| 226 | MDRV_SOUND_ADD("aysnd", AY8910, REDALERT_AY8910_CLOCK) | |
| 227 | 227 | MDRV_SOUND_CONFIG(redalert_ay8910_interface) |
| 228 | 228 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 229 | 229 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 656 | 656 | static ADDRESS_MAP_START( masao_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 657 | 657 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 658 | 658 | 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) | |
| 661 | 661 | ADDRESS_MAP_END |
| 662 | 662 | |
| 663 | 663 | /************************************* |
| r6428 | r6429 | |
| 713 | 713 | |
| 714 | 714 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 715 | 715 | |
| 716 | MDRV_SOUND_ADD("ay", AY8910, 14318000/6) | |
| 716 | MDRV_SOUND_ADD("aysnd", AY8910, 14318000/6) | |
| 717 | 717 | MDRV_SOUND_CONFIG(ay8910_config) |
| 718 | 718 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 719 | 719 |
| r6428 | r6429 | |
|---|---|---|
| 3149 | 3149 | MACHINE_DRIVER_START( spcenctr_audio ) |
| 3150 | 3150 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3151 | 3151 | |
| 3152 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 3152 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 3153 | 3153 | MDRV_SOUND_CONFIG(spcenctr_sn76477_interface) |
| 3154 | 3154 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 3155 | 3155 | |
| r6428 | r6429 | |
| 3189 | 3189 | |
| 3190 | 3190 | WRITE8_DEVICE_HANDLER( spcenctr_audio_3_w ) |
| 3191 | 3191 | { |
| 3192 | const device_config *sn = devtag_get_device(device->machine, "sn"); | |
| 3192 | const device_config *sn = devtag_get_device(device->machine, "snsnd"); | |
| 3193 | 3193 | |
| 3194 | 3194 | /* if (data & 0x01) enable SCREECH (hit the sides) sound */ |
| 3195 | 3195 | |
| r6428 | r6429 | |
| 3516 | 3516 | |
| 3517 | 3517 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3518 | 3518 | |
| 3519 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 3519 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 3520 | 3520 | MDRV_SOUND_CONFIG(invaders_sn76477_interface) |
| 3521 | 3521 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 3522 | 3522 | |
| r6428 | r6429 | |
| 4083 | 4083 | MACHINE_DRIVER_START( invaders_audio ) |
| 4084 | 4084 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4085 | 4085 | |
| 4086 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 4086 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 4087 | 4087 | MDRV_SOUND_CONFIG(invaders_sn76477_interface) |
| 4088 | 4088 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 4089 | 4089 | |
| r6428 | r6429 | |
| 4095 | 4095 | |
| 4096 | 4096 | WRITE8_DEVICE_HANDLER( invaders_audio_1_w ) |
| 4097 | 4097 | { |
| 4098 | const device_config *sn = devtag_get_device(device->machine, "sn"); | |
| 4098 | const device_config *sn = devtag_get_device(device->machine, "snsnd"); | |
| 4099 | 4099 | |
| 4100 | 4100 | sn76477_enable_w(sn, (~data >> 0) & 0x01); /* saucer sound */ |
| 4101 | 4101 |
| r6428 | r6429 | |
|---|---|---|
| 1021 | 1021 | memset(&NMK004_state, 0, sizeof(NMK004_state)); |
| 1022 | 1022 | |
| 1023 | 1023 | NMK004_state.machine = machine; |
| 1024 | NMK004_state.ymdevice = devtag_get_device(machine, "ym"); | |
| 1024 | NMK004_state.ymdevice = devtag_get_device(machine, "ymsnd"); | |
| 1025 | 1025 | NMK004_state.oki1device = devtag_get_device(machine, "oki1"); |
| 1026 | 1026 | NMK004_state.oki2device = devtag_get_device(machine, "oki2"); |
| 1027 | 1027 |
| r6428 | r6429 | |
|---|---|---|
| 1017 | 1017 | } |
| 1018 | 1018 | if (op->jtype != 7) logerror(" %04X \n",op->nxtadd); |
| 1019 | 1019 | if (op->jtype == 5) logerror("\n"); |
| 1020 | } | |
| 1021 | 1020 | } |
| 1022 | 1021 | } |
| 1023 | 1022 | #endif |
| r6428 | r6429 | |
|---|---|---|
| 653 | 653 | void lans2004_vx_decrypt( running_machine *machine ) |
| 654 | 654 | { |
| 655 | 655 | int i; |
| 656 | UINT8 *rom = memory_region( machine, "ym" ); | |
| 656 | UINT8 *rom = memory_region( machine, "ymsnd" ); | |
| 657 | 657 | for (i = 0; i < 0xA00000; i++) |
| 658 | 658 | rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7); |
| 659 | 659 | } |
| r6428 | r6429 | |
| 1067 | 1067 | |
| 1068 | 1068 | void samsho5b_vx_decrypt( running_machine *machine ) |
| 1069 | 1069 | { |
| 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" ); | |
| 1072 | 1072 | int i; |
| 1073 | 1073 | |
| 1074 | 1074 | for( i = 0; i < vx_size; i++ ) |
| r6428 | r6429 | |
|---|---|---|
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | 8 | #include "video/konamiic.h" |
| 9 | #include " | |
| 9 | #include " | |
| 10 | 10 | |
| 11 | #define GX_DEBUG 0 | |
| 12 | ||
| 13 | 11 | /***************************************************************************/ |
| 14 | 12 | /* */ |
| 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 | ||
| 31 | static UINT8 *gx_objzbuf, *gx_shdzbuf; | |
| 32 | ||
| 33 | ||
| 34 | // Localized K053936/ROZ+ | |
| 35 | #define K053936_MAX_CHIPS 2 | |
| 36 | ||
| 37 | static rectangle K053936_cliprect[K053936_MAX_CHIPS] = {{0,0,0,0},{0,0,0,0}}; | |
| 38 | static int K053936_offset[K053936_MAX_CHIPS][2] = {{0,0},{0,0}}; | |
| 39 | static int K053936_clip_enabled[K053936_MAX_CHIPS] = {0,0}; | |
| 40 | ||
| 41 | ||
| 42 | void K053936GP_set_offset(int chip, int xoffs, int yoffs) { K053936_offset[chip][0] = xoffs; K053936_offset[chip][1] = yoffs; } | |
| 43 | ||
| 44 | void K053936GP_clip_enable(int chip, int status) { K053936_clip_enabled[chip] = status; } | |
| 45 | ||
| 46 | void 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 | ||
| 55 | INLINE 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() | |
| 206 | static 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 | ||
| 278 | void 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 | ||
| 284 | void 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 | ||
| 308 | INLINE 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 | |
| 757 | UINT8 konamigx_wrport1_0, konamigx_wrport1_1; | |
| 758 | UINT16 konamigx_wrport2; | |
| 759 | ||
| 760 | // frequently used registers | |
| 761 | static int K053246_objset1; | |
| 762 | static int K053247_vrcbk[4]; | |
| 763 | static int K053247_coreg, K053247_coregshift, K053247_opset; | |
| 764 | static int opri, oinprion; | |
| 765 | static int vcblk[6], ocblk; | |
| 766 | static int vinmix, vmixon, osinmix, osmixon; | |
| 767 | ||
| 768 | ||
| 769 | static 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 | ||
| 810 | INLINE 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 | ||
| 822 | INLINE 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 | ||
| 834 | INLINE 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 | ||
| 845 | void 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 | ||
| 856 | void 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 | ||
| 874 | void 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 | ||
| 892 | void 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 | ||
| 909 | int 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 | ||
| 934 | int 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 | ||
| 972 | static 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 | ||
| 1025 | static struct GX_OBJ { int order, offs, code, color; } *gx_objpool; | |
| 1026 | static UINT16 *gx_spriteram; | |
| 1027 | static int gx_objdma, gx_primode; | |
| 1028 | ||
| 1029 | // mirrored K053247 and K054338 settings | |
| 1030 | static UINT16 *K053247_ram; | |
| 1031 | static gfx_element *K053247_gfx; | |
| 1032 | static void (*K053247_callback)(int *code,int *color,int *priority); | |
| 1033 | static int K053247_dx, K053247_dy; | |
| 1034 | ||
| 1035 | static int *K054338_shdRGB; | |
| 1036 | ||
| 1037 | ||
| 1038 | void K053247GP_set_SpriteOffset(int offsx, int offsy) | |
| 1039 | { | |
| 1040 | K053247_dx = offsx; | |
| 1041 | K053247_dy = offsy; | |
| 1042 | } | |
| 1043 | ||
| 1044 | void 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 | ||
| 1068 | void konamigx_mixer_primode(int mode) | |
| 1069 | { | |
| 1070 | gx_primode = mode; | |
| 1071 | } | |
| 1072 | ||
| 1073 | void konamigx_objdma(void) | |
| 1074 | { | |
| 1075 | if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000); | |
| 1076 | } | |
| 1077 | ||
| 1078 | void 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 | /* */ | |
| 1681 | 13 | /* GX/MW Protections */ |
| 1682 | 14 | /* */ |
| 1683 | 15 | /***************************************************************************/ |
| r6428 | r6429 | |
|---|---|---|
| 232 | 232 | if (ACCESSING_BITS_0_7 && (data == 0)) |
| 233 | 233 | { |
| 234 | 234 | 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"); | |
| 236 | 236 | if (cputag_get_cpu(space->machine, "audiocpu") != NULL && cpu_get_type(cputag_get_cpu(space->machine, "audiocpu")) == CPU_Z80) |
| 237 | 237 | cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE); |
| 238 | 238 | } |
| r6428 | r6429 | |
|---|---|---|
| 138 | 138 | |
| 139 | 139 | void signal_rcp_interrupt(running_machine *machine, int interrupt) |
| 140 | 140 | { |
| 141 | mi_interrupt |= interrupt; | |
| 142 | ||
| 143 | 141 | if (mi_intr_mask & interrupt) |
| 144 | 142 | { |
| 143 | mi_interrupt |= interrupt; | |
| 145 | 144 | |
| 146 | 145 | cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, ASSERT_LINE); |
| 147 | 146 | } |
| r6428 | r6429 | |
| 151 | 150 | { |
| 152 | 151 | mi_interrupt &= ~interrupt; |
| 153 | 152 | |
| 154 | if (! | |
| 153 | //if (! | |
| 155 | 154 | { |
| 156 | 155 | cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); |
| 157 | 156 | } |
| r6428 | r6429 | |
| 1279 | 1278 | dma_length = (dma_length + 3) & ~3; |
| 1280 | 1279 | }*/ |
| 1281 | 1280 | |
| 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); | |
| 1283 | 1282 | |
| 1284 | 1283 | if (pi_dram_addr != 0xffffffff) |
| 1285 | 1284 | { |
| r6428 | r6429 | |
| 1307 | 1306 | dma_length = (dma_length + 3) & ~3; |
| 1308 | 1307 | } |
| 1309 | 1308 | |
| 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); | |
| 1311 | 1310 | |
| 1312 | 1311 | if (pi_dram_addr != 0xffffffff) |
| 1313 | 1312 | { |
| r6428 | r6429 | |
| 1318 | 1317 | pi_cart_addr += 4; |
| 1319 | 1318 | pi_dram_addr += 4;*/ |
| 1320 | 1319 | |
| 1321 | UINT8 b = memory_read_byte(space, pi_cart_addr | |
| 1320 | UINT8 b = memory_read_byte(space, pi_cart_addr | |
| 1322 | 1321 | memory_write_byte(space, pi_dram_addr & 0x1fffffff, b); |
| 1323 | 1322 | pi_cart_addr += 1; |
| 1324 | 1323 | pi_dram_addr += 1; |
| r6428 | r6429 | |
| 1331 | 1330 | // TODO: CIC-6105 has different address... |
| 1332 | 1331 | memory_write_dword(space, 0x00000318, 0x400000); |
| 1333 | 1332 | memory_write_dword(space, 0x000003f0, 0x800000); |
| 1334 | | |
| 1333 | | |
| 1335 | 1334 | } |
| 1336 | 1335 | |
| 1337 | 1336 | break; |
| r6428 | r6429 | |
| 1860 | 1859 | |
| 1861 | 1860 | if (direction) // RDRAM -> PIF RAM |
| 1862 | 1861 | { |
| 1863 | src = (UINT32*)&rdram[(si_dram_addr & 0x1ffffff) / 4]; | |
| 1862 | src = (UINT32*)&rdram[(si_dram_addr & 0x1fffffff) / 4]; | |
| 1864 | 1863 | |
| 1865 | 1864 | for (i=0; i < 64; i+=4) |
| 1866 | 1865 | { |
| r6428 | r6429 | |
| 1921 | 1920 | // PIF RAM -> RDRAM |
| 1922 | 1921 | si_pif_addr = data; |
| 1923 | 1922 | si_pif_addr_rd64b = data; |
| 1924 | //printf( "si_pif_addr = %08x, si_pif_addr_rd64b = %08x\n", si_pif_addr, si_pif_addr_rd64b ); | |
| 1925 | 1923 | pif_dma(space->machine, 0); |
| 1926 | 1924 | break; |
| 1927 | 1925 | |
| r6428 | r6429 | |
| 1929 | 1927 | // RDRAM -> PIF RAM |
| 1930 | 1928 | si_pif_addr = data; |
| 1931 | 1929 | si_pif_addr_wr64b = data; |
| 1932 | //printf( "si_pif_addr = %08x, si_pif_addr_wr64b = %08x\n", si_pif_addr, si_pif_addr_wr64b ); | |
| 1933 | 1930 | pif_dma(space->machine, 1); |
| 1934 | 1931 | break; |
| 1935 | 1932 |
| r6428 | r6429 | |
|---|---|---|
| 1469 | 1469 | /* Neo-Pcm2 Drivers for Encrypted V Roms */ |
| 1470 | 1470 | void neo_pcm2_snk_1999(running_machine *machine, int value) |
| 1471 | 1471 | { /* 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"); | |
| 1474 | 1474 | int i, j; |
| 1475 | 1475 | |
| 1476 | 1476 | if( rom != NULL ) |
| r6428 | r6429 | |
| 1509 | 1509 | {0xcb,0x29,0x7d,0x43,0xd2,0x3a,0xc2,0xb4}, |
| 1510 | 1510 | {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}, |
| 1511 | 1511 | {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}}; |
| 1512 | UINT8 *src = memory_region(machine, "ym"); | |
| 1512 | UINT8 *src = memory_region(machine, "ymsnd"); | |
| 1513 | 1513 | UINT8 *buf = alloc_array_or_die(UINT8, 0x1000000); |
| 1514 | 1514 | int i, j, d; |
| 1515 | 1515 |
| r6428 | r6429 | |
|---|---|---|
| 15 | 15 | #define ARKANOID_BOOTLEG_VERBOSE 1 |
| 16 | 16 | |
| 17 | 17 | |
| 18 | UINT8 arkanoid_paddle_select; | |
| 19 | ||
| 20 | static UINT8 z80write, fromz80, m68705write, toz80; | |
| 21 | ||
| 22 | static UINT8 portA_in, portA_out, ddrA; | |
| 23 | static UINT8 portC_out, ddrC; | |
| 24 | ||
| 25 | ||
| 26 | MACHINE_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 | ||
| 42 | MACHINE_RESET( arkanoid ) | |
| 43 | { | |
| 44 | portA_in = portA_out = z80write = m68705write = 0; | |
| 45 | } | |
| 46 | ||
| 47 | 18 | READ8_HANDLER( arkanoid_Z80_mcu_r ) |
| 48 | 19 | { |
| 20 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 21 | ||
| 49 | 22 | /* 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; | |
| 52 | 25 | } |
| 53 | 26 | |
| 54 | 27 | static TIMER_CALLBACK( test ) |
| 55 | 28 | { |
| 56 | z80write = 1; | |
| 57 | fromz80 = param; | |
| 29 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 30 | ||
| 31 | state->z80write = 1; | |
| 32 | state->fromz80 = param; | |
| 58 | 33 | } |
| 59 | 34 | |
| 60 | 35 | WRITE8_HANDLER( arkanoid_Z80_mcu_w ) |
| r6428 | r6429 | |
| 64 | 39 | cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(10)); |
| 65 | 40 | } |
| 66 | 41 | |
| 67 | READ8_HANDLER( arkanoid_68705_port | |
| 42 | READ8_HANDLER( arkanoid_68705_port_a_r ) | |
| 68 | 43 | { |
| 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); | |
| 70 | 47 | } |
| 71 | 48 | |
| 72 | WRITE8_HANDLER( arkanoid_68705_port | |
| 49 | WRITE8_HANDLER( arkanoid_68705_port_a_w ) | |
| 73 | 50 | { |
| 74 | portA_out = data; | |
| 51 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 52 | ||
| 53 | state->port_a_out = data; | |
| 75 | 54 | } |
| 76 | 55 | |
| 77 | WRITE8_HANDLER( arkanoid_68705_ddr | |
| 56 | WRITE8_HANDLER( arkanoid_68705_ddr_a_w ) | |
| 78 | 57 | { |
| 79 | ddrA = data; | |
| 58 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 59 | ||
| 60 | state->ddr_a = data; | |
| 80 | 61 | } |
| 81 | 62 | |
| 82 | 63 | |
| 83 | READ8_HANDLER( arkanoid_68705_port | |
| 64 | READ8_HANDLER( arkanoid_68705_port_c_r ) | |
| 84 | 65 | { |
| 85 | int res=0; | |
| 66 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 67 | int res = 0; | |
| 86 | 68 | |
| 87 | 69 | /* 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; | |
| 89 | 72 | |
| 90 | 73 | /* bit 1 is high if the previous write has been read */ |
| 91 | if (!m68705write) res |= 0x02; | |
| 74 | if (!state->m68705write) | |
| 75 | res |= 0x02; | |
| 92 | 76 | |
| 93 | return (port | |
| 77 | return (state->port | |
| 94 | 78 | } |
| 95 | 79 | |
| 96 | WRITE8_HANDLER( arkanoid_68705_port | |
| 80 | WRITE8_HANDLER( arkanoid_68705_port_c_w ) | |
| 97 | 81 | { |
| 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)) | |
| 99 | 85 | { |
| 100 | 86 | /* 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; | |
| 103 | 89 | } |
| 104 | if ((ddr | |
| 90 | if ((state->ddr_c & 0x08) && (~data & 0x08) && (state->port_c_out & 0x08)) | |
| 105 | 91 | { |
| 106 | 92 | /* 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; | |
| 109 | 95 | } |
| 110 | 96 | |
| 111 | port | |
| 97 | state->port_c_out = data; | |
| 112 | 98 | } |
| 113 | 99 | |
| 114 | WRITE8_HANDLER( arkanoid_68705_ddr | |
| 100 | WRITE8_HANDLER( arkanoid_68705_ddr_c_w ) | |
| 115 | 101 | { |
| 116 | ddrC = data; | |
| 102 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 103 | ||
| 104 | state->ddr_c = data; | |
| 117 | 105 | } |
| 118 | 106 | |
| 119 | 107 | CUSTOM_INPUT( arkanoid_68705_input_r ) |
| 120 | 108 | { |
| 109 | arkanoid_state *state = (arkanoid_state *)field->port->machine->driver_data; | |
| 121 | 110 | int res = 0; |
| 122 | 111 | |
| 123 | 112 | /* bit 0x40 of comes from the sticky bit */ |
| 124 | if (!z80write) res |= 0x01; | |
| 113 | if (!state->z80write) | |
| 114 | res |= 0x01; | |
| 125 | 115 | |
| 126 | 116 | /* bit 0x80 comes from a write latch */ |
| 127 | if (!m68705write) res |= 0x02; | |
| 117 | if (!state->m68705write) | |
| 118 | res |= 0x02; | |
| 128 | 119 | |
| 129 | 120 | return res; |
| 130 | 121 | } |
| 131 | 122 | |
| 132 | 123 | CUSTOM_INPUT( arkanoid_input_mux ) |
| 133 | 124 | { |
| 125 | arkanoid_state *state = (arkanoid_state *)field->port->machine->driver_data; | |
| 134 | 126 | const char *tag1 = (const char *)param; |
| 135 | 127 | const char *tag2 = tag1 + strlen(tag1) + 1; |
| 136 | return input_port_read(field->port->machine, (a | |
| 128 | return input_port_read(field->port->machine, (state-> | |
| 137 | 129 | } |
| 138 | 130 | |
| 139 | 131 | /* |
| r6428 | r6429 | |
| 190 | 182 | */ |
| 191 | 183 | |
| 192 | 184 | |
| 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); | |
| 197 | 189 | |
| 198 | 190 | |
| 199 | static UINT8 arkanoid_bootleg_cmd; | |
| 200 | ||
| 201 | 191 | /* Kludge for some bootlegs that read this address */ |
| 202 | 192 | READ8_HANDLER( arkanoid_bootleg_f000_r ) |
| 203 | 193 | { |
| 194 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 204 | 195 | UINT8 arkanoid_bootleg_val = 0x00; |
| 205 | 196 | |
| 206 | switch (a | |
| 197 | switch (state-> | |
| 207 | 198 | { |
| 208 | 199 | case ARKANGC: /* There are no reads from 0xf000 in these bootlegs */ |
| 209 | 200 | case ARKBLOCK: |
| r6428 | r6429 | |
| 211 | 202 | case ARKBLOC2: |
| 212 | 203 | case ARKGCBL: |
| 213 | 204 | case PADDLE2: |
| 214 | switch (a | |
| 205 | switch (state-> | |
| 215 | 206 | { |
| 216 | 207 | default: |
| 217 | 208 | break; |
| r6428 | r6429 | |
| 219 | 210 | LOG_F000_R |
| 220 | 211 | break; |
| 221 | 212 | case BLOCK2: |
| 222 | switch (a | |
| 213 | switch (state-> | |
| 223 | 214 | { |
| 224 | 215 | case 0x05: /* Check 1 */ |
| 225 | 216 | arkanoid_bootleg_val = 0x05; |
| r6428 | r6429 | |
| 233 | 224 | LOG_F000_R |
| 234 | 225 | break; |
| 235 | 226 | default: |
| 236 | logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - unknown bootleg !\n",cpu_get_pc(space->cpu),a | |
| 227 | logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - unknown bootleg !\n", cpu_get_pc(space->cpu), state-> | |
| 237 | 228 | break; |
| 238 | 229 | } |
| 239 | 230 | |
| r6428 | r6429 | |
| 243 | 234 | /* Kludge for some bootlegs that read this address */ |
| 244 | 235 | READ8_HANDLER( arkanoid_bootleg_f002_r ) |
| 245 | 236 | { |
| 237 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 246 | 238 | UINT8 arkanoid_bootleg_val = 0x00; |
| 247 | 239 | |
| 248 | switch (a | |
| 240 | switch (state-> | |
| 249 | 241 | { |
| 250 | 242 | case ARKANGC: |
| 251 | 243 | case ARKBLOCK: |
| 252 | switch (a | |
| 244 | switch (state-> | |
| 253 | 245 | { |
| 254 | 246 | default: |
| 255 | 247 | break; |
| r6428 | r6429 | |
| 258 | 250 | break; |
| 259 | 251 | case ARKANGC2: /* There are no reads from 0xf002 in these bootlegs */ |
| 260 | 252 | case BLOCK2: |
| 261 | switch (a | |
| 253 | switch (state-> | |
| 262 | 254 | { |
| 263 | 255 | default: |
| 264 | 256 | break; |
| r6428 | r6429 | |
| 266 | 258 | LOG_F002_R |
| 267 | 259 | break; |
| 268 | 260 | case ARKBLOC2: |
| 269 | switch (a | |
| 261 | switch (state-> | |
| 270 | 262 | { |
| 271 | 263 | default: |
| 272 | 264 | break; |
| r6428 | r6429 | |
| 274 | 266 | LOG_F002_R |
| 275 | 267 | break; |
| 276 | 268 | case ARKGCBL: |
| 277 | switch (a | |
| 269 | switch (state-> | |
| 278 | 270 | { |
| 279 | 271 | case 0x8a: /* Current level (fixed routine) */ |
| 280 | 272 | arkanoid_bootleg_val = 0xa5; |
| r6428 | r6429 | |
| 288 | 280 | LOG_F002_R |
| 289 | 281 | break; |
| 290 | 282 | case PADDLE2: |
| 291 | switch (a | |
| 283 | switch (state-> | |
| 292 | 284 | { |
| 293 | 285 | case 0x24: /* Avoid bad jump to 0x0066 */ |
| 294 | 286 | arkanoid_bootleg_val = 0x9b; |
| r6428 | r6429 | |
| 320 | 312 | LOG_F002_R |
| 321 | 313 | break; |
| 322 | 314 | default: |
| 323 | logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - unknown bootleg !\n",cpu_get_pc(space->cpu),a | |
| 315 | logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - unknown bootleg !\n", cpu_get_pc(space->cpu), state-> | |
| 324 | 316 | break; |
| 325 | 317 | } |
| 326 | 318 | |
| r6428 | r6429 | |
| 330 | 322 | /* Kludge for some bootlegs that write this address */ |
| 331 | 323 | WRITE8_HANDLER( arkanoid_bootleg_d018_w ) |
| 332 | 324 | { |
| 333 | arkanoid_bootleg_cmd = 0x00; | |
| 325 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 326 | state->bootleg_cmd = 0x00; | |
| 334 | 327 | |
| 335 | switch (a | |
| 328 | switch (state-> | |
| 336 | 329 | { |
| 337 | 330 | case ARKANGC: |
| 338 | 331 | case ARKBLOCK: |
| r6428 | r6429 | |
| 340 | 333 | { |
| 341 | 334 | case 0x36: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x0313 -> 0x0340) */ |
| 342 | 335 | if (cpu_get_pc(space->cpu) == 0x7c47) |
| 343 | a | |
| 336 | state-> | |
| 344 | 337 | break; |
| 345 | 338 | case 0x38: /* unneeded value : no call 0x2050, unused A and fixed HL (0x7bd5) */ |
| 346 | 339 | if (cpu_get_pc(space->cpu) == 0x7b87) |
| 347 | a | |
| 340 | state-> | |
| 348 | 341 | break; |
| 349 | 342 | case 0x8a: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7b77 -> 0x7c1c) */ |
| 350 | 343 | if (cpu_get_pc(space->cpu) == 0x9661) |
| 351 | a | |
| 344 | state-> | |
| 352 | 345 | break; |
| 353 | 346 | case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x00) and fixed HL (0xed83) */ |
| 354 | 347 | if (cpu_get_pc(space->cpu) == 0x67e3) |
| 355 | a | |
| 348 | state-> | |
| 356 | 349 | break; |
| 357 | 350 | case 0xf7: /* unneeded value : 3 * 'NOP' at 0x034f + 2 * 'NOP' at 0x35b */ |
| 358 | 351 | if (cpu_get_pc(space->cpu) == 0x0349) |
| 359 | a | |
| 352 | state-> | |
| 360 | 353 | break; |
| 361 | 354 | case 0xff: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7c4f -> 0x7d31) */ |
| 362 | 355 | if (cpu_get_pc(space->cpu) == 0x9670) |
| 363 | a | |
| 356 | state-> | |
| 364 | 357 | break; |
| 365 | 358 | default: |
| 366 | a | |
| 359 | state-> | |
| 367 | 360 | break; |
| 368 | 361 | } |
| 369 | 362 | LOG_D018_W |
| r6428 | r6429 | |
| 373 | 366 | { |
| 374 | 367 | case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */ |
| 375 | 368 | if (cpu_get_pc(space->cpu) == 0x7c4c) |
| 376 | a | |
| 369 | state-> | |
| 377 | 370 | break; |
| 378 | 371 | case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */ |
| 379 | 372 | if (cpu_get_pc(space->cpu) == 0x7b87) |
| 380 | a | |
| 373 | state-> | |
| 381 | 374 | break; |
| 382 | 375 | case 0x88: /* unneeded value : no read back */ |
| 383 | 376 | if (cpu_get_pc(space->cpu) == 0x67e3) |
| 384 | a | |
| 377 | state-> | |
| 385 | 378 | if (cpu_get_pc(space->cpu) == 0x7c47) |
| 386 | a | |
| 379 | state-> | |
| 387 | 380 | break; |
| 388 | 381 | case 0x89: /* unneeded value : no read back */ |
| 389 | 382 | if (cpu_get_pc(space->cpu) == 0x67e5) |
| 390 | a | |
| 383 | state-> | |
| 391 | 384 | break; |
| 392 | 385 | case 0x8a: /* unneeded value : call 0x2050 but fixed A (0xa5) */ |
| 393 | 386 | if (cpu_get_pc(space->cpu) == 0x9661) |
| 394 | a | |
| 387 | state-> | |
| 395 | 388 | break; |
| 396 | 389 | case 0xc0: /* unneeded value : no read back */ |
| 397 | 390 | if (cpu_get_pc(space->cpu) == 0x67e7) |
| 398 | a | |
| 391 | state-> | |
| 399 | 392 | break; |
| 400 | 393 | case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */ |
| 401 | 394 | if (cpu_get_pc(space->cpu) == 0x67e9) |
| 402 | a | |
| 395 | state-> | |
| 403 | 396 | break; |
| 404 | 397 | case 0xff: /* unneeded value : call 0x2050 but fixed A (0xe2) */ |
| 405 | 398 | if (cpu_get_pc(space->cpu) == 0x9670) |
| 406 | a | |
| 399 | state-> | |
| 407 | 400 | break; |
| 408 | 401 | default: |
| 409 | a | |
| 402 | state-> | |
| 410 | 403 | break; |
| 411 | 404 | } |
| 412 | 405 | LOG_D018_W |
| r6428 | r6429 | |
| 416 | 409 | { |
| 417 | 410 | case 0x05: /* Check 1 */ |
| 418 | 411 | if (cpu_get_pc(space->cpu) == 0x0363) |
| 419 | a | |
| 412 | state-> | |
| 420 | 413 | break; |
| 421 | 414 | case 0x0a: /* Check 2 */ |
| 422 | 415 | if (cpu_get_pc(space->cpu) == 0x0372) |
| 423 | a | |
| 416 | state-> | |
| 424 | 417 | break; |
| 425 | 418 | default: |
| 426 | a | |
| 419 | state-> | |
| 427 | 420 | break; |
| 428 | 421 | } |
| 429 | 422 | LOG_D018_W |
| r6428 | r6429 | |
| 433 | 426 | { |
| 434 | 427 | case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */ |
| 435 | 428 | if (cpu_get_pc(space->cpu) == 0x7c4c) |
| 436 | a | |
| 429 | state-> | |
| 437 | 430 | break; |
| 438 | 431 | case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */ |
| 439 | 432 | if (cpu_get_pc(space->cpu) == 0x7b87) |
| 440 | a | |
| 433 | state-> | |
| 441 | 434 | break; |
| 442 | 435 | case 0x88: /* unneeded value : no read back */ |
| 443 | 436 | if (cpu_get_pc(space->cpu) == 0x67e3) |
| 444 | a | |
| 437 | state-> | |
| 445 | 438 | if (cpu_get_pc(space->cpu) == 0x7c47) |
| 446 | a | |
| 439 | state-> | |
| 447 | 440 | break; |
| 448 | 441 | case 0x89: /* unneeded value : no read back */ |
| 449 | 442 | if (cpu_get_pc(space->cpu) == 0x67e5) |
| 450 | a | |
| 443 | state-> | |
| 451 | 444 | break; |
| 452 | 445 | case 0x8a: /* unneeded value : call 0x2050 but unused HL and fixed DE (0x7c1c) */ |
| 453 | 446 | if (cpu_get_pc(space->cpu) == 0x9661) |
| 454 | a | |
| 447 | state-> | |
| 455 | 448 | break; |
| 456 | 449 | case 0xc0: /* unneeded value : no read back */ |
| 457 | 450 | if (cpu_get_pc(space->cpu) == 0x67e7) |
| 458 | a | |
| 451 | state-> | |
| 459 | 452 | break; |
| 460 | 453 | case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */ |
| 461 | 454 | if (cpu_get_pc(space->cpu) == 0x67e9) |
| 462 | a | |
| 455 | state-> | |
| 463 | 456 | break; |
| 464 | 457 | case 0xf7: /* unneeded value : call 0x2050 but never called (check code at 0x0340) */ |
| 465 | 458 | if (cpu_get_pc(space->cpu) == 0x0349) |
| 466 | a | |
| 459 | state-> | |
| 467 | 460 | break; |
| 468 | 461 | case 0xff: /* unneeded value : no call 0x2050, unused A and fixed HL (0x7d31) */ |
| 469 | 462 | if (cpu_get_pc(space->cpu) == 0x9670) |
| 470 | a | |
| 463 | state-> | |
| 471 | 464 | break; |
| 472 | 465 | default: |
| 473 | a | |
| 466 | state-> | |
| 474 | 467 | break; |
| 475 | 468 | } |
| 476 | 469 | LOG_D018_W |
| r6428 | r6429 | |
| 480 | 473 | { |
| 481 | 474 | case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */ |
| 482 | 475 | if (cpu_get_pc(space->cpu) == 0x7c4c) |
| 483 | a | |
| 476 | state-> | |
| 484 | 477 | break; |
| 485 | 478 | case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */ |
| 486 | 479 | if (cpu_get_pc(space->cpu) == 0x7b87) |
| 487 | a | |
| 480 | state-> | |
| 488 | 481 | break; |
| 489 | 482 | case 0x88: /* unneeded value : no read back */ |
| 490 | 483 | if (cpu_get_pc(space->cpu) == 0x67e3) |
| 491 | a | |
| 484 | state-> | |
| 492 | 485 | if (cpu_get_pc(space->cpu) == 0x7c47) |
| 493 | a | |
| 486 | state-> | |
| 494 | 487 | case 0x89: /* unneeded value : no read back */ |
| 495 | 488 | if (cpu_get_pc(space->cpu) == 0x67e5) |
| 496 | a | |
| 489 | state-> | |
| 497 | 490 | break; |
| 498 | 491 | case 0x8a: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 499 | 492 | if (cpu_get_pc(space->cpu) == 0x9661) |
| 500 | a | |
| 493 | state-> | |
| 501 | 494 | break; |
| 502 | 495 | case 0xc0: /* unneeded value : no read back */ |
| 503 | 496 | if (cpu_get_pc(space->cpu) == 0x67e7) |
| 504 | a | |
| 497 | state-> | |
| 505 | 498 | break; |
| 506 | 499 | case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */ |
| 507 | 500 | if (cpu_get_pc(space->cpu) == 0x67e9) |
| 508 | a | |
| 501 | state-> | |
| 509 | 502 | break; |
| 510 | 503 | case 0xf7: /* unneeded value : 3 * 'NOP' at 0x034f + 'JR NZ,$035D' at 0x35b */ |
| 511 | 504 | if (cpu_get_pc(space->cpu) == 0x0349) |
| 512 | a | |
| 505 | state-> | |
| 513 | 506 | break; |
| 514 | 507 | case 0xff: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 515 | 508 | if (cpu_get_pc(space->cpu) == 0x9670) |
| 516 | a | |
| 509 | state-> | |
| 517 | 510 | break; |
| 518 | 511 | default: |
| 519 | a | |
| 512 | state-> | |
| 520 | 513 | break; |
| 521 | 514 | } |
| 522 | 515 | LOG_D018_W |
| r6428 | r6429 | |
| 526 | 519 | { |
| 527 | 520 | case 0x24: /* A read from 0xf002 (expected to be 0x9b) */ |
| 528 | 521 | if (cpu_get_pc(space->cpu) == 0xbd7a) |
| 529 | a | |
| 522 | state-> | |
| 530 | 523 | break; |
| 531 | 524 | case 0x36: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 532 | 525 | if (cpu_get_pc(space->cpu) == 0x7c4c) |
| 533 | a | |
| 526 | state-> | |
| 534 | 527 | break; |
| 535 | 528 | case 0x38: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 536 | 529 | if (cpu_get_pc(space->cpu) == 0x7b87) |
| 537 | a | |
| 530 | state-> | |
| 538 | 531 | break; |
| 539 | 532 | case 0x88: /* unneeded value : no read back */ |
| 540 | 533 | if (cpu_get_pc(space->cpu) == 0x67e3) |
| 541 | a | |
| 534 | state-> | |
| 542 | 535 | if (cpu_get_pc(space->cpu) == 0x7c47) |
| 543 | a | |
| 536 | state-> | |
| 544 | 537 | case 0x89: /* unneeded value : no read back */ |
| 545 | 538 | if (cpu_get_pc(space->cpu) == 0x67e5) |
| 546 | a | |
| 539 | state-> | |
| 547 | 540 | break; |
| 548 | 541 | case 0x8a: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 549 | 542 | if (cpu_get_pc(space->cpu) == 0x9661) |
| 550 | a | |
| 543 | state-> | |
| 551 | 544 | break; |
| 552 | 545 | case 0xc0: /* unneeded value : no read back */ |
| 553 | 546 | if (cpu_get_pc(space->cpu) == 0x67e7) |
| 554 | a | |
| 547 | state-> | |
| 555 | 548 | break; |
| 556 | 549 | case 0xc3: /* A read from 0xf002 (expected to be 0x1d) */ |
| 557 | 550 | if (cpu_get_pc(space->cpu) == 0xbd8a) |
| 558 | a | |
| 551 | state-> | |
| 559 | 552 | break; |
| 560 | 553 | case 0xe3: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 561 | 554 | if (cpu_get_pc(space->cpu) == 0x67e9) |
| 562 | a | |
| 555 | state-> | |
| 563 | 556 | break; |
| 564 | 557 | case 0xf7: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 565 | 558 | if (cpu_get_pc(space->cpu) == 0x0349) |
| 566 | a | |
| 559 | state-> | |
| 567 | 560 | break; |
| 568 | 561 | case 0xff: /* call 0x2050 with A read from 0xf002 and wrong HL */ |
| 569 | 562 | if (cpu_get_pc(space->cpu) == 0x9670) |
| 570 | a | |
| 563 | state-> | |
| 571 | 564 | break; |
| 572 | 565 | default: |
| 573 | a | |
| 566 | state-> | |
| 574 | 567 | break; |
| 575 | 568 | } |
| 576 | 569 | LOG_D018_W |
| 577 | 570 | break; |
| 578 | 571 | |
| 579 | 572 | 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); | |
| 581 | 574 | break; |
| 582 | 575 | } |
| 583 | 576 | } |
| r6428 | r6429 | |
| 585 | 578 | #ifdef UNUSED_CODE |
| 586 | 579 | READ8_HANDLER( block2_bootleg_f000_r ) |
| 587 | 580 | { |
| 588 | return arkanoid_bootleg_cmd; | |
| 581 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 582 | return state->bootleg_cmd; | |
| 589 | 583 | } |
| 590 | 584 | #endif |
| 591 | 585 | |
| 592 | 586 | /* Kludge for some bootlegs that read this address */ |
| 593 | 587 | READ8_HANDLER( arkanoid_bootleg_d008_r ) |
| 594 | 588 | { |
| 589 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 595 | 590 | UINT8 arkanoid_bootleg_d008_bit[8]; |
| 596 | 591 | UINT8 arkanoid_bootleg_d008_val; |
| 597 | 592 | UINT8 arkanoid_paddle_value = input_port_read(space->machine, "MUX"); |
| r6428 | r6429 | |
| 599 | 594 | |
| 600 | 595 | arkanoid_bootleg_d008_bit[4] = arkanoid_bootleg_d008_bit[6] = arkanoid_bootleg_d008_bit[7] = 0; /* untested bits */ |
| 601 | 596 | |
| 602 | switch (a | |
| 597 | switch (state-> | |
| 603 | 598 | { |
| 604 | 599 | case ARKANGC: |
| 605 | 600 | case ARKBLOCK: |
| r6428 | r6429 | |
| 649 | 644 | } |
| 650 | 645 | |
| 651 | 646 | arkanoid_bootleg_d008_val = 0; |
| 652 | for (b=0; b<8; b++) | |
| 647 | for (b = 0; b < 8; b++) | |
| 653 | 648 | arkanoid_bootleg_d008_val |= (arkanoid_bootleg_d008_bit[b] << b); |
| 649 | ||
| 654 | 650 | LOG_D008_R |
| 655 | 651 | |
| 656 | 652 | return arkanoid_bootleg_d008_val; |
| 657 | 653 | } |
| 658 |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | #include "driver.h" |
| 8 | 8 | #include "bsktball.h" |
| 9 | 9 | |
| 10 | static int LD1=0; | |
| 11 | static int LD2=0; | |
| 12 | static UINT32 NMION = 0; | |
| 13 | ||
| 14 | 10 | /*************************************************************************** |
| 15 | bsktball_nmion_w | |
| 11 | bsktball_nmion_w | |
| 16 | 12 | ***************************************************************************/ |
| 17 | 13 | WRITE8_HANDLER( bsktball_nmion_w ) |
| 18 | 14 | { |
| 19 | NMION = offset & 0x01; | |
| 15 | bsktball_state *state = (bsktball_state *)space->machine->driver_data; | |
| 16 | state->nmi_on = offset & 0x01; | |
| 20 | 17 | } |
| 21 | 18 | |
| 22 | 19 | /*************************************************************************** |
| 23 | bsktball_interrupt | |
| 20 | bsktball_interrupt | |
| 24 | 21 | ***************************************************************************/ |
| 25 | 22 | /* NMI every 32V, IRQ every VBLANK */ |
| 26 | 23 | INTERRUPT_GEN( bsktball_interrupt ) |
| 27 | 24 | { |
| 28 | static | |
| 25 | bsktball_state *state = (bsktball_state *)device->machine->driver_data; | |
| 29 | 26 | |
| 30 | 27 | /* We mod by 8 because we're interrupting 8x per frame, 1 per 32V */ |
| 31 | i256 | |
| 28 | state->i256v = (state->i256v + 1) % 8; | |
| 32 | 29 | |
| 33 | if (i256 | |
| 30 | if (state->i256v == 0) | |
| 34 | 31 | cpu_set_input_line(device, 0, HOLD_LINE); |
| 35 | else if ( | |
| 32 | else if (state->nmi_on) | |
| 36 | 33 | cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); |
| 37 | 34 | } |
| 38 | 35 | |
| 39 | 36 | /*************************************************************************** |
| 40 | bsktball_ld_w | |
| 37 | bsktball_ld_w | |
| 41 | 38 | ***************************************************************************/ |
| 42 | 39 | |
| 43 | 40 | WRITE8_HANDLER( bsktball_ld1_w ) |
| 44 | 41 | { |
| 45 | LD1 = (offset & 0x01); | |
| 42 | bsktball_state *state = (bsktball_state *)space->machine->driver_data; | |
| 43 | state->ld1 = (offset & 0x01); | |
| 46 | 44 | } |
| 47 | 45 | |
| 48 | 46 | WRITE8_HANDLER( bsktball_ld2_w ) |
| 49 | 47 | { |
| 50 | LD2 = (offset & 0x01); | |
| 48 | bsktball_state *state = (bsktball_state *)space->machine->driver_data; | |
| 49 | state->ld2 = (offset & 0x01); | |
| 51 | 50 | } |
| 52 | 51 | |
| 53 | 52 | |
| 54 | 53 | /*************************************************************************** |
| 55 | bsktball_in0_r | |
| 54 | bsktball_in0_r | |
| 56 | 55 | ***************************************************************************/ |
| 57 | 56 | |
| 58 | 57 | READ8_HANDLER( bsktball_in0_r ) |
| 59 | 58 | { |
| 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; | |
| 70 | 60 | int p1_horiz; |
| 71 | 61 | int p1_vert; |
| 72 | 62 | int p2_horiz; |
| r6428 | r6429 | |
| 81 | 71 | /* Set direction bits */ |
| 82 | 72 | |
| 83 | 73 | /* P1 H DIR */ |
| 84 | if (p1_horiz > last_p1_horiz) | |
| 74 | if (p1_horiz > state->last_p1_horiz) | |
| 85 | 75 | { |
| 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; | |
| 88 | 80 | } |
| 89 | else if (p1_horiz < last_p1_horiz) | |
| 81 | else if (p1_horiz < state->last_p1_horiz) | |
| 90 | 82 | { |
| 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; | |
| 93 | 87 | } |
| 94 | 88 | |
| 95 | 89 | /* P1 V DIR */ |
| 96 | if (p1_vert > last_p1_vert) | |
| 90 | if (p1_vert > state->last_p1_vert) | |
| 97 | 91 | { |
| 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; | |
| 100 | 96 | } |
| 101 | else if (p1_vert < last_p1_vert) | |
| 97 | else if (p1_vert < state->last_p1_vert) | |
| 102 | 98 | { |
| 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; | |
| 105 | 103 | } |
| 106 | 104 | |
| 107 | 105 | /* P2 H DIR */ |
| 108 | if (p2_horiz > last_p2_horiz) | |
| 106 | if (p2_horiz > state->last_p2_horiz) | |
| 109 | 107 | { |
| 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; | |
| 112 | 112 | } |
| 113 | else if (p2_horiz < last_p2_horiz) | |
| 113 | else if (p2_horiz < state->last_p2_horiz) | |
| 114 | 114 | { |
| 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; | |
| 117 | 119 | } |
| 118 | 120 | |
| 119 | 121 | /* P2 V DIR */ |
| 120 | if (p2_vert > last_p2_vert) | |
| 122 | if (p2_vert > state->last_p2_vert) | |
| 121 | 123 | { |
| 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; | |
| 124 | 128 | } |
| 125 | else if (p2_vert < last_p2_vert) | |
| 129 | else if (p2_vert < state->last_p2_vert) | |
| 126 | 130 | { |
| 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; | |
| 129 | 135 | } |
| 130 | 136 | |
| 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; | |
| 131 | 141 | |
| 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 | ||
| 137 | 142 | /* D0-D3 = Plyr 1 Horiz, D4-D7 = Plyr 1 Vert */ |
| 138 | if (( | |
| 143 | if ((state->ld1) & (state->ld2)) | |
| 139 | 144 | { |
| 140 | return ((p1_horiz & 0x0 | |
| 145 | return ((p1_horiz & 0x0f) | ((p1_vert << 4) & 0xf0)); | |
| 141 | 146 | } |
| 142 | 147 | /* D0-D3 = Plyr 2 Horiz, D4-D7 = Plyr 2 Vert */ |
| 143 | else if ( | |
| 148 | else if (state->ld2) | |
| 144 | 149 | { |
| 145 | return ((p2_horiz & 0x0 | |
| 150 | return ((p2_horiz & 0x0f) | ((p2_vert << 4) & 0xf0)); | |
| 146 | 151 | } |
| 147 | 152 | else |
| 148 | 153 | { |
| 149 | temp = input_port_read(space->machine, "IN0") & 0x0 | |
| 154 | temp = input_port_read(space->machine, "IN0") & 0x0f; | |
| 150 | 155 | |
| 151 | return (temp | | |
| 156 | return (temp | state->dir0 | state->dir1 | state->dir2 | state->dir3); | |
| 152 | 157 | } |
| 153 | 158 | } |
| 154 | 159 | |
| 155 | 160 | /*************************************************************************** |
| 156 | bsktball_led_w | |
| 161 | bsktball_led_w | |
| 157 | 162 | ***************************************************************************/ |
| 158 | 163 | WRITE8_HANDLER( bsktball_led1_w ) |
| 159 | 164 | { |
| 160 | set_led_status(0,offset & 0x01); | |
| 165 | set_led_status(0, offset & 0x01); | |
| 161 | 166 | } |
| 162 | 167 | |
| 163 | 168 | WRITE8_HANDLER( bsktball_led2_w ) |
| 164 | 169 | { |
| 165 | set_led_status(1,offset & 0x01); | |
| 170 | set_led_status(1, offset & 0x01); | |
| 166 | 171 | } |
| r6428 | r6429 | |
|---|---|---|
| 757 | 757 | { "ssf2j", { 0x01234567,0x89abcdef }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| 758 | 758 | { "ssf2jr1", { 0x01234567,0x89abcdef }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| 759 | 759 | { "ssf2jr2", { 0x01234567,0x89abcdef }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| 760 | { "ssf2h", { 0x56789abc,0xdef01234 }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 | |
| 760 | 761 | { "ssf2tb", { 0x89abcdef,0x01234567 }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| 761 | 762 | { "ssf2tbr1", { 0x89abcdef,0x01234567 }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| 762 | 763 | { "ssf2tbj", { 0x6789abcd,0xef012345 }, 0x400000 }, // 0838 0007 2000 btst #7,$2000 |
| r6428 | r6429 | |
| 858 | 859 | { "ddsomj", { 0xae92fa94,0x315a9045 }, 0x100000 }, // 0C81 1966 0419 cmpi.l #$19660419,D1 |
| 859 | 860 | { "ddsomjr1", { 0xae92fa94,0x315a9045 }, 0x100000 }, // 0C81 1966 0419 cmpi.l #$19660419,D1 |
| 860 | 861 | { "ddsoma", { 0x8719abcd,0xef028345 }, 0x100000 }, // 0C81 1966 0419 cmpi.l #$19660419,D1 |
| 862 | { "ddsomh", { 0x42134245,0x120de607 }, 0x100000 }, // 0C81 1966 0419 cmpi.l #$19660419,D1 | |
| 861 | 863 | { "ddsomb", { 0x7149a782,0xf3a5bfce }, 0x100000 }, // 0C81 1966 0419 cmpi.l #$19660419,D1 |
| 862 | 864 | { "megaman2", { 0x50501cac,0xed346550 }, 0x100000 }, // 0C80 0164 7101 cmpi.l #$01647101,D0 |
| 863 | 865 | { "megaman2a",{ 0x3f148a2b,0xd6790a15 }, 0x100000 }, // 0C80 0164 7101 cmpi.l #$01647101,D0 |
| 864 | 866 | { "rckman2j", { 0x319eca73,0x10551270 }, 0x100000 }, // 0C80 0164 7101 cmpi.l #$01647101,D0 |
| 867 | { "megaman2h",{ 0x765573ca,0x250210d0 }, 0x100000 }, // 0C80 0164 7101 cmpi.l #$01647101,D0 | |
| 865 | 868 | { "qndream", { 0x5804ea73,0xf66b0798 }, 0x080000 }, // 0C81 1973 0827 cmpi.l #$19730827,D1 |
| 866 | 869 | { "sfa2", { 0xfc4acf9c,0x3bfbe1f9 }, 0x100000 }, // 0C80 3039 9783 cmpi.l #$30399783,D0 |
| 867 | 870 | { "sfa2u", { 0x1bbf3d96,0x8af4614a }, 0x100000 }, // 0C80 3039 9783 cmpi.l #$30399783,D0 |
| r6428 | r6429 | |
|---|---|---|
| 305 | 305 | case NB1413M3_MJNANPAS: |
| 306 | 306 | case NB1413M3_MLADYHTR: |
| 307 | 307 | case NB1413M3_CLUB90S: |
| 308 | case NB1413M3_OHPAIPEE: | |
| 309 | case NB1413M3_TOGENKYO: | |
| 308 | 310 | case NB1413M3_LOVEHOUS: |
| 309 | 311 | case NB1413M3_CHINMOKU: |
| 310 | 312 | case NB1413M3_GALKAIKA: |
| r6428 | r6429 | |
| 431 | 433 | break; |
| 432 | 434 | case NB1413M3_PAIRSNB: |
| 433 | 435 | case NB1413M3_PAIRSTEN: |
| 436 | case NB1413M3_OHPAIPEE: | |
| 437 | case NB1413M3_TOGENKYO: | |
| 434 | 438 | return input_port_read(space->machine, "P1"); |
| 435 | 439 | default: |
| 436 | 440 | switch ((nb1413m3_inputport ^ 0xff) & 0x1f) |
| r6428 | r6429 | |
| 480 | 484 | break; |
| 481 | 485 | case NB1413M3_PAIRSNB: |
| 482 | 486 | case NB1413M3_PAIRSTEN: |
| 487 | case NB1413M3_OHPAIPEE: | |
| 488 | case NB1413M3_TOGENKYO: | |
| 483 | 489 | return input_port_read(space->machine, "P2"); |
| 484 | 490 | default: |
| 485 | 491 | switch ((nb1413m3_inputport ^ 0xff) & 0x1f) |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "atarifb.h" |
| 10 | 10 | #include "sound/discrete.h" |
| 11 | 11 | |
| 12 | static int CTRLD; | |
| 13 | static int sign_x_1, sign_y_1; | |
| 14 | static int sign_x_2, sign_y_2; | |
| 15 | static int sign_x_3, sign_y_3; | |
| 16 | static int sign_x_4, sign_y_4; | |
| 17 | 12 | |
| 18 | ||
| 19 | 13 | WRITE8_HANDLER( atarifb_out1_w ) |
| 20 | 14 | { |
| 15 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 21 | 16 | const device_config *discrete = devtag_get_device(space->machine, "discrete"); |
| 22 | 17 | |
| 23 | CTRLD = data; | |
| 18 | state->CTRLD = data; | |
| 24 | 19 | |
| 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 | |
| 27 | 22 | discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10); // Attract |
| 28 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 23 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 29 | 24 | } |
| 30 | 25 | |
| 31 | 26 | |
| 32 | 27 | WRITE8_HANDLER( atarifb4_out1_w ) |
| 33 | 28 | { |
| 29 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 34 | 30 | const device_config *discrete = devtag_get_device(space->machine, "discrete"); |
| 35 | 31 | |
| 36 | CTRLD = data; | |
| 32 | state->CTRLD = data; | |
| 37 | 33 | |
| 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 | |
| 40 | 36 | discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10); // Attract |
| 41 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 37 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 42 | 38 | |
| 43 | coin_counter_w | |
| 39 | coin_counter_w | |
| 44 | 40 | } |
| 45 | 41 | |
| 46 | 42 | |
| 47 | 43 | WRITE8_HANDLER( abaseb_out1_w ) |
| 48 | 44 | { |
| 45 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 49 | 46 | const device_config *discrete = devtag_get_device(space->machine, "discrete"); |
| 50 | 47 | |
| 51 | CTRLD = data; | |
| 48 | state->CTRLD = data; | |
| 52 | 49 | |
| 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 | |
| 55 | 52 | discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10); // Attract |
| 56 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 53 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 57 | 54 | |
| 58 | 55 | if (data & 0x80) |
| 59 | 56 | { |
| 60 | 57 | /* 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 */ | |
| 63 | 60 | } |
| 64 | 61 | else |
| 65 | 62 | { |
| 66 | 63 | /* 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 */ | |
| 69 | 66 | } |
| 70 | 67 | } |
| 71 | 68 | |
| 72 | 69 | |
| 73 | 70 | WRITE8_HANDLER( soccer_out1_w ) |
| 74 | 71 | { |
| 72 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 75 | 73 | const device_config *discrete = devtag_get_device(space->machine, "discrete"); |
| 76 | 74 | |
| 77 | CTRLD = data; | |
| 75 | state->CTRLD = data; | |
| 78 | 76 | |
| 79 | 77 | /* bit 0 = whistle */ |
| 80 | 78 | /* bit 1 = hit */ |
| r6428 | r6429 | |
| 84 | 82 | /* bit 5-6 = trackball CTRL bits */ |
| 85 | 83 | /* bit 7 = Rule LED */ |
| 86 | 84 | |
| 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 | |
| 89 | 87 | discrete_sound_w(discrete, ATARIFB_ATTRACT_EN, data & 0x10); // Attract |
| 90 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 88 | discrete_sound_w(discrete, ATARIFB_NOISE_EN, | |
| 91 | 89 | |
| 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); | |
| 94 | 92 | } |
| 95 | 93 | |
| 96 | 94 | |
| r6428 | r6429 | |
| 156 | 154 | |
| 157 | 155 | READ8_HANDLER( atarifb_in0_r ) |
| 158 | 156 | { |
| 159 | if ((CTRLD & 0x20) == 0x00) | |
| 157 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 158 | if ((state->CTRLD & 0x20) == 0x00) | |
| 160 | 159 | { |
| 161 | 160 | int val; |
| 162 | 161 | |
| 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) | | |
| 167 | 166 | input_port_read(space->machine, "IN0"); |
| 168 | 167 | return val; |
| 169 | 168 | } |
| 170 | 169 | else |
| 171 | 170 | { |
| 172 | static int counter_x,counter_y; | |
| 173 | int new_x,new_y; | |
| 171 | int new_x, new_y; | |
| 174 | 172 | |
| 175 | 173 | /* Read player 1 trackball */ |
| 176 | 174 | new_x = input_port_read(space->machine, "IN3"); |
| 177 | if (new_x != counter_x) | |
| 175 | if (new_x != state->counter_x_in0) | |
| 178 | 176 | { |
| 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; | |
| 181 | 179 | } |
| 182 | 180 | |
| 183 | 181 | new_y = input_port_read(space->machine, "IN2"); |
| 184 | if (new_y != counter_y) | |
| 182 | if (new_y != state->counter_y_in0) | |
| 185 | 183 | { |
| 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; | |
| 188 | 186 | } |
| 189 | 187 | |
| 190 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 188 | return (((state->counter_y_in0 & 0x0f) << 4) | (state->counter_x_in0 & 0x0f)); | |
| 191 | 189 | } |
| 192 | 190 | } |
| 193 | 191 | |
| 194 | 192 | |
| 195 | 193 | READ8_HANDLER( atarifb_in2_r ) |
| 196 | 194 | { |
| 197 | if ((CTRLD & 0x20) == 0x00) | |
| 195 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 196 | ||
| 197 | if ((state->CTRLD & 0x20) == 0x00) | |
| 198 | 198 | { |
| 199 | 199 | return input_port_read(space->machine, "IN1"); |
| 200 | 200 | } |
| 201 | 201 | else |
| 202 | 202 | { |
| 203 | static int counter_x,counter_y; | |
| 204 | int new_x,new_y; | |
| 203 | int new_x, new_y; | |
| 205 | 204 | |
| 206 | 205 | /* Read player 2 trackball */ |
| 207 | 206 | new_x = input_port_read(space->machine, "IN5"); |
| 208 | if (new_x != counter_x) | |
| 207 | if (new_x != state->counter_x_in2) | |
| 209 | 208 | { |
| 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; | |
| 212 | 211 | } |
| 213 | 212 | |
| 214 | 213 | new_y = input_port_read(space->machine, "IN4"); |
| 215 | if (new_y != counter_y) | |
| 214 | if (new_y != state->counter_y_in2) | |
| 216 | 215 | { |
| 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; | |
| 219 | 218 | } |
| 220 | 219 | |
| 221 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 220 | return (((state->counter_y_in2 & 0x0f) << 4) | (state->counter_x_in2 & 0x0f)); | |
| 222 | 221 | } |
| 223 | 222 | } |
| 224 | 223 | |
| 225 | 224 | READ8_HANDLER( atarifb4_in0_r ) |
| 226 | 225 | { |
| 226 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 227 | ||
| 227 | 228 | /* LD1 and LD2 low, return sign bits */ |
| 228 | if ((CTRLD & 0x60) == 0x00) | |
| 229 | if ((state->CTRLD & 0x60) == 0x00) | |
| 229 | 230 | { |
| 230 | 231 | int val; |
| 231 | 232 | |
| 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); | |
| 240 | 241 | return val; |
| 241 | 242 | } |
| 242 | else if ((CTRLD & 0x60) == 0x60) | |
| 243 | else if ((state->CTRLD & 0x60) == 0x60) | |
| 243 | 244 | /* LD1 and LD2 both high, return Team 1 right player (player 1) */ |
| 244 | 245 | { |
| 245 | static int counter_x,counter_y; | |
| 246 | int new_x,new_y; | |
| 246 | int new_x, new_y; | |
| 247 | 247 | |
| 248 | 248 | /* Read player 1 trackball */ |
| 249 | 249 | new_x = input_port_read(space->machine, "IN3"); |
| 250 | if (new_x != counter_x) | |
| 250 | if (new_x != state->counter_x_in0) | |
| 251 | 251 | { |
| 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; | |
| 254 | 254 | } |
| 255 | 255 | |
| 256 | 256 | new_y = input_port_read(space->machine, "IN2"); |
| 257 | if (new_y != counter_y) | |
| 257 | if (new_y != state->counter_y_in0) | |
| 258 | 258 | { |
| 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; | |
| 261 | 261 | } |
| 262 | 262 | |
| 263 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 263 | return (((state->counter_y_in0 & 0x0f) << 4) | (state->counter_x_in0 & 0x0f)); | |
| 264 | 264 | } |
| 265 | else if ((CTRLD & 0x60) == 0x40) | |
| 265 | else if ((state->CTRLD & 0x60) == 0x40) | |
| 266 | 266 | /* LD1 high, LD2 low, return Team 1 left player (player 2) */ |
| 267 | 267 | { |
| 268 | static int counter_x,counter_y; | |
| 269 | int new_x,new_y; | |
| 268 | int new_x, new_y; | |
| 270 | 269 | |
| 271 | 270 | /* Read player 2 trackball */ |
| 272 | 271 | new_x = input_port_read(space->machine, "IN5"); |
| 273 | if (new_x != counter_x) | |
| 272 | if (new_x != state->counter_x_in0b) | |
| 274 | 273 | { |
| 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; | |
| 277 | 276 | } |
| 278 | 277 | |
| 279 | 278 | new_y = input_port_read(space->machine, "IN4"); |
| 280 | if (new_y != counter_y) | |
| 279 | if (new_y != state->counter_y_in0b) | |
| 281 | 280 | { |
| 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; | |
| 284 | 283 | } |
| 285 | 284 | |
| 286 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 285 | return (((state->counter_y_in0b & 0x0f) << 4) | (state->counter_x_in0b & 0x0f)); | |
| 287 | 286 | } |
| 288 | 287 | |
| 289 | 288 | else return 0; |
| r6428 | r6429 | |
| 292 | 291 | |
| 293 | 292 | READ8_HANDLER( atarifb4_in2_r ) |
| 294 | 293 | { |
| 295 | if ((CTRLD & 0x40) == 0x00) | |
| 294 | atarifb_state *state = (atarifb_state *)space->machine->driver_data; | |
| 295 | ||
| 296 | if ((state->CTRLD & 0x40) == 0x00) | |
| 296 | 297 | { |
| 297 | 298 | return input_port_read(space->machine, "IN1"); |
| 298 | 299 | } |
| 299 | else if ((CTRLD & 0x60) == 0x60) | |
| 300 | else if ((state->CTRLD & 0x60) == 0x60) | |
| 300 | 301 | /* LD1 and LD2 both high, return Team 2 right player (player 3) */ |
| 301 | 302 | { |
| 302 | static int counter_x,counter_y; | |
| 303 | int new_x,new_y; | |
| 303 | int new_x, new_y; | |
| 304 | 304 | |
| 305 | 305 | /* Read player 3 trackball */ |
| 306 | 306 | new_x = input_port_read(space->machine, "IN7"); |
| 307 | if (new_x != counter_x) | |
| 307 | if (new_x != state->counter_x_in2) | |
| 308 | 308 | { |
| 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; | |
| 311 | 311 | } |
| 312 | 312 | |
| 313 | 313 | new_y = input_port_read(space->machine, "IN6"); |
| 314 | if (new_y != counter_y) | |
| 314 | if (new_y != state->counter_y_in2) | |
| 315 | 315 | { |
| 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; | |
| 318 | 318 | } |
| 319 | 319 | |
| 320 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 320 | return (((state->counter_y_in2 & 0x0f) << 4) | (state->counter_x_in2 & 0x0f)); | |
| 321 | 321 | } |
| 322 | else if ((CTRLD & 0x60) == 0x40) | |
| 322 | else if ((state->CTRLD & 0x60) == 0x40) | |
| 323 | 323 | /* LD1 high, LD2 low, return Team 2 left player (player 4) */ |
| 324 | 324 | { |
| 325 | static int counter_x,counter_y; | |
| 326 | int new_x,new_y; | |
| 325 | int new_x, new_y; | |
| 327 | 326 | |
| 328 | 327 | /* Read player 4 trackball */ |
| 329 | 328 | new_x = input_port_read(space->machine, "IN9"); |
| 330 | if (new_x != counter_x) | |
| 329 | if (new_x != state->counter_x_in2b) | |
| 331 | 330 | { |
| 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; | |
| 334 | 333 | } |
| 335 | 334 | |
| 336 | 335 | new_y = input_port_read(space->machine, "IN8"); |
| 337 | if (new_y != counter_y) | |
| 336 | if (new_y != state->counter_y_in2b) | |
| 338 | 337 | { |
| 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; | |
| 341 | 340 | } |
| 342 | 341 | |
| 343 | return (((counter_y & 0x0f) << 4) | (counter_x & 0x0f)); | |
| 342 | return (((state->counter_y_in2b & 0x0f) << 4) | (state->counter_x_in2b & 0x0f)); | |
| 344 | 343 | } |
| 345 | 344 | |
| 346 | 345 | else return 0; |
| 347 | 346 | } |
| 348 | ||
| 349 |
| r6428 | r6429 | |
|---|---|---|
| 52 | 52 | DRIVER( hangly ) /* hack */ |
| 53 | 53 | DRIVER( hangly2 ) /* hack */ |
| 54 | 54 | DRIVER( hangly3 ) /* hack */ |
| 55 | DRIVER( popeyeman ) /* hack */ | |
| 55 | 56 | DRIVER( piranhah ) /* hack */ |
| 56 | 57 | DRIVER( abscam ) /* hack */ |
| 57 | 58 | DRIVER( crush ) /* (c) 1981 Kural Samno Electric Ltd */ |
| r6428 | r6429 | |
| 195 | 196 | DRIVER( mooncrsb ) /* bootleg */ |
| 196 | 197 | DRIVER( mooncrs2 ) /* bootleg */ |
| 197 | 198 | DRIVER( spcdrag ) /* bootleg */ |
| 199 | DRIVER( stera ) /* bootleg */ | |
| 198 | 200 | DRIVER( spcdraga ) /* bootleg */ |
| 199 | 201 | DRIVER( mooncrs3 ) /* bootleg */ |
| 200 | 202 | DRIVER( fantazia ) /* bootleg */ |
| r6428 | r6429 | |
| 534 | 536 | DRIVER( av2mj1bb ) /* (c) 1991 MIKI SYOUJI/AV JAPAN */ |
| 535 | 537 | DRIVER( av2mj2rg ) /* (c) 1991 MIKI SYOUJI/AV JAPAN */ |
| 536 | 538 | |
| 539 | DRIVER( ohpaipee ) /* (c) 1990 Nichibutsu */ | |
| 540 | DRIVER( togenkyo ) /* (c) 1990 Nichibutsu */ | |
| 541 | ||
| 537 | 542 | DRIVER( mjuraden ) /* (c) 1992 Nichibutsu/Yubis */ |
| 538 | 543 | DRIVER( koinomp ) /* (c) 1992 */ |
| 539 | 544 | DRIVER( patimono ) /* (c) 1992 */ |
| r6428 | r6429 | |
| 692 | 697 | DRIVER( poleposa ) /* 136014 (c) 1982 + Atari license */ |
| 693 | 698 | DRIVER( polepos1 ) /* 136014 (c) 1982 Atari */ |
| 694 | 699 | DRIVER( topracer ) /* bootleg */ |
| 695 | DRIVER( topracra ) /* bootleg */ | |
| 696 | DRIVER( topracrb ) /* bootleg */ | |
| 700 | DRIVER( topracera ) /* bootleg */ | |
| 701 | DRIVER( topracern ) /* bootleg */ | |
| 697 | 702 | DRIVER( polepos2 ) /* (c) 1983 */ |
| 698 | 703 | DRIVER( polepos2a ) /* 136014 (c) 1983 + Atari license */ |
| 699 | 704 | DRIVER( polepos2b ) /* bootleg */ |
| r6428 | r6429 | |
| 929 | 934 | |
| 930 | 935 | /* Universal games */ |
| 931 | 936 | 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] */ | |
| 933 | 939 | DRIVER( cosmica2 ) /* 7910 (c) 1979 */ |
| 934 | 940 | DRIVER( nomnlnd ) /* 8003 (c) [1980?] */ |
| 935 | 941 | DRIVER( nomnlndg ) /* 8003 (c) [1980?] + Gottlieb */ |
| r6428 | r6429 | |
| 1490 | 1496 | DRIVER( dbreedm72 ) /* (c) 1989 */ |
| 1491 | 1497 | DRIVER( rtype2 ) /* (c) 1989 */ |
| 1492 | 1498 | DRIVER( rtype2j ) /* (c) 1989 (Japan) */ |
| 1499 | DRIVER( rtype2jc ) /* (c) 1989 (Japan) */ | |
| 1493 | 1500 | DRIVER( majtitle ) /* (c) 1990 (World) */ |
| 1494 | 1501 | DRIVER( majtitlej ) /* (c) 1990 (Japan) */ |
| 1495 | 1502 | DRIVER( hharry ) /* (c) 1990 (World) */ |
| r6428 | r6429 | |
| 2059 | 2066 | DRIVER( scfinals ) /* 1994.?? D68 (c) 1993 Taito Corporation Japan (World) */ |
| 2060 | 2067 | DRIVER( intcup94 ) /* 1994.?? D78 (c) 1994 Taito (World) */ |
| 2061 | 2068 | 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) */ | |
| 2063 | 2071 | DRIVER( dungeonm ) /* 1994.?? D69 (c) 1993 Taito Corporation Japan (World) */ |
| 2064 | 2072 | DRIVER( dungeonmu ) /* 1994.?? D69 (c) 1993 Taito America Corporation (US) */ |
| 2065 | 2073 | DRIVER( kaiserkn ) /* 1994.?? D84 (c) 1994 Taito Corporation Japan (World) */ |
| r6428 | r6429 | |
| 2490 | 2498 | DRIVER( 1943kai ) /* 6/1988 (c) 1987 (Japan) */ |
| 2491 | 2499 | DRIVER( lastduel ) /* 7/1988 (c) 1988 (US) */ |
| 2492 | 2500 | DRIVER( lastduelo ) /* 7/1988 (c) 1988 (US) */ |
| 2501 | DRIVER( lastduelj ) /* 7/1988 (c) 1988 (Japan) */ | |
| 2493 | 2502 | DRIVER( lastduelb ) /* bootleg */ |
| 2494 | 2503 | DRIVER( madgear ) /* 2/1989 (c) 1989 (US) */ |
| 2495 | 2504 | DRIVER( madgearj ) /* 2/1989 (c) 1989 (Japan) */ |
| r6428 | r6429 | |
| 2657 | 2666 | DRIVER( ssf2j ) /* 05/10/1993 (c) 1993 (Japan) */ |
| 2658 | 2667 | DRIVER( ssf2jr1 ) /* 11/09/1993 (c) 1993 (Japan) */ |
| 2659 | 2668 | DRIVER( ssf2jr2 ) /* 10/09/1993 (c) 1993 (Japan) */ |
| 2669 | DRIVER( ssf2h ) /* 11/09/1993 (c) 1993 (Hispanic) */ | |
| 2660 | 2670 | DRIVER( ssf2tb ) /* 11/19/1993 (c) 1993 (World) */ |
| 2661 | 2671 | DRIVER( ssf2tbr1 ) /* 11/09/1993 (c) 1993 (World) */ |
| 2662 | 2672 | DRIVER( ssf2tbj ) /* 11/09/1993 (c) 1993 (Japan) */ |
| r6428 | r6429 | |
| 2759 | 2769 | DRIVER( ddsomjr1 ) /* 06/02/1996 (c) 1996 (Japan) */ |
| 2760 | 2770 | DRIVER( ddsomj ) /* 19/06/1996 (c) 1996 (Japan) */ |
| 2761 | 2771 | DRIVER( ddsoma ) /* 19/06/1996 (c) 1996 (Asia) */ |
| 2772 | DRIVER( ddsomh ) /* 23/02/1996 (c) 1996 (Hispanic) */ | |
| 2762 | 2773 | DRIVER( ddsomb ) /* 23/02/1996 (c) 1996 (Brazil) */ |
| 2763 | 2774 | DRIVER( sfa2 ) /* 06/03/1996 (c) 1996 (Euro) */ |
| 2764 | 2775 | DRIVER( sfa2u ) /* 06/03/1996 (c) 1996 (US) */ |
| r6428 | r6429 | |
| 2775 | 2786 | DRIVER( megaman2 ) /* 08/07/1996 (c) 1996 (US) */ |
| 2776 | 2787 | DRIVER( megaman2a ) /* 08/07/1996 (c) 1996 (Asia) */ |
| 2777 | 2788 | DRIVER( rckman2j ) /* 08/07/1996 (c) 1996 (Japan) */ |
| 2789 | DRIVER( megaman2h ) /* 12/07/1996 (c) 1996 (Hispanic) */ | |
| 2778 | 2790 | DRIVER( gigamn2 ) /* bootleg */ |
| 2779 | 2791 | DRIVER( sfz2al ) /* 26/08/1996 (c) 1996 (Asia) */ |
| 2780 | 2792 | DRIVER( sfz2alj ) /* 05/08/1996 (c) 1996 (Japan) */ |
| r6428 | r6429 | |
| 4063 | 4075 | DRIVER( vmahjong ) /* 1997.02 Virtual Mahjong (Micronet) */ |
| 4064 | 4076 | DRIVER( groovef ) /* 1997.05 Groove on Fight (Atlus) */ |
| 4065 | 4077 | DRIVER( nclubv3 ) /* 1997.07 Name Club Ver. 3 */ |
| 4078 | DRIVER( pclub2 ) /* 1997.09 Print Club 2 */ | |
| 4066 | 4079 | DRIVER( thunt ) /* 1997.09 Puzzle & Action Treasure Hunt (Sega (Deniam License)) */ |
| 4067 | 4080 | DRIVER( thuntk ) |
| 4068 | 4081 | DRIVER( winterht ) /* 1997.10 Winter Heat (Data East) */ |
| r6428 | r6429 | |
| 4086 | 4099 | DRIVER( elandore ) /* 1998.11 Touryuu Densetsu Elandore (Sai-Mate) */ |
| 4087 | 4100 | DRIVER( sss ) /* 1998.12 Steep Slope Sliders (Capcom / Cave / Victor) */ |
| 4088 | 4101 | DRIVER( micrombc ) /* 1999.03 Microman Battle Charge */ |
| 4102 | DRIVER( pclub2v3 ) /* 1999.03 Print Club 2 Vol. 3 */ | |
| 4089 | 4103 | DRIVER( sanjeon ) /* 1999.04 Sanjun Sujun (Sega / Deniam) */ |
| 4090 | 4104 | DRIVER( danchih ) /* 1999.06 Danchi de Hanafuda Okusan Komeya Desuyo! (Altron (Tecmo License)) */ |
| 4091 | 4105 | DRIVER( ffreveng ) /* 1999.09 Final Fight Revenge (Capcom) */ |
| r6428 | r6429 | |
| 4458 | 4472 | DRIVER( hmgeo ) /* 2001.09 Heavy Metal Geo Matrix */ |
| 4459 | 4473 | /* 2001.10 Inu no Osanpo */ |
| 4460 | 4474 | DRIVER( derbyoc2 ) /* 2001.10 Derby Owners Club 2 */ |
| 4461 | DRIVER( vtennis2 ) | |
| 4475 | DRIVER( vtennis2 ) | |
| 4462 | 4476 | DRIVER( vtenis2c ) /* Power Smash 2 / Virtua Tennis 2 (cartridge) */ |
| 4463 | 4477 | /* 2001.11 Shakatto Tambourine Cho Powerup Chu */ |
| 4464 | 4478 | DRIVER( keyboard ) /* 2001.11 La Keyboardxyu */ |
| r6428 | r6429 | |
| 4498 | 4512 | DRIVER( undefeat ) /* 2005.10 Under Defeat */ |
| 4499 | 4513 | /* 2005.12 Radirgy (Rev. A) */ |
| 4500 | 4514 | DRIVER( kurucham ) /* 2006.03 Kurukuru Chameleon */ |
| 4501 | | |
| 4515 | DRIVER( trgheart ) /* 2006.05 Trigger Heart Exelica */ | |
| 4502 | 4516 | /* 2006.07 Touch de Zunou */ |
| 4503 | 4517 | /* 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 */ | |
| 4506 | 4520 | /* 2006.12 Guilty Gear XX Accent Core */ |
| 4507 | 4521 | /* 2006.12 Melty Blood Act Cadenza ver.B */ |
| 4508 | 4522 | /* 2006.12.16 Noukone Puzzle Takoron */ |
| r6428 | r6429 | |
| 4546 | 4560 | /* 2001.06 Club Kart */ |
| 4547 | 4561 | DRIVER( beachspi ) /* 2001.07 Beach Spikers */ |
| 4548 | 4562 | /* 2001.08 Wave Runner GP */ |
| 4549 | DRIVER( vf4cart ) | |
| 4563 | DRIVER( vf4cart ) | |
| 4550 | 4564 | DRIVER( vf4 ) /* 2001.08.02 Virtua Fighter 4 (GD-ROM) */ |
| 4551 | 4565 | DRIVER( vf4b ) /* 2001.08.20 Virtua Fighter 4 ver.B */ |
| 4552 | 4566 | DRIVER( vf4c ) /* 2002.01.31 Virtua Fighter 4 ver.C */ |
| r6428 | r6429 | |
| 5580 | 5594 | DRIVER( gradius4 ) /* GX837 (c)1999 */ |
| 5581 | 5595 | DRIVER( sscope ) /* GX830 (c)1999 */ |
| 5582 | 5596 | DRIVER( sscopea ) /* GX830 (c)1999 */ |
| 5597 | DRIVER( sscopeb ) /* GX830 (c)1999 */ | |
| 5583 | 5598 | DRIVER( sscope2 ) /* GX931 (c)2000 */ |
| 5584 | 5599 | DRIVER( racingj ) /* GX676 (c)1998 */ |
| 5585 | 5600 | DRIVER( racingj2 ) /* GX888 (c)1999 */ |
| r6428 | r6429 | |
| 6147 | 6162 | DRIVER( mnchmobl ) /* A2001 (c) 1983 + Centuri license */ |
| 6148 | 6163 | DRIVER( marvins ) /* A2003 (c) 1983 */ |
| 6149 | 6164 | DRIVER( madcrash ) /* A2005 (c) 1984 */ |
| 6165 | DRIVER( madcrush ) /* A2005 (c) 1984 */ | |
| 6150 | 6166 | DRIVER( vangrd2 ) /* A2005 (c) 1984 */ |
| 6151 | 6167 | DRIVER( mainsnk ) /* (c) 1984 */ |
| 6152 | 6168 | DRIVER( canvas ) /* A3008 (c) 1985 */ |
| r6428 | r6429 | |
| 7510 | 7526 | DRIVER( sarukani ) /* 1997.01 (c) 1997 Kaneko / Mediaworks (Japan) */ |
| 7511 | 7527 | DRIVER( vblokbrk ) /* 1997.?? (c) 1997 Kaneko / Mediaworks (Asia) */ |
| 7512 | 7528 | DRIVER( galpanis ) /* 1997.04 (c) 1997 Kaneko (Japan) */ |
| 7529 | DRIVER( galpanisk ) /* 1997.04 (c) 1997 Kaneko (Korea) */ | |
| 7513 | 7530 | DRIVER( sengekis ) /* 1997.?? (c) 1997 Kaneko / Warashi (Asia) */ |
| 7514 | 7531 | DRIVER( sengekisj ) /* 1997.07 (c) 1997 Kaneko / Warashi (Japan) */ |
| 7515 | 7532 | DRIVER( jjparad2 ) /* 1997.12 (c) 1997 Electro Design Co. (Japan) */ |
| r6428 | r6429 | |
| 8118 | 8135 | DRIVER( stellecu ) /* (c) 1998 */ |
| 8119 | 8136 | DRIVER( iqblock ) /* (c) 1993 */ |
| 8120 | 8137 | 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 */ | |
| 8121 | 8144 | DRIVER( jingbell ) /* (c) 1995? */ |
| 8122 | DRIVER( gp98 ) /* (c) 19?? */ | |
| 8145 | DRIVER( gp98 ) /* (c) 1998 */ | |
| 8146 | ||
| 8147 | /* IGS011 Games */ | |
| 8123 | 8148 | DRIVER( lhb ) /* (c) 1995 */ |
| 8124 | 8149 | DRIVER( lhba ) /* (c) 1995 */ |
| 8150 | DRIVER( ryukobou ) /* (c) 1995 */ | |
| 8125 | 8151 | DRIVER( dbc ) /* (c) 199? */ |
| 8126 | DRIVER( | |
| 8152 | DRIVER( | |
| 8127 | 8153 | DRIVER( xymg ) /* (c) 1996 */ |
| 8128 | DRIVER( | |
| 8154 | DRIVER( | |
| 8129 | 8155 | DRIVER( vbowl ) /* (c) 1996 */ |
| 8130 | 8156 | DRIVER( vbowlj ) /* (c) 1996 */ |
| 8131 | 8157 | DRIVER( drgnwrld ) /* (c) 1997 */ |
| r6428 | r6429 | |
| 8135 | 8161 | DRIVER( drgnwrldv20j ) /* (c) 1995 */ |
| 8136 | 8162 | DRIVER( drgnwrldv10c ) /* (c) 1995 */ |
| 8137 | 8163 | DRIVER( drgnwrldv11h ) /* (c) 1995 */ |
| 8164 | DRIVER( nkishusp ) /* (c) 1998 */ | |
| 8138 | 8165 | |
| 8139 | DRIVER( lordgun ) /* (c) 1994 */ | |
| 8140 | DRIVER( hfh ) /* (c) 199? */ | |
| 8141 | DRIVER( tarzan ) | |
| 8142 | ||
| 8143 | DRIVER( dunhuang ) /* (c) 199? */ | |
| 8144 | ||
| 8166 | /* IGS017 / IGS031 Games */ | |
| 8145 | 8167 | DRIVER( iqblocka ) /* (c) 1996 */ |
| 8146 | 8168 | DRIVER( iqblockf ) /* (c) 1996 */ |
| 8147 | 8169 | DRIVER( tjsb ) /* (c) 1997 */ |
| 8148 | ||
| 8170 | DRIVER( sdmg2 ) /* (c) 1997 */ | |
| 8171 | DRIVER( mgdh ) /* (c) 1997 */ | |
| 8172 | DRIVER( mgcs ) /* (c) 1998 */ | |
| 8149 | 8173 | DRIVER( lhzb2 ) /* (c) 1998 */ |
| 8150 | 8174 | DRIVER( lhzb2a ) /* (c) 1998 */ |
| 8151 | DRIVER( mgcs ) /* (c) 1998 */ | |
| 8152 | 8175 | DRIVER( slqz2 ) /* (c) 1998 */ |
| 8153 | DRIVER( sdmg2 ) /* (c) 1997 */ | |
| 8176 | DRIVER( tarzan ) /* (c) 1999? */ | |
| 8177 | DRIVER( tarzana ) /* (c) 1999? */ | |
| 8178 | DRIVER( starzan ) /* (c) 2000? */ | |
| 8154 | 8179 | |
| 8180 | /* IGS027A Games */ | |
| 8155 | 8181 | DRIVER( bigd2 ) /* (c) 2000 */ |
| 8156 | 8182 | DRIVER( sdwx ) /* (c) 2002 */ |
| 8157 | 8183 | DRIVER( sddz ) /* (c) 200? */ |
| r6428 | r6429 | |
| 8159 | 8185 | DRIVER( lhzb4 ) /* (c) 200? */ |
| 8160 | 8186 | DRIVER( klxyj ) /* (c) 200? */ |
| 8161 | 8187 | DRIVER( mgfx ) /* (c) 200? */ |
| 8162 | DRIVER( ddz ) /* (c) 200? */ | |
| 8163 | 8188 | |
| 8164 | 8189 | /* IGS PGM System Games */ |
| 8165 | 8190 | DRIVER( pgm ) |
| r6428 | r6429 | |
| 8205 | 8230 | DRIVER( killbldp ) |
| 8206 | 8231 | DRIVER( svg ) |
| 8207 | 8232 | |
| 8233 | /* Spirit Tech. Corp. */ | |
| 8234 | DRIVER( dunhuang ) /* (c) 1995 */ | |
| 8235 | ||
| 8208 | 8236 | /* RamTek games */ |
| 8209 | 8237 | DRIVER( hitme ) /* (c) 1976 Ramtek */ |
| 8210 | 8238 | DRIVER( m21 ) /* (c) 1976 Mirco */ |
| r6428 | r6429 | |
| 8307 | 8335 | |
| 8308 | 8336 | /* Art & Magic games */ |
| 8309 | 8337 | DRIVER( ultennis ) /* (c) 1993 */ |
| 8338 | DRIVER( ultennisj ) /* (c) 1993 */ | |
| 8310 | 8339 | DRIVER( cheesech ) /* (c) 1994 */ |
| 8311 | 8340 | DRIVER( stonebal ) /* (c) 1994 */ |
| 8312 | 8341 | DRIVER( stonebal2 ) /* (c) 1994 */ |
| 8313 | 8342 | |
| 8314 | 8343 | /* Dynamo games */ |
| 8315 | 8344 | DRIVER( skeetsht ) /* (c) 1991 */ |
| 8316 | DRIVER( toursol ) | |
| 8345 | DRIVER( toursol ) /* (c) 1995 Dynamo */ | |
| 8346 | DRIVER( toursol1 ) /* (c) 1995 Dynamo */ | |
| 8317 | 8347 | |
| 8318 | 8348 | /* Taiyo games */ |
| 8319 | 8349 | DRIVER( dynamski ) /* (c) 1984 Taiyo */ |
| r6428 | r6429 | |
| 8419 | 8449 | DRIVER( topbladv ) /* 2002 Sonokong. Top Blade V */ |
| 8420 | 8450 | DRIVER( officeye ) |
| 8421 | 8451 | |
| 8452 | DRIVER( ddz ) /* (c) 200? */ | |
| 8453 | ||
| 8422 | 8454 | DRIVER( psattack ) /* 2004 Uniana */ |
| 8423 | 8455 | |
| 8424 | 8456 | /* Bell Fruit Cobra Hardware */ |
| r6428 | r6429 | |
| 8561 | 8593 | DRIVER( gfire2 ) /* (c) 1992 Topis Corp */ |
| 8562 | 8594 | DRIVER( sprcros2 ) /* (c) 1986 GM Shoji */ |
| 8563 | 8595 | DRIVER( sprcros2a ) /* (c) 1986 GM Shoji */ |
| 8596 | DRIVER( d9final ) /* (c) 1992 Excellent System */ | |
| 8564 | 8597 | DRIVER( gcpinbal ) /* (c) 1994 Excellent System */ |
| 8565 | 8598 | DRIVER( vmetal ) /* (c) 1995 Excellent System? */ |
| 8566 | 8599 | DRIVER( vmetaln ) /* (c) 1995 Excellent System? */ |
| r6428 | r6429 | |
| 8595 | 8628 | DRIVER( quiz211 ) /* (c) 1986 Italian bootleg */ |
| 8596 | 8629 | DRIVER( jokpoker ) /* (c) 1982 Greyhound Electronics */ |
| 8597 | 8630 | DRIVER( jokpokera ) /* (c) 1982 Greyhound Electronics */ |
| 8631 | DRIVER( jokpokerb ) | |
| 8632 | DRIVER( jokpokerc ) | |
| 8598 | 8633 | DRIVER( superbwl ) /* (c) 1982 Greyhound Electronics */ |
| 8599 | 8634 | DRIVER( amuse ) /* (c) 1982 Greyhound Electronics */ |
| 8635 | DRIVER( amuse1 ) /* (c) 1982 Greyhound Electronics */ | |
| 8600 | 8636 | DRIVER( gs4002 ) /* (c) 1982 G.E.I. */ |
| 8601 | 8637 | DRIVER( gs4002a ) /* (c) 1982 G.E.I. */ |
| 8602 | 8638 | DRIVER( gepoker ) /* (c) 1984 Greyhound Electronics */ |
| r6428 | r6429 | |
| 8612 | 8648 | DRIVER( gtsersb ) /* (c) 1985 Greyhound Electronics */ |
| 8613 | 8649 | DRIVER( sextriv1 ) /* (c) 1985 Kinky Kit and Game Co. */ |
| 8614 | 8650 | 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 ) | |
| 8615 | 8654 | DRIVER( dribling ) /* (c) 1983 Model Racing */ |
| 8616 | 8655 | DRIVER( driblingo ) /* (c) 1983 Olympia */ |
| 8617 | 8656 | DRIVER( ace ) /* [1976 Allied Leisure] */ |
| r6428 | r6429 | |
| 8735 | 8774 | DRIVER( strvmstr ) /* (c) 1986 Enerdyne Technologies Inc */ |
| 8736 | 8775 | DRIVER( dorachan ) /* (c) 1980 Craul Denshi */ |
| 8737 | 8776 | DRIVER( ladyfrog ) /* (c) 1990 Mondial Games */ |
| 8777 | DRIVER( toucheme ) | |
| 8738 | 8778 | DRIVER( rabbit ) /* (c) 1997 Electronic Arts */ |
| 8739 | 8779 | DRIVER( tmmjprd ) /* (c) 1997 Media / Sonnet */ |
| 8740 | 8780 | DRIVER( tmpdoki ) /* (c) 1998 Media Syouji */ |
| r6428 | r6429 | |
| 9163 | 9203 | DRIVER( jongkyo ) /* (c) 1985 Kiwako */ |
| 9164 | 9204 | DRIVER( gamecstl ) /* MAME based bootleg */ |
| 9165 | 9205 | 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 */ | |
| 9167 | 9208 | DRIVER( blazlaz ) /* (c) 1989 Hudson Soft */ |
| 9168 | 9209 | DRIVER( ggconnie ) /* (c) ???? Capcom */ |
| 9169 | 9210 | DRIVER( paranoia ) /* (c) 1990 Naxat Soft */ |
| r6428 | r6429 | |
| 9738 | 9779 | |
| 9739 | 9780 | /* Scorpion 2 */ |
| 9740 | 9781 | DRIVER( m_brkfst ) |
| 9782 | DRIVER( m_brkfs1 ) | |
| 9783 | DRIVER( m_brkfs2 ) | |
| 9784 | DRIVER( m_brkfs3 ) | |
| 9785 | DRIVER( m_brkfs4 ) | |
| 9786 | DRIVER( m_brkfs5 ) | |
| 9741 | 9787 | |
| 9742 | 9788 | DRIVER( m_bdrwho ) |
| 9743 | 9789 | DRIVER( m_bdrwh1 ) |
| r6428 | r6429 | |
|---|---|---|
| 31 | 31 | struct _m10_state |
| 32 | 32 | { |
| 33 | 33 | /* 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; | |
| 37 | 39 | |
| 38 | /* machine states */ | |
| 40 | /* video-related */ | |
| 41 | tilemap * tx_tilemap; | |
| 42 | gfx_element * back_gfx; | |
| 39 | 43 | |
| 40 | /* sound state */ | |
| 44 | /* this is currently unused, because it is needed by gfx_layout (which has no machine) */ | |
| 45 | UINT32 extyoffs[32 * 8]; | |
| 41 | 46 | |
| 42 | 47 | /* video state */ |
| 43 | UINT8 bottomline; | |
| 44 | UINT8 flip; | |
| 48 | UINT8 bottomline; | |
| 49 | UINT8 flip; | |
| 45 | 50 | |
| 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; | |
| 47 | 58 | }; |
| 48 | 59 | |
| 49 | 60 | |
| r6428 | r6429 | |
| 59 | 70 | |
| 60 | 71 | VIDEO_START( m10 ); |
| 61 | 72 | VIDEO_START( m15 ); |
| 62 |
| r6428 | r6429 | |
|---|---|---|
| 1 | /*----------- defined in video/n8080.c -----------*/ | |
| 2 | 1 | |
| 3 | extern int helifire_flash; | |
| 2 | typedef struct _n8080_state n8080_state; | |
| 3 | struct _n8080_state | |
| 4 | { | |
| 5 | /* memory pointers */ | |
| 6 | UINT8 * videoram; | |
| 7 | UINT8 * colorram; // for helifire | |
| 4 | 8 | |
| 5 | extern int spacefev_red_screen; | |
| 6 | extern 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 */ | |
| 7 | 19 | |
| 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 | ||
| 8 | 41 | WRITE8_HANDLER( n8080_video_control_w ); |
| 9 | 42 | |
| 10 | 43 | PALETTE_INIT( n8080 ); |
| r6428 | r6429 | |
| 26 | 59 | MACHINE_DRIVER_EXTERN( sheriff_sound ); |
| 27 | 60 | MACHINE_DRIVER_EXTERN( helifire_sound ); |
| 28 | 61 | |
| 62 | MACHINE_START( spacefev_sound ); | |
| 63 | MACHINE_START( sheriff_sound ); | |
| 64 | MACHINE_START( helifire_sound ); | |
| 65 | MACHINE_RESET( spacefev_sound ); | |
| 66 | MACHINE_RESET( sheriff_sound ); | |
| 67 | MACHINE_RESET( helifire_sound ); | |
| 68 | ||
| 29 | 69 | WRITE8_HANDLER( n8080_sound_1_w ); |
| 30 | 70 | WRITE8_HANDLER( n8080_sound_2_w ); |
| 31 |
| r6428 | r6429 | |
|---|---|---|
| 6 | 6 | |
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | typedef struct _arabian_state arabian_state; | |
| 10 | struct _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 | ||
| 9 | 29 | /*----------- defined in video/arabian.c -----------*/ |
| 10 | 30 | |
| 11 | extern UINT8 *arabian_blitter; | |
| 12 | extern UINT8 arabian_video_control; | |
| 13 | extern UINT8 arabian_flip_screen; | |
| 31 | WRITE8_HANDLER( arabian_blitter_w ); | |
| 32 | WRITE8_HANDLER( arabian_videoram_w ); | |
| 14 | 33 | |
| 15 | 34 | PALETTE_INIT( arabian ); |
| 16 | 35 | VIDEO_START( arabian ); |
| 17 | 36 | VIDEO_UPDATE( arabian ); |
| 18 | ||
| 19 | WRITE8_HANDLER( arabian_blitter_w ); | |
| 20 | WRITE8_HANDLER( arabian_videoram_w ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | 1942 | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct __1942_state _1942_state; | |
| 8 | struct __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 | ||
| 25 | extern WRITE8_HANDLER( c1942_fgvideoram_w ); | |
| 26 | extern WRITE8_HANDLER( c1942_bgvideoram_w ); | |
| 27 | extern WRITE8_HANDLER( c1942_scroll_w ); | |
| 28 | extern WRITE8_HANDLER( c1942_c804_w ); | |
| 29 | extern WRITE8_HANDLER( c1942_palette_bank_w ); | |
| 30 | ||
| 31 | extern PALETTE_INIT( 1942 ); | |
| 32 | extern VIDEO_START( 1942 ); | |
| 33 | extern VIDEO_UPDATE( 1942 ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /************************************************************************* | |
| 2 | ||
| 3 | Ambush | |
| 4 | ||
| 5 | *************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _ambush_state ambush_state; | |
| 8 | struct _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 | ||
| 21 | PALETTE_INIT( ambush ); | |
| 22 | VIDEO_UPDATE( ambush ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | carjmbre | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _carjmbre_state carjmbre_state; | |
| 8 | struct _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 | ||
| 24 | WRITE8_HANDLER( carjmbre_flipscreen_w ); | |
| 25 | WRITE8_HANDLER( carjmbre_bgcolor_w ); | |
| 26 | WRITE8_HANDLER( carjmbre_videoram_w ); | |
| 27 | ||
| 28 | PALETTE_INIT( carjmbre ); | |
| 29 | VIDEO_START( carjmbre ); | |
| 30 | VIDEO_UPDATE( carjmbre ); | |
| 31 | ||
| 32 |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | 1943 | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct __1943_state _1943_state; | |
| 8 | struct __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 | ||
| 27 | extern WRITE8_HANDLER( c1943_c804_w ); | |
| 28 | extern WRITE8_HANDLER( c1943_d806_w ); | |
| 29 | extern WRITE8_HANDLER( c1943_videoram_w ); | |
| 30 | extern WRITE8_HANDLER( c1943_colorram_w ); | |
| 31 | ||
| 32 | extern PALETTE_INIT( 1943 ); | |
| 33 | extern VIDEO_START( 1943 ); | |
| 34 | extern VIDEO_UPDATE( 1943 ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Popper | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _popper_state popper_state; | |
| 8 | struct _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 | ||
| 28 | WRITE8_HANDLER( popper_videoram_w ); | |
| 29 | WRITE8_HANDLER( popper_attribram_w ); | |
| 30 | WRITE8_HANDLER( popper_ol_videoram_w ); | |
| 31 | WRITE8_HANDLER( popper_ol_attribram_w ); | |
| 32 | WRITE8_HANDLER( popper_flipscreen_w ); | |
| 33 | WRITE8_HANDLER( popper_e002_w ); | |
| 34 | WRITE8_HANDLER( popper_gfx_bank_w ); | |
| 35 | ||
| 36 | PALETTE_INIT( popper ); | |
| 37 | VIDEO_START( popper ); | |
| 38 | VIDEO_UPDATE( popper ); | |
| 39 | ||
| 40 |
| r6428 | r6429 | |
|---|---|---|
| 4 | 4 | |
| 5 | 5 | ****************************************************************************/ |
| 6 | 6 | |
| 7 | typedef struct _astrof_state astrof_state; | |
| 8 | struct _astrof_state | |
| 9 | { | |
| 10 | /* video-related */ | |
| 11 | UINT8 * videoram; | |
| 12 | size_t videoram_size; | |
| 7 | 13 | |
| 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 | ||
| 8 | 36 | /*----------- defined in audio/astrof.c -----------*/ |
| 9 | 37 | |
| 10 | MACHINE_START( astrof_audio ); | |
| 11 | 38 | MACHINE_DRIVER_EXTERN( astrof_audio ); |
| 12 | 39 | WRITE8_HANDLER( astrof_audio_1_w ); |
| 13 | 40 | WRITE8_HANDLER( astrof_audio_2_w ); |
| r0 | r6429 | |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | typedef struct _hexa_state hexa_state; | |
| 4 | struct _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 | ||
| 18 | WRITE8_HANDLER( hexa_videoram_w ); | |
| 19 | WRITE8_HANDLER( hexa_d008_w ); | |
| 20 | ||
| 21 | VIDEO_START( hexa ); | |
| 22 | VIDEO_UPDATE( hexa ); |
| r6428 | r6429 | |
|---|---|---|
| 13 | 13 | #define BSKTBALL_BOUNCE_EN NODE_04 |
| 14 | 14 | |
| 15 | 15 | |
| 16 | typedef struct _bsktball_state bsktball_state; | |
| 17 | struct _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 | ||
| 16 | 38 | /*----------- defined in machine/bsktball.c -----------*/ |
| 17 | 39 | |
| 18 | 40 | WRITE8_HANDLER( bsktball_nmion_w ); |
| r6428 | r6429 | |
| 34 | 56 | |
| 35 | 57 | /*----------- defined in video/bsktball.c -----------*/ |
| 36 | 58 | |
| 37 | extern UINT8 *bsktball_motion; | |
| 38 | ||
| 39 | 59 | VIDEO_START( bsktball ); |
| 40 | 60 | VIDEO_UPDATE( bsktball ); |
| 41 | 61 | WRITE8_HANDLER( bsktball_videoram_w ); |
| r6428 | r6429 | |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | typedef struct _appoooh_state appoooh_state; | |
| 4 | struct _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 | ||
| 1 | 31 | /* ----------- defined in video/appoooh.c -----------*/ |
| 2 | 32 | |
| 3 | extern UINT8 *appoooh_fg_videoram,*appoooh_fg_colorram; | |
| 4 | extern UINT8 *appoooh_bg_videoram,*appoooh_bg_colorram; | |
| 5 | 33 | WRITE8_HANDLER( appoooh_fg_videoram_w ); |
| 6 | 34 | WRITE8_HANDLER( appoooh_fg_colorram_w ); |
| 7 | 35 | WRITE8_HANDLER( appoooh_bg_videoram_w ); |
| r6428 | r6429 | |
| 13 | 41 | VIDEO_START( appoooh ); |
| 14 | 42 | VIDEO_UPDATE( appoooh ); |
| 15 | 43 | VIDEO_UPDATE( robowres ); |
| 16 |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Aeroboto | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _aeroboto_state aeroboto_state; | |
| 8 | struct _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 | ||
| 39 | VIDEO_START( aeroboto ); | |
| 40 | VIDEO_UPDATE( aeroboto ); | |
| 41 | ||
| 42 | READ8_HANDLER( aeroboto_in0_r ); | |
| 43 | WRITE8_HANDLER( aeroboto_3000_w ); | |
| 44 | WRITE8_HANDLER( aeroboto_videoram_w ); | |
| 45 | WRITE8_HANDLER( aeroboto_tilecolor_w ); |
| r6428 | r6429 | |
|---|---|---|
| 11 | 11 | extern UINT32 *ms32_roz_ctrl; |
| 12 | 12 | extern UINT32 *ms32_tx_scroll; |
| 13 | 13 | extern UINT32 *ms32_bg_scroll; |
| 14 | ||
| 15 | /* | |
| 14 | 16 | extern UINT32 *ms32_priram; |
| 15 | 17 | extern UINT32 *ms32_palram; |
| 16 | 18 | extern UINT32 *ms32_bgram; |
| r6428 | r6429 | |
| 18 | 20 | extern UINT32 *ms32_lineram; |
| 19 | 21 | extern UINT32 *ms32_spram; |
| 20 | 22 | extern UINT32 *ms32_txram; |
| 23 | */ | |
| 21 | 24 | extern UINT32 *ms32_mainram; |
| 22 | 25 | |
| 23 | 26 | WRITE32_HANDLER( ms32_brightness_w ); |
| 27 | /* | |
| 24 | 28 | WRITE32_HANDLER( ms32_palram_w ); |
| 25 | 29 | READ32_HANDLER( ms32_txram_r ); |
| 26 | 30 | WRITE32_HANDLER( ms32_txram_w ); |
| r6428 | r6429 | |
| 32 | 36 | WRITE32_HANDLER( ms32_bgram_w ); |
| 33 | 37 | READ32_HANDLER( ms32_spram_r ); |
| 34 | 38 | WRITE32_HANDLER( ms32_spram_w ); |
| 35 | READ32_HANDLER( ms32_priram_r ); | |
| 36 | WRITE32_HANDLER( ms32_priram_w ); | |
| 39 | */ | |
| 40 | ||
| 37 | 41 | WRITE32_HANDLER( ms32_gfxctrl_w ); |
| 38 | 42 | VIDEO_START( ms32 ); |
| 43 | VIDEO_START( f1superb ); | |
| 39 | 44 | VIDEO_UPDATE( ms32 ); |
| r6428 | r6429 | |
|---|---|---|
| 20 | 20 | |
| 21 | 21 | /* machine state */ |
| 22 | 22 | UINT8 game_selected; /* 0 = Ms. Pac-Man, 1 = Galaga */ |
| 23 | ||
| 24 | /* devices */ | |
| 25 | const device_config *eeprom; | |
| 23 | 26 | }; |
| 24 | 27 | |
| 25 | 28 |
| r6428 | r6429 | |
|---|---|---|
| 15 | 15 | #define ATARIFB_HIT_EN NODE_05 |
| 16 | 16 | |
| 17 | 17 | |
| 18 | typedef struct _atarifb_state atarifb_state; | |
| 19 | struct _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 | ||
| 18 | 45 | /*----------- defined in machine/atarifb.c -----------*/ |
| 19 | 46 | |
| 20 | 47 | WRITE8_HANDLER( atarifb_out1_w ); |
| r6428 | r6429 | |
| 41 | 68 | |
| 42 | 69 | /*----------- defined in video/atarifb.c -----------*/ |
| 43 | 70 | |
| 44 | extern UINT8 *atarifb_alphap1_videoram; | |
| 45 | extern UINT8 *atarifb_alphap2_videoram; | |
| 46 | extern UINT8 *atarifb_field_videoram; | |
| 47 | extern UINT8 *atarifb_scroll_register; | |
| 48 | ||
| 49 | 71 | VIDEO_START( atarifb ); |
| 50 | 72 | VIDEO_UPDATE( atarifb ); |
| 51 | 73 | VIDEO_UPDATE( abaseb ); |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | #include "sound/discrete.h" |
| 8 | 8 | |
| 9 | 9 | |
| 10 | typedef struct _avalnche_state avalnche_state; | |
| 11 | struct _avalnche_state | |
| 12 | { | |
| 13 | /* video-related */ | |
| 14 | UINT8 * videoram; | |
| 15 | UINT8 avalance_video_inverted; | |
| 16 | }; | |
| 17 | ||
| 10 | 18 | /*----------- defined in audio/avalnche.c -----------*/ |
| 11 | 19 | |
| 12 | 20 | DISCRETE_SOUND_EXTERN( avalnche ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /************************************************************************* | |
| 2 | ||
| 3 | 4enraya | |
| 4 | ||
| 5 | *************************************************************************/ | |
| 6 | ||
| 7 | typedef struct __4enraya_state _4enraya_state; | |
| 8 | struct __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 | ||
| 24 | WRITE8_HANDLER( fenraya_videoram_w ); | |
| 25 | ||
| 26 | VIDEO_START( 4enraya ); | |
| 27 | VIDEO_UPDATE( 4enraya ); |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | #include "sound/discrete.h" |
| 2 | ||
| 3 | 2 | #include "sound/samples.h" |
| 4 | 3 | |
| 4 | typedef struct _blockade_state blockade_state; | |
| 5 | struct _blockade_state | |
| 6 | { | |
| 7 | UINT8 * videoram; | |
| 5 | 8 | |
| 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 | ||
| 6 | 18 | /*----------- defined in video/blockade.c -----------*/ |
| 7 | 19 | |
| 8 | 20 | WRITE8_HANDLER( blockade_videoram_w ); |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Espial hardware games | |
| 3 | Espial hardware games (drivers: espial.c, marineb.c and zodiack.c) | |
| 4 | 4 | |
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | typedef struct _espial_state espial_state; | |
| 8 | struct _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 | ||
| 7 | 37 | /*----------- defined in drivers/espial.c -----------*/ |
| 8 | 38 | |
| 9 | 39 | MACHINE_RESET( espial ); |
| r6428 | r6429 | |
| 18 | 48 | |
| 19 | 49 | /*----------- defined in video/espial.c -----------*/ |
| 20 | 50 | |
| 21 | extern UINT8 *espial_videoram; | |
| 22 | extern UINT8 *espial_colorram; | |
| 23 | extern UINT8 *espial_attributeram; | |
| 24 | extern UINT8 *espial_scrollram; | |
| 25 | extern UINT8 *espial_spriteram_1; | |
| 26 | extern UINT8 *espial_spriteram_2; | |
| 27 | extern UINT8 *espial_spriteram_3; | |
| 28 | ||
| 29 | 51 | PALETTE_INIT( espial ); |
| 30 | 52 | VIDEO_START( espial ); |
| 31 | 53 | VIDEO_START( netwars ); |
| r6428 | r6429 | |
| 39 | 61 | |
| 40 | 62 | /*----------- defined in video/marineb.c -----------*/ |
| 41 | 63 | |
| 42 | extern UINT8 *marineb_videoram; | |
| 43 | extern UINT8 *marineb_colorram; | |
| 44 | extern UINT8 marineb_active_low_flipscreen; | |
| 45 | ||
| 46 | 64 | WRITE8_HANDLER( marineb_videoram_w ); |
| 47 | 65 | WRITE8_HANDLER( marineb_colorram_w ); |
| 48 | 66 | WRITE8_HANDLER( marineb_column_scroll_w ); |
| r6428 | r6429 | |
| 59 | 77 | VIDEO_UPDATE( hopprobo ); |
| 60 | 78 | |
| 61 | 79 | |
| 62 | /*----------- defined in drivers/zodiack.c -----------*/ | |
| 63 | ||
| 64 | extern int percuss_hardware; | |
| 65 | ||
| 66 | 80 | /*----------- defined in video/zodiack.c -----------*/ |
| 67 | 81 | |
| 68 | extern UINT8 *zodiack_videoram2; | |
| 69 | extern UINT8 *zodiack_attributesram; | |
| 70 | extern UINT8 *zodiack_bulletsram; | |
| 71 | 82 | extern size_t zodiack_bulletsram_size; |
| 72 | 83 | |
| 73 | 84 | WRITE8_HANDLER( zodiack_videoram_w ); |
| r0 | r6429 | |
|---|---|---|
| 1 | ||
| 2 | // 2nd-Tier GX/MW Hardware Functions | |
| 3 | void K053247GP_set_SpriteOffset(int offsx, int offsy); | |
| 4 | ||
| 5 | void K053936GP_set_offset(int chip, int xoffs, int yoffs); | |
| 6 | void K053936GP_clip_enable(int chip, int status); | |
| 7 | void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy); | |
| 8 | void K053936GP_0_zoom_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, tilemap *tmap, int tilebpp, int blend, int alpha); | |
| 9 | void 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 | |
| 14 | extern UINT8 konamigx_wrport1_0, konamigx_wrport1_1; | |
| 15 | extern UINT16 konamigx_wrport2; | |
| 16 | ||
| 17 | ||
| 18 | // Tile and Sprite Mixcode Decoders | |
| 19 | int K055555GX_decode_vmixcolor(int layer, int *color); | |
| 20 | int 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 | ||
| 39 | void konamigx_type2_sprite_callback(int *code, int *color, int *priority); | |
| 40 | ||
| 41 | void konamigx_dragoonj_sprite_callback(int *code, int *color, int *priority); | |
| 42 | void konamigx_salmndr2_sprite_callback(int *code, int *color, int *priority); | |
| 43 | void 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 | ||
| 70 | void 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 | ||
| 75 | void konamigx_mixer_init(running_machine *machine, int objdma); | |
| 76 | void konamigx_mixer_primode(int mode); | |
| 77 | ||
| 78 | ||
| 79 | void konamigx_objdma(void); | |
| 80 | ||
| 81 | // K055550/K053990/ESC protection devices handlers | |
| 82 | READ16_HANDLER ( K055550_word_r ); | |
| 83 | WRITE16_HANDLER( K055550_word_w ); | |
| 84 | WRITE16_HANDLER( K053990_martchmp_word_w ); | |
| 85 | void konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode); | |
| 86 | ||
| 87 | void fantjour_dma_install(running_machine *machine); | |
| 88 | WRITE32_HANDLER(fantjour_dma_w); | |
| 89 | ||
| 90 | extern UINT16 *K053247_ram; | |
| 91 |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Blue Print | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _blueprnt_state blueprnt_state; | |
| 8 | struct _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 | ||
| 27 | WRITE8_HANDLER( blueprnt_videoram_w ); | |
| 28 | WRITE8_HANDLER( blueprnt_colorram_w ); | |
| 29 | WRITE8_HANDLER( blueprnt_flipscreen_w ); | |
| 30 | ||
| 31 | PALETTE_INIT( blueprnt ); | |
| 32 | VIDEO_START( blueprnt ); | |
| 33 | VIDEO_UPDATE( blueprnt ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Bionic Commando | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _bionicc_state bionicc_state; | |
| 8 | struct _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 | ||
| 28 | WRITE16_HANDLER( bionicc_fgvideoram_w ); | |
| 29 | WRITE16_HANDLER( bionicc_bgvideoram_w ); | |
| 30 | WRITE16_HANDLER( bionicc_txvideoram_w ); | |
| 31 | WRITE16_HANDLER( bionicc_paletteram_w ); | |
| 32 | WRITE16_HANDLER( bionicc_scroll_w ); | |
| 33 | WRITE16_HANDLER( bionicc_gfxctrl_w ); | |
| 34 | ||
| 35 | VIDEO_START( bionicc ); | |
| 36 | VIDEO_UPDATE( bionicc ); | |
| 37 | VIDEO_EOF( bionicc ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /************************************************************************* | |
| 2 | ||
| 3 | Pandora's Palace | |
| 4 | ||
| 5 | *************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _pandoras_state pandoras_state; | |
| 8 | struct _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 */ | |
| 26 | PALETTE_INIT( pandoras ); | |
| 27 | ||
| 28 | WRITE8_HANDLER( pandoras_vram_w ); | |
| 29 | WRITE8_HANDLER( pandoras_cram_w ); | |
| 30 | WRITE8_HANDLER( pandoras_flipscreen_w ); | |
| 31 | WRITE8_HANDLER( pandoras_scrolly_w ); | |
| 32 | ||
| 33 | VIDEO_START( pandoras ); | |
| 34 | VIDEO_UPDATE( pandoras ); | |
| 35 |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 9 | typedef struct _irem_z80_state irem_z80_state; | |
| 10 | struct _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 | ||
| 67 | MACHINE_DRIVER_EXTERN( m52_sound_c_audio ); | |
| 68 | MACHINE_DRIVER_EXTERN( m52_large_audio ); | |
| 69 | MACHINE_DRIVER_EXTERN( m62_audio ); | |
| 70 | ||
| 71 | WRITE8_HANDLER( irem_sound_cmd_w ); | |
| 72 | ||
| 73 | ||
| 74 | ||
| 75 | /* Video hardware is different otoh */ | |
| 76 | ||
| 77 | /*----------- defined in video/m52.c -----------*/ | |
| 78 | ||
| 79 | READ8_HANDLER( m52_protection_r ); | |
| 80 | WRITE8_HANDLER( m52_scroll_w ); | |
| 81 | WRITE8_HANDLER( m52_bg1xpos_w ); | |
| 82 | WRITE8_HANDLER( m52_bg1ypos_w ); | |
| 83 | WRITE8_HANDLER( m52_bg2xpos_w ); | |
| 84 | WRITE8_HANDLER( m52_bg2ypos_w ); | |
| 85 | WRITE8_HANDLER( m52_bgcontrol_w ); | |
| 86 | WRITE8_HANDLER( m52_flipscreen_w ); | |
| 87 | WRITE8_HANDLER( alpha1v_flipscreen_w ); | |
| 88 | WRITE8_HANDLER( m52_videoram_w ); | |
| 89 | WRITE8_HANDLER( m52_colorram_w ); | |
| 90 | ||
| 91 | PALETTE_INIT( m52 ); | |
| 92 | VIDEO_START( m52 ); | |
| 93 | VIDEO_UPDATE( m52 ); | |
| 94 | ||
| 95 | /*----------- defined in video/m57.c -----------*/ | |
| 96 | ||
| 97 | WRITE8_HANDLER( m57_videoram_w ); | |
| 98 | WRITE8_HANDLER( m57_flipscreen_w ); | |
| 99 | ||
| 100 | PALETTE_INIT( m57 ); | |
| 101 | VIDEO_START( m57 ); | |
| 102 | VIDEO_UPDATE( m57 ); | |
| 103 | ||
| 104 | ||
| 105 | /*----------- defined in video/m58.c -----------*/ | |
| 106 | ||
| 107 | WRITE8_HANDLER( yard_videoram_w ); | |
| 108 | WRITE8_HANDLER( yard_scroll_panel_w ); | |
| 109 | WRITE8_HANDLER( yard_flipscreen_w ); | |
| 110 | ||
| 111 | PALETTE_INIT( yard ); | |
| 112 | VIDEO_START( yard ); | |
| 113 | VIDEO_UPDATE( yard ); | |
| 114 | ||
| 115 | ||
| 116 | /*----------- defined in video/travrusa.c -----------*/ | |
| 117 | ||
| 118 | WRITE8_HANDLER( travrusa_videoram_w ); | |
| 119 | WRITE8_HANDLER( travrusa_scroll_x_low_w ); | |
| 120 | WRITE8_HANDLER( travrusa_scroll_x_high_w ); | |
| 121 | WRITE8_HANDLER( travrusa_flipscreen_w ); | |
| 122 | ||
| 123 | PALETTE_INIT( travrusa ); | |
| 124 | PALETTE_INIT( shtrider ); | |
| 125 | VIDEO_START( travrusa ); | |
| 126 | VIDEO_UPDATE( travrusa ); | |
| 127 | ||
| 128 | ||
| 129 | /*----------- defined in video/m62.c -----------*/ | |
| 130 | ||
| 131 | WRITE8_HANDLER( m62_tileram_w ); | |
| 132 | WRITE8_HANDLER( m62_textram_w ); | |
| 133 | WRITE8_HANDLER( m62_flipscreen_w ); | |
| 134 | WRITE8_HANDLER( m62_hscroll_low_w ); | |
| 135 | WRITE8_HANDLER( m62_hscroll_high_w ); | |
| 136 | WRITE8_HANDLER( m62_vscroll_low_w ); | |
| 137 | WRITE8_HANDLER( m62_vscroll_high_w ); | |
| 138 | ||
| 139 | WRITE8_HANDLER( horizon_scrollram_w ); | |
| 140 | WRITE8_HANDLER( kidniki_text_vscroll_low_w ); | |
| 141 | WRITE8_HANDLER( kidniki_text_vscroll_high_w ); | |
| 142 | WRITE8_HANDLER( kidniki_background_bank_w ); | |
| 143 | WRITE8_HANDLER( kungfum_tileram_w ); | |
| 144 | WRITE8_HANDLER( ldrun3_topbottom_mask_w ); | |
| 145 | WRITE8_HANDLER( spelunkr_palbank_w ); | |
| 146 | WRITE8_HANDLER( spelunk2_gfxport_w ); | |
| 147 | ||
| 148 | PALETTE_INIT( m62 ); | |
| 149 | PALETTE_INIT( lotlot ); | |
| 150 | PALETTE_INIT( battroad ); | |
| 151 | PALETTE_INIT( spelunk2 ); | |
| 152 | ||
| 153 | VIDEO_START( battroad ); | |
| 154 | VIDEO_START( horizon ); | |
| 155 | VIDEO_START( kidniki ); | |
| 156 | VIDEO_START( kungfum ); | |
| 157 | VIDEO_START( ldrun ); | |
| 158 | VIDEO_START( ldrun2 ); | |
| 159 | VIDEO_START( ldrun4 ); | |
| 160 | VIDEO_START( lotlot ); | |
| 161 | VIDEO_START( spelunkr ); | |
| 162 | VIDEO_START( spelunk2 ); | |
| 163 | VIDEO_START( youjyudn ); | |
| 164 | ||
| 165 | VIDEO_UPDATE( battroad ); | |
| 166 | VIDEO_UPDATE( horizon ); | |
| 167 | VIDEO_UPDATE( kidniki ); | |
| 168 | VIDEO_UPDATE( kungfum ); | |
| 169 | VIDEO_UPDATE( ldrun ); | |
| 170 | VIDEO_UPDATE( ldrun3 ); | |
| 171 | VIDEO_UPDATE( ldrun4 ); | |
| 172 | VIDEO_UPDATE( lotlot ); | |
| 173 | VIDEO_UPDATE( spelunkr ); | |
| 174 | VIDEO_UPDATE( spelunk2 ); | |
| 175 | VIDEO_UPDATE( youjyudn ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Battle Cross | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _battlex_state battlex_state; | |
| 8 | struct _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 | ||
| 22 | extern WRITE8_HANDLER( battlex_palette_w ); | |
| 23 | extern WRITE8_HANDLER( battlex_videoram_w ); | |
| 24 | extern WRITE8_HANDLER( battlex_scroll_x_lsb_w ); | |
| 25 | extern WRITE8_HANDLER( battlex_scroll_x_msb_w ); | |
| 26 | extern WRITE8_HANDLER( battlex_flipscreen_w ); | |
| 27 | ||
| 28 | extern PALETTE_INIT( battlex ); | |
| 29 | extern VIDEO_START( battlex ); | |
| 30 | extern VIDEO_UPDATE( battlex ); |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 12 | typedef struct _bankp_state bankp_state; | |
| 13 | struct _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 | ||
| 29 | WRITE8_HANDLER( bankp_videoram_w ); | |
| 30 | WRITE8_HANDLER( bankp_colorram_w ); | |
| 31 | WRITE8_HANDLER( bankp_videoram2_w ); | |
| 32 | WRITE8_HANDLER( bankp_colorram2_w ); | |
| 33 | WRITE8_HANDLER( bankp_scroll_w ); | |
| 34 | WRITE8_HANDLER( bankp_out_w ); | |
| 35 | ||
| 36 | PALETTE_INIT( bankp ); | |
| 37 | VIDEO_START( bankp ); | |
| 38 | VIDEO_UPDATE( bankp ); | |
| 39 | ||
| 40 |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | extern UINT16 *tetrisp2_vram_fg, *tetrisp2_scroll_fg; |
| 10 | 10 | extern UINT16 *tetrisp2_vram_rot, *tetrisp2_rotregs; |
| 11 | 11 | |
| 12 | extern UINT | |
| 12 | extern UINT8 | |
| 13 | 13 | |
| 14 | 14 | extern UINT16 *rocknms_sub_vram_bg, *rocknms_sub_scroll_bg; |
| 15 | 15 | extern UINT16 *rocknms_sub_vram_fg, *rocknms_sub_scroll_fg; |
| r6428 | r6429 | |
| 19 | 19 | |
| 20 | 20 | WRITE16_HANDLER( tetrisp2_palette_w ); |
| 21 | 21 | WRITE16_HANDLER( rocknms_sub_palette_w ); |
| 22 | WRITE16_HANDLER( tetrisp2_priority_w ); | |
| 23 | WRITE16_HANDLER( rockn_priority_w ); | |
| 22 | WRITE8_HANDLER( tetrisp2_priority_w ); | |
| 23 | WRITE8_HANDLER( rockn_priority_w ); | |
| 24 | READ8_HANDLER( tetrisp2_priority_r ); | |
| 24 | 25 | WRITE16_HANDLER( rocknms_sub_priority_w ); |
| 25 | 26 | READ16_HANDLER( nndmseal_priority_r ); |
| 26 | 27 |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /* This it the best way to allow game specific kludges until the system is fully understood */ |
| 2 | 2 | enum { |
| 3 | ARKUNK=0, /* unknown bootlegs for inclusion of possible new sets */ | |
| 3 | ARKUNK = 0, /* unknown bootlegs for inclusion of possible new sets */ | |
| 4 | 4 | ARKANGC, |
| 5 | 5 | ARKANGC2, |
| 6 | 6 | BLOCK2, |
| r6428 | r6429 | |
| 10 | 10 | PADDLE2 |
| 11 | 11 | }; |
| 12 | 12 | |
| 13 | typedef struct _arkanoid_state arkanoid_state; | |
| 14 | struct _arkanoid_state | |
| 15 | { | |
| 16 | /* memory pointers */ | |
| 17 | UINT8 * videoram; | |
| 18 | UINT8 * spriteram; | |
| 13 | 19 | |
| 14 | /*----------- defined in drivers/arkanoid.c -----------*/ | |
| 20 | /* video-related */ | |
| 21 | tilemap *bg_tilemap; | |
| 22 | UINT8 gfxbank, palettebank; | |
| 15 | 23 | |
| 16 | extern int arkanoid_bootleg_id; | |
| 24 | /* input-related */ | |
| 25 | UINT8 paddle_select; | |
| 17 | 26 | |
| 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 | }; | |
| 18 | 34 | |
| 35 | ||
| 36 | ||
| 19 | 37 | /*----------- defined in video/arkanoid.c -----------*/ |
| 20 | 38 | |
| 21 | 39 | extern WRITE8_HANDLER( arkanoid_videoram_w ); |
| r6428 | r6429 | |
| 29 | 47 | |
| 30 | 48 | /*----------- defined in machine/arkanoid.c -----------*/ |
| 31 | 49 | |
| 32 | extern UINT8 arkanoid_paddle_select; | |
| 33 | ||
| 34 | extern MACHINE_START( arkanoid ); | |
| 35 | extern MACHINE_RESET( arkanoid ); | |
| 36 | ||
| 37 | 50 | extern READ8_HANDLER( arkanoid_Z80_mcu_r ); |
| 38 | 51 | extern WRITE8_HANDLER( arkanoid_Z80_mcu_w ); |
| 39 | 52 | |
| 40 | extern READ8_HANDLER( arkanoid_68705_portA_r ); | |
| 41 | extern WRITE8_HANDLER( arkanoid_68705_portA_w ); | |
| 42 | extern WRITE8_HANDLER( arkanoid_68705_ddrA_w ); | |
| 53 | extern READ8_HANDLER( arkanoid_68705_port_a_r ); | |
| 54 | extern WRITE8_HANDLER( arkanoid_68705_port_a_w ); | |
| 55 | extern WRITE8_HANDLER( arkanoid_68705_ddr_a_w ); | |
| 43 | 56 | |
| 44 | extern READ8_HANDLER( arkanoid_68705_portC_r ); | |
| 45 | extern WRITE8_HANDLER( arkanoid_68705_portC_w ); | |
| 46 | extern WRITE8_HANDLER( arkanoid_68705_ddrC_w ); | |
| 57 | extern READ8_HANDLER( arkanoid_68705_port_c_r ); | |
| 58 | extern WRITE8_HANDLER( arkanoid_68705_port_c_w ); | |
| 59 | extern WRITE8_HANDLER( arkanoid_68705_ddr_c_w ); | |
| 47 | 60 | |
| 48 | 61 | extern CUSTOM_INPUT( arkanoid_68705_input_r ); |
| 49 | 62 | extern CUSTOM_INPUT( arkanoid_input_mux ); |
| r6428 | r6429 | |
| 52 | 65 | extern READ8_HANDLER( arkanoid_bootleg_f002_r ); |
| 53 | 66 | extern WRITE8_HANDLER( arkanoid_bootleg_d018_w ); |
| 54 | 67 | extern READ8_HANDLER( arkanoid_bootleg_d008_r ); |
| 55 |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Break Thru | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _brkthru_state brkthru_state; | |
| 8 | struct _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 | ||
| 29 | WRITE8_HANDLER( brkthru_1800_w ); | |
| 30 | WRITE8_HANDLER( brkthru_bgram_w ); | |
| 31 | WRITE8_HANDLER( brkthru_fgram_w ); | |
| 32 | VIDEO_START( brkthru ); | |
| 33 | PALETTE_INIT( brkthru ); | |
| 34 | VIDEO_UPDATE( brkthru ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /************************************************************************* | |
| 2 | ||
| 3 | Angel Kids | |
| 4 | ||
| 5 | *************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _angelkds_state angelkds_state; | |
| 8 | struct _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 | ||
| 30 | WRITE8_HANDLER( angelkds_bgtopvideoram_w ); | |
| 31 | WRITE8_HANDLER( angelkds_bgbotvideoram_w ); | |
| 32 | WRITE8_HANDLER( angelkds_txvideoram_w ); | |
| 33 | ||
| 34 | WRITE8_HANDLER( angelkds_bgtopbank_write ); | |
| 35 | WRITE8_HANDLER( angelkds_bgtopscroll_write ); | |
| 36 | WRITE8_HANDLER( angelkds_bgbotbank_write ); | |
| 37 | WRITE8_HANDLER( angelkds_bgbotscroll_write ); | |
| 38 | WRITE8_HANDLER( angelkds_txbank_write ); | |
| 39 | ||
| 40 | WRITE8_HANDLER( angelkds_paletteram_w ); | |
| 41 | WRITE8_HANDLER( angelkds_layer_ctrl_write ); | |
| 42 | ||
| 43 | VIDEO_START( angelkds ); | |
| 44 | VIDEO_UPDATE( angelkds ); |
| r0 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Battle Lane Vol. 5 | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | typedef struct _battlane_state battlane_state; | |
| 8 | struct _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 | ||
| 24 | WRITE8_HANDLER( battlane_palette_w ); | |
| 25 | WRITE8_HANDLER( battlane_scrollx_w ); | |
| 26 | WRITE8_HANDLER( battlane_scrolly_w ); | |
| 27 | WRITE8_HANDLER( battlane_tileram_w ); | |
| 28 | WRITE8_HANDLER( battlane_spriteram_w ); | |
| 29 | WRITE8_HANDLER( battlane_bitmap_w ); | |
| 30 | WRITE8_HANDLER( battlane_video_ctrl_w ); | |
| 31 | ||
| 32 | VIDEO_START( battlane ); | |
| 33 | VIDEO_UPDATE( battlane ); |
| r6428 | r6429 | |
|---|---|---|
| 66 | 66 | NB1413M3_SCANDAL, |
| 67 | 67 | NB1413M3_SCANDALM, |
| 68 | 68 | NB1413M3_MGMEN89, |
| 69 | NB1413M3_OHPYEPEE, | |
| 70 | NB1413M3_TOUGENK, | |
| 69 | NB1413M3_OHPAIPEE, | |
| 70 | NB1413M3_TOGENKYO, | |
| 71 | 71 | NB1413M3_MJFOCUS, |
| 72 | 72 | NB1413M3_MJFOCUSM, |
| 73 | 73 | NB1413M3_GALKOKU, |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | *************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | |
| 8 | #define EXERION_MASTER_CLOCK | |
| 8 | #define EXERION_MASTER_CLOCK (XTAL_19_968MHz) /* verified on pcb */ | |
| 9 | 9 | #define EXERION_CPU_CLOCK (EXERION_MASTER_CLOCK / 6) |
| 10 | 10 | #define EXERION_AY8910_CLOCK (EXERION_CPU_CLOCK / 2) |
| 11 | 11 | #define EXERION_PIXEL_CLOCK (EXERION_MASTER_CLOCK / 3) |
| r6428 | r6429 | |
|---|---|---|
| 252 | 252 | $(MAMEOBJ)/gameplan.a \ |
| 253 | 253 | $(MAMEOBJ)/gametron.a \ |
| 254 | 254 | $(MAMEOBJ)/gottlieb.a \ |
| 255 | $(MAMEOBJ)/greyhnd.a \ | |
| 256 | 255 | $(MAMEOBJ)/igs.a \ |
| 257 | 256 | $(MAMEOBJ)/irem.a \ |
| 258 | 257 | $(MAMEOBJ)/itech.a \ |
| r6428 | r6429 | |
| 387 | 386 | $(DRIVERS)/batman.o $(VIDEO)/batman.o \ |
| 388 | 387 | $(DRIVERS)/beathead.o $(VIDEO)/beathead.o \ |
| 389 | 388 | $(DRIVERS)/blstroid.o $(VIDEO)/blstroid.o \ |
| 390 | $(DRIVERS)/boxer.o | |
| 389 | $(DRIVERS)/boxer.o | |
| 391 | 390 | $(DRIVERS)/bsktball.o $(MACHINE)/bsktball.o $(AUDIO)/bsktball.o $(VIDEO)/bsktball.o \ |
| 392 | 391 | $(DRIVERS)/bwidow.o \ |
| 393 | 392 | $(DRIVERS)/bzone.o $(AUDIO)/bzone.o \ |
| r6428 | r6429 | |
| 620 | 619 | |
| 621 | 620 | $(MAMEOBJ)/excelent.a: \ |
| 622 | 621 | $(DRIVERS)/aquarium.o $(VIDEO)/aquarium.o \ |
| 622 | $(DRIVERS)/d9final.o \ | |
| 623 | 623 | $(DRIVERS)/gcpinbal.o $(VIDEO)/gcpinbal.o \ |
| 624 | 624 | $(DRIVERS)/vmetal.o \ |
| 625 | 625 | |
| r6428 | r6429 | |
| 669 | 669 | $(DRIVERS)/exterm.o $(VIDEO)/exterm.o \ |
| 670 | 670 | $(DRIVERS)/gottlieb.o $(AUDIO)/gottlieb.o $(VIDEO)/gottlieb.o \ |
| 671 | 671 | |
| 672 | $(MAMEOBJ)/greyhnd.a: \ | |
| 673 | $(DRIVERS)/findout.o \ | |
| 674 | $(DRIVERS)/getrivia.o \ | |
| 675 | ||
| 676 | 672 | $(MAMEOBJ)/igs.a: \ |
| 677 | 673 | $(DRIVERS)/cabaret.o \ |
| 678 | 674 | $(DRIVERS)/ddz.o \ |
| r6428 | r6429 | |
| 681 | 677 | $(DRIVERS)/jackie.o \ |
| 682 | 678 | $(DRIVERS)/igspoker.o \ |
| 683 | 679 | $(DRIVERS)/igs009.o \ |
| 684 | $(DRIVERS)/igs | |
| 680 | $(DRIVERS)/igs011 | |
| 685 | 681 | $(DRIVERS)/igs017.o \ |
| 686 | 682 | $(DRIVERS)/igs_m027.o \ |
| 687 | $(DRIVERS)/igs_m68.o \ | |
| 688 | 683 | $(DRIVERS)/spoker.o \ |
| 689 | 684 | $(DRIVERS)/iqblock.o $(VIDEO)/iqblock.o \ |
| 690 | 685 | $(DRIVERS)/lordgun.o $(VIDEO)/lordgun.o \ |
| 691 | 686 | $(DRIVERS)/pgm.o $(VIDEO)/pgm.o \ |
| 692 | $(DRIVERS)/tarzan.o \ | |
| 693 | 687 | $(MACHINE)/pgmcrypt.o \ |
| 694 | 688 | $(MACHINE)/pgmprot.o \ |
| 695 | 689 | |
| r6428 | r6429 | |
| 711 | 705 | $(DRIVERS)/travrusa.o $(VIDEO)/travrusa.o \ |
| 712 | 706 | $(DRIVERS)/vigilant.o $(VIDEO)/vigilant.o \ |
| 713 | 707 | $(MACHINE)/irem_cpu.o \ |
| 714 | $(AUDIO)/fghtbskt.o \ | |
| 715 | 708 | $(AUDIO)/irem.o \ |
| 716 | 709 | |
| 717 | 710 | $(MAMEOBJ)/itech.a: \ |
| r6428 | r6429 | |
| 982 | 975 | $(DRIVERS)/magmax.o $(VIDEO)/magmax.o \ |
| 983 | 976 | $(DRIVERS)/nbmj8688.o $(VIDEO)/nbmj8688.o \ |
| 984 | 977 | $(DRIVERS)/nbmj8891.o $(VIDEO)/nbmj8891.o \ |
| 978 | $(DRIVERS)/nbmj8900.o $(VIDEO)/nbmj8900.o \ | |
| 985 | 979 | $(DRIVERS)/nbmj8991.o $(VIDEO)/nbmj8991.o \ |
| 986 | 980 | $(DRIVERS)/nbmj9195.o $(VIDEO)/nbmj9195.o \ |
| 987 | 981 | $(DRIVERS)/nightgal.o \ |
| r6428 | r6429 | |
| 1521 | 1515 | $(DRIVERS)/funworld.o $(VIDEO)/funworld.o \ |
| 1522 | 1516 | $(DRIVERS)/galaxi.o \ |
| 1523 | 1517 | $(DRIVERS)/gamecstl.o \ |
| 1518 | $(DRIVERS)/gei.o \ | |
| 1524 | 1519 | $(DRIVERS)/good.o \ |
| 1525 | 1520 | $(DRIVERS)/goldnpkr.o \ |
| 1526 | 1521 | $(DRIVERS)/gotcha.o $(VIDEO)/gotcha.o \ |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "driver.h" |
| 10 | 10 | #include "arabian.h" |
| 11 | 11 | |
| 12 | ||
| 13 | 12 | /* Constants */ |
| 14 | 13 | #define BITMAP_WIDTH 256 |
| 15 | 14 | #define BITMAP_HEIGHT 256 |
| 16 | 15 | |
| 17 | 16 | |
| 18 | /* Local variables */ | |
| 19 | static UINT8 *main_bitmap; | |
| 20 | static UINT8 *converted_gfx; | |
| 21 | ||
| 22 | ||
| 23 | /* Globals */ | |
| 24 | UINT8 *arabian_blitter; | |
| 25 | UINT8 arabian_video_control; | |
| 26 | UINT8 arabian_flip_screen; | |
| 27 | ||
| 28 | ||
| 29 | ||
| 30 | 17 | /************************************* |
| 31 | 18 | * |
| 32 | 19 | * Color PROM conversion |
| r6428 | r6429 | |
| 166 | 153 | |
| 167 | 154 | VIDEO_START( arabian ) |
| 168 | 155 | { |
| 156 | arabian_state *state = (arabian_state *)machine->driver_data; | |
| 169 | 157 | UINT8 *gfxbase = memory_region(machine, "gfx1"); |
| 170 | 158 | int offs; |
| 171 | 159 | |
| 172 | 160 | /* allocate a common bitmap to use for both planes */ |
| 173 | 161 | /* plane A (top plane with motion objects) is in the upper 4 bits */ |
| 174 | 162 | /* 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); | |
| 176 | 164 | |
| 177 | 165 | /* 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); | |
| 179 | 167 | |
| 180 | 168 | /*-------------------------------------------------- |
| 181 | 169 | transform graphics data into more usable format |
| r6428 | r6429 | |
| 212 | 200 | v2 >>= 1; |
| 213 | 201 | p4 = (v1 & 0x01) | ((v1 & 0x10) >> 3) | ((v2 & 0x01) << 2) | ((v2 & 0x10) >> 1); |
| 214 | 202 | |
| 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; | |
| 219 | 207 | } |
| 220 | 208 | |
| 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); | |
| 225 | 213 | } |
| 226 | 214 | |
| 227 | 215 | |
| r6428 | r6429 | |
| 232 | 220 | * |
| 233 | 221 | *************************************/ |
| 234 | 222 | |
| 235 | static void blit_area(UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8 sy) | |
| 223 | static void blit_area( running_machine *machine, UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8 sy ) | |
| 236 | 224 | { |
| 237 | UINT8 *srcdata = &converted_gfx[src * 4]; | |
| 225 | arabian_state *state = (arabian_state *)machine->driver_data; | |
| 226 | UINT8 *srcdata = &state->converted_gfx[src * 4]; | |
| 238 | 227 | int i,j; |
| 239 | 228 | |
| 240 | 229 | /* loop over X, then Y */ |
| r6428 | r6429 | |
| 248 | 237 | UINT8 *base; |
| 249 | 238 | |
| 250 | 239 | /* 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)]; | |
| 252 | 241 | |
| 253 | 242 | /* bit 0 means write to upper plane (upper 4 bits of our bitmap) */ |
| 254 | 243 | if (plane & 0x01) |
| r6428 | r6429 | |
| 280 | 269 | |
| 281 | 270 | WRITE8_HANDLER( arabian_blitter_w ) |
| 282 | 271 | { |
| 272 | arabian_state *state = (arabian_state *)space->machine->driver_data; | |
| 273 | ||
| 283 | 274 | /* write the data */ |
| 284 | a | |
| 275 | state-> | |
| 285 | 276 | |
| 286 | 277 | /* watch for a write to offset 6 -- that triggers the blit */ |
| 287 | 278 | if (offset == 6) |
| 288 | 279 | { |
| 289 | 280 | /* 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]; | |
| 296 | 287 | |
| 297 | 288 | /* blit it */ |
| 298 | blit_area(plane, src, x, y, sx, sy); | |
| 289 | blit_area(space->machine, plane, src, x, y, sx, sy); | |
| 299 | 290 | } |
| 300 | 291 | } |
| 301 | 292 | |
| r6428 | r6429 | |
| 309 | 300 | |
| 310 | 301 | WRITE8_HANDLER( arabian_videoram_w ) |
| 311 | 302 | { |
| 303 | arabian_state *state = (arabian_state *)space->machine->driver_data; | |
| 312 | 304 | UINT8 *base; |
| 313 | 305 | UINT8 x, y; |
| 314 | 306 | |
| r6428 | r6429 | |
| 317 | 309 | y = offset & 0xff; |
| 318 | 310 | |
| 319 | 311 | /* get a pointer to the pixels */ |
| 320 | base = &main_bitmap[y * BITMAP_WIDTH + x]; | |
| 312 | base = &state->main_bitmap[y * BITMAP_WIDTH + x]; | |
| 321 | 313 | |
| 322 | 314 | /* the data is written as 4 2-bit values, as follows: |
| 323 | 315 | |
| r6428 | r6429 | |
| 332 | 324 | */ |
| 333 | 325 | |
| 334 | 326 | /* enable writes to AZ/AR */ |
| 335 | if (a | |
| 327 | if (state-> | |
| 336 | 328 | { |
| 337 | 329 | base[0] = (base[0] & ~0x03) | ((data & 0x10) >> 3) | ((data & 0x01) >> 0); |
| 338 | 330 | base[1] = (base[1] & ~0x03) | ((data & 0x20) >> 4) | ((data & 0x02) >> 1); |
| r6428 | r6429 | |
| 341 | 333 | } |
| 342 | 334 | |
| 343 | 335 | /* enable writes to AG/AB */ |
| 344 | if (a | |
| 336 | if (state-> | |
| 345 | 337 | { |
| 346 | 338 | base[0] = (base[0] & ~0x0c) | ((data & 0x10) >> 1) | ((data & 0x01) << 2); |
| 347 | 339 | base[1] = (base[1] & ~0x0c) | ((data & 0x20) >> 2) | ((data & 0x02) << 1); |
| r6428 | r6429 | |
| 350 | 342 | } |
| 351 | 343 | |
| 352 | 344 | /* enable writes to BZ/BR */ |
| 353 | if (a | |
| 345 | if (state-> | |
| 354 | 346 | { |
| 355 | 347 | base[0] = (base[0] & ~0x30) | ((data & 0x10) << 1) | ((data & 0x01) << 4); |
| 356 | 348 | base[1] = (base[1] & ~0x30) | ((data & 0x20) << 0) | ((data & 0x02) << 3); |
| r6428 | r6429 | |
| 359 | 351 | } |
| 360 | 352 | |
| 361 | 353 | /* enable writes to BG/BB */ |
| 362 | if (a | |
| 354 | if (state-> | |
| 363 | 355 | { |
| 364 | 356 | base[0] = (base[0] & ~0xc0) | ((data & 0x10) << 3) | ((data & 0x01) << 6); |
| 365 | 357 | base[1] = (base[1] & ~0xc0) | ((data & 0x20) << 2) | ((data & 0x02) << 5); |
| r6428 | r6429 | |
| 378 | 370 | |
| 379 | 371 | VIDEO_UPDATE( arabian ) |
| 380 | 372 | { |
| 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]; | |
| 382 | 375 | int y; |
| 383 | 376 | |
| 384 | 377 | /* render the screen from the bitmap */ |
| 385 | 378 | for (y = 0; y < BITMAP_HEIGHT; y++) |
| 386 | 379 | { |
| 387 | 380 | /* 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); | |
| 390 | 383 | |
| 391 | 384 | /* flipped case */ |
| 392 | 385 | else |
| r6428 | r6429 | |
| 394 | 387 | UINT8 scanline[BITMAP_WIDTH]; |
| 395 | 388 | int x; |
| 396 | 389 | 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]; | |
| 398 | 391 | draw_scanline8(bitmap, 0, BITMAP_HEIGHT - 1 - y, BITMAP_WIDTH, scanline, pens); |
| 399 | 392 | } |
| 400 | 393 | } |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "ambush.h" | |
| 10 | 11 | |
| 11 | 12 | |
| 12 | UINT8 *ambush_scrollram; | |
| 13 | UINT8 *ambush_colorbank; | |
| 14 | ||
| 15 | ||
| 16 | 13 | /*************************************************************************** |
| 17 | 14 | |
| 18 | 15 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 20 | 17 | I'm not sure about the resistor value, I'm using the Galaxian ones. |
| 21 | 18 | |
| 22 | 19 | ***************************************************************************/ |
| 20 | ||
| 23 | 21 | PALETTE_INIT( ambush ) |
| 24 | 22 | { |
| 25 | 23 | int i; |
| 26 | 24 | |
| 27 | for (i = 0;i < machine->config->total_colors; i++) | |
| 25 | for (i = 0; i < machine->config->total_colors; i++) | |
| 28 | 26 | { |
| 29 | int bit0,bit1,bit2,r,g,b; | |
| 27 | int bit0, bit1, bit2, r, g, b; | |
| 30 | 28 | |
| 31 | 29 | /* red component */ |
| 32 | 30 | bit0 = (color_prom[i] >> 0) & 0x01; |
| r6428 | r6429 | |
| 44 | 42 | bit2 = (color_prom[i] >> 7) & 0x01; |
| 45 | 43 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 46 | 44 | |
| 47 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); | |
| 45 | palette_set_color(machine, i, MAKE_RGB(r,g,b)); | |
| 48 | 46 | } |
| 49 | 47 | } |
| 50 | 48 | |
| 51 | 49 | |
| 52 | static void draw_chars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority) | |
| 50 | static void draw_chars( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority ) | |
| 53 | 51 | { |
| 52 | ambush_state *state = (ambush_state *)machine->driver_data; | |
| 54 | 53 | int offs, transpen; |
| 55 | 54 | |
| 56 | ||
| 57 | 55 | transpen = (priority == 0) ? -1 : 0; |
| 58 | 56 | |
| 59 | 57 | for (offs = 0; offs < videoram_size; offs++) |
| 60 | 58 | { |
| 61 | int code,sx,sy,col; | |
| 59 | int code, sx, sy, col; | |
| 62 | 60 | UINT8 scroll; |
| 63 | 61 | |
| 64 | ||
| 65 | 62 | sy = (offs / 32); |
| 66 | 63 | sx = (offs % 32); |
| 67 | 64 | |
| 68 | col = colorram[((sy & 0x1c) << 3) + sx]; | |
| 65 | col = state->colorram[((sy & 0x1c) << 3) + sx]; | |
| 69 | 66 | |
| 70 | if ((col & 0x10) != priority) continue; | |
| 67 | if ((col & 0x10) != priority) | |
| 68 | continue; | |
| 71 | 69 | |
| 72 | scroll = ~ | |
| 70 | scroll = ~ | |
| 73 | 71 | |
| 74 | code = videoram[offs] | ((col & 0x60) << 3); | |
| 72 | code = state->videoram[offs] | ((col & 0x60) << 3); | |
| 75 | 73 | |
| 76 | 74 | if (flip_screen_get(machine)) |
| 77 | 75 | { |
| r6428 | r6429 | |
| 82 | 80 | |
| 83 | 81 | drawgfx_transpen(bitmap,cliprect,machine->gfx[0], |
| 84 | 82 | 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, | |
| 88 | 86 | transpen); |
| 89 | 87 | } |
| 90 | 88 | } |
| r6428 | r6429 | |
| 92 | 90 | |
| 93 | 91 | VIDEO_UPDATE( ambush ) |
| 94 | 92 | { |
| 93 | ambush_state *state = (ambush_state *)screen->machine->driver_data; | |
| 95 | 94 | int offs; |
| 96 | 95 | |
| 96 | bitmap_fill(bitmap, cliprect, 0); | |
| 97 | 97 | |
| 98 | bitmap_fill(bitmap,cliprect,0); | |
| 99 | ||
| 100 | ||
| 101 | 98 | /* Draw the background priority characters */ |
| 102 | 99 | draw_chars(screen->machine, bitmap, cliprect, 0x00); |
| 103 | 100 | |
| 104 | ||
| 105 | 101 | /* Draw the sprites. */ |
| 106 | for (offs = spriteram_size - 4;offs >= 0;offs -= 4) | |
| 102 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) | |
| 107 | 103 | { |
| 108 | int code,col,sx,sy,flipx,flipy,gfx; | |
| 104 | int code, col, sx, sy, flipx, flipy, gfx; | |
| 109 | 105 | |
| 106 | sy = state->spriteram[offs + 0]; | |
| 107 | sx = state->spriteram[offs + 3]; | |
| 110 | 108 | |
| 111 | sy = spriteram[offs + 0]; | |
| 112 | sx = spriteram[offs + 3]; | |
| 113 | ||
| 114 | 109 | if ( (sy == 0) || |
| 115 | 110 | (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 */ | |
| 118 | 114 | |
| 119 | 115 | |
| 120 | code = (spriteram[offs + 1] & 0x3f) | ((spriteram[offs + 2] & 0x60) << 1); | |
| 116 | code = (state->spriteram[offs + 1] & 0x3f) | ((state->spriteram[offs + 2] & 0x60) << 1); | |
| 121 | 117 | |
| 122 | if (spriteram[offs + 2] & 0x80) | |
| 118 | if (state->spriteram[offs + 2] & 0x80) | |
| 123 | 119 | { |
| 124 | 120 | /* 16x16 sprites */ |
| 125 | 121 | gfx = 1; |
| 126 | 122 | |
| 127 | 123 | if (!flip_screen_get(screen->machine)) |
| 128 | { | |
| 129 | 124 | sy = 240 - sy; |
| 130 | } | |
| 131 | 125 | else |
| 132 | { | |
| 133 | 126 | sx = 240 - sx; |
| 134 | } | |
| 135 | 127 | } |
| 136 | 128 | else |
| 137 | 129 | { |
| r6428 | r6429 | |
| 140 | 132 | code <<= 2; |
| 141 | 133 | |
| 142 | 134 | if (!flip_screen_get(screen->machine)) |
| 143 | { | |
| 144 | 135 | sy = 248 - sy; |
| 145 | } | |
| 146 | 136 | else |
| 147 | { | |
| 148 | 137 | sx = 248 - sx; |
| 149 | } | |
| 150 | 138 | } |
| 151 | 139 | |
| 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; | |
| 155 | 143 | |
| 156 | 144 | if (flip_screen_get(screen->machine)) |
| 157 | 145 | { |
| r6428 | r6429 | |
| 160 | 148 | } |
| 161 | 149 | |
| 162 | 150 | drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[gfx], |
| 163 | code, col | ((* | |
| 151 | code, col | ((* | |
| 164 | 152 | flipx, flipy, |
| 165 | 153 | sx,sy,0); |
| 166 | 154 | } |
| r6428 | r6429 | |
|---|---|---|
| 348 | 348 | /* We are working in .6 fixed point if you hadn't guessed */ |
| 349 | 349 | |
| 350 | 350 | #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); \ | |
| 355 | 355 | int xs, ys, xd, yd, old, old2; \ |
| 356 | 356 | int step_spr = step; \ |
| 357 | 357 | int bxs = 0, bys = 0; \ |
| r6428 | r6429 | |
| 443 | 443 | old2 += 0x40; \ |
| 444 | 444 | } |
| 445 | 445 | |
| 446 | static 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) | |
| 446 | static 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) | |
| 447 | 447 | { |
| 448 | 448 | z_decls(sx); |
| 449 | 449 | z_clamp_x_min(); |
| r6428 | r6429 | |
| 457 | 457 | } |
| 458 | 458 | } |
| 459 | 459 | |
| 460 | static 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) | |
| 460 | static 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) | |
| 461 | 461 | { |
| 462 | 462 | z_decls(sx); |
| 463 | 463 | z_clamp_x_min(); |
| r6428 | r6429 | |
| 471 | 471 | } |
| 472 | 472 | } |
| 473 | 473 | |
| 474 | static 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) | |
| 474 | static 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) | |
| 475 | 475 | { |
| 476 | 476 | z_decls(sx); |
| 477 | 477 | z_clamp_x_max(); |
| r6428 | r6429 | |
| 485 | 485 | } |
| 486 | 486 | } |
| 487 | 487 | |
| 488 | static 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) | |
| 488 | static 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) | |
| 489 | 489 | { |
| 490 | 490 | z_decls(sx); |
| 491 | 491 | z_clamp_x_max(); |
| r6428 | r6429 | |
| 499 | 499 | } |
| 500 | 500 | } |
| 501 | 501 | |
| 502 | static 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) = { | |
| 502 | static 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) = { | |
| 503 | 503 | blit_nf_z, |
| 504 | 504 | blit_fy_z, |
| 505 | 505 | blit_fx_z, |
| r6428 | r6429 | |
| 560 | 560 | int sx,sy; |
| 561 | 561 | int endromoffs=0, gfxlen; |
| 562 | 562 | int grow; |
| 563 | UINT16 zoomx, zoomy; | |
| 563 | UINT16 zoomx_m, zoomx_s, zoomy_m, zoomy_s; | |
| 564 | 564 | |
| 565 | 565 | |
| 566 | 566 | if ((!disabled) && suprnova_alt_enable_sprites){ |
| r6428 | r6429 | |
| 700 | 700 | |
| 701 | 701 | if (!grow) |
| 702 | 702 | { |
| 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; | |
| 705 | 707 | } |
| 706 | 708 | else |
| 707 | 709 | { |
| 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 | ||
| 712 | 722 | } |
| 713 | 723 | |
| 714 | 724 | |
| r6428 | r6429 | |
| 732 | 742 | { |
| 733 | 743 | int NewColour = (colour<<8) | (pri << 14); |
| 734 | 744 | |
| 735 | if(zoomx || zoomy) | |
| 745 | if(zoomx_m || zoomx_s || zoomy_m || zoomy_s) | |
| 736 | 746 | { |
| 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); | |
| 738 | 748 | } |
| 739 | 749 | else |
| 740 | 750 | { |
| r6428 | r6429 | |
| 952 | 962 | if (enable_a && suprnova_alt_enable_background) |
| 953 | 963 | { |
| 954 | 964 | 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 | |
| 956 | 967 | incyx = skns_v3_regs[0x2c/4]; |
| 957 | 968 | starty = skns_v3_regs[0x20/4]; |
| 958 | 969 | 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; | |
| 960 | 972 | |
| 961 | 973 | columnscroll = (skns_v3_regs[0x0c/4] >> 1) & 0x0001; |
| 962 | 974 | |
| r6428 | r6429 | |
| 980 | 992 | if (enable_b && suprnova_alt_enable_background) |
| 981 | 993 | { |
| 982 | 994 | 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; | |
| 984 | 997 | incyx = skns_v3_regs[0x50/4]; |
| 985 | 998 | starty = skns_v3_regs[0x44/4]; |
| 986 | 999 | 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; | |
| 988 | 1002 | columnscroll = (skns_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll |
| 989 | 1003 | 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 | ||
| 990 | 1007 | } |
| 991 | 1008 | } |
| 992 | 1009 |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "hexa.h" | |
| 10 | 11 | |
| 11 | static int charbank; | |
| 12 | static tilemap *bg_tilemap; | |
| 13 | ||
| 14 | 12 | WRITE8_HANDLER( hexa_videoram_w ) |
| 15 | 13 | { |
| 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); | |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | 20 | WRITE8_HANDLER( hexa_d008_w ) |
| 21 | 21 | { |
| 22 | UINT8 *RAM = memory_region(space->machine, "maincpu"); | |
| 23 | int bankaddress; | |
| 22 | hexa_state *state = (hexa_state *)space->machine->driver_data; | |
| 24 | 23 | |
| 25 | 24 | /* bit 0 = flipx (or y?) */ |
| 26 | 25 | if (flip_screen_x_get(space->machine) != (data & 0x01)) |
| 27 | 26 | { |
| 28 | 27 | 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); | |
| 30 | 29 | } |
| 31 | 30 | |
| 32 | 31 | /* bit 1 = flipy (or x?) */ |
| 33 | 32 | if (flip_screen_y_get(space->machine) != (data & 0x02)) |
| 34 | 33 | { |
| 35 | 34 | 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); | |
| 37 | 36 | } |
| 38 | 37 | |
| 39 | 38 | /* bit 2 - 3 unknown */ |
| 40 | 39 | |
| 41 | 40 | /* 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)); | |
| 44 | 42 | |
| 45 | 43 | /* bit 5 = char bank */ |
| 46 | if (charbank != ((data & 0x20) >> 5)) | |
| 44 | if (state->charbank != ((data & 0x20) >> 5)) | |
| 47 | 45 | { |
| 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); | |
| 50 | 48 | } |
| 51 | 49 | |
| 52 | 50 | /* bit 6 - 7 unknown */ |
| r6428 | r6429 | |
| 54 | 52 | |
| 55 | 53 | static TILE_GET_INFO( get_bg_tile_info ) |
| 56 | 54 | { |
| 55 | hexa_state *state = (hexa_state *)machine->driver_data; | |
| 57 | 56 | 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; | |
| 60 | 59 | |
| 61 | 60 | SET_TILE_INFO(0, tile, color, 0); |
| 62 | 61 | } |
| 63 | 62 | |
| 64 | 63 | VIDEO_START( hexa ) |
| 65 | 64 | { |
| 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); | |
| 68 | 67 | } |
| 69 | 68 | |
| 70 | 69 | |
| 71 | 70 | VIDEO_UPDATE( hexa ) |
| 72 | 71 | { |
| 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); | |
| 74 | 75 | return 0; |
| 75 | 76 | } |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | #include "driver.h" |
| 8 | 8 | #include "bsktball.h" |
| 9 | 9 | |
| 10 | UINT8 *bsktball_motion; | |
| 11 | 10 | |
| 12 | static tilemap *bg_tilemap; | |
| 13 | ||
| 14 | 11 | WRITE8_HANDLER( bsktball_videoram_w ) |
| 15 | 12 | { |
| 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); | |
| 18 | 17 | } |
| 19 | 18 | |
| 20 | 19 | static TILE_GET_INFO( get_bg_tile_info ) |
| 21 | 20 | { |
| 22 | int attr = videoram[tile_index]; | |
| 21 | bsktball_state *state = (bsktball_state *)machine->driver_data; | |
| 22 | int attr = state->videoram[tile_index]; | |
| 23 | 23 | int code = ((attr & 0x0f) << 2) | ((attr & 0x30) >> 4); |
| 24 | 24 | int color = (attr & 0x40) >> 6; |
| 25 | 25 | int flags = (attr & 0x80) ? TILE_FLIPX : 0; |
| r6428 | r6429 | |
| 29 | 29 | |
| 30 | 30 | VIDEO_START( bsktball ) |
| 31 | 31 | { |
| 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); | |
| 34 | 34 | } |
| 35 | 35 | |
| 36 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 36 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 37 | 37 | { |
| 38 | int motion; | |
| 38 | bsktball_state *state = (bsktball_state *)machine->driver_data; | |
| 39 | int mot; | |
| 39 | 40 | |
| 40 | for (mot | |
| 41 | for (mot | |
| 41 | 42 | { |
| 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]; | |
| 46 | 47 | int flipx = (pic & 0x80) >> 7; |
| 47 | 48 | |
| 48 | pic = (pic & 0x3F); | |
| 49 | color = (color & 0x3F); | |
| 49 | pic = (pic & 0x3f); | |
| 50 | color = (color & 0x3f); | |
| 50 | 51 | |
| 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); | |
| 54 | 53 | } |
| 55 | 54 | } |
| 56 | 55 | |
| 57 | 56 | VIDEO_UPDATE( bsktball ) |
| 58 | 57 | { |
| 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); | |
| 60 | 61 | draw_sprites(screen->machine, bitmap, cliprect); |
| 61 | 62 | return 0; |
| 62 | 63 | } |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "driver.h" |
| 10 | 10 | #include "appoooh.h" |
| 11 | 11 | |
| 12 | UINT8 *appoooh_fg_videoram,*appoooh_fg_colorram; | |
| 13 | UINT8 *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 | ||
| 18 | static tilemap *fg_tilemap,*bg_tilemap; | |
| 19 | ||
| 20 | static int scroll_x; | |
| 21 | static int priority; | |
| 22 | ||
| 23 | 12 | /*************************************************************************** |
| 24 | 13 | |
| 25 | 14 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 30 | 19 | Because these hardware is similar. |
| 31 | 20 | |
| 32 | 21 | ***************************************************************************/ |
| 22 | ||
| 33 | 23 | PALETTE_INIT( appoooh ) |
| 34 | 24 | { |
| 35 | 25 | int i; |
| r6428 | r6429 | |
| 110 | 100 | |
| 111 | 101 | static TILE_GET_INFO( get_fg_tile_info ) |
| 112 | 102 | { |
| 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); | |
| 114 | 105 | |
| 115 | 106 | SET_TILE_INFO( |
| 116 | 107 | 0, |
| 117 | 108 | 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 | |
| 120 | 111 | ); |
| 121 | 112 | } |
| 122 | 113 | |
| 123 | 114 | static TILE_GET_INFO( get_bg_tile_info ) |
| 124 | 115 | { |
| 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); | |
| 126 | 118 | |
| 127 | 119 | SET_TILE_INFO( |
| 128 | 120 | 1, |
| 129 | 121 | 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 | |
| 132 | 124 | ); |
| 133 | 125 | } |
| 134 | 126 | |
| r6428 | r6429 | |
| 137 | 129 | Start the video hardware emulation. |
| 138 | 130 | |
| 139 | 131 | ***************************************************************************/ |
| 132 | ||
| 140 | 133 | VIDEO_START( appoooh ) |
| 141 | 134 | { |
| 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; | |
| 144 | 136 | |
| 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); | |
| 148 | 139 | |
| 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); | |
| 151 | 146 | } |
| 152 | 147 | |
| 153 | 148 | WRITE8_HANDLER( appoooh_scroll_w ) |
| 154 | 149 | { |
| 155 | scroll_x = data; | |
| 150 | appoooh_state *state = (appoooh_state *)space->machine->driver_data; | |
| 151 | state->scroll_x = data; | |
| 156 | 152 | } |
| 157 | 153 | |
| 158 | 154 | |
| 159 | 155 | WRITE8_HANDLER( appoooh_fg_videoram_w ) |
| 160 | 156 | { |
| 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); | |
| 163 | 160 | } |
| 164 | 161 | |
| 165 | 162 | WRITE8_HANDLER( appoooh_fg_colorram_w ) |
| 166 | 163 | { |
| 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); | |
| 169 | 167 | } |
| 170 | 168 | |
| 171 | 169 | WRITE8_HANDLER( appoooh_bg_videoram_w ) |
| 172 | 170 | { |
| 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); | |
| 175 | 174 | } |
| 176 | 175 | |
| 177 | 176 | WRITE8_HANDLER( appoooh_bg_colorram_w ) |
| 178 | 177 | { |
| 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); | |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | WRITE8_HANDLER( appoooh_out_w ) |
| 184 | 184 | { |
| 185 | appoooh_state *state = (appoooh_state *)space->machine->driver_data; | |
| 185 | 186 | /* bit 0 controls NMI */ |
| 186 | 187 | interrupt_enable_w(space,0,data & 0x01); |
| 187 | 188 | |
| r6428 | r6429 | |
| 194 | 195 | /* TODO: understand how this works, currently the only thing I do is draw */ |
| 195 | 196 | /* the front layer behind sprites when priority == 0, and invert the sprite */ |
| 196 | 197 | /* order when priority == 1 */ |
| 197 | priority = (data & 0x30) >> 4; | |
| 198 | state->priority = (data & 0x30) >> 4; | |
| 198 | 199 | |
| 199 | 200 | /* bit 6 ROM bank select */ |
| 200 | 201 | { |
| r6428 | r6429 | |
| 206 | 207 | /* bit 7 unknown (used) */ |
| 207 | 208 | } |
| 208 | 209 | |
| 209 | static void appoooh_draw_sprites( | |
| 210 | bitmap_t *dest_bmp, | |
| 211 | const rectangle *cliprect, | |
| 212 | const gfx_element *gfx, | |
| 213 | UINT8 *sprite) | |
| 210 | static void appoooh_draw_sprites( bitmap_t *dest_bmp, const rectangle *cliprect, const gfx_element *gfx, UINT8 *sprite ) | |
| 214 | 211 | { |
| 215 | 212 | int offs; |
| 216 | 213 | int flipy = flip_screen_get(gfx->machine); |
| 217 | 214 | |
| 218 | for (offs = 0x20 - 4;offs >= 0;offs -= 4) | |
| 215 | for (offs = 0x20 - 4; offs >= 0; offs -= 4) | |
| 219 | 216 | { |
| 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; | |
| 225 | 222 | |
| 226 | if(sx>=248) sx -= 256; | |
| 223 | if(sx >= 248) | |
| 224 | sx -= 256; | |
| 227 | 225 | |
| 228 | 226 | if (flipy) |
| 229 | 227 | { |
| r6428 | r6429 | |
| 240 | 238 | } |
| 241 | 239 | } |
| 242 | 240 | |
| 243 | static void robowres_draw_sprites( | |
| 244 | bitmap_t *dest_bmp, | |
| 245 | const rectangle *cliprect, | |
| 246 | const gfx_element *gfx, | |
| 247 | UINT8 *sprite) | |
| 241 | static void robowres_draw_sprites( bitmap_t *dest_bmp, const rectangle *cliprect, const gfx_element *gfx, UINT8 *sprite ) | |
| 248 | 242 | { |
| 249 | 243 | int offs; |
| 250 | 244 | int flipy = flip_screen_get(gfx->machine); |
| 251 | 245 | |
| 252 | for (offs = 0x20 - 4;offs >= 0;offs -= 4) | |
| 246 | for (offs = 0x20 - 4; offs >= 0; offs -= 4) | |
| 253 | 247 | { |
| 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; | |
| 259 | 253 | |
| 260 | if(sx>=248) sx -= 256; | |
| 254 | if(sx >= 248) | |
| 255 | sx -= 256; | |
| 261 | 256 | |
| 262 | 257 | if (flipy) |
| 263 | 258 | { |
| r6428 | r6429 | |
| 277 | 272 | |
| 278 | 273 | VIDEO_UPDATE( appoooh ) |
| 279 | 274 | { |
| 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); | |
| 281 | 277 | |
| 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); | |
| 284 | 280 | |
| 285 | 281 | /* draw sprites */ |
| 286 | if (priority == 1) | |
| 282 | if (state->priority == 1) | |
| 287 | 283 | { |
| 288 | 284 | /* sprite set #1 */ |
| 289 | appoooh_draw_sprites( | |
| 285 | appoooh_draw_sprites( | |
| 290 | 286 | /* sprite set #2 */ |
| 291 | appoooh_draw_sprites( | |
| 287 | appoooh_draw_sprites( | |
| 292 | 288 | } |
| 293 | 289 | else |
| 294 | 290 | { |
| 295 | 291 | /* sprite set #2 */ |
| 296 | appoooh_draw_sprites( | |
| 292 | appoooh_draw_sprites( | |
| 297 | 293 | /* sprite set #1 */ |
| 298 | appoooh_draw_sprites( | |
| 294 | appoooh_draw_sprites( | |
| 299 | 295 | } |
| 300 | 296 | |
| 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 | ||
| 303 | 300 | return 0; |
| 304 | 301 | } |
| 305 | 302 | |
| 306 | 303 | VIDEO_UPDATE( robowres ) |
| 307 | 304 | { |
| 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); | |
| 309 | 307 | |
| 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); | |
| 312 | 310 | |
| 313 | 311 | /* draw sprites */ |
| 314 | if (priority == 1) | |
| 312 | if (state->priority == 1) | |
| 315 | 313 | { |
| 316 | 314 | /* sprite set #1 */ |
| 317 | robowres_draw_sprites( | |
| 315 | robowres_draw_sprites( | |
| 318 | 316 | /* sprite set #2 */ |
| 319 | robowres_draw_sprites( | |
| 317 | robowres_draw_sprites( | |
| 320 | 318 | } |
| 321 | 319 | else |
| 322 | 320 | { |
| 323 | 321 | /* sprite set #2 */ |
| 324 | robowres_draw_sprites( | |
| 322 | robowres_draw_sprites( | |
| 325 | 323 | /* sprite set #1 */ |
| 326 | robowres_draw_sprites( | |
| 324 | robowres_draw_sprites( | |
| 327 | 325 | } |
| 328 | 326 | |
| 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 | ||
| 331 | 330 | return 0; |
| 332 | 331 | } |
| r6428 | r6429 | |
|---|---|---|
| 12 | 12 | ***************************************************************************/ |
| 13 | 13 | |
| 14 | 14 | #include "driver.h" |
| 15 | #include "includes/iremz80.h" | |
| 15 | 16 | |
| 16 | UINT8 *travrusa_videoram; | |
| 17 | ||
| 18 | static tilemap *bg_tilemap; | |
| 19 | ||
| 20 | ||
| 21 | ||
| 22 | 17 | /*************************************************************************** |
| 23 | 18 | |
| 24 | 19 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 202 | 197 | |
| 203 | 198 | static TILE_GET_INFO( get_tile_info ) |
| 204 | 199 | { |
| 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]; | |
| 206 | 202 | int flags = TILE_FLIPXY((attr & 0x30) >> 4); |
| 207 | 203 | |
| 208 | 204 | tileinfo->group = ((attr & 0x0f) == 0x0f) ? 1 : 0; /* tunnels */ |
| 209 | 205 | |
| 210 | 206 | SET_TILE_INFO( |
| 211 | 207 | 0, |
| 212 | t | |
| 208 | st | |
| 213 | 209 | attr & 0x0f, |
| 214 | 210 | flags); |
| 215 | 211 | } |
| r6428 | r6429 | |
| 224 | 220 | |
| 225 | 221 | VIDEO_START( travrusa ) |
| 226 | 222 | { |
| 227 | | |
| 223 | | |
| 228 | 224 | |
| 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); | |
| 231 | 226 | |
| 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); | |
| 233 | 233 | } |
| 234 | 234 | |
| 235 | 235 | |
| r6428 | r6429 | |
| 242 | 242 | |
| 243 | 243 | WRITE8_HANDLER( travrusa_videoram_w ) |
| 244 | 244 | { |
| 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); | |
| 247 | 248 | } |
| 248 | 249 | |
| 249 | 250 | |
| 250 | static int scrollx[2]; | |
| 251 | ||
| 252 | static void set_scroll(void) | |
| 251 | static void set_scroll( running_machine *machine ) | |
| 253 | 252 | { |
| 253 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 254 | 254 | int i; |
| 255 | 255 | |
| 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); | |
| 259 | 260 | } |
| 260 | 261 | |
| 261 | 262 | WRITE8_HANDLER( travrusa_scroll_x_low_w ) |
| 262 | 263 | { |
| 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); | |
| 265 | 267 | } |
| 266 | 268 | |
| 267 | 269 | WRITE8_HANDLER( travrusa_scroll_x_high_w ) |
| 268 | 270 | { |
| 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); | |
| 271 | 274 | } |
| 272 | 275 | |
| 273 | 276 | |
| r6428 | r6429 | |
| 278 | 281 | |
| 279 | 282 | flip_screen_set(space->machine, data & 1); |
| 280 | 283 | |
| 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); | |
| 283 | 286 | } |
| 284 | 287 | |
| 285 | 288 | |
| r6428 | r6429 | |
| 292 | 295 | |
| 293 | 296 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) |
| 294 | 297 | { |
| 298 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 295 | 299 | int offs; |
| 296 | 300 | static const rectangle spritevisiblearea = |
| 297 | 301 | { |
| r6428 | r6429 | |
| 312 | 316 | |
| 313 | 317 | for (offs = spriteram_size - 4;offs >= 0;offs -= 4) |
| 314 | 318 | { |
| 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]; | |
| 319 | 323 | int flipx = attr & 0x40; |
| 320 | 324 | int flipy = attr & 0x80; |
| 321 | 325 | |
| r6428 | r6429 | |
| 327 | 331 | flipy = !flipy; |
| 328 | 332 | } |
| 329 | 333 | |
| 330 | drawgfx_transpen(bitmap,&clip,machine->gfx[1], | |
| 334 | drawgfx_transpen(bitmap, &clip, machine->gfx[1], | |
| 331 | 335 | code, |
| 332 | 336 | attr & 0x0f, |
| 333 | flipx,flipy, | |
| 334 | sx,sy,0); | |
| 337 | flipx, flipy, | |
| 338 | sx, sy, 0); | |
| 335 | 339 | } |
| 336 | 340 | } |
| 337 | 341 | |
| 338 | 342 | |
| 339 | 343 | VIDEO_UPDATE( travrusa ) |
| 340 | 344 | { |
| 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); | |
| 342 | 347 | 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); | |
| 344 | 349 | return 0; |
| 345 | 350 | } |
| r6428 | r6429 | |
|---|---|---|
| 3916 | 3916 | return; |
| 3917 | 3917 | } |
| 3918 | 3918 | |
| 3919 | psx_irq_set( device->machine, | |
| 3919 | psx_irq_set( device->machine, 0x0001 | |
| 3920 | 3920 | } |
| 3921 | 3921 | |
| 3922 | 3922 | void psx_gpu_reset( running_machine *machine ) |
| r6428 | r6429 | |
|---|---|---|
| 15 | 15 | #include "driver.h" |
| 16 | 16 | #include "includes/ms32.h" |
| 17 | 17 | |
| 18 | bitmap_t* temp_bitmap_tilemaps; | |
| 19 | bitmap_t* temp_bitmap_sprites; | |
| 20 | bitmap_t* temp_bitmap_sprites_pri; | |
| 18 | 21 | |
| 22 | ||
| 19 | 23 | //UINT32 *ms32_fce00000; |
| 20 | 24 | UINT32 *ms32_roz_ctrl; |
| 21 | 25 | UINT32 *ms32_tx_scroll; |
| 22 | 26 | UINT32 *ms32_bg_scroll; |
| 23 | UINT32 *ms32_priram; | |
| 24 | UINT32 *ms32_palram; | |
| 25 | UINT32 *ms32_bgram; | |
| 26 | UINT32 *ms32_rozram; | |
| 27 | UINT32 *ms32_lineram; | |
| 28 | UINT32 *ms32_spram; | |
| 29 | UINT32 *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; | |
| 30 | 34 | UINT32 *ms32_mainram; |
| 31 | 35 | |
| 36 | ||
| 37 | UINT8* ms32_priram_8; | |
| 38 | UINT16* ms32_palram_16; | |
| 39 | UINT16* ms32_rozram_16; | |
| 40 | UINT16 *ms32_lineram_16; | |
| 41 | UINT16 *ms32_sprram_16; | |
| 42 | UINT16 *ms32_bgram_16; | |
| 43 | UINT16 *ms32_txram_16; | |
| 44 | UINT32 ms32_tilemaplayoutcontrol; | |
| 45 | ||
| 46 | UINT16* f1superb_extraram_16; | |
| 47 | ||
| 32 | 48 | // kirarast, tp2m32, and 47pie2 require the sprites in a different order |
| 33 | 49 | static int ms32_reverse_sprite_order; |
| 34 | 50 | |
| 35 | 51 | /********** Tilemaps **********/ |
| 36 | 52 | |
| 37 | static tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap; | |
| 53 | tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap, *ms32_bg_tilemap_alt; | |
| 54 | tilemap *ms32_extra_tilemap; | |
| 38 | 55 | static int flipscreen; |
| 39 | 56 | |
| 40 | 57 | |
| r6428 | r6429 | |
| 42 | 59 | { |
| 43 | 60 | int tileno, colour; |
| 44 | 61 | |
| 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; | |
| 47 | 64 | |
| 48 | 65 | SET_TILE_INFO(3,tileno,colour,0); |
| 49 | 66 | } |
| r6428 | r6429 | |
| 52 | 69 | { |
| 53 | 70 | int tileno,colour; |
| 54 | 71 | |
| 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; | |
| 57 | 74 | |
| 58 | 75 | SET_TILE_INFO(1,tileno,colour,0); |
| 59 | 76 | } |
| r6428 | r6429 | |
| 62 | 79 | { |
| 63 | 80 | int tileno,colour; |
| 64 | 81 | |
| 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; | |
| 67 | 84 | |
| 68 | 85 | SET_TILE_INFO(2,tileno,colour,0); |
| 69 | 86 | } |
| 70 | 87 | |
| 88 | static 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 | ||
| 71 | 99 | static UINT32 brt[4]; |
| 72 | 100 | static int brt_r,brt_g,brt_b; |
| 73 | 101 | |
| 74 | 102 | VIDEO_START( ms32 ) |
| 75 | 103 | { |
| 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 | ||
| 76 | 115 | ms32_tx_tilemap = tilemap_create(machine, get_ms32_tx_tile_info,tilemap_scan_rows,8, 8,64,64); |
| 77 | 116 | 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? | |
| 78 | 118 | ms32_roz_tilemap = tilemap_create(machine, get_ms32_roz_tile_info,tilemap_scan_rows,16,16,128,128); |
| 79 | 119 | |
| 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 | ||
| 80 | 127 | tilemap_set_transparent_pen(ms32_tx_tilemap,0); |
| 81 | 128 | tilemap_set_transparent_pen(ms32_bg_tilemap,0); |
| 129 | tilemap_set_transparent_pen(ms32_bg_tilemap_alt,0); | |
| 82 | 130 | tilemap_set_transparent_pen(ms32_roz_tilemap,0); |
| 83 | 131 | |
| 84 | 132 | ms32_reverse_sprite_order = 1; |
| r6428 | r6429 | |
| 96 | 144 | brt[0] = brt[1] = 0xffff; |
| 97 | 145 | } |
| 98 | 146 | |
| 147 | VIDEO_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 | ||
| 99 | 156 | /********** PALETTE WRITES **********/ |
| 100 | 157 | |
| 101 | 158 | |
| r6428 | r6429 | |
| 109 | 166 | */ |
| 110 | 167 | if (~color & 0x4000) |
| 111 | 168 | { |
| 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; | |
| 115 | 172 | } |
| 116 | 173 | else |
| 117 | 174 | { |
| 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 ); | |
| 121 | 178 | } |
| 122 | 179 | |
| 123 | 180 | palette_set_color(machine,color,MAKE_RGB(r,g,b)); |
| r6428 | r6429 | |
| 131 | 188 | if (brt[offset] != oldword) |
| 132 | 189 | { |
| 133 | 190 | int bank = ((offset & 2) >> 1) * 0x4000; |
| 134 | int i; | |
| 191 | //int i; | |
| 135 | 192 | |
| 136 | 193 | if (bank == 0) |
| 137 | 194 | { |
| r6428 | r6429 | |
| 139 | 196 | brt_g = 0x100 - ((brt[0] & 0x00ff) >> 0); |
| 140 | 197 | brt_b = 0x100 - ((brt[1] & 0x00ff) >> 0); |
| 141 | 198 | |
| 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); | |
| 144 | 201 | } |
| 145 | 202 | } |
| 146 | 203 | |
| 147 | 204 | //popmessage("%04x %04x %04x %04x",brt[0],brt[1],brt[2],brt[3]); |
| 148 | 205 | } |
| 149 | 206 | |
| 150 | WRITE32_HANDLER( ms32_palram_w ) | |
| 151 | { | |
| 152 | COMBINE_DATA(&ms32_palram[offset]); | |
| 153 | 207 | |
| 154 | update_color(space->machine, offset/2); | |
| 155 | } | |
| 156 | 208 | |
| 157 | 209 | |
| 158 | 210 | |
| 159 | READ32_HANDLER( ms32_txram_r ) | |
| 160 | { | |
| 161 | return ms32_txram[offset]; | |
| 162 | } | |
| 163 | 211 | |
| 164 | WRITE32_HANDLER( ms32_txram_w ) | |
| 165 | { | |
| 166 | COMBINE_DATA(&ms32_txram[offset]); | |
| 167 | tilemap_mark_tile_dirty(ms32_tx_tilemap,offset/2); | |
| 168 | } | |
| 169 | ||
| 170 | READ32_HANDLER( ms32_rozram_r ) | |
| 171 | { | |
| 172 | return ms32_rozram[offset]; | |
| 173 | } | |
| 174 | ||
| 175 | WRITE32_HANDLER( ms32_rozram_w ) | |
| 176 | { | |
| 177 | COMBINE_DATA(&ms32_rozram[offset]); | |
| 178 | tilemap_mark_tile_dirty(ms32_roz_tilemap,offset/2); | |
| 179 | } | |
| 180 | ||
| 181 | READ32_HANDLER( ms32_lineram_r ) | |
| 182 | { | |
| 183 | return ms32_lineram[offset]; | |
| 184 | } | |
| 185 | ||
| 186 | WRITE32_HANDLER( ms32_lineram_w ) | |
| 187 | { | |
| 188 | COMBINE_DATA(&ms32_lineram[offset]); | |
| 189 | } | |
| 190 | ||
| 191 | READ32_HANDLER( ms32_bgram_r ) | |
| 192 | { | |
| 193 | return ms32_bgram[offset]; | |
| 194 | } | |
| 195 | ||
| 196 | WRITE32_HANDLER( ms32_bgram_w ) | |
| 197 | { | |
| 198 | COMBINE_DATA(&ms32_bgram[offset]); | |
| 199 | tilemap_mark_tile_dirty(ms32_bg_tilemap,offset/2); | |
| 200 | } | |
| 201 | ||
| 202 | READ32_HANDLER( ms32_spram_r ) | |
| 203 | { | |
| 204 | return ms32_spram[offset]; | |
| 205 | } | |
| 206 | ||
| 207 | WRITE32_HANDLER( ms32_spram_w ) | |
| 208 | { | |
| 209 | COMBINE_DATA(&ms32_spram[offset]); | |
| 210 | } | |
| 211 | ||
| 212 | READ32_HANDLER( ms32_priram_r ) | |
| 213 | { | |
| 214 | return ms32_priram[offset]; | |
| 215 | } | |
| 216 | ||
| 217 | WRITE32_HANDLER( ms32_priram_w ) | |
| 218 | { | |
| 219 | COMBINE_DATA(&ms32_priram[offset]); | |
| 220 | } | |
| 221 | ||
| 222 | 212 | WRITE32_HANDLER( ms32_gfxctrl_w ) |
| 223 | 213 | { |
| 224 | 214 | if (ACCESSING_BITS_0_7) |
| r6428 | r6429 | |
| 227 | 217 | flipscreen = data & 0x02; |
| 228 | 218 | tilemap_set_flip(ms32_tx_tilemap,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); |
| 229 | 219 | 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); | |
| 230 | 221 | |
| 231 | 222 | /* bit 2 used by f1superb, unknown */ |
| 232 | 223 | |
| r6428 | r6429 | |
| 239 | 230 | |
| 240 | 231 | |
| 241 | 232 | /* SPRITES based on tetrisp2 for now, readd priority bits later */ |
| 233 | /* now using function in tetrisp2.c */ | |
| 234 | void 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); | |
| 242 | 235 | |
| 243 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT32 *sprram_top, size_t sprram_size) | |
| 244 | { | |
| 245 | /*************************************************************************** | |
| 246 | 236 | |
| 247 | 237 | |
| 248 | Sprites Drawing | |
| 249 | 238 | |
| 250 | Offset: Bits: Meaning: | |
| 251 | 239 | |
| 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 | |
| 349 | if (input_code_pressed(machine, KEYCODE_A) && (pri & 8)) color = rand(); | |
| 350 | if (input_code_pressed(machine, KEYCODE_S) && (pri & 4)) color = rand(); | |
| 351 | if (input_code_pressed(machine, KEYCODE_D) && (pri & 2)) color = rand(); | |
| 352 | if (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 | ||
| 377 | 240 | static void draw_roz(bitmap_t *bitmap, const rectangle *cliprect,int priority) |
| 378 | 241 | { |
| 379 | 242 | /* TODO: registers 0x40/4 / 0x44/4 and 0x50/4 / 0x54/4 are used, meaning unknown */ |
| r6428 | r6429 | |
| 391 | 254 | |
| 392 | 255 | while (y <= maxy) |
| 393 | 256 | { |
| 394 | UINT | |
| 257 | UINT16 *lineaddr = ms32_lineram_16 + 8 * (y & 0xff); | |
| 395 | 258 | |
| 396 | 259 | int start2x = (lineaddr[0x00/4] & 0xffff) | ((lineaddr[0x04/4] & 3) << 16); |
| 397 | 260 | int start2y = (lineaddr[0x08/4] & 0xffff) | ((lineaddr[0x0c/4] & 3) << 16); |
| r6428 | r6429 | |
| 459 | 322 | VIDEO_UPDATE( ms32 ) |
| 460 | 323 | { |
| 461 | 324 | int scrollx,scrolly; |
| 325 | int asc_pri; | |
| 326 | int scr_pri; | |
| 327 | int rot_pri; | |
| 462 | 328 | |
| 463 | 329 | /* TODO: registers 0x04/4 and 0x10/4 are used too; the most interesting case |
| 464 | 330 | is gametngk, where they are *usually*, but not always, copies of 0x00/4 |
| r6428 | r6429 | |
| 468 | 334 | The two registers might be somewhat related to the width and height of the |
| 469 | 335 | tilemaps, but there's something that just doesn't fit. |
| 470 | 336 | */ |
| 337 | int i; | |
| 338 | ||
| 339 | for (i = 0;i < 0x10000;i++) // colors 0x3000-0x3fff are not used | |
| 340 | update_color(screen->machine, i); | |
| 341 | ||
| 471 | 342 | scrollx = ms32_tx_scroll[0x00/4] + ms32_tx_scroll[0x08/4] + 0x18; |
| 472 | 343 | scrolly = ms32_tx_scroll[0x0c/4] + ms32_tx_scroll[0x14/4]; |
| 473 | 344 | tilemap_set_scrollx(ms32_tx_tilemap, 0, scrollx); |
| r6428 | r6429 | |
| 477 | 348 | scrolly = ms32_bg_scroll[0x0c/4] + ms32_bg_scroll[0x14/4]; |
| 478 | 349 | tilemap_set_scrollx(ms32_bg_tilemap, 0, scrollx); |
| 479 | 350 | 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); | |
| 480 | 353 | |
| 481 | 354 | |
| 482 | 355 | bitmap_fill(screen->machine->priority_bitmap,cliprect,0); |
| 483 | 356 | |
| 357 | ||
| 358 | ||
| 484 | 359 | /* TODO: 0 is correct for gametngk, but break f1superb scrolling grid (text at |
| 485 | 360 | 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 */ | |
| 487 | 362 | |
| 363 | /* clear our sprite bitmaps */ | |
| 364 | bitmap_fill(temp_bitmap_sprites,cliprect,0); | |
| 365 | bitmap_fill(temp_bitmap_sprites_pri,cliprect,0); | |
| 488 | 366 | |
| 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 ); | |
| 496 | 368 | |
| 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++; | |
| 498 | 376 | 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 */ | |
| 499 | 435 | { |
| 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 | ||
| 504 | 685 | } |
| 505 | 686 | |
| 506 | 687 |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "includes/4enraya.h" | |
| 10 | 11 | |
| 11 | static tilemap *bg_tilemap; | |
| 12 | ||
| 13 | 12 | WRITE8_HANDLER( fenraya_videoram_w ) |
| 14 | 13 | { |
| 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); | |
| 18 | 19 | } |
| 19 | 20 | |
| 20 | 21 | static TILE_GET_INFO( get_tile_info ) |
| 21 | 22 | { |
| 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); | |
| 23 | 26 | SET_TILE_INFO( |
| 24 | 27 | 0, |
| 25 | 28 | code, |
| r6428 | r6429 | |
| 29 | 32 | |
| 30 | 33 | VIDEO_START( 4enraya ) |
| 31 | 34 | { |
| 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); | |
| 33 | 38 | } |
| 34 | 39 | |
| 35 | VIDEO_UPDATE( 4enraya) | |
| 40 | VIDEO_UPDATE( 4enraya ) | |
| 36 | 41 | { |
| 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); | |
| 38 | 45 | return 0; |
| 39 | 46 | } |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | #include "driver.h" |
| 2 | 2 | #include "includes/blockade.h" |
| 3 | 3 | |
| 4 | static tilemap *bg_tilemap; | |
| 5 | ||
| 6 | 4 | WRITE8_HANDLER( blockade_videoram_w ) |
| 7 | 5 | { |
| 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); | |
| 10 | 9 | |
| 11 | 10 | if (input_port_read(space->machine, "IN3") & 0x80) |
| 12 | 11 | { |
| r6428 | r6429 | |
| 17 | 16 | |
| 18 | 17 | static TILE_GET_INFO( get_bg_tile_info ) |
| 19 | 18 | { |
| 20 | int code = videoram[tile_index]; | |
| 19 | blockade_state *state = (blockade_state *)machine->driver_data; | |
| 20 | int code = state->videoram[tile_index]; | |
| 21 | 21 | |
| 22 | 22 | SET_TILE_INFO(0, code, 0, 0); |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | VIDEO_START( blockade ) |
| 26 | 26 | { |
| 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); | |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | VIDEO_UPDATE( blockade ) |
| 32 | 32 | { |
| 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); | |
| 34 | 36 | return 0; |
| 35 | 37 | } |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "driver.h" |
| 10 | 10 | #include "includes/espial.h" |
| 11 | 11 | |
| 12 | ||
| 13 | UINT8 *espial_videoram; | |
| 14 | UINT8 *espial_colorram; | |
| 15 | UINT8 *espial_attributeram; | |
| 16 | UINT8 *espial_scrollram; | |
| 17 | UINT8 *espial_spriteram_1; | |
| 18 | UINT8 *espial_spriteram_2; | |
| 19 | UINT8 *espial_spriteram_3; | |
| 20 | ||
| 21 | static int flipscreen; | |
| 22 | static tilemap *bg_tilemap; | |
| 23 | ||
| 24 | ||
| 25 | 12 | /*************************************************************************** |
| 26 | 13 | |
| 27 | 14 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 41 | 28 | bit 0 -- 1 kohm resistor -- RED |
| 42 | 29 | |
| 43 | 30 | ***************************************************************************/ |
| 31 | ||
| 44 | 32 | PALETTE_INIT( espial ) |
| 45 | 33 | { |
| 46 | 34 | int i; |
| 47 | 35 | |
| 48 | ||
| 49 | for (i = 0;i < machine->config->total_colors;i++) | |
| 36 | for (i = 0; i < machine->config->total_colors; i++) | |
| 50 | 37 | { |
| 51 | int bit0,bit1,bit2,r,g,b; | |
| 38 | int bit0, bit1, bit2, r, g, b; | |
| 52 | 39 | |
| 53 | ||
| 54 | 40 | /* red component */ |
| 55 | 41 | bit0 = (color_prom[i] >> 0) & 0x01; |
| 56 | 42 | bit1 = (color_prom[i] >> 1) & 0x01; |
| r6428 | r6429 | |
| 67 | 53 | bit2 = (color_prom[i + machine->config->total_colors] >> 3) & 0x01; |
| 68 | 54 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 69 | 55 | |
| 70 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); | |
| 56 | palette_set_color(machine, i, MAKE_RGB(r,g,b)); | |
| 71 | 57 | } |
| 72 | 58 | } |
| 73 | 59 | |
| r6428 | r6429 | |
| 81 | 67 | |
| 82 | 68 | static TILE_GET_INFO( get_tile_info ) |
| 83 | 69 | { |
| 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]; | |
| 87 | 74 | SET_TILE_INFO(0, |
| 88 | 75 | code | ((attr & 0x03) << 8), |
| 89 | 76 | col & 0x3f, |
| r6428 | r6429 | |
| 100 | 87 | |
| 101 | 88 | VIDEO_START( espial ) |
| 102 | 89 | { |
| 103 | | |
| 90 | esp | |
| 104 | 91 | |
| 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); | |
| 106 | 94 | |
| 107 | state_save_register_global(machine, flipscreen); | |
| 95 | state_save_register_global(machine, state->flipscreen); | |
| 108 | 96 | } |
| 109 | 97 | |
| 110 | 98 | VIDEO_START( netwars ) |
| 111 | 99 | { |
| 100 | espial_state *state = (espial_state *)machine->driver_data; | |
| 101 | ||
| 112 | 102 | /* 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); | |
| 114 | 104 | |
| 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); | |
| 117 | 107 | |
| 118 | state_save_register_global(machine, flipscreen); | |
| 108 | state_save_register_global(machine, state->flipscreen); | |
| 119 | 109 | } |
| 120 | 110 | |
| 121 | 111 | |
| r6428 | r6429 | |
| 127 | 117 | |
| 128 | 118 | WRITE8_HANDLER( espial_videoram_w ) |
| 129 | 119 | { |
| 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); | |
| 132 | 124 | } |
| 133 | 125 | |
| 134 | 126 | |
| 135 | 127 | WRITE8_HANDLER( espial_colorram_w ) |
| 136 | 128 | { |
| 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); | |
| 139 | 133 | } |
| 140 | 134 | |
| 141 | 135 | |
| 142 | 136 | WRITE8_HANDLER( espial_attributeram_w ) |
| 143 | 137 | { |
| 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); | |
| 146 | 142 | } |
| 147 | 143 | |
| 148 | 144 | |
| 149 | 145 | WRITE8_HANDLER( espial_scrollram_w ) |
| 150 | 146 | { |
| 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); | |
| 153 | 151 | } |
| 154 | 152 | |
| 155 | 153 | |
| 156 | 154 | WRITE8_HANDLER( espial_flipscreen_w ) |
| 157 | 155 | { |
| 158 | | |
| 156 | es | |
| 159 | 157 | |
| 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); | |
| 161 | 160 | } |
| 162 | 161 | |
| 163 | 162 | |
| r6428 | r6429 | |
| 167 | 166 | * |
| 168 | 167 | *************************************/ |
| 169 | 168 | |
| 170 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 169 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 171 | 170 | { |
| 171 | espial_state *state = (espial_state *)machine->driver_data; | |
| 172 | 172 | int offs; |
| 173 | 173 | |
| 174 | ||
| 175 | 174 | /* Note that it is important to draw them exactly in this */ |
| 176 | 175 | /* order, to have the correct priorities. */ |
| 177 | for (offs = 0;offs < 16;offs++) | |
| 176 | for (offs = 0; offs < 16; offs++) | |
| 178 | 177 | { |
| 179 | int sx,sy,code,color,flipx,flipy; | |
| 178 | int sx, sy, code, color, flipx, flipy; | |
| 180 | 179 | |
| 181 | 180 | |
| 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; | |
| 188 | 187 | |
| 189 | if (flipscreen) | |
| 188 | if (state->flipscreen) | |
| 190 | 189 | { |
| 191 | 190 | flipx = !flipx; |
| 192 | 191 | flipy = !flipy; |
| r6428 | r6429 | |
| 196 | 195 | sy = 240 - sy; |
| 197 | 196 | } |
| 198 | 197 | |
| 199 | if ( | |
| 198 | if ( | |
| 200 | 199 | { |
| 201 | if (flipscreen) | |
| 200 | if (state->flipscreen) | |
| 202 | 201 | { |
| 203 | 202 | drawgfx_transpen(bitmap,cliprect,machine->gfx[1], |
| 204 | 203 | code,color, |
| r6428 | r6429 | |
| 235 | 234 | |
| 236 | 235 | VIDEO_UPDATE( espial ) |
| 237 | 236 | { |
| 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); | |
| 239 | 240 | draw_sprites(screen->machine, bitmap, cliprect); |
| 240 | 241 | return 0; |
| 241 | 242 | } |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "driver.h" |
| 10 | 10 | #include "includes/espial.h" |
| 11 | 11 | |
| 12 | UINT8 *zodiack_videoram2; | |
| 13 | UINT8 *zodiack_attributesram; | |
| 14 | UINT8 *zodiack_bulletsram; | |
| 15 | 12 | size_t zodiack_bulletsram_size; |
| 16 | 13 | |
| 17 | static tilemap *bg_tilemap, *fg_tilemap; | |
| 18 | 14 | |
| 19 | 15 | WRITE8_HANDLER( zodiack_videoram_w ) |
| 20 | 16 | { |
| 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); | |
| 23 | 21 | } |
| 24 | 22 | |
| 25 | 23 | WRITE8_HANDLER( zodiack_videoram2_w ) |
| 26 | 24 | { |
| 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); | |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | WRITE8_HANDLER( zodiack_attributes_w ) |
| 32 | 32 | { |
| 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) | |
| 34 | 36 | { |
| 35 | 37 | int i; |
| 36 | 38 | |
| 37 | for (i = offset / 2;i < videoram_size; i += 32) | |
| 39 | for (i = offset / 2; i < videoram_size; i += 32) | |
| 38 | 40 | { |
| 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); | |
| 41 | 43 | } |
| 42 | 44 | } |
| 43 | 45 | |
| 44 | | |
| 46 | st | |
| 45 | 47 | } |
| 46 | 48 | |
| 47 | 49 | WRITE8_HANDLER( zodiack_flipscreen_w ) |
| r6428 | r6429 | |
| 107 | 109 | |
| 108 | 110 | static TILE_GET_INFO( get_bg_tile_info ) |
| 109 | 111 | { |
| 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; | |
| 112 | 113 | |
| 114 | int code = state->videoram_2[tile_index]; | |
| 115 | int color = (state->attributeram[2 * (tile_index % 32) + 1] >> 4) & 0x07; | |
| 116 | ||
| 113 | 117 | SET_TILE_INFO(0, code, color, 0); |
| 114 | 118 | } |
| 115 | 119 | |
| 116 | 120 | static TILE_GET_INFO( get_fg_tile_info ) |
| 117 | 121 | { |
| 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; | |
| 120 | 123 | |
| 124 | int code = state->videoram[tile_index]; | |
| 125 | int color = state->attributeram[2 * (tile_index % 32) + 1] & 0x07; | |
| 126 | ||
| 121 | 127 | SET_TILE_INFO(3, code, color, 0); |
| 122 | 128 | } |
| 123 | 129 | |
| 124 | 130 | VIDEO_START( zodiack ) |
| 125 | 131 | { |
| 126 | | |
| 132 | esp | |
| 127 | 133 | |
| 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); | |
| 129 | 136 | |
| 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); | |
| 132 | 139 | |
| 133 | 140 | /* FIXME: flip_screen_x should not be written. */ |
| 134 | 141 | flip_screen_set_no_update(machine, 0); |
| r6428 | r6429 | |
| 136 | 143 | |
| 137 | 144 | static void draw_bullets(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 138 | 145 | { |
| 146 | espial_state *state = (espial_state *)machine->driver_data; | |
| 139 | 147 | int offs; |
| 140 | 148 | |
| 141 | 149 | for (offs = 0; offs < zodiack_bulletsram_size; offs += 4) |
| 142 | 150 | { |
| 143 | 151 | int x, y; |
| 144 | 152 | |
| 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]; | |
| 147 | 155 | |
| 148 | if (flip_screen_get(machine) && percuss_hardware) | |
| 156 | if (flip_screen_get(machine) && state->percuss_hardware) | |
| 149 | 157 | { |
| 150 | 158 | y = 255 - y; |
| 151 | 159 | } |
| r6428 | r6429 | |
| 162 | 170 | |
| 163 | 171 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 164 | 172 | { |
| 173 | espial_state *state = (espial_state *)machine->driver_data; | |
| 165 | 174 | int offs; |
| 166 | 175 | |
| 167 | 176 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) |
| 168 | 177 | { |
| 169 | 178 | int flipx, flipy, sx, sy, spritecode; |
| 170 | 179 | |
| 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; | |
| 176 | 185 | |
| 177 | if (flip_screen_get(machine) && percuss_hardware) | |
| 186 | if (flip_screen_get(machine) && state->percuss_hardware) | |
| 178 | 187 | { |
| 179 | 188 | sy = 240 - sy; |
| 180 | 189 | flipy = !flipy; |
| r6428 | r6429 | |
| 182 | 191 | |
| 183 | 192 | drawgfx_transpen(bitmap,cliprect,machine->gfx[1], |
| 184 | 193 | spritecode, |
| 185 | spriteram[offs + 2] & 0x07, | |
| 194 | state->spriteram[offs + 2] & 0x07, | |
| 186 | 195 | flipx, flipy, |
| 187 | 196 | sx, sy, |
| 188 | 197 | 0); |
| r6428 | r6429 | |
| 191 | 200 | |
| 192 | 201 | VIDEO_UPDATE( zodiack ) |
| 193 | 202 | { |
| 203 | espial_state *state = (espial_state *)screen->machine->driver_data; | |
| 194 | 204 | int i; |
| 195 | 205 | |
| 196 | 206 | for (i = 0; i < 32; i++) |
| 197 | tilemap_set_scrolly(fg_tilemap, i, | |
| 207 | tilemap_set_scrolly(state->fg_tilemap, i, st | |
| 198 | 208 | |
| 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); | |
| 201 | 211 | draw_bullets(screen->machine, bitmap, cliprect); |
| 202 | 212 | draw_sprites(screen->machine, bitmap, cliprect); |
| 203 | 213 | return 0; |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Bionic Commando Video Hardware | |
| 3 | Bionic Commando Video Hardware | |
| 4 | 4 | |
| 5 | This board handles tile/tile and tile/sprite priority with a PROM. Its | |
| 6 | working 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. | |
| 7 | 7 | |
| 8 | The PROM is a 256x4 chip, with address inputs wired as follows: | |
| 8 | The PROM is a 256x4 chip, with address inputs wired as follows: | |
| 9 | 9 | |
| 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 | |
| 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 | |
| 18 | 18 | |
| 19 | The output selects the active layer, it can be: | |
| 20 | 0 bg | |
| 21 | 1 fg | |
| 22 | 2 sprite | |
| 19 | The output selects the active layer, it can be: | |
| 20 | 0 bg | |
| 21 | 1 fg | |
| 22 | 2 sprite | |
| 23 | 23 | |
| 24 | 24 | ***************************************************************************/ |
| 25 | 25 | |
| 26 | 26 | #include "driver.h" |
| 27 | #include "bionicc.h" | |
| 27 | 28 | |
| 28 | UINT16 *bionicc_fgvideoram; | |
| 29 | UINT16 *bionicc_bgvideoram; | |
| 30 | UINT16 *bionicc_txvideoram; | |
| 31 | 29 | |
| 32 | static tilemap *tx_tilemap, *bg_tilemap, *fg_tilemap; | |
| 33 | ||
| 34 | ||
| 35 | 30 | /*************************************************************************** |
| 36 | 31 | |
| 37 | 32 | Callbacks for the TileMap code |
| r6428 | r6429 | |
| 40 | 35 | |
| 41 | 36 | static TILE_GET_INFO( get_bg_tile_info ) |
| 42 | 37 | { |
| 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]; | |
| 44 | 41 | SET_TILE_INFO( |
| 45 | 42 | 1, |
| 46 | (b | |
| 43 | (state->b | |
| 47 | 44 | (attr & 0x18) >> 3, |
| 48 | 45 | TILE_FLIPXY((attr & 0xc0) >> 6)); |
| 49 | 46 | } |
| 50 | 47 | |
| 51 | 48 | static TILE_GET_INFO( get_fg_tile_info ) |
| 52 | 49 | { |
| 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]; | |
| 54 | 53 | int flags; |
| 55 | 54 | |
| 56 | 55 | if ((attr & 0xc0) == 0xc0) |
| r6428 | r6429 | |
| 68 | 67 | |
| 69 | 68 | SET_TILE_INFO( |
| 70 | 69 | 2, |
| 71 | ( | |
| 70 | (state-> | |
| 72 | 71 | (attr & 0x18) >> 3, |
| 73 | 72 | flags); |
| 74 | 73 | } |
| 75 | 74 | |
| 76 | 75 | static TILE_GET_INFO( get_tx_tile_info ) |
| 77 | 76 | { |
| 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]; | |
| 79 | 80 | SET_TILE_INFO( |
| 80 | 81 | 0, |
| 81 | ( | |
| 82 | (state-> | |
| 82 | 83 | attr & 0x3f, |
| 83 | 84 | 0); |
| 84 | 85 | } |
| r6428 | r6429 | |
| 93 | 94 | |
| 94 | 95 | VIDEO_START( bionicc ) |
| 95 | 96 | { |
| 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; | |
| 99 | 98 | |
| 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); | |
| 104 | 107 | } |
| 105 | 108 | |
| 106 | 109 | |
| r6428 | r6429 | |
| 113 | 116 | |
| 114 | 117 | WRITE16_HANDLER( bionicc_bgvideoram_w ) |
| 115 | 118 | { |
| 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); | |
| 118 | 123 | } |
| 119 | 124 | |
| 120 | 125 | WRITE16_HANDLER( bionicc_fgvideoram_w ) |
| 121 | 126 | { |
| 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); | |
| 124 | 131 | } |
| 125 | 132 | |
| 126 | 133 | WRITE16_HANDLER( bionicc_txvideoram_w ) |
| 127 | 134 | { |
| 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); | |
| 130 | 139 | } |
| 131 | 140 | |
| 132 | 141 | WRITE16_HANDLER( bionicc_paletteram_w ) |
| 133 | 142 | { |
| 143 | bionicc_state *state = (bionicc_state *)space->machine->driver_data; | |
| 134 | 144 | int r, g, b, bright; |
| 135 | data = COMBINE_DATA(&paletteram16[offset]); | |
| 145 | data = COMBINE_DATA(&state->paletteram16[offset]); | |
| 136 | 146 | |
| 137 | bright = (data&0x0f); | |
| 147 | bright = (data & 0x0f); | |
| 138 | 148 | |
| 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; | |
| 142 | 152 | |
| 143 | 153 | if ((bright & 0x08) == 0) |
| 144 | 154 | { |
| r6428 | r6429 | |
| 152 | 162 | |
| 153 | 163 | WRITE16_HANDLER( bionicc_scroll_w ) |
| 154 | 164 | { |
| 155 | static | |
| 165 | bionicc_state *state = (bionicc_state *) | |
| 156 | 166 | |
| 157 | data = COMBINE_DATA(&scroll[offset]); | |
| 167 | data = COMBINE_DATA(&state->scroll[offset]); | |
| 158 | 168 | |
| 159 | 169 | switch (offset) |
| 160 | 170 | { |
| 161 | 171 | case 0: |
| 162 | tilemap_set_scrollx(fg_tilemap,0,data); | |
| 172 | tilemap_set_scrollx(state->fg_tilemap, 0, data); | |
| 163 | 173 | break; |
| 164 | 174 | case 1: |
| 165 | tilemap_set_scrolly(fg_tilemap,0,data); | |
| 175 | tilemap_set_scrolly(state->fg_tilemap, 0, data); | |
| 166 | 176 | break; |
| 167 | 177 | case 2: |
| 168 | tilemap_set_scrollx(bg_tilemap,0,data); | |
| 178 | tilemap_set_scrollx(state->bg_tilemap, 0, data); | |
| 169 | 179 | break; |
| 170 | 180 | case 3: |
| 171 | tilemap_set_scrolly(bg_tilemap,0,data); | |
| 181 | tilemap_set_scrolly(state->bg_tilemap, 0, data); | |
| 172 | 182 | break; |
| 173 | 183 | } |
| 174 | 184 | } |
| 175 | 185 | |
| 176 | 186 | WRITE16_HANDLER( bionicc_gfxctrl_w ) |
| 177 | 187 | { |
| 188 | bionicc_state *state = (bionicc_state *)space->machine->driver_data; | |
| 189 | ||
| 178 | 190 | if (ACCESSING_BITS_8_15) |
| 179 | 191 | { |
| 180 | 192 | flip_screen_set(space->machine, data & 0x0100); |
| 181 | 193 | |
| 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 */ | |
| 184 | 196 | |
| 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); | |
| 187 | 199 | } |
| 188 | 200 | } |
| 189 | 201 | |
| r6428 | r6429 | |
| 195 | 207 | |
| 196 | 208 | ***************************************************************************/ |
| 197 | 209 | |
| 198 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 210 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 199 | 211 | { |
| 212 | // bionicc_state *state = (bionicc_state *)machine->driver_data; | |
| 200 | 213 | int offs; |
| 201 | 214 | const gfx_element *gfx = machine->gfx[3]; |
| 202 | 215 | |
| 203 | for (offs = (spriteram_size-8)/2;offs >= 0;offs -= 4) | |
| 216 | for (offs = (spriteram_size - 8) / 2; offs >= 0; offs -= 4) | |
| 204 | 217 | { |
| 205 | 218 | 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; | |
| 210 | 224 | 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 | ||
| 214 | 231 | if (flip_screen_get(machine)) |
| 215 | 232 | { |
| 216 | 233 | sx = 240 - sx; |
| r6428 | r6429 | |
| 230 | 247 | |
| 231 | 248 | VIDEO_UPDATE( bionicc ) |
| 232 | 249 | { |
| 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); | |
| 240 | 259 | return 0; |
| 241 | 260 | } |
| 242 | 261 |
| r6428 | r6429 | |
|---|---|---|
| 109 | 109 | |
| 110 | 110 | sortlayers(layer, layerpri); |
| 111 | 111 | |
| 112 | K054338_update_all_shadows(screen->machine); | |
| 112 | K054338_update_all_shadows(screen->machine, 0); | |
| 113 | 113 | K054338_fill_backcolor(screen->machine, bitmap, 0); |
| 114 | 114 | |
| 115 | 115 | bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); |
| r6428 | r6429 | |
|---|---|---|
| 1 | ||
| 1 | /*************************************************************************** | |
| 2 | 2 | |
| 3 | static int battlex_scroll_lsb; | |
| 4 | static int battlex_scroll_msb; | |
| 3 | Video emulation for Omori Battle Cross | |
| 5 | 4 | |
| 6 | ||
| 5 | ||
| 7 | 6 | |
| 7 | #include "driver.h" | |
| 8 | #include "battlex.h" | |
| 9 | ||
| 8 | 10 | PALETTE_INIT( battlex ) |
| 9 | 11 | { |
| 10 | int i,col; | |
| 12 | int i, col; | |
| 11 | 13 | |
| 12 | for (col = 0;col < 8;col++) | |
| 14 | for (col = 0; col < 8; col++) | |
| 13 | 15 | { |
| 14 | for (i = 0;i < 16;i++) | |
| 16 | for (i = 0; i < 16; i++) | |
| 15 | 17 | { |
| 16 | 18 | int data = i | col; |
| 17 | 19 | int g = pal1bit(data >> 0); |
| r6428 | r6429 | |
| 28 | 30 | } |
| 29 | 31 | #endif |
| 30 | 32 | |
| 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)); | |
| 32 | 34 | } |
| 33 | 35 | } |
| 34 | 36 | } |
| 35 | 37 | |
| 36 | 38 | WRITE8_HANDLER( battlex_palette_w ) |
| 37 | 39 | { |
| 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)); | |
| 39 | 41 | } |
| 40 | 42 | |
| 41 | 43 | WRITE8_HANDLER( battlex_scroll_x_lsb_w ) |
| 42 | 44 | { |
| 43 | battlex_scroll_lsb = data; | |
| 45 | battlex_state *state = (battlex_state *)space->machine->driver_data; | |
| 46 | state->scroll_lsb = data; | |
| 44 | 47 | } |
| 45 | 48 | |
| 46 | 49 | WRITE8_HANDLER( battlex_scroll_x_msb_w ) |
| 47 | 50 | { |
| 48 | battlex_scroll_msb = data; | |
| 51 | battlex_state *state = (battlex_state *)space->machine->driver_data; | |
| 52 | state->scroll_msb = data; | |
| 49 | 53 | } |
| 50 | 54 | |
| 51 | 55 | WRITE8_HANDLER( battlex_videoram_w ) |
| 52 | 56 | { |
| 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); | |
| 55 | 60 | } |
| 56 | 61 | |
| 57 | 62 | WRITE8_HANDLER( battlex_flipscreen_w ) |
| r6428 | r6429 | |
| 69 | 74 | |
| 70 | 75 | static TILE_GET_INFO( get_bg_tile_info ) |
| 71 | 76 | { |
| 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; | |
| 74 | 80 | |
| 75 | SET_TILE_INFO(0,tile,color,0); | |
| 81 | SET_TILE_INFO(0, tile, color, 0); | |
| 76 | 82 | } |
| 77 | 83 | |
| 78 | 84 | VIDEO_START( battlex ) |
| 79 | 85 | { |
| 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); | |
| 82 | 91 | } |
| 83 | 92 | |
| 84 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 93 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 85 | 94 | { |
| 95 | battlex_state *state = (battlex_state *)machine->driver_data; | |
| 86 | 96 | 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; | |
| 89 | 99 | |
| 90 | while | |
| 100 | while | |
| 91 | 101 | { |
| 92 | 102 | int sx = (source[0] & 0x7f) * 2 - (source[0] & 0x80) * 2; |
| 93 | 103 | int sy = source[3]; |
| r6428 | r6429 | |
| 104 | 114 | flipy = !flipy; |
| 105 | 115 | } |
| 106 | 116 | |
| 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); | |
| 109 | 118 | source += 4; |
| 110 | 119 | } |
| 111 | 120 | |
| r6428 | r6429 | |
| 113 | 122 | |
| 114 | 123 | VIDEO_UPDATE(battlex) |
| 115 | 124 | { |
| 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); | |
| 118 | 129 | draw_sprites(screen->machine, bitmap, cliprect); |
| 119 | 130 | return 0; |
| 120 | 131 | } |
| r6428 | r6429 | |
|---|---|---|
| 1023 | 1023 | if ((toaplan2_sub_cpu == CPU_2_Z80) && (data == 3)) |
| 1024 | 1024 | { |
| 1025 | 1025 | /* 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"); | |
| 1027 | 1027 | |
| 1028 | 1028 | if (ym && (sound_get_type(ym) == SOUND_YM3812)) |
| 1029 | 1029 | { |
| 1030 | 1030 | cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE); |
| 1031 | devtag_reset(machine, "ym"); | |
| 1031 | devtag_reset(machine, "ymsnd"); | |
| 1032 | 1032 | } |
| 1033 | 1033 | } |
| 1034 | 1034 |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "bankp.h" | |
| 10 | 11 | |
| 11 | UINT8 *bankp_videoram2; | |
| 12 | UINT8 *bankp_colorram2; | |
| 13 | 12 | |
| 14 | static int scroll_x; | |
| 15 | static int priority; | |
| 16 | ||
| 17 | static tilemap *bg_tilemap, *fg_tilemap; | |
| 18 | ||
| 19 | ||
| 20 | 13 | /*************************************************************************** |
| 21 | 14 | |
| 22 | 15 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 39 | 32 | bit 0 -- 1 kohm resistor -- RED |
| 40 | 33 | |
| 41 | 34 | ***************************************************************************/ |
| 35 | ||
| 42 | 36 | PALETTE_INIT( bankp ) |
| 43 | 37 | { |
| 44 | 38 | int i; |
| r6428 | r6429 | |
| 46 | 40 | /* allocate the colortable */ |
| 47 | 41 | machine->colortable = colortable_alloc(machine, 32); |
| 48 | 42 | |
| 49 | for (i = 0;i < 32;i++) | |
| 43 | for (i = 0; i < 32; i++) | |
| 50 | 44 | { |
| 51 | int bit0,bit1,bit2,r,g,b; | |
| 45 | int bit0, bit1, bit2, r, g, b; | |
| 52 | 46 | |
| 53 | 47 | /* red component */ |
| 54 | 48 | bit0 = (*color_prom >> 0) & 0x01; |
| r6428 | r6429 | |
| 66 | 60 | bit2 = (*color_prom >> 7) & 0x01; |
| 67 | 61 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 68 | 62 | |
| 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)); | |
| 70 | 64 | |
| 71 | 65 | color_prom++; |
| 72 | 66 | } |
| r6428 | r6429 | |
| 74 | 68 | /* color_prom now points to the beginning of the lookup table */ |
| 75 | 69 | |
| 76 | 70 | /* 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++) | |
| 78 | 72 | colortable_entry_set_value(machine->colortable, machine->gfx[0]->color_base + i, *color_prom++ & 0x0f); |
| 79 | 73 | |
| 80 | 74 | color_prom += 128; /* skip the bottom half of the PROM - seems to be not used */ |
| 81 | 75 | |
| 82 | 76 | /* 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++) | |
| 84 | 78 | colortable_entry_set_value(machine->colortable, machine->gfx[1]->color_base + i, *color_prom++ & 0x0f); |
| 85 | 79 | |
| 86 | 80 | /* the bottom half of the PROM seems to be not used */ |
| r6428 | r6429 | |
| 88 | 82 | |
| 89 | 83 | WRITE8_HANDLER( bankp_scroll_w ) |
| 90 | 84 | { |
| 91 | scroll_x = data; | |
| 85 | bankp_state *state = (bankp_state *)space->machine->driver_data; | |
| 86 | ||
| 87 | state->scroll_x = data; | |
| 92 | 88 | } |
| 93 | 89 | |
| 94 | 90 | WRITE8_HANDLER( bankp_videoram_w ) |
| 95 | 91 | { |
| 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); | |
| 98 | 96 | } |
| 99 | 97 | |
| 100 | 98 | WRITE8_HANDLER( bankp_colorram_w ) |
| 101 | 99 | { |
| 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); | |
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | WRITE8_HANDLER( bankp_videoram2_w ) |
| 107 | 107 | { |
| 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); | |
| 110 | 112 | } |
| 111 | 113 | |
| 112 | 114 | WRITE8_HANDLER( bankp_colorram2_w ) |
| 113 | 115 | { |
| 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); | |
| 116 | 120 | } |
| 117 | 121 | |
| 118 | 122 | WRITE8_HANDLER( bankp_out_w ) |
| 119 | 123 | { |
| 124 | bankp_state *state = (bankp_state *)space->machine->driver_data; | |
| 120 | 125 | /* bits 0-1 are playfield priority */ |
| 121 | 126 | /* TODO: understand how this works */ |
| 122 | priority = data & 0x03; | |
| 127 | state->priority = data & 0x03; | |
| 123 | 128 | |
| 124 | 129 | /* bits 2-3 unknown (2 is used) */ |
| 125 | 130 | |
| 126 | 131 | /* bit 4 controls NMI */ |
| 127 | interrupt_enable_w(space,0,(data & 0x10)>>4); | |
| 132 | interrupt_enable_w(space, 0, (data & 0x10) >> 4); | |
| 128 | 133 | |
| 129 | 134 | /* bit 5 controls screen flip */ |
| 130 | 135 | flip_screen_set(space->machine, data & 0x20); |
| r6428 | r6429 | |
| 134 | 139 | |
| 135 | 140 | static TILE_GET_INFO( get_bg_tile_info ) |
| 136 | 141 | { |
| 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; | |
| 140 | 146 | |
| 141 | 147 | SET_TILE_INFO(1, code, color, flags); |
| 142 | 148 | tileinfo->group = color; |
| r6428 | r6429 | |
| 144 | 150 | |
| 145 | 151 | static TILE_GET_INFO( get_fg_tile_info ) |
| 146 | 152 | { |
| 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; | |
| 150 | 157 | |
| 151 | 158 | SET_TILE_INFO(0, code, color, flags); |
| 152 | 159 | tileinfo->group = color; |
| r6428 | r6429 | |
| 154 | 161 | |
| 155 | 162 | VIDEO_START( bankp ) |
| 156 | 163 | { |
| 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; | |
| 159 | 165 | |
| 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); | |
| 162 | 168 | |
| 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); | |
| 165 | 174 | } |
| 166 | 175 | |
| 167 | 176 | VIDEO_UPDATE( bankp ) |
| 168 | 177 | { |
| 178 | bankp_state *state = (bankp_state *)screen->machine->driver_data; | |
| 179 | ||
| 169 | 180 | if (flip_screen_get(screen->machine)) |
| 170 | 181 | { |
| 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); | |
| 173 | 184 | } |
| 174 | 185 | else |
| 175 | 186 | { |
| 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); | |
| 178 | 189 | } |
| 179 | 190 | |
| 180 | 191 | |
| 181 | 192 | // only one bit matters? |
| 182 | switch (priority) | |
| 193 | switch (state->priority) | |
| 183 | 194 | { |
| 184 | 195 | 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); | |
| 187 | 198 | break; |
| 188 | 199 | 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); | |
| 191 | 202 | break; |
| 192 | 203 | 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); | |
| 195 | 206 | break; |
| 196 | 207 | 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); | |
| 199 | 210 | break; |
| 200 | 211 | } |
| 201 | 212 | return 0; |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | driver by Luca Elia (l.elia@tin.it) |
| 6 | 6 | |
| 7 | 7 | |
| 8 | Note: 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 | ||
| 17 | 8 | [ 2 Scrolling Layers ] |
| 18 | 9 | |
| 19 | 10 | The Background is a 64 x 64 Tilemap with 16 x 16 x 8 tiles (1024 x 1024). |
| r6428 | r6429 | |
| 34 | 25 | |
| 35 | 26 | - There is a 3rd unimplemented layer capable of rotation (not used by |
| 36 | 27 | 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? | |
| 38 | 30 | |
| 39 | 31 | ***************************************************************************/ |
| 40 | 32 | |
| r6428 | r6429 | |
| 48 | 40 | UINT16 *tetrisp2_vram_fg, *tetrisp2_scroll_fg; |
| 49 | 41 | UINT16 *tetrisp2_vram_rot, *tetrisp2_rotregs; |
| 50 | 42 | |
| 51 | UINT | |
| 43 | UINT8 | |
| 52 | 44 | |
| 53 | 45 | UINT16 *rocknms_sub_vram_bg, *rocknms_sub_scroll_bg; |
| 54 | 46 | UINT16 *rocknms_sub_vram_fg, *rocknms_sub_scroll_fg; |
| r6428 | r6429 | |
| 91 | 83 | |
| 92 | 84 | ***************************************************************************/ |
| 93 | 85 | |
| 94 | WRITE | |
| 86 | WRITE8 | |
| 95 | 87 | { |
| 96 | if (ACCESSING_BITS_8_15) | |
| 88 | //if (ACCESSING_BITS_8_15) | |
| 97 | 89 | { |
| 98 | 90 | data |= ((data & 0xff00) >> 8); |
| 99 | 91 | tetrisp2_priority[offset] = data; |
| r6428 | r6429 | |
| 101 | 93 | } |
| 102 | 94 | |
| 103 | 95 | |
| 104 | WRITE | |
| 96 | WRITE8 | |
| 105 | 97 | { |
| 106 | if (ACCESSING_BITS_8_15) | |
| 98 | //if (ACCESSING_BITS_8_15) | |
| 107 | 99 | { |
| 108 | 100 | tetrisp2_priority[offset] = data; |
| 109 | 101 | } |
| r6428 | r6429 | |
| 122 | 114 | return tetrisp2_priority[offset] | 0xff00; |
| 123 | 115 | } |
| 124 | 116 | |
| 117 | READ8_HANDLER( tetrisp2_priority_r ) | |
| 118 | { | |
| 119 | return tetrisp2_priority[offset]; | |
| 120 | } | |
| 125 | 121 | |
| 126 | 122 | /*************************************************************************** |
| 127 | 123 | |
| r6428 | r6429 | |
| 256 | 252 | |
| 257 | 253 | |
| 258 | 254 | |
| 255 | extern void ms32_rearrange_sprites(running_machine *machine, const char *region); | |
| 259 | 256 | |
| 260 | 257 | VIDEO_START( tetrisp2 ) |
| 261 | 258 | { |
| r6428 | r6429 | |
| 276 | 273 | tilemap_set_transparent_pen(tilemap_bg,0); |
| 277 | 274 | tilemap_set_transparent_pen(tilemap_fg,0); |
| 278 | 275 | 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"); | |
| 279 | 280 | } |
| 280 | 281 | |
| 281 | 282 | VIDEO_START( nndmseal ) |
| r6428 | r6429 | |
| 303 | 304 | tilemap_set_transparent_pen(tilemap_bg, 0); |
| 304 | 305 | tilemap_set_transparent_pen(tilemap_fg, 0); |
| 305 | 306 | 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"); | |
| 306 | 311 | } |
| 307 | 312 | |
| 308 | 313 | |
| r6428 | r6429 | |
| 325 | 330 | tilemap_set_transparent_pen(tilemap_sub_bg, 0); |
| 326 | 331 | tilemap_set_transparent_pen(tilemap_sub_fg, 0); |
| 327 | 332 | tilemap_set_transparent_pen(tilemap_sub_rot, 0); |
| 333 | ||
| 334 | ms32_rearrange_sprites(machine, "gfx5"); | |
| 328 | 335 | } |
| 329 | 336 | |
| 330 | 337 | |
| r6428 | r6429 | |
| 367 | 374 | |
| 368 | 375 | ***************************************************************************/ |
| 369 | 376 | |
| 370 | static 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 | */ | |
| 381 | void 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) | |
| 371 | 382 | { |
| 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; | |
| 375 | 385 | int code, attr, color, size; |
| 376 | 386 | int flipscreen; |
| 387 | int pri; | |
| 388 | int xzoom, yzoom; | |
| 377 | 389 | UINT32 primask; |
| 378 | UINT16 *priority_ram; | |
| 390 | UINT8 *priority_ram; | |
| 391 | gfx_element *gfx = machine->gfx[gfxnum]; | |
| 379 | 392 | |
| 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 | ||
| 385 | 393 | UINT16 *source = sprram_top; |
| 386 | | |
| 394 | | |
| 387 | 395 | |
| 388 | pr | |
| 396 | flipscreen | |
| 389 | 397 | |
| 390 | flipscreen = (tetrisp2_systemregs[0x00] & 0x02); | |
| 398 | if (reverseorder == 1) | |
| 399 | { | |
| 400 | source = sprram_top + (sprram_size - 0x10) / 2; | |
| 401 | finish = sprram_top; | |
| 402 | } | |
| 391 | 403 | |
| 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)) | |
| 393 | 408 | { |
| 394 | rectangle clip; | |
| 395 | ||
| 396 | 409 | attr = source[ 0 ]; |
| 397 | 410 | |
| 411 | pri = (attr & 0x00f0); | |
| 412 | ||
| 398 | 413 | if ((attr & 0x0004) == 0) continue; |
| 399 | 414 | |
| 400 | 415 | flipx = attr & 1; |
| r6428 | r6429 | |
| 406 | 421 | tx = (code >> 0) & 0xff; |
| 407 | 422 | ty = (code >> 8) & 0xff; |
| 408 | 423 | |
| 409 | code = (tx / 8) + | |
| 410 | (ty / 8) * (0x100/8) + | |
| 411 | (color & 0x7f) * (0x100/8) * (0x100/8); | |
| 424 | code = (color & 0x0fff); | |
| 412 | 425 | |
| 413 | 426 | color = (color >> 12) & 0xf; |
| 414 | 427 | |
| r6428 | r6429 | |
| 417 | 430 | xsize = ((size >> 0) & 0xff) + 1; |
| 418 | 431 | ysize = ((size >> 8) & 0xff) + 1; |
| 419 | 432 | |
| 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 | ||
| 423 | 433 | sy = source[ 4 ]; |
| 424 | 434 | sx = source[ 5 ]; |
| 425 | 435 | |
| 426 | 436 | sx = (sx & 0x3ff) - (sx & 0x400); |
| 427 | 437 | sy = (sy & 0x1ff) - (sy & 0x200); |
| 428 | 438 | |
| 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) | |
| 431 | 444 | { |
| 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; | |
| 434 | 450 | } |
| 451 | else | |
| 452 | { | |
| 453 | xzoom = 0x10000; | |
| 454 | yzoom = 0x10000; | |
| 455 | } | |
| 435 | 456 | |
| 436 | /* Clip the sprite if its width or height is not an integer | |
| 437 | multiple of 8 pixels (1 tile) */ | |
| 438 | 457 | |
| 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); | |
| 443 | 459 | |
| 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; | |
| 446 | 482 | |
| 447 | if (clip.min_y > max_y) continue; | |
| 448 | if (clip.max_y < min_y) continue; | |
| 449 | 483 | |
| 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); | |
| 452 | 490 | |
| 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 | } | |
| 455 | 492 | |
| 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; } | |
| 458 | 493 | |
| 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 | } | |
| 486 | 494 | } /* end sprite loop */ |
| 487 | 495 | } |
| 488 | 496 | |
| r6428 | r6429 | |
| 575 | 583 | else if (asc_pri == 2) |
| 576 | 584 | tilemap_draw(bitmap,cliprect, tilemap_fg, 0, 1 << 2); |
| 577 | 585 | |
| 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); | |
| 579 | 587 | return 0; |
| 580 | 588 | } |
| 581 | 589 | |
| r6428 | r6429 | |
| 659 | 667 | else if (asc_pri == 2) |
| 660 | 668 | tilemap_draw(bitmap,cliprect, tilemap_fg, 0, 1 << 2); |
| 661 | 669 | |
| 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); | |
| 663 | 671 | return 0; |
| 664 | 672 | } |
| 665 | 673 | |
| r6428 | r6429 | |
| 726 | 734 | else if (asc_pri == 2) |
| 727 | 735 | tilemap_draw(bitmap,cliprect, tilemap_sub_fg, 0, 1 << 2); |
| 728 | 736 | |
| 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); | |
| 730 | 738 | } |
| 731 | 739 | else if (screen == right_screen) /* game screen */ |
| 732 | 740 | { |
| r6428 | r6429 | |
| 779 | 787 | else if (asc_pri == 2) |
| 780 | 788 | tilemap_draw(bitmap,cliprect, tilemap_fg, 0, 1 << 2); |
| 781 | 789 | |
| 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); | |
| 783 | 791 | } |
| 784 | 792 | |
| 785 | 793 | return 0; |
| r6428 | r6429 | |
|---|---|---|
| 229 | 229 | int column_offset=0, src_x=0, src_y=0; |
| 230 | 230 | UINT32 scrollx=control1[0]; |
| 231 | 231 | 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; | |
| 234 | 234 | int row_scroll_enabled = (rowscroll_ptr && (control0[0]&0x4)); |
| 235 | 235 | int col_scroll_enabled = (colscroll_ptr && (control0[0]&0x8)); |
| 236 | 236 | |
| 237 | 237 | if (!src_bitmap) |
| 238 | 238 | return; |
| 239 | 239 | |
| 240 | width_mask = src_bitmap->width - 1; | |
| 241 | height_mask = src_bitmap->height - 1; | |
| 242 | ||
| 240 | 243 | /* Column scroll & row scroll may per applied per pixel, there are |
| 241 | 244 | shift registers for each which control the granularity of the row/col |
| 242 | 245 | offset (down to per line level for row, and per 8 lines for column). |
| r6428 | r6429 | |
|---|---|---|
| 534 | 534 | int pri; |
| 535 | 535 | int bg_center = 144 - ((((bg1_scroll_x + bg2_scroll_x ) & 0x1ff) - 288) / 2); |
| 536 | 536 | |
| 537 | const device_config *_2d_screen = devtag_get_device(screen->machine, "2d"); | |
| 537 | const device_config *_2d_screen = devtag_get_device(screen->machine, "2dscreen"); | |
| 538 | 538 | const device_config *_3d_left_screen = devtag_get_device(screen->machine, "3dleft"); |
| 539 | 539 | const device_config *_3d_right_screen = devtag_get_device(screen->machine, "3dright"); |
| 540 | 540 |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "angelkds.h" | |
| 10 | 11 | |
| 11 | 12 | |
| 12 | static tilemap *tx_tilemap,*bgbot_tilemap ,*bgtop_tilemap; | |
| 13 | ||
| 14 | UINT8 *angelkds_txvideoram, *angelkds_bgbotvideoram, *angelkds_bgtopvideoram; | |
| 15 | ||
| 16 | static int angelkds_txbank; | |
| 17 | static int angelkds_bgbotbank; | |
| 18 | static int angelkds_bgtopbank; | |
| 19 | ||
| 20 | 13 | /*** Text Layer Tilemap |
| 21 | 14 | |
| 22 | 15 | */ |
| 23 | 16 | |
| 24 | 17 | static TILE_GET_INFO( get_tx_tile_info ) |
| 25 | 18 | { |
| 19 | angelkds_state *state = (angelkds_state *)machine->driver_data; | |
| 26 | 20 | int tileno; |
| 27 | 21 | |
| 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); | |
| 31 | 24 | } |
| 32 | 25 | |
| 33 | 26 | WRITE8_HANDLER( angelkds_txvideoram_w ) |
| 34 | 27 | { |
| 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); | |
| 37 | 32 | } |
| 38 | 33 | |
| 39 | 34 | WRITE8_HANDLER( angelkds_txbank_write ) |
| 40 | 35 | { |
| 36 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 41 | 37 | |
| 42 | if (a | |
| 38 | if (stat | |
| 43 | 39 | { |
| 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 | } | |
| 48 | 43 | } |
| 49 | 44 | |
| 50 | 45 | /*** Top Half Background Tilemap |
| r6428 | r6429 | |
| 53 | 48 | |
| 54 | 49 | static TILE_GET_INFO( get_bgtop_tile_info ) |
| 55 | 50 | { |
| 51 | angelkds_state *state = (angelkds_state *)machine->driver_data; | |
| 56 | 52 | int tileno; |
| 57 | 53 | |
| 58 | tileno = a | |
| 54 | tileno = stat | |
| 59 | 55 | |
| 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); | |
| 62 | 58 | } |
| 63 | 59 | |
| 64 | 60 | WRITE8_HANDLER( angelkds_bgtopvideoram_w ) |
| 65 | 61 | { |
| 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); | |
| 68 | 66 | } |
| 69 | 67 | |
| 70 | 68 | WRITE8_HANDLER( angelkds_bgtopbank_write ) |
| 71 | 69 | { |
| 70 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 72 | 71 | |
| 73 | if (a | |
| 72 | if (stat | |
| 74 | 73 | { |
| 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 | } | |
| 79 | 77 | } |
| 80 | 78 | |
| 81 | 79 | WRITE8_HANDLER( angelkds_bgtopscroll_write ) |
| 82 | 80 | { |
| 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); | |
| 84 | 84 | } |
| 85 | 85 | |
| 86 | 86 | /*** Bottom Half Background Tilemap |
| r6428 | r6429 | |
| 89 | 89 | |
| 90 | 90 | static TILE_GET_INFO( get_bgbot_tile_info ) |
| 91 | 91 | { |
| 92 | angelkds_state *state = (angelkds_state *)machine->driver_data; | |
| 92 | 93 | int tileno; |
| 93 | 94 | |
| 94 | tileno = a | |
| 95 | tileno = stat | |
| 95 | 96 | |
| 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); | |
| 98 | 99 | } |
| 99 | 100 | |
| 100 | 101 | WRITE8_HANDLER( angelkds_bgbotvideoram_w ) |
| 101 | 102 | { |
| 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); | |
| 104 | 107 | } |
| 105 | 108 | |
| 106 | 109 | |
| 107 | 110 | WRITE8_HANDLER( angelkds_bgbotbank_write ) |
| 108 | 111 | { |
| 112 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 109 | 113 | |
| 110 | if (a | |
| 114 | if (stat | |
| 111 | 115 | { |
| 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 | } | |
| 116 | 119 | } |
| 117 | 120 | |
| 118 | 121 | WRITE8_HANDLER( angelkds_bgbotscroll_write ) |
| 119 | 122 | { |
| 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); | |
| 121 | 126 | } |
| 122 | 127 | |
| 123 | static UINT8 angelkds_layer_ctrl; | |
| 124 | 128 | |
| 125 | 129 | WRITE8_HANDLER( angelkds_layer_ctrl_write ) |
| 126 | 130 | { |
| 127 | angelkds_layer_ctrl = data; | |
| 131 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 132 | ||
| 133 | state->layer_ctrl = data; | |
| 128 | 134 | } |
| 129 | 135 | |
| 130 | 136 | /*** Sprites |
| r6428 | r6429 | |
| 136 | 142 | |
| 137 | 143 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int enable_n) |
| 138 | 144 | { |
| 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; | |
| 141 | 148 | const gfx_element *gfx = machine->gfx[3]; |
| 142 | 149 | |
| 143 | while | |
| 150 | while | |
| 144 | 151 | { |
| 145 | 152 | /* |
| 146 | 153 | |
| r6428 | r6429 | |
| 158 | 165 | x = X position |
| 159 | 166 | |
| 160 | 167 | */ |
| 168 | UINT16 tile_no = source[0]; | |
| 169 | UINT8 attr = source[1]; | |
| 170 | UINT8 ypos = source[2]; | |
| 171 | UINT8 xpos = source[3]; | |
| 161 | 172 | |
| 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; | |
| 162 | 178 | |
| 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; | |
| 167 | 181 | |
| 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; | |
| 173 | 183 | |
| 174 | if (bank) tile_no +=0x100; | |
| 175 | ||
| 176 | ypos= 0xff-ypos; | |
| 177 | ||
| 178 | if (enable & enable_n) | |
| 179 | { | |
| 184 | if (enable & enable_n) | |
| 185 | { | |
| 180 | 186 | drawgfx_transpen( |
| 181 | 187 | bitmap, |
| 182 | 188 | cliprect, |
| r6428 | r6429 | |
| 211 | 217 | ); |
| 212 | 218 | /* wraparound */ |
| 213 | 219 | 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 | ); | |
| 223 | 229 | } |
| 230 | } | |
| 224 | 231 | |
| 232 | source -= 0x04; | |
| 225 | 233 | } |
| 226 | 234 | |
| 227 | source-=0x04; | |
| 228 | ||
| 229 | } | |
| 230 | ||
| 231 | 235 | } |
| 232 | 236 | |
| 233 | 237 | |
| r6428 | r6429 | |
| 239 | 243 | |
| 240 | 244 | WRITE8_HANDLER( angelkds_paletteram_w ) |
| 241 | 245 | { |
| 246 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 242 | 247 | int no; |
| 243 | 248 | |
| 249 | state->paletteram[offset] = data; | |
| 244 | 250 | |
| 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])); | |
| 249 | 253 | } |
| 250 | 254 | |
| 251 | 255 | /*** Video Start & Update |
| r6428 | r6429 | |
| 254 | 258 | |
| 255 | 259 | VIDEO_START( angelkds ) |
| 256 | 260 | { |
| 261 | angelkds_state *state = (angelkds_state *)machine->driver_data; | |
| 257 | 262 | |
| 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); | |
| 260 | 265 | |
| 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); | |
| 263 | 268 | |
| 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); | |
| 270 | 271 | } |
| 271 | 272 | |
| 272 | 273 | /* enable bits are uncertain */ |
| 273 | 274 | |
| 274 | 275 | VIDEO_UPDATE( angelkds ) |
| 275 | 276 | { |
| 277 | angelkds_state *state = (angelkds_state *)screen->machine->driver_data; | |
| 276 | 278 | const rectangle *visarea = video_screen_get_visible_area(screen); |
| 277 | 279 | rectangle clip; |
| 278 | 280 | |
| 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 */ | |
| 280 | 282 | |
| 281 | 283 | /* draw top of screen */ |
| 282 | 284 | clip.min_x = 8*0; |
| 283 | 285 | clip.max_x = 8*16-1; |
| 284 | 286 | clip.min_y = visarea->min_y; |
| 285 | 287 | 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); | |
| 289 | 288 | |
| 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 | ||
| 290 | 297 | /* draw bottom of screen */ |
| 291 | 298 | clip.min_x = 8*16; |
| 292 | 299 | clip.max_x = 8*32-1; |
| 293 | 300 | clip.min_y = visarea->min_y; |
| 294 | 301 | 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 | ||
| 298 | 311 | return 0; |
| 299 | 312 | } |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "m | |
| 8 | #include "includes/iremz80.h" | |
| 9 | 9 | #include "video/resnet.h" |
| 10 | 10 | |
| 11 | 11 | #define BGHEIGHT 64 |
| 12 | 12 | |
| 13 | static UINT8 bg1xpos; | |
| 14 | static UINT8 bg1ypos; | |
| 15 | static UINT8 bg2xpos; | |
| 16 | static UINT8 bg2ypos; | |
| 17 | static UINT8 bgcontrol; | |
| 18 | 13 | |
| 19 | static tilemap* bg_tilemap; | |
| 20 | ||
| 21 | ||
| 22 | 14 | /************************************* |
| 23 | 15 | * |
| 24 | 16 | * Palette configuration |
| r6428 | r6429 | |
| 36 | 28 | double weights_r[3], weights_g[3], weights_b[3], scale; |
| 37 | 29 | int i; |
| 38 | 30 | |
| 39 | machine->colortable = colortable_alloc(machine, 512+32+32); | |
| 31 | machine->colortable = colortable_alloc(machine, 512 + 32 + 32); | |
| 40 | 32 | |
| 41 | 33 | /* compute palette information for characters/backgrounds */ |
| 42 | 34 | scale = compute_resistor_weights(0, 255, -1.0, |
| r6428 | r6429 | |
| 80 | 72 | int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5)); |
| 81 | 73 | int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2)); |
| 82 | 74 | |
| 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)); | |
| 84 | 76 | } |
| 85 | 77 | |
| 86 | 78 | /* character lookup table */ |
| r6428 | r6429 | |
| 88 | 80 | colortable_entry_set_value(machine->colortable, i, i); |
| 89 | 81 | |
| 90 | 82 | /* sprite lookup table */ |
| 91 | for (i = 0; i < 16*4; i++) | |
| 83 | for (i = 0; i < 16 * 4; i++) | |
| 92 | 84 | { |
| 93 | 85 | 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); | |
| 95 | 87 | } |
| 96 | 88 | |
| 97 | 89 | /* background */ |
| r6428 | r6429 | |
| 124 | 116 | |
| 125 | 117 | static TILE_GET_INFO( get_tile_info ) |
| 126 | 118 | { |
| 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]; | |
| 129 | 122 | |
| 130 | 123 | int flag = 0; |
| 131 | 124 | int code = 0; |
| r6428 | r6429 | |
| 155 | 148 | |
| 156 | 149 | VIDEO_START( m52 ) |
| 157 | 150 | { |
| 158 | | |
| 151 | | |
| 159 | 152 | |
| 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); | |
| 164 | 154 | |
| 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); | |
| 170 | 165 | } |
| 171 | 166 | |
| 172 | 167 | |
| r6428 | r6429 | |
| 179 | 174 | |
| 180 | 175 | WRITE8_HANDLER( m52_scroll_w ) |
| 181 | 176 | { |
| 182 | ||
| 177 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 183 | 178 | /* |
| 184 | 179 | According to the schematics there is only one video register that holds the X scroll value |
| 185 | 180 | with a NAND gate on the V64 and V128 lines to control when it's read, and when |
| r6428 | r6429 | |
| 187 | 182 | |
| 188 | 183 | So we set the first 3 quarters to 255 and the last to the scroll value |
| 189 | 184 | */ |
| 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); | |
| 194 | 189 | } |
| 195 | 190 | |
| 196 | 191 | |
| r6428 | r6429 | |
| 203 | 198 | |
| 204 | 199 | WRITE8_HANDLER( m52_videoram_w ) |
| 205 | 200 | { |
| 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); | |
| 208 | 205 | } |
| 209 | 206 | |
| 210 | 207 | |
| 211 | 208 | WRITE8_HANDLER( m52_colorram_w ) |
| 212 | 209 | { |
| 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); | |
| 215 | 214 | } |
| 216 | 215 | |
| 217 | 216 | |
| r6428 | r6429 | |
| 227 | 226 | follows: result = popcount(value & 0x7f) ^ (value >> 7) */ |
| 228 | 227 | READ8_HANDLER( m52_protection_r ) |
| 229 | 228 | { |
| 229 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 230 | 230 | int popcount = 0; |
| 231 | 231 | int temp; |
| 232 | 232 | |
| 233 | for (temp = bg1xpos & 0x7f; temp != 0; temp >>= 1) | |
| 233 | for (temp = state->bg1xpos & 0x7f; temp != 0; temp >>= 1) | |
| 234 | 234 | popcount += temp & 1; |
| 235 | return popcount ^ (bg1xpos >> 7); | |
| 235 | return popcount ^ (state->bg1xpos >> 7); | |
| 236 | 236 | } |
| 237 | 237 | |
| 238 | 238 | |
| r6428 | r6429 | |
| 245 | 245 | |
| 246 | 246 | WRITE8_HANDLER( m52_bg1ypos_w ) |
| 247 | 247 | { |
| 248 | bg1ypos = data; | |
| 248 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 249 | state->bg1ypos = data; | |
| 249 | 250 | } |
| 250 | 251 | |
| 251 | 252 | WRITE8_HANDLER( m52_bg1xpos_w ) |
| 252 | 253 | { |
| 253 | bg1xpos = data; | |
| 254 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 255 | state->bg1xpos = data; | |
| 254 | 256 | } |
| 255 | 257 | |
| 256 | 258 | WRITE8_HANDLER( m52_bg2xpos_w ) |
| 257 | 259 | { |
| 258 | bg2xpos = data; | |
| 260 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 261 | state->bg2xpos = data; | |
| 259 | 262 | } |
| 260 | 263 | |
| 261 | 264 | WRITE8_HANDLER( m52_bg2ypos_w ) |
| 262 | 265 | { |
| 263 | bg2ypos = data; | |
| 266 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 267 | state->bg2ypos = data; | |
| 264 | 268 | } |
| 265 | 269 | |
| 266 | 270 | WRITE8_HANDLER( m52_bgcontrol_w ) |
| 267 | 271 | { |
| 268 | bgcontrol = data; | |
| 272 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 273 | state->bgcontrol = data; | |
| 269 | 274 | } |
| 270 | 275 | |
| 271 | 276 | |
| r6428 | r6429 | |
| 357 | 362 | |
| 358 | 363 | VIDEO_UPDATE( m52 ) |
| 359 | 364 | { |
| 365 | irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data; | |
| 360 | 366 | int offs; |
| 361 | 367 | |
| 362 | 368 | bitmap_fill(bitmap, cliprect, 0); |
| 363 | 369 | |
| 364 | if (!(bgcontrol & 0x20)) | |
| 370 | if (!(state->bgcontrol & 0x20)) | |
| 365 | 371 | { |
| 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 */ | |
| 368 | 374 | |
| 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 */ | |
| 371 | 377 | |
| 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 */ | |
| 374 | 380 | } |
| 375 | 381 | |
| 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); | |
| 377 | 383 | |
| 378 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 384 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 379 | 385 | |
| 380 | 386 | /* draw the sprites */ |
| 381 | 387 | for (offs = 0xfc; offs >= 0; offs -= 4) |
| 382 | 388 | { |
| 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]; | |
| 389 | 395 | rectangle clip; |
| 390 | 396 | |
| 391 | 397 | /* sprites from offsets $00-$7F are processed in the upper half of the frame */ |
| r6428 | r6429 | |
| 419 | 425 | |
| 420 | 426 | drawgfx_transmask(bitmap, &clip, screen->machine->gfx[1], |
| 421 | 427 | 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)); | |
| 423 | 429 | } |
| 424 | 430 | return 0; |
| 425 | 431 | } |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | #include "driver.h" |
| 8 | 8 | #include "includes/n8080.h" |
| 9 | 9 | |
| 10 | int spacefev_red_screen; | |
| 11 | int spacefev_red_cannon; | |
| 12 | 10 | |
| 13 | int helifire_flash; | |
| 14 | ||
| 15 | static emu_timer* cannon_timer; | |
| 16 | ||
| 17 | static int sheriff_color_mode; | |
| 18 | static int sheriff_color_data; | |
| 19 | ||
| 20 | static UINT8 helifire_LSFR[63]; | |
| 21 | ||
| 22 | static unsigned helifire_mv; | |
| 23 | static unsigned helifire_sc; /* IC56 */ | |
| 24 | ||
| 25 | ||
| 26 | 11 | WRITE8_HANDLER( n8080_video_control_w ) |
| 27 | 12 | { |
| 28 | sheriff_color_mode = (data >> 3) & 3; | |
| 29 | sheriff_color_data = (data >> 0) & 7; | |
| 13 | n8080_state *state = (n8080_state *)space->machine->driver_data; | |
| 30 | 14 | |
| 15 | state->sheriff_color_mode = (data >> 3) & 3; | |
| 16 | state->sheriff_color_data = (data >> 0) & 7; | |
| 31 | 17 | flip_screen_set_no_update(space->machine, data & 0x20); |
| 32 | 18 | } |
| 33 | 19 | |
| r6428 | r6429 | |
| 37 | 23 | int i; |
| 38 | 24 | |
| 39 | 25 | 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)); | |
| 41 | 27 | } |
| 42 | 28 | |
| 43 | 29 | |
| r6428 | r6429 | |
| 51 | 37 | { |
| 52 | 38 | int level = 0xff * exp(-3 * i / 255.); /* capacitor discharge */ |
| 53 | 39 | |
| 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 */ | |
| 56 | 42 | |
| 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 */ | |
| 59 | 45 | } |
| 60 | 46 | } |
| 61 | 47 | |
| 62 | 48 | |
| 63 | void spacefev_start_red_cannon(running_machine *machine) | |
| 49 | void spacefev_start_red_cannon( running_machine *machine ) | |
| 64 | 50 | { |
| 65 | s | |
| 51 | n8080_state *state = (n8080_state *)machine->driver_data | |
| 66 | 52 | |
| 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); | |
| 68 | 55 | } |
| 69 | 56 | |
| 70 | 57 | |
| 71 | 58 | static TIMER_CALLBACK( spacefev_stop_red_cannon ) |
| 72 | 59 | { |
| 73 | s | |
| 60 | n8080_state *state = (n8080_state *)machine->driver_data | |
| 74 | 61 | |
| 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); | |
| 76 | 64 | } |
| 77 | 65 | |
| 78 | 66 | |
| 79 | static void helifire_next_line(running_machine *machine) | |
| 67 | static void helifire_next_line( running_machine *machine ) | |
| 80 | 68 | { |
| 81 | | |
| 69 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 82 | 70 | |
| 83 | if (helifire_sc % 4 == 2) | |
| 71 | state->helifire_mv++; | |
| 72 | ||
| 73 | if (state->helifire_sc % 4 == 2) | |
| 84 | 74 | { |
| 85 | helifire_mv %= 256; | |
| 75 | state->helifire_mv %= 256; | |
| 86 | 76 | } |
| 87 | 77 | else |
| 88 | 78 | { |
| 89 | 79 | if (flip_screen_get(machine)) |
| 90 | { | |
| 91 | helifire_mv %= 255; | |
| 92 | } | |
| 80 | state->helifire_mv %= 255; | |
| 93 | 81 | else |
| 94 | { | |
| 95 | helifire_mv %= 257; | |
| 96 | } | |
| 82 | state->helifire_mv %= 257; | |
| 97 | 83 | } |
| 98 | 84 | |
| 99 | if (helifire_mv == 128) | |
| 85 | if (state->helifire_mv == 128) | |
| 100 | 86 | { |
| 101 | helifire_sc++; | |
| 87 | state->helifire_sc++; | |
| 102 | 88 | } |
| 103 | 89 | } |
| 104 | 90 | |
| 105 | 91 | |
| 106 | 92 | VIDEO_START( spacefev ) |
| 107 | 93 | { |
| 108 | | |
| 94 | | |
| 109 | 95 | |
| 96 | state->cannon_timer = timer_alloc(machine, spacefev_stop_red_cannon, NULL); | |
| 97 | ||
| 110 | 98 | flip_screen_set_no_update(machine, 0); |
| 111 | 99 | |
| 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); | |
| 114 | 102 | } |
| 115 | 103 | |
| 116 | 104 | |
| 117 | 105 | VIDEO_START( sheriff ) |
| 118 | 106 | { |
| 107 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 108 | ||
| 119 | 109 | flip_screen_set_no_update(machine, 0); |
| 120 | 110 | |
| 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); | |
| 123 | 113 | } |
| 124 | 114 | |
| 125 | 115 | |
| 126 | 116 | VIDEO_START( helifire ) |
| 127 | 117 | { |
| 118 | n8080_state *state = (n8080_state *)machine->driver_data; | |
| 128 | 119 | UINT8 data = 0; |
| 129 | ||
| 130 | 120 | int i; |
| 131 | 121 | |
| 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); | |
| 134 | 126 | |
| 135 | 127 | for (i = 0; i < 63; i++) |
| 136 | 128 | { |
| r6428 | r6429 | |
| 140 | 132 | |
| 141 | 133 | data = (data << 1) | (bit & 1); |
| 142 | 134 | |
| 143 | helifire_LSFR[i] = data; | |
| 135 | state->helifire_LSFR[i] = data; | |
| 144 | 136 | } |
| 145 | 137 | |
| 146 | 138 | flip_screen_set_no_update(machine, 0); |
| 147 | ||
| 148 | helifire_flash = 0; | |
| 149 | 139 | } |
| 150 | 140 | |
| 151 | 141 | |
| 152 | 142 | VIDEO_UPDATE( spacefev ) |
| 153 | 143 | { |
| 144 | n8080_state *state = (n8080_state *)screen->machine->driver_data; | |
| 154 | 145 | UINT8 mask = flip_screen_get(screen->machine) ? 0xff : 0x00; |
| 155 | 146 | |
| 156 | 147 | int x; |
| 157 | 148 | int y; |
| 158 | 149 | |
| 159 | const UINT8* pRAM = videoram; | |
| 150 | const UINT8* pRAM = state->videoram; | |
| 160 | 151 | const UINT8* pPROM = memory_region(screen->machine, "proms"); |
| 161 | 152 | |
| 162 | 153 | for (y = 0; y < 256; y++) |
| r6428 | r6429 | |
| 169 | 160 | |
| 170 | 161 | UINT8 color = 0; |
| 171 | 162 | |
| 172 | if (spacefev_red_screen) | |
| 173 | { | |
| 163 | if (state->spacefev_red_screen) | |
| 174 | 164 | color = 1; |
| 175 | } | |
| 176 | 165 | else |
| 177 | 166 | { |
| 178 | 167 | UINT8 val = pPROM[x >> 3]; |
| 179 | 168 | |
| 180 | 169 | if ((x >> 3) == 0x06) |
| 181 | 170 | { |
| 182 | color = spacefev_red_cannon ? 1 : 7; | |
| 171 | color = state->spacefev_red_cannon ? 1 : 7; | |
| 183 | 172 | } |
| 184 | 173 | |
| 185 | 174 | if ((x >> 3) == 0x1b) |
| r6428 | r6429 | |
| 222 | 211 | |
| 223 | 212 | VIDEO_UPDATE( sheriff ) |
| 224 | 213 | { |
| 214 | n8080_state *state = (n8080_state *)screen->machine->driver_data; | |
| 225 | 215 | UINT8 mask = flip_screen_get(screen->machine) ? 0xff : 0x00; |
| 226 | 216 | |
| 227 | 217 | const UINT8* pPROM = memory_region(screen->machine, "proms"); |
| r6428 | r6429 | |
| 229 | 219 | int x; |
| 230 | 220 | int y; |
| 231 | 221 | |
| 232 | const UINT8* pRAM = videoram; | |
| 222 | const UINT8* pRAM = state->videoram; | |
| 233 | 223 | |
| 234 | 224 | for (y = 0; y < 256; y++) |
| 235 | 225 | { |
| r6428 | r6429 | |
| 241 | 231 | |
| 242 | 232 | UINT8 color = pPROM[32 * (y >> 3) + (x >> 3)]; |
| 243 | 233 | |
| 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; | |
| 248 | 236 | |
| 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; | |
| 253 | 239 | |
| 254 | if (sheriff_color_mode == 3) | |
| 255 | { | |
| 240 | if (state->sheriff_color_mode == 3) | |
| 256 | 241 | color = 7; |
| 257 | } | |
| 258 | 242 | |
| 259 | 243 | for (n = 0; n < 8; n++) |
| 260 | 244 | { |
| r6428 | r6429 | |
| 270 | 254 | |
| 271 | 255 | VIDEO_UPDATE( helifire ) |
| 272 | 256 | { |
| 257 | n8080_state *state = (n8080_state *)screen->machine->driver_data; | |
| 273 | 258 | int SUN_BRIGHTNESS = input_port_read(screen->machine, "POT0"); |
| 274 | 259 | int SEA_BRIGHTNESS = input_port_read(screen->machine, "POT1"); |
| 275 | 260 | |
| 276 | 261 | static const int wave[8] = { 0, 1, 2, 2, 2, 1, 0, 0 }; |
| 277 | 262 | |
| 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; | |
| 280 | 265 | |
| 281 | 266 | int x; |
| 282 | 267 | int y; |
| r6428 | r6429 | |
| 285 | 270 | { |
| 286 | 271 | UINT16* pLine = BITMAP_ADDR16(bitmap, y, 0); |
| 287 | 272 | |
| 288 | int level = 120 + wave[helifire_mv & 7]; | |
| 273 | int level = 120 + wave[state->helifire_mv & 7]; | |
| 289 | 274 | |
| 290 | 275 | /* draw sky */ |
| 291 | 276 | |
| r6428 | r6429 | |
| 296 | 281 | |
| 297 | 282 | /* draw stars */ |
| 298 | 283 | |
| 299 | if (helifire_mv % 8 == 4) /* upper half */ | |
| 284 | if (state->helifire_mv % 8 == 4) /* upper half */ | |
| 300 | 285 | { |
| 301 | int step = (320 * (helifire_mv - 0)) % sizeof helifire_LSFR; | |
| 286 | int step = (320 * (state->helifire_mv - 0)) % sizeof state->helifire_LSFR; | |
| 302 | 287 | |
| 303 | 288 | 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); | |
| 308 | 293 | |
| 309 | 294 | pLine[0x80 + data] |= 0x100; |
| 310 | 295 | } |
| 311 | 296 | |
| 312 | if (helifire_mv % 8 == 5) /* lower half */ | |
| 297 | if (state->helifire_mv % 8 == 5) /* lower half */ | |
| 313 | 298 | { |
| 314 | int step = (320 * (helifire_mv - 1)) % sizeof helifire_LSFR; | |
| 299 | int step = (320 * (state->helifire_mv - 1)) % sizeof state->helifire_LSFR; | |
| 315 | 300 | |
| 316 | 301 | 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); | |
| 321 | 306 | |
| 322 | 307 | pLine[0x00 + data] |= 0x100; |
| 323 | 308 | } |
| r6428 | r6429 | |
| 341 | 326 | { |
| 342 | 327 | if (flip_screen_get(screen->machine)) |
| 343 | 328 | { |
| 344 | if ((videoram[offset ^ 0x1fff] << n) & 0x80) | |
| 329 | if ((state->videoram[offset ^ 0x1fff] << n) & 0x80) | |
| 345 | 330 | { |
| 346 | pLine[x + n] = colorram[offset ^ 0x1fff] & 7; | |
| 331 | pLine[x + n] = state->colorram[offset ^ 0x1fff] & 7; | |
| 347 | 332 | } |
| 348 | 333 | } |
| 349 | 334 | else |
| 350 | 335 | { |
| 351 | if ((videoram[offset] >> n) & 1) | |
| 336 | if ((state->videoram[offset] >> n) & 1) | |
| 352 | 337 | { |
| 353 | pLine[x + n] = colorram[offset] & 7; | |
| 338 | pLine[x + n] = state->colorram[offset] & 7; | |
| 354 | 339 | } |
| 355 | 340 | } |
| 356 | 341 | } |
| r6428 | r6429 | |
| 361 | 346 | helifire_next_line(screen->machine); |
| 362 | 347 | } |
| 363 | 348 | |
| 364 | helifire_mv = saved_mv; | |
| 365 | helifire_sc = saved_sc; | |
| 349 | state->helifire_mv = saved_mv; | |
| 350 | state->helifire_sc = saved_sc; | |
| 366 | 351 | return 0; |
| 367 | 352 | } |
| 368 | 353 | |
| 369 | 354 | |
| 370 | 355 | VIDEO_EOF( helifire ) |
| 371 | 356 | { |
| 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; | |
| 373 | 359 | |
| 374 | 360 | int i; |
| 375 | 361 | |
| r6428 | r6429 | |
| 379 | 365 | int G = (i & 2); |
| 380 | 366 | int B = (i & 4); |
| 381 | 367 | |
| 382 | if (helifire_flash) | |
| 368 | if (state->helifire_flash) | |
| 383 | 369 | { |
| 384 | if (helifire_LSFR[n] & 0x20) | |
| 370 | if (state->helifire_LSFR[n] & 0x20) | |
| 385 | 371 | { |
| 386 | 372 | G |= B; |
| 387 | 373 | } |
| r6428 | r6429 | |
|---|---|---|
| 279 | 279 | ---- ---- ---- ---0 Coin #0 Counter */ |
| 280 | 280 | if (ACCESSING_BITS_0_7) |
| 281 | 281 | { |
| 282 | const device_config *x1_010 = devtag_get_device(space->machine, "x1"); | |
| 282 | const device_config *x1_010 = devtag_get_device(space->machine, "x1snd"); | |
| 283 | 283 | seta_coin_lockout_w (space->machine, data & 0x0f); |
| 284 | 284 | if (x1_010 != NULL) |
| 285 | 285 | seta_sound_enable_w (x1_010, data & 0x20); |
| r6428 | r6429 | |
| 306 | 306 | |
| 307 | 307 | if (new_bank != seta_samples_bank) |
| 308 | 308 | { |
| 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"); | |
| 311 | 311 | int addr; |
| 312 | 312 | |
| 313 | 313 | seta_samples_bank = new_bank; |
| r6428 | r6429 | |
|---|---|---|
| 24 | 24 | |
| 25 | 25 | code = ttl_vram[tile_index]&0xfff; |
| 26 | 26 | |
| 27 | attr = ttl_vram[tile_index]>>12; / | |
| 27 | attr = ttl_vram[tile_index]>>12; /* palette in all 4 bits? */ | |
| 28 | 28 | |
| 29 | 29 | SET_TILE_INFO(ttl_gfx_index, code, attr, 0); |
| 30 | 30 | } |
| r6428 | r6429 | |
| 33 | 33 | { |
| 34 | 34 | int attr, code; |
| 35 | 35 | |
| 36 | attr = (roz_vram[tile_index] >> 12) + 16; / | |
| 36 | attr = (roz_vram[tile_index] >> 12) + 16; /* roz base palette is palette 16 */ | |
| 37 | 37 | code = roz_vram[tile_index] & 0x3ff; |
| 38 | 38 | |
| 39 | 39 | SET_TILE_INFO(0, code, attr, 0); |
| r6428 | r6429 | |
| 87 | 87 | { |
| 88 | 88 | static const gfx_layout charlayout = |
| 89 | 89 | { |
| 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 */ | |
| 96 | 96 | 8*8*4 |
| 97 | 97 | }; |
| 98 | 98 | |
| r6428 | r6429 | |
| 103 | 103 | |
| 104 | 104 | assert(ttl_gfx_index != MAX_GFX_ELEMENTS); |
| 105 | 105 | |
| 106 | / | |
| 106 | /* decode the ttl layer's gfx */ | |
| 107 | 107 | machine->gfx[ttl_gfx_index] = gfx_element_alloc(machine, &charlayout, memory_region(machine, "gfx1"), machine->config->total_colors / 16, 0); |
| 108 | 108 | |
| 109 | / | |
| 109 | /* create the tilemap */ | |
| 110 | 110 | ttl_tilemap = tilemap_create(machine, ttl_get_tile_info, plygonet_scan, 8, 8, 64, 32); |
| 111 | 111 | |
| 112 | 112 | tilemap_set_transparent_pen(ttl_tilemap, 0); |
| 113 | 113 | |
| 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 */ | |
| 117 | 115 | roz_tilemap = tilemap_create(machine, roz_get_tile_info, plygonet_scan_cols, 16, 16, 32, 64); |
| 118 | 116 | 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); | |
| 119 | 122 | } |
| 120 | 123 | |
| 121 | 124 | VIDEO_UPDATE( polygonet ) |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | |
| 10 | 10 | #include "driver.h" |
| 11 | 11 | #include "video/konamiic.h" |
| 12 | #include " | |
| 12 | #include " | |
| 13 | 13 | |
| 14 | 14 | static int layer_colorbase[4], layerpri[4]; |
| 15 | 15 | |
| r6428 | r6429 | |
| 72 | 72 | static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 }; |
| 73 | 73 | static const int enables[4] = { K55_INP_VRAM_A, K55_INP_VRAM_B, K55_INP_VRAM_C, K55_INP_VRAM_D }; |
| 74 | 74 | |
| 75 | K054338_update_all_shadows(screen->machine); | |
| 75 | K054338_update_all_shadows(screen->machine,0 ); | |
| 76 | 76 | K054338_fill_backcolor(screen->machine, bitmap, 0); |
| 77 | 77 | |
| 78 | 78 | for (i = 0; i < 4; i++) |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | ***************************************************************************/ |
| 8 | 8 | |
| 9 | 9 | #include "driver.h" |
| 10 | #include "1942.h" | |
| 10 | 11 | |
| 11 | ||
| 12 | UINT8 *c1942_fgvideoram; | |
| 13 | UINT8 *c1942_bgvideoram; | |
| 14 | ||
| 15 | static int c1942_palette_bank; | |
| 16 | static tilemap *fg_tilemap, *bg_tilemap; | |
| 17 | ||
| 18 | ||
| 19 | ||
| 20 | 12 | /*************************************************************************** |
| 21 | 13 | |
| 22 | 14 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 31 | 23 | bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE |
| 32 | 24 | |
| 33 | 25 | ***************************************************************************/ |
| 26 | ||
| 34 | 27 | PALETTE_INIT( 1942 ) |
| 35 | 28 | { |
| 36 | 29 | rgb_t palette[256]; |
| r6428 | r6429 | |
| 38 | 31 | |
| 39 | 32 | for (i = 0; i < 256; i++) |
| 40 | 33 | { |
| 41 | int bit0,bit1,bit2,bit3,r,g,b; | |
| 34 | int bit0, bit1, bit2, bit3, r, g, b; | |
| 42 | 35 | |
| 43 | 36 | /* 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; | |
| 48 | 41 | r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3; |
| 49 | 42 | /* 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; | |
| 54 | 47 | g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3; |
| 55 | 48 | /* 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; | |
| 60 | 53 | b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3; |
| 61 | 54 | |
| 62 | 55 | palette[i] = MAKE_RGB(r,g,b); |
| 63 | 56 | } |
| 64 | 57 | |
| 65 | color_prom += 3*256; | |
| 58 | color_prom += 3 * 256; | |
| 66 | 59 | /* color_prom now points to the beginning of the lookup table */ |
| 67 | 60 | |
| 68 | 61 | |
| 69 | 62 | /* characters use palette entries 128-143 */ |
| 70 | 63 | colorbase = 0; |
| 71 | for (i = 0; i < 64*4; i++) | |
| 64 | for (i = 0; i < 64 * 4; i++) | |
| 72 | 65 | palette_set_color(machine, colorbase + i, palette[0x80 | *color_prom++]); |
| 73 | colorbase += 64*4; | |
| 66 | colorbase += 64 * 4; | |
| 74 | 67 | |
| 75 | 68 | /* 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++) | |
| 77 | 70 | { |
| 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]); | |
| 82 | 75 | color_prom++; |
| 83 | 76 | } |
| 84 | colorbase += 4*32*8; | |
| 77 | colorbase += 4 * 32 * 8; | |
| 85 | 78 | |
| 86 | 79 | /* sprites use palette entries 64-79 */ |
| 87 | for (i = 0; i < 16*16; i++) | |
| 80 | for (i = 0; i < 16 * 16; i++) | |
| 88 | 81 | palette_set_color(machine, colorbase + i, palette[0x40 | *color_prom++]); |
| 89 | 82 | } |
| 90 | 83 | |
| r6428 | r6429 | |
| 97 | 90 | |
| 98 | 91 | static TILE_GET_INFO( get_fg_tile_info ) |
| 99 | 92 | { |
| 93 | _1942_state *state = (_1942_state *)machine->driver_data; | |
| 100 | 94 | int code, color; |
| 101 | 95 | |
| 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]; | |
| 104 | 98 | SET_TILE_INFO( |
| 105 | 99 | 0, |
| 106 | 100 | code + ((color & 0x80) << 1), |
| r6428 | r6429 | |
| 110 | 104 | |
| 111 | 105 | static TILE_GET_INFO( get_bg_tile_info ) |
| 112 | 106 | { |
| 107 | _1942_state *state = (_1942_state *)machine->driver_data; | |
| 113 | 108 | int code, color; |
| 114 | 109 | |
| 115 | 110 | tile_index = (tile_index & 0x0f) | ((tile_index & 0x01f0) << 1); |
| 116 | 111 | |
| 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]; | |
| 119 | 114 | SET_TILE_INFO( |
| 120 | 115 | 1, |
| 121 | 116 | code + ((color & 0x80) << 1), |
| 122 | (color & 0x1f) + (0x20 * | |
| 117 | (color & 0x1f) + (0x20 * state->palette_bank), | |
| 123 | 118 | TILE_FLIPYX((color & 0x60) >> 5)); |
| 124 | 119 | } |
| 125 | 120 | |
| r6428 | r6429 | |
| 131 | 126 | ***************************************************************************/ |
| 132 | 127 | VIDEO_START( 1942 ) |
| 133 | 128 | { |
| 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); | |
| 136 | 132 | |
| 137 | tilemap_set_transparent_pen(fg_tilemap,0); | |
| 133 | tilemap_set_transparent_pen(state->fg_tilemap,0); | |
| 138 | 134 | |
| 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); | |
| 140 | 137 | } |
| 141 | 138 | |
| 142 | 139 | |
| r6428 | r6429 | |
| 148 | 145 | |
| 149 | 146 | WRITE8_HANDLER( c1942_fgvideoram_w ) |
| 150 | 147 | { |
| 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); | |
| 153 | 152 | } |
| 154 | 153 | |
| 155 | 154 | WRITE8_HANDLER( c1942_bgvideoram_w ) |
| 156 | 155 | { |
| 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)); | |
| 159 | 160 | } |
| 160 | 161 | |
| 161 | 162 | |
| 162 | 163 | WRITE8_HANDLER( c1942_palette_bank_w ) |
| 163 | 164 | { |
| 164 | if (c1942_palette_bank != data) | |
| 165 | _1942_state *state = (_1942_state *)space->machine->driver_data; | |
| 166 | ||
| 167 | if (state->palette_bank != data) | |
| 165 | 168 | { |
| 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); | |
| 168 | 171 | } |
| 169 | 172 | } |
| 170 | 173 | |
| 171 | 174 | WRITE8_HANDLER( c1942_scroll_w ) |
| 172 | 175 | { |
| 173 | stat | |
| 176 | _1942_state | |
| 174 | 177 | |
| 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)); | |
| 177 | 180 | } |
| 178 | 181 | |
| 179 | 182 | |
| r6428 | r6429 | |
| 197 | 200 | |
| 198 | 201 | ***************************************************************************/ |
| 199 | 202 | |
| 200 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) | |
| 203 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 201 | 204 | { |
| 205 | _1942_state *state = (_1942_state *)machine->driver_data; | |
| 202 | 206 | int offs; |
| 203 | 207 | |
| 204 | ||
| 205 | for (offs = spriteram_size - 4;offs >= 0;offs -= 4) | |
| 208 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) | |
| 206 | 209 | { |
| 207 | int i,code,col,sx,sy,dir; | |
| 210 | int i, code, col, sx, sy, dir; | |
| 208 | 211 | |
| 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; | |
| 209 | 218 | |
| 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; | |
| 216 | 219 | if (flip_screen_get(machine)) |
| 217 | 220 | { |
| 218 | 221 | sx = 240 - sx; |
| r6428 | r6429 | |
| 221 | 224 | } |
| 222 | 225 | |
| 223 | 226 | /* 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; | |
| 226 | 230 | |
| 227 | 231 | do |
| 228 | 232 | { |
| r6428 | r6429 | |
| 240 | 244 | |
| 241 | 245 | VIDEO_UPDATE( 1942 ) |
| 242 | 246 | { |
| 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); | |
| 246 | 252 | return 0; |
| 247 | 253 | } |
| r6428 | r6429 | |
|---|---|---|
| 1 | /* | |
| 2 | Car Jamboree | |
| 3 | Omori Electric CAD (OEC) 1981 | |
| 4 | */ | |
| 1 | /*************************************************************************** | |
| 5 | 2 | |
| 6 | #include "driver.h" | |
| 3 | Car Jamboree | |
| 4 | Omori Electric CAD (OEC) 1981 | |
| 7 | 5 | |
| 8 | ||
| 6 | ||
| 9 | 7 | |
| 10 | static UINT8 carjmbre_flipscreen; | |
| 11 | static UINT16 carjmbre_bgcolor; | |
| 8 | #include "driver.h" | |
| 9 | #include "carjmbre.h" | |
| 12 | 10 | |
| 13 | 11 | PALETTE_INIT( carjmbre ) |
| 14 | 12 | { |
| 15 | int i,bit0,bit1,bit2,r,g,b; | |
| 13 | int i, bit0, bit1, bit2, r, g, b; | |
| 16 | 14 | |
| 17 | for (i = 0;i < machine->config->total_colors; i++) | |
| 15 | for (i = 0; i < machine->config->total_colors; i++) | |
| 18 | 16 | { |
| 19 | 17 | /* red component */ |
| 20 | 18 | bit0 = (*color_prom >> 0) & 0x01; |
| r6428 | r6429 | |
| 32 | 30 | bit2 = (*color_prom >> 7) & 0x01; |
| 33 | 31 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 34 | 32 | |
| 35 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); | |
| 33 | palette_set_color(machine, i, MAKE_RGB(r,g,b)); | |
| 36 | 34 | color_prom++; |
| 37 | 35 | } |
| 38 | 36 | } |
| 39 | 37 | |
| 40 | 38 | WRITE8_HANDLER( carjmbre_flipscreen_w ) |
| 41 | 39 | { |
| 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); | |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | 46 | WRITE8_HANDLER( carjmbre_bgcolor_w ) |
| 47 | 47 | { |
| 48 | int oldbg,i; | |
| 48 | carjmbre_state *state = (carjmbre_state *)space->machine->driver_data; | |
| 49 | int oldbg, i; | |
| 49 | 50 | |
| 50 | oldbg= | |
| 51 | oldbg = stat | |
| 51 | 52 | |
| 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); | |
| 54 | 55 | |
| 55 | if(oldbg!= | |
| 56 | if ( oldbg != stat | |
| 56 | 57 | { |
| 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); | |
| 59 | 61 | } |
| 60 | 62 | } |
| 61 | 63 | |
| 62 | static TILE_GET_INFO( get_carjmbre_tile_info ){ | |
| 63 | UINT32 tile_number = videoram[tile_index] & 0xFF; | |
| 64 | UINT8 attr = videoram[tile_index+0x400]; | |
| 64 | static 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]; | |
| 65 | 69 | tile_number += (attr & 0x80) << 1; /* bank */ |
| 66 | 70 | SET_TILE_INFO( |
| 67 | 71 | 0, |
| 68 | 72 | tile_number, |
| 69 | (attr&0x7), | |
| 73 | (attr & 0x7), | |
| 70 | 74 | 0); |
| 71 | 75 | } |
| 72 | 76 | |
| 73 | WRITE8_HANDLER( carjmbre_videoram_w ){ | |
| 74 | videoram[offset] = data; | |
| 75 | tilemap_mark_tile_dirty(carjmbre_tilemap,offset&0x3ff); | |
| 77 | WRITE8_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); | |
| 76 | 83 | } |
| 77 | 84 | |
| 78 | 85 | |
| 79 | 86 | |
| 80 | 87 | VIDEO_START( carjmbre ) |
| 81 | 88 | { |
| 89 | carjmbre_state *state = (carjmbre_state *)machine->driver_data; | |
| 82 | 90 | |
| 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); | |
| 87 | 94 | } |
| 88 | 95 | |
| 89 | 96 | VIDEO_UPDATE( carjmbre ) |
| 90 | 97 | { |
| 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; | |
| 92 | 100 | |
| 93 | 101 | //colorram |
| 94 | 102 | //76543210 |
| r6428 | r6429 | |
| 97 | 105 | //----x--- ?? probably colour, only used for ramp and pond |
| 98 | 106 | //-----xxx colour |
| 99 | 107 | |
| 100 | tilemap_draw( | |
| 108 | tilemap_draw( | |
| 101 | 109 | |
| 102 | 110 | //spriteram[offs] |
| 103 | 111 | //+0 y pos |
| r6428 | r6429 | |
| 110 | 118 | //----x--- ?? probably colour |
| 111 | 119 | //-----xxx colour |
| 112 | 120 | //+3 x pos |
| 113 | for (offs = spriteram_size-4; offs >= 0; offs-=4) | |
| 121 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) | |
| 114 | 122 | { |
| 115 | 123 | //before copying the sprites to spriteram the game reorders the first |
| 116 | 124 | //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; | |
| 118 | 126 | |
| 119 | 127 | //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) | |
| 121 | 129 | { |
| 122 | 130 | { |
| 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; | |
| 127 | 135 | |
| 128 | if ( | |
| 136 | if (stat | |
| 129 | 137 | { |
| 130 | sx = (256+(226-sx))%256; | |
| 131 | sy = 242-sy; | |
| 138 | sx = (256 + (226 - sx)) % 256; | |
| 139 | sy = 242 - sy; | |
| 132 | 140 | flipx = !flipx; |
| 133 | 141 | flipy = !flipy; |
| 134 | 142 | } |
| 135 | 143 | |
| 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, | |
| 139 | 147 | flipx,flipy, |
| 140 | 148 | sx,sy,0); |
| 141 | 149 | } |
| r6428 | r6429 | |
|---|---|---|
| 14 | 14 | ***************************************************************************/ |
| 15 | 15 | |
| 16 | 16 | #include "driver.h" |
| 17 | #include "m | |
| 17 | #include "includes/iremz80.h" | |
| 18 | 18 | #include "video/resnet.h" |
| 19 | 19 | |
| 20 | UINT8 *m62_tileram; | |
| 21 | UINT8 *m62_textram; | |
| 22 | UINT8 *horizon_scrollram; | |
| 23 | ||
| 24 | static tilemap *m62_background; | |
| 25 | static tilemap *m62_foreground; | |
| 26 | static UINT8 flipscreen; | |
| 27 | static const UINT8 *sprite_height_prom; | |
| 28 | static INT32 m62_background_hscroll; | |
| 29 | static INT32 m62_background_vscroll; | |
| 30 | ||
| 31 | static int ldrun3_topbottom_mask; | |
| 32 | ||
| 33 | static UINT8 *irem_textram; | |
| 34 | static size_t irem_textram_size; | |
| 35 | ||
| 36 | static UINT8 kidniki_background_bank; | |
| 37 | static INT32 kidniki_text_vscroll; | |
| 38 | ||
| 39 | static INT32 spelunkr_palbank; | |
| 40 | ||
| 41 | ||
| 42 | ||
| 43 | 20 | /*************************************************************************** |
| 44 | 21 | |
| 45 | 22 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 205 | 182 | |
| 206 | 183 | PALETTE_INIT( m62 ) |
| 207 | 184 | { |
| 185 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 208 | 186 | rgb_t *rgb; |
| 209 | 187 | |
| 210 | 188 | rgb = compute_res_net_all(color_prom, &m62_tile_decode_info, &m62_tile_net_info); |
| r6428 | r6429 | |
| 218 | 196 | palette_normalize_range(machine->palette, 0x000, 0x1ff, 0x00, 0xff); |
| 219 | 197 | |
| 220 | 198 | /* we'll need this at run time */ |
| 221 | sprite_height_prom = color_prom + 0x600; | |
| 199 | state->sprite_height_prom = color_prom + 0x600; | |
| 222 | 200 | } |
| 223 | 201 | |
| 224 | 202 | |
| 225 | 203 | PALETTE_INIT( lotlot ) |
| 226 | 204 | { |
| 205 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 227 | 206 | rgb_t *rgb; |
| 228 | 207 | |
| 229 | 208 | rgb = compute_res_net_all(color_prom, &lotlot_tile_decode_info, &m62_tile_net_info); |
| r6428 | r6429 | |
| 237 | 216 | palette_normalize_range(machine->palette, 0x000, 0x2ff, 0x00, 0xff); |
| 238 | 217 | |
| 239 | 218 | /* we'll need this at run time */ |
| 240 | sprite_height_prom = color_prom + 0x900; | |
| 219 | state->sprite_height_prom = color_prom + 0x900; | |
| 241 | 220 | } |
| 242 | 221 | |
| 243 | 222 | |
| 244 | 223 | PALETTE_INIT( battroad ) |
| 245 | 224 | { |
| 225 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 246 | 226 | rgb_t *rgb; |
| 247 | 227 | |
| 248 | 228 | rgb = compute_res_net_all(color_prom, &m62_tile_decode_info, &m62_tile_net_info); |
| r6428 | r6429 | |
| 259 | 239 | |
| 260 | 240 | palette_normalize_range(machine->palette, 0x000, 0x21f, 0x00, 0xff); |
| 261 | 241 | |
| 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 */ | |
| 263 | 243 | } |
| 264 | 244 | |
| 265 | 245 | |
| 266 | 246 | PALETTE_INIT( spelunk2 ) |
| 267 | 247 | { |
| 248 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 268 | 249 | rgb_t *rgb; |
| 269 | 250 | |
| 270 | 251 | rgb = compute_res_net_all(color_prom, &spelunk2_tile_decode_info, &m62_tile_net_info); |
| r6428 | r6429 | |
| 278 | 259 | palette_normalize_range(machine->palette, 0x000, 0x2ff, 0x00, 0xff); |
| 279 | 260 | |
| 280 | 261 | /* we'll need this at run time */ |
| 281 | sprite_height_prom = color_prom + 0x700; | |
| 262 | state->sprite_height_prom = color_prom + 0x700; | |
| 282 | 263 | } |
| 283 | 264 | |
| 284 | 265 | |
| 266 | static void register_savestate( running_machine *machine ) | |
| 267 | { | |
| 268 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 285 | 269 | |
| 286 | static 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); | |
| 295 | 278 | } |
| 296 | 279 | |
| 280 | ||
| 297 | 281 | WRITE8_HANDLER( m62_flipscreen_w ) |
| 298 | 282 | { |
| 283 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 299 | 284 | /* screen flip is handled both by software and hardware */ |
| 300 | 285 | data ^= ~input_port_read(space->machine, "DSW2") & 1; |
| 301 | 286 | |
| 302 | flipscreen = data & 0x01; | |
| 303 | if (flipscreen) | |
| 287 | state->flipscreen = data & 0x01; | |
| 288 | if (state->flipscreen) | |
| 304 | 289 | tilemap_set_flip_all(space->machine, TILEMAP_FLIPX | TILEMAP_FLIPY); |
| 305 | 290 | else |
| 306 | 291 | tilemap_set_flip_all(space->machine, 0); |
| 307 | 292 | |
| 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); | |
| 310 | 295 | } |
| 311 | 296 | |
| 312 | 297 | WRITE8_HANDLER( m62_hscroll_low_w ) |
| 313 | 298 | { |
| 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; | |
| 315 | 301 | } |
| 316 | 302 | |
| 317 | 303 | WRITE8_HANDLER( m62_hscroll_high_w ) |
| 318 | 304 | { |
| 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); | |
| 320 | 307 | } |
| 321 | 308 | |
| 322 | 309 | WRITE8_HANDLER( m62_vscroll_low_w ) |
| 323 | 310 | { |
| 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; | |
| 325 | 313 | } |
| 326 | 314 | |
| 327 | 315 | WRITE8_HANDLER( m62_vscroll_high_w ) |
| 328 | 316 | { |
| 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); | |
| 330 | 319 | } |
| 331 | 320 | |
| 332 | 321 | WRITE8_HANDLER( m62_tileram_w ) |
| 333 | 322 | { |
| 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); | |
| 336 | 326 | } |
| 337 | 327 | |
| 338 | 328 | WRITE8_HANDLER( m62_textram_w ) |
| 339 | 329 | { |
| 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); | |
| 342 | 333 | } |
| 343 | 334 | |
| 344 | 335 | |
| 345 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int colormask, int prioritymask, int priority) | |
| 336 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int colormask, int prioritymask, int priority ) | |
| 346 | 337 | { |
| 338 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 347 | 339 | int offs; |
| 348 | 340 | |
| 349 | for (offs = 0;offs < spriteram_size;offs += 8) | |
| 341 | for (offs = 0; offs < spriteram_size; offs += 8) | |
| 350 | 342 | { |
| 351 | int i,incr,code,col,flipx,flipy,sx,sy; | |
| 343 | int i, incr, code, col, flipx, flipy, sx, sy; | |
| 352 | 344 | |
| 353 | if | |
| 345 | if | |
| 354 | 346 | { |
| 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; | |
| 361 | 353 | |
| 362 | i = sprite_height_prom[(code >> 5) & 0x1f]; | |
| 354 | i = state->sprite_height_prom[(code >> 5) & 0x1f]; | |
| 363 | 355 | if (i == 1) /* double height */ |
| 364 | 356 | { |
| 365 | 357 | code &= ~1; |
| r6428 | r6429 | |
| 372 | 364 | sy -= 3*16; |
| 373 | 365 | } |
| 374 | 366 | |
| 375 | if (flipscreen) | |
| 367 | if (state->flipscreen) | |
| 376 | 368 | { |
| 377 | 369 | sx = 496 - sx; |
| 378 | 370 | sy = 242 - i*16 - sy; /* sprites are slightly misplaced by the hardware */ |
| r6428 | r6429 | |
| 402 | 394 | |
| 403 | 395 | static 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 ) |
| 404 | 396 | { |
| 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); | |
| 406 | 399 | |
| 407 | m62_background_hscroll = 0; | |
| 408 | m62_background_vscroll = 0; | |
| 409 | ||
| 410 | 400 | register_savestate(machine); |
| 411 | 401 | |
| 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); | |
| 420 | 407 | } |
| 421 | 408 | |
| 422 | 409 | static 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 ) |
| 423 | 410 | { |
| 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); | |
| 425 | 413 | |
| 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); | |
| 434 | 419 | } |
| 435 | 420 | |
| 436 | 421 | WRITE8_HANDLER( kungfum_tileram_w ) |
| 437 | 422 | { |
| 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); | |
| 440 | 426 | } |
| 441 | 427 | |
| 442 | 428 | static TILE_GET_INFO( get_kungfum_bg_tile_info ) |
| 443 | 429 | { |
| 430 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 444 | 431 | int code; |
| 445 | 432 | int color; |
| 446 | 433 | 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]; | |
| 449 | 436 | flags = 0; |
| 450 | if | |
| 437 | if | |
| 451 | 438 | { |
| 452 | 439 | flags |= TILE_FLIPX; |
| 453 | 440 | } |
| 454 | SET_TILE_INFO( | |
| 441 | SET_TILE_INFO( | |
| 455 | 442 | |
| 456 | 443 | /* 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) | |
| 459 | 445 | tileinfo->category = 1; |
| 460 | } | |
| 461 | 446 | else |
| 462 | { | |
| 463 | 447 | tileinfo->category = 0; |
| 464 | } | |
| 465 | 448 | } |
| 466 | 449 | |
| 467 | 450 | VIDEO_START( kungfum ) |
| 468 | 451 | { |
| 469 | m62_start( | |
| 452 | m62_start( | |
| 470 | 453 | } |
| 471 | 454 | |
| 472 | 455 | VIDEO_UPDATE( kungfum ) |
| 473 | 456 | { |
| 457 | irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data; | |
| 474 | 458 | int i; |
| 475 | for | |
| 459 | for | |
| 476 | 460 | { |
| 477 | tilemap_set_scrollx( | |
| 461 | tilemap_set_scrollx(st | |
| 478 | 462 | } |
| 479 | for | |
| 463 | for | |
| 480 | 464 | { |
| 481 | tilemap_set_scrollx( | |
| 465 | tilemap_set_scrollx(st | |
| 482 | 466 | } |
| 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); | |
| 486 | 470 | return 0; |
| 487 | 471 | } |
| 488 | 472 | |
| 489 | 473 | |
| 490 | ||
| 491 | 474 | static TILE_GET_INFO( get_ldrun_bg_tile_info ) |
| 492 | 475 | { |
| 476 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 477 | ||
| 493 | 478 | int code; |
| 494 | 479 | int color; |
| 495 | 480 | 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]; | |
| 498 | 483 | flags = 0; |
| 499 | if | |
| 484 | if | |
| 500 | 485 | { |
| 501 | 486 | flags |= TILE_FLIPX; |
| 502 | 487 | } |
| 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) | |
| 506 | 490 | tileinfo->group = 1; |
| 507 | } | |
| 508 | 491 | else |
| 509 | { | |
| 510 | 492 | tileinfo->group = 0; |
| 511 | } | |
| 512 | 493 | } |
| 513 | 494 | |
| 514 | 495 | VIDEO_START( ldrun ) |
| 515 | 496 | { |
| 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 */ | |
| 519 | 502 | } |
| 520 | 503 | |
| 521 | 504 | VIDEO_UPDATE( ldrun ) |
| 522 | 505 | { |
| 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); | |
| 525 | 509 | |
| 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); | |
| 530 | 514 | return 0; |
| 531 | 515 | } |
| 532 | 516 | |
| 533 | 517 | static TILE_GET_INFO( get_ldrun2_bg_tile_info ) |
| 534 | 518 | { |
| 519 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 535 | 520 | int code; |
| 536 | 521 | int color; |
| 537 | 522 | 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]; | |
| 540 | 525 | flags = 0; |
| 541 | if | |
| 526 | if | |
| 542 | 527 | { |
| 543 | 528 | flags |= TILE_FLIPX; |
| 544 | 529 | } |
| 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) | |
| 548 | 532 | tileinfo->group = 1; |
| 549 | } | |
| 550 | 533 | else |
| 551 | { | |
| 552 | 534 | tileinfo->group = 0; |
| 553 | } | |
| 554 | 535 | } |
| 555 | 536 | |
| 556 | 537 | VIDEO_START( ldrun2 ) |
| 557 | 538 | { |
| 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 */ | |
| 561 | 543 | } |
| 562 | 544 | |
| 563 | 545 | |
| 564 | ||
| 565 | 546 | WRITE8_HANDLER( ldrun3_topbottom_mask_w ) |
| 566 | 547 | { |
| 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; | |
| 568 | 550 | } |
| 569 | 551 | |
| 570 | 552 | VIDEO_UPDATE( ldrun3 ) |
| 571 | 553 | { |
| 554 | irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data; | |
| 572 | 555 | VIDEO_UPDATE_CALL(ldrun); |
| 573 | 556 | |
| 574 | if (ldrun3_topbottom_mask) | |
| 557 | if (state->ldrun3_topbottom_mask) | |
| 575 | 558 | { |
| 576 | 559 | rectangle my_cliprect = *cliprect; |
| 577 | 560 | |
| 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)); | |
| 581 | 564 | |
| 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)); | |
| 585 | 568 | } |
| 586 | 569 | |
| 587 | 570 | return 0; |
| r6428 | r6429 | |
| 590 | 573 | |
| 591 | 574 | static TILE_GET_INFO( get_battroad_bg_tile_info ) |
| 592 | 575 | { |
| 576 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 593 | 577 | int code; |
| 594 | 578 | int color; |
| 595 | 579 | 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]; | |
| 598 | 582 | flags = 0; |
| 599 | if | |
| 583 | if | |
| 600 | 584 | { |
| 601 | 585 | flags |= TILE_FLIPX; |
| 602 | 586 | } |
| 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) | |
| 606 | 589 | tileinfo->group = 1; |
| 607 | } | |
| 608 | 590 | else |
| 609 | { | |
| 610 | 591 | tileinfo->group = 0; |
| 611 | } | |
| 612 | 592 | } |
| 613 | 593 | |
| 614 | 594 | static TILE_GET_INFO( get_battroad_fg_tile_info ) |
| 615 | 595 | { |
| 596 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 616 | 597 | int code; |
| 617 | 598 | 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); | |
| 621 | 602 | } |
| 622 | 603 | |
| 623 | 604 | VIDEO_START( battroad ) |
| 624 | 605 | { |
| 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 */ | |
| 629 | 611 | } |
| 630 | 612 | |
| 631 | 613 | VIDEO_UPDATE( battroad ) |
| 632 | 614 | { |
| 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); | |
| 638 | 621 | |
| 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); | |
| 644 | 627 | return 0; |
| 645 | 628 | } |
| 646 | 629 | |
| r6428 | r6429 | |
| 649 | 632 | /* no char x flip, and more sprites */ |
| 650 | 633 | static TILE_GET_INFO( get_ldrun4_bg_tile_info ) |
| 651 | 634 | { |
| 635 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 652 | 636 | int code; |
| 653 | 637 | 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); | |
| 657 | 641 | } |
| 658 | 642 | |
| 659 | 643 | VIDEO_START( ldrun4 ) |
| 660 | 644 | { |
| 661 | m62_start( | |
| 645 | m62_start( | |
| 662 | 646 | } |
| 663 | 647 | |
| 664 | 648 | VIDEO_UPDATE( ldrun4 ) |
| 665 | 649 | { |
| 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); | |
| 667 | 652 | |
| 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); | |
| 670 | 655 | return 0; |
| 671 | 656 | } |
| 672 | 657 | |
| 673 | 658 | |
| 674 | 659 | static TILE_GET_INFO( get_lotlot_bg_tile_info ) |
| 675 | 660 | { |
| 661 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 676 | 662 | int code; |
| 677 | 663 | int color; |
| 678 | 664 | 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]; | |
| 681 | 667 | flags = 0; |
| 682 | if | |
| 668 | if | |
| 683 | 669 | { |
| 684 | 670 | flags |= TILE_FLIPX; |
| 685 | 671 | } |
| 686 | SET_TILE_INFO( | |
| 672 | SET_TILE_INFO( | |
| 687 | 673 | } |
| 688 | 674 | |
| 689 | 675 | static TILE_GET_INFO( get_lotlot_fg_tile_info ) |
| 690 | 676 | { |
| 677 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 691 | 678 | int code; |
| 692 | 679 | 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); | |
| 696 | 683 | } |
| 697 | 684 | |
| 698 | 685 | VIDEO_START( lotlot ) |
| 699 | 686 | { |
| 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); | |
| 702 | 689 | } |
| 703 | 690 | |
| 704 | 691 | VIDEO_UPDATE( lotlot ) |
| 705 | 692 | { |
| 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); | |
| 711 | 699 | |
| 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); | |
| 715 | 703 | return 0; |
| 716 | 704 | } |
| 717 | 705 | |
| 718 | 706 | |
| 719 | 707 | WRITE8_HANDLER( kidniki_text_vscroll_low_w ) |
| 720 | 708 | { |
| 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; | |
| 722 | 711 | } |
| 723 | 712 | |
| 724 | 713 | WRITE8_HANDLER( kidniki_text_vscroll_high_w ) |
| 725 | 714 | { |
| 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); | |
| 727 | 717 | } |
| 728 | 718 | |
| 729 | 719 | WRITE8_HANDLER( kidniki_background_bank_w ) |
| 730 | 720 | { |
| 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)) | |
| 732 | 723 | { |
| 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); | |
| 735 | 726 | } |
| 736 | 727 | } |
| 737 | 728 | |
| 738 | 729 | static TILE_GET_INFO( get_kidniki_bg_tile_info ) |
| 739 | 730 | { |
| 731 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 740 | 732 | int code; |
| 741 | 733 | 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; | |
| 746 | 738 | } |
| 747 | 739 | |
| 748 | 740 | static TILE_GET_INFO( get_kidniki_fg_tile_info ) |
| 749 | 741 | { |
| 742 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 750 | 743 | int code; |
| 751 | 744 | 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); | |
| 755 | 748 | } |
| 756 | 749 | |
| 757 | 750 | VIDEO_START( kidniki ) |
| 758 | 751 | { |
| 759 | m | |
| 752 | irem | |
| 760 | 753 | |
| 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 */ | |
| 763 | 757 | |
| 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 | ||
| 767 | 758 | register_savestate(machine); |
| 768 | 759 | |
| 769 | m62_textlayer( | |
| 760 | m62_textlayer( | |
| 770 | 761 | } |
| 771 | 762 | |
| 772 | 763 | VIDEO_UPDATE( kidniki ) |
| 773 | 764 | { |
| 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); | |
| 778 | 770 | |
| 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); | |
| 783 | 775 | return 0; |
| 784 | 776 | } |
| 785 | 777 | |
| 786 | 778 | |
| 787 | 779 | WRITE8_HANDLER( spelunkr_palbank_w ) |
| 788 | 780 | { |
| 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)) | |
| 790 | 783 | { |
| 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); | |
| 794 | 787 | } |
| 795 | 788 | } |
| 796 | 789 | |
| 797 | 790 | static TILE_GET_INFO( get_spelunkr_bg_tile_info ) |
| 798 | 791 | { |
| 792 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 799 | 793 | int code; |
| 800 | 794 | 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); | |
| 804 | 798 | } |
| 805 | 799 | |
| 806 | 800 | static TILE_GET_INFO( get_spelunkr_fg_tile_info ) |
| 807 | 801 | { |
| 802 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 808 | 803 | int code; |
| 809 | 804 | int color; |
| 810 | code = m62_textram[ tile_index << 1 ]; | |
| 811 | color = m62_textram[ ( tile_index << 1 ) | 1 ]; | |
| 812 | if (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); | |
| 814 | 809 | } |
| 815 | 810 | |
| 816 | 811 | VIDEO_START( spelunkr ) |
| 817 | 812 | { |
| 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); | |
| 820 | 815 | } |
| 821 | 816 | |
| 822 | 817 | VIDEO_UPDATE( spelunkr ) |
| 823 | 818 | { |
| 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); | |
| 829 | 825 | |
| 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); | |
| 833 | 829 | return 0; |
| 834 | 830 | } |
| 835 | 831 | |
| 836 | 832 | |
| 837 | 833 | WRITE8_HANDLER( spelunk2_gfxport_w ) |
| 838 | 834 | { |
| 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)) | |
| 842 | 839 | { |
| 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); | |
| 846 | 843 | } |
| 847 | 844 | } |
| 848 | 845 | |
| 849 | 846 | static TILE_GET_INFO( get_spelunk2_bg_tile_info ) |
| 850 | 847 | { |
| 848 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 851 | 849 | int code; |
| 852 | 850 | 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 ); | |
| 856 | 854 | } |
| 857 | 855 | |
| 858 | 856 | VIDEO_START( spelunk2 ) |
| 859 | 857 | { |
| 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); | |
| 862 | 860 | } |
| 863 | 861 | |
| 864 | 862 | VIDEO_UPDATE( spelunk2 ) |
| 865 | 863 | { |
| 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); | |
| 871 | 870 | |
| 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); | |
| 875 | 874 | return 0; |
| 876 | 875 | } |
| 877 | 876 | |
| 878 | 877 | |
| 879 | 878 | static TILE_GET_INFO( get_youjyudn_bg_tile_info ) |
| 880 | 879 | { |
| 880 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 881 | 881 | int code; |
| 882 | 882 | 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) | |
| 888 | 887 | tileinfo->group = 1; |
| 889 | } | |
| 890 | 888 | else |
| 891 | { | |
| 892 | 889 | tileinfo->group = 0; |
| 893 | } | |
| 894 | 890 | } |
| 895 | 891 | |
| 896 | 892 | static TILE_GET_INFO( get_youjyudn_fg_tile_info ) |
| 897 | 893 | { |
| 894 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 898 | 895 | int code; |
| 899 | 896 | 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); | |
| 903 | 900 | } |
| 904 | 901 | |
| 905 | 902 | VIDEO_START( youjyudn ) |
| 906 | 903 | { |
| 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 */ | |
| 911 | 909 | } |
| 912 | 910 | |
| 913 | 911 | VIDEO_UPDATE( youjyudn ) |
| 914 | 912 | { |
| 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); | |
| 919 | 918 | |
| 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); | |
| 924 | 923 | return 0; |
| 925 | 924 | } |
| 926 | 925 | |
| 927 | 926 | |
| 928 | 927 | WRITE8_HANDLER( horizon_scrollram_w ) |
| 929 | 928 | { |
| 930 | horizon_scrollram[ offset ] = data; | |
| 929 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 930 | state->scrollram[offset] = data; | |
| 931 | 931 | } |
| 932 | 932 | |
| 933 | 933 | static TILE_GET_INFO( get_horizon_bg_tile_info ) |
| 934 | 934 | { |
| 935 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 935 | 936 | int code; |
| 936 | 937 | 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) | |
| 942 | 943 | tileinfo->group = 1; |
| 943 | } | |
| 944 | 944 | else |
| 945 | { | |
| 946 | 945 | tileinfo->group = 0; |
| 947 | } | |
| 948 | 946 | } |
| 949 | 947 | |
| 950 | 948 | VIDEO_START( horizon ) |
| 951 | 949 | { |
| 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 */ | |
| 955 | 954 | } |
| 956 | 955 | |
| 957 | 956 | VIDEO_UPDATE( horizon ) |
| 958 | 957 | { |
| 958 | irem_z80_state *state = (irem_z80_state *)screen->machine->driver_data; | |
| 959 | 959 | int i; |
| 960 | for | |
| 960 | for | |
| 961 | 961 | { |
| 962 | tilemap_set_scrollx( | |
| 962 | tilemap_set_scrollx(st | |
| 963 | 963 | } |
| 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); | |
| 967 | 967 | return 0; |
| 968 | 968 | } |
| r6428 | r6429 | |
|---|---|---|
| 28 | 28 | ***************************************************************************/ |
| 29 | 29 | |
| 30 | 30 | #include "driver.h" |
| 31 | #include "1943.h" | |
| 31 | 32 | |
| 32 | UINT8 *c1943_scrollx; | |
| 33 | UINT8 *c1943_scrolly; | |
| 34 | UINT8 *c1943_bgscrollx; | |
| 35 | ||
| 36 | static int chon, objon, sc1on, sc2on; | |
| 37 | ||
| 38 | static tilemap *bg2_tilemap, *bg_tilemap, *fg_tilemap; | |
| 39 | ||
| 40 | 33 | /*************************************************************************** |
| 41 | 34 | |
| 42 | 35 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 127 | 120 | |
| 128 | 121 | WRITE8_HANDLER( c1943_videoram_w ) |
| 129 | 122 | { |
| 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); | |
| 132 | 127 | } |
| 133 | 128 | |
| 134 | 129 | WRITE8_HANDLER( c1943_colorram_w ) |
| 135 | 130 | { |
| 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); | |
| 138 | 135 | } |
| 139 | 136 | |
| 140 | 137 | WRITE8_HANDLER( c1943_c804_w ) |
| 141 | 138 | { |
| 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; | |
| 144 | 141 | |
| 145 | 142 | /* bits 0 and 1 are coin counters */ |
| 146 | 143 | coin_counter_w(0, data & 0x01); |
| 147 | 144 | coin_counter_w(1, data & 0x02); |
| 148 | 145 | |
| 149 | 146 | /* 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); | |
| 152 | 150 | |
| 153 | 151 | /* bit 5 resets the sound CPU - we ignore it */ |
| 154 | 152 | |
| r6428 | r6429 | |
| 156 | 154 | flip_screen_set(space->machine, data & 0x40); |
| 157 | 155 | |
| 158 | 156 | /* bit 7 enables characters */ |
| 159 | chon = data & 0x80; | |
| 157 | state->char_on = data & 0x80; | |
| 160 | 158 | } |
| 161 | 159 | |
| 162 | 160 | WRITE8_HANDLER( c1943_d806_w ) |
| 163 | 161 | { |
| 162 | _1943_state *state = (_1943_state *)space->machine->driver_data; | |
| 163 | ||
| 164 | 164 | /* bit 4 enables bg 1 */ |
| 165 | s | |
| 165 | state->bg1_on = data & 0x10; | |
| 166 | 166 | |
| 167 | 167 | /* bit 5 enables bg 2 */ |
| 168 | s | |
| 168 | state->bg2_on = data & 0x20; | |
| 169 | 169 | |
| 170 | 170 | /* bit 6 enables sprites */ |
| 171 | objon = data & 0x40; | |
| 171 | state->obj_on = data & 0x40; | |
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | static TILE_GET_INFO( c1943_get_bg2_tile_info ) |
| r6428 | r6429 | |
| 200 | 200 | |
| 201 | 201 | static TILE_GET_INFO( c1943_get_fg_tile_info ) |
| 202 | 202 | { |
| 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); | |
| 205 | 206 | int color = attr & 0x1f; |
| 206 | 207 | |
| 207 | 208 | SET_TILE_INFO(0, code, color, 0); |
| r6428 | r6429 | |
| 209 | 210 | |
| 210 | 211 | VIDEO_START( 1943 ) |
| 211 | 212 | { |
| 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); | |
| 214 | 217 | |
| 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); | |
| 217 | 220 | |
| 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); | |
| 228 | 225 | } |
| 229 | 226 | |
| 230 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority) | |
| 227 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority ) | |
| 231 | 228 | { |
| 229 | _1943_state *state = (_1943_state *)machine->driver_data; | |
| 232 | 230 | int offs; |
| 233 | 231 | |
| 234 | 232 | for (offs = spriteram_size - 32; offs >= 0; offs -= 32) |
| 235 | 233 | { |
| 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); | |
| 238 | 236 | 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]; | |
| 241 | 239 | |
| 242 | 240 | if (flip_screen_get(machine)) |
| 243 | 241 | { |
| r6428 | r6429 | |
| 249 | 247 | if (priority) |
| 250 | 248 | { |
| 251 | 249 | 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); | |
| 256 | 251 | } |
| 257 | 252 | else |
| 258 | 253 | { |
| 259 | 254 | 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); | |
| 264 | 256 | } |
| 265 | 257 | } |
| 266 | 258 | } |
| 267 | 259 | |
| 268 | 260 | VIDEO_UPDATE( 1943 ) |
| 269 | 261 | { |
| 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]); | |
| 273 | 266 | |
| 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); | |
| 276 | 269 | else |
| 277 | 270 | bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine)); |
| 278 | 271 | |
| 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 | ||
| 283 | 284 | return 0; |
| 284 | 285 | } |
| r6428 | r6429 | |
|---|---|---|
| 1 | /* | |
| 2 | Popper | |
| 3 | Omori Electric CAD (OEC) 1983 | |
| 4 | */ | |
| 1 | /*************************************************************************** | |
| 5 | 2 | |
| 3 | Popper | |
| 4 | ||
| 5 | Omori Electric CAD (OEC) 1983 | |
| 6 | ||
| 7 | ***************************************************************************/ | |
| 8 | ||
| 6 | 9 | #include "driver.h" |
| 7 | 10 | #include "video/resnet.h" |
| 11 | #include "popper.h" | |
| 8 | 12 | |
| 9 | static tilemap *popper_p123_tilemap, *popper_p0_tilemap, *popper_ol_p123_tilemap, *popper_ol_p0_tilemap; | |
| 10 | UINT8 *popper_videoram, *popper_attribram, *popper_ol_videoram, *popper_ol_attribram, *popper_spriteram; | |
| 11 | size_t popper_spriteram_size; | |
| 12 | static INT32 popper_flipscreen, popper_e002, popper_gfx_bank; | |
| 13 | static rectangle tilemap_clip; | |
| 14 | 13 | |
| 15 | ||
| 16 | 14 | /*************************************************************************** |
| 17 | 15 | * |
| 18 | 16 | * Color guns - from schematics |
| r6428 | r6429 | |
| 58 | 56 | |
| 59 | 57 | WRITE8_HANDLER( popper_ol_videoram_w ) |
| 60 | 58 | { |
| 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); | |
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | WRITE8_HANDLER( popper_videoram_w ) |
| 67 | 67 | { |
| 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); | |
| 71 | 73 | } |
| 72 | 74 | |
| 73 | 75 | WRITE8_HANDLER( popper_ol_attribram_w ) |
| 74 | 76 | { |
| 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); | |
| 78 | 82 | } |
| 79 | 83 | |
| 80 | 84 | WRITE8_HANDLER( popper_attribram_w ) |
| 81 | 85 | { |
| 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); | |
| 85 | 91 | } |
| 86 | 92 | |
| 87 | 93 | WRITE8_HANDLER( popper_flipscreen_w ) |
| 88 | 94 | { |
| 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; | |
| 91 | 96 | |
| 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); | |
| 93 | 99 | |
| 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; | |
| 96 | 102 | else |
| 97 | tilemap_clip.max_x=15; | |
| 103 | state->tilemap_clip.max_x = 15; | |
| 98 | 104 | } |
| 99 | 105 | |
| 100 | 106 | WRITE8_HANDLER( popper_e002_w ) |
| 101 | 107 | { |
| 102 | popper_e002 = data; | |
| 108 | popper_state *state = (popper_state *)space->machine->driver_data; | |
| 109 | state->e002 = data; | |
| 103 | 110 | } |
| 104 | 111 | |
| 105 | 112 | WRITE8_HANDLER( popper_gfx_bank_w ) |
| 106 | 113 | { |
| 107 | if (popper_gfx_bank != data) | |
| 114 | popper_state *state = (popper_state *)space->machine->driver_data; | |
| 115 | ||
| 116 | if (state->gfx_bank != data) | |
| 108 | 117 | { |
| 109 | | |
| 118 | state->gfx_bank = data; | |
| 110 | 119 | tilemap_mark_all_tiles_dirty_all(space->machine); |
| 111 | 120 | } |
| 112 | 121 | } |
| 113 | 122 | |
| 114 | 123 | static TILE_GET_INFO( get_popper_p123_tile_info ) |
| 115 | 124 | { |
| 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; | |
| 119 | 129 | |
| 120 | 130 | SET_TILE_INFO( |
| 121 | 131 | 0, |
| 122 | 132 | tile_number, |
| 123 | (attr&0xf), | |
| 133 | (attr & 0xf), | |
| 124 | 134 | 0); |
| 125 | tileinfo->group = (attr & 0x80)>>7; | |
| 135 | tileinfo->group = (attr & 0x80) >> 7; | |
| 126 | 136 | } |
| 127 | 137 | |
| 128 | 138 | static TILE_GET_INFO( get_popper_p0_tile_info ) |
| 129 | 139 | { |
| 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; | |
| 133 | 144 | |
| 134 | 145 | //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; | |
| 136 | 147 | |
| 137 | 148 | SET_TILE_INFO( |
| 138 | 149 | 0, |
| 139 | 150 | tile_number, |
| 140 | ((attr&0x70)>>4)+8, | |
| 151 | ((attr & 0x70) >> 4) + 8, | |
| 141 | 152 | 0); |
| 142 | 153 | } |
| 143 | 154 | |
| 144 | 155 | static TILE_GET_INFO( get_popper_ol_p123_tile_info ) |
| 145 | 156 | { |
| 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; | |
| 149 | 161 | |
| 150 | 162 | SET_TILE_INFO( |
| 151 | 163 | 0, |
| 152 | 164 | tile_number, |
| 153 | (attr&0xf), | |
| 165 | (attr & 0xf), | |
| 154 | 166 | 0); |
| 155 | tileinfo->group = (attr & 0x80)>>7; | |
| 167 | tileinfo->group = (attr & 0x80) >> 7; | |
| 156 | 168 | } |
| 157 | 169 | |
| 158 | 170 | static TILE_GET_INFO( get_popper_ol_p0_tile_info ) |
| 159 | 171 | { |
| 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; | |
| 163 | 176 | |
| 164 | 177 | //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; | |
| 166 | 179 | |
| 167 | 180 | SET_TILE_INFO( |
| 168 | 181 | 0, |
| 169 | 182 | tile_number, |
| 170 | ((attr&0x70)>>4)+8, | |
| 183 | ((attr & 0x70) >> 4) + 8, | |
| 171 | 184 | 0); |
| 172 | 185 | } |
| 173 | 186 | |
| 174 | 187 | VIDEO_START( popper ) |
| 175 | 188 | { |
| 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); | |
| 180 | 194 | |
| 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); | |
| 189 | 203 | |
| 190 | tilemap_clip = *video_screen_get_visible_area(machine->primary_screen); | |
| 204 | state->tilemap_clip = *video_screen_get_visible_area(machine->primary_screen); | |
| 191 | 205 | |
| 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); | |
| 195 | 209 | } |
| 196 | 210 | |
| 197 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) | |
| 211 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect ) | |
| 198 | 212 | { |
| 199 | int offs,sx,sy,flipx,flipy; | |
| 213 | popper_state *state = (popper_state *)machine->driver_data; | |
| 214 | int offs, sx, sy, flipx, flipy; | |
| 200 | 215 | |
| 201 | for (offs = 0; offs < | |
| 216 | for (offs = 0; offs < | |
| 202 | 217 | { |
| 203 | 218 | //if y position is in the current strip |
| 204 | if( | |
| 219 | if (state->spriteram[offs + 1] && (((state->spriteram[offs] + (state->flipscreen ? 2 : 0)) & 0xf0) == (0x0f - offs / 0x80) << 4)) | |
| 205 | 220 | { |
| 206 | 221 | //offs y pos |
| 207 | 222 | //offs+1 sprite number |
| r6428 | r6429 | |
| 213 | 228 | //----xxxx colour |
| 214 | 229 | //offs+3 x pos |
| 215 | 230 | |
| 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; | |
| 220 | 235 | |
| 221 | if ( | |
| 236 | if (state->flipscreen) | |
| 222 | 237 | { |
| 223 | 238 | sx = 248 - sx; |
| 224 | 239 | sy = 242 - sy; |
| r6428 | r6429 | |
| 226 | 241 | flipy = !flipy; |
| 227 | 242 | } |
| 228 | 243 | |
| 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), | |
| 232 | 247 | flipx,flipy, |
| 233 | 248 | sx,sy,0); |
| 234 | 249 | } |
| r6428 | r6429 | |
| 237 | 252 | |
| 238 | 253 | VIDEO_UPDATE( popper ) |
| 239 | 254 | { |
| 240 | rectangle finalclip = tilemap_clip; | |
| 255 | popper_state *state = (popper_state *)screen->machine->driver_data; | |
| 256 | rectangle finalclip = state->tilemap_clip; | |
| 241 | 257 | sect_rect(&finalclip, cliprect); |
| 242 | 258 | |
| 243 | 259 | //attribram |
| r6428 | r6429 | |
| 246 | 262 | //-xxx---- colour for pen 0 (from second prom?) |
| 247 | 263 | //----xxxx colour for pens 1,2,3 |
| 248 | 264 | |
| 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); | |
| 253 | 269 | |
| 254 | draw_sprites(screen->machine, bitmap,cliprect); | |
| 270 | draw_sprites(screen->machine, bitmap, cliprect); | |
| 255 | 271 | |
| 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); | |
| 260 | 276 | return 0; |
| 261 | 277 | } |
| r6428 | r6429 | |
|---|---|---|
| 11 | 11 | static tilemap *bg_tilemap; |
| 12 | 12 | static int palette_bank; |
| 13 | 13 | //static int gfxctrl; |
| 14 | static int spritetilebase; | |
| 14 | 15 | |
| 15 | 16 | UINT8 *ladyfrog_scrlram; |
| 16 | 17 | |
| r6428 | r6429 | |
| 105 | 106 | int offs = (pr & 0x1f) * 4; |
| 106 | 107 | { |
| 107 | 108 | int code,sx,sy,flipx,flipy,pal; |
| 108 | code = ladyfrog_spriteram[offs+2] + ((ladyfrog_spriteram[offs+1] & 0x10) << 4)+ | |
| 109 | code = ladyfrog_spriteram[offs+2] + ((ladyfrog_spriteram[offs+1] & 0x10) << 4)+spritetilebase; | |
| 109 | 110 | pal=ladyfrog_spriteram[offs+1] & 0x0f; |
| 110 | 111 | sx = ladyfrog_spriteram[offs+3]; |
| 111 | sy = 2 | |
| 112 | sy = 238-ladyfrog_spriteram[offs+0]; | |
| 112 | 113 | flipx = ((ladyfrog_spriteram[offs+1]&0x40)>>6); |
| 113 | 114 | flipy = ((ladyfrog_spriteram[offs+1]&0x80)>>7); |
| 114 | 115 | drawgfx_transpen(bitmap,cliprect,machine->gfx[1], |
| r6428 | r6429 | |
| 131 | 132 | |
| 132 | 133 | } |
| 133 | 134 | |
| 134 | VIDEO_START( ladyfrog ) | |
| 135 | VIDEO_START( ladyfrog_common ) | |
| 135 | 136 | { |
| 136 | 137 | ladyfrog_spriteram = auto_alloc_array(machine, UINT8, 160); |
| 137 | 138 | bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 ); |
| r6428 | r6429 | |
| 142 | 143 | tilemap_set_scrolldy( bg_tilemap, 15, 15 ); |
| 143 | 144 | } |
| 144 | 145 | |
| 146 | VIDEO_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 | } | |
| 145 | 152 | |
| 153 | VIDEO_START( toucheme ) | |
| 154 | { | |
| 155 | spritetilebase = 0x000; | |
| 156 | VIDEO_START_CALL(ladyfrog_common); | |
| 157 | } | |
| 158 | ||
| 159 | ||
| 146 | 160 | VIDEO_UPDATE( ladyfrog ) |
| 147 | 161 | { |
| 148 | 162 | tilemap_draw(bitmap,cliprect,bg_tilemap,0,0); |
| r6428 | r6429 | |
|---|---|---|
| 5439 | 5439 | } |
| 5440 | 5440 | } |
| 5441 | 5441 | |
| 5442 | // winning spike doesn't like layer association.. | |
| 5443 | if (K056832_djmain_hack==2) | |
| 5444 | K056832_LayerAssociation = 0; | |
| 5445 | ||
| 5446 | ||
| 5442 | 5447 | // disable all tilemaps |
| 5443 | 5448 | for (pageIndex=0; pageIndex<K056832_PAGE_COUNT; pageIndex++) |
| 5444 | 5449 | { |
| 5445 | 5450 | K056832_LayerAssociatedWithPage[pageIndex] = -1; |
| 5446 | 5451 | } |
| 5447 | 5452 | |
| 5453 | ||
| 5448 | 5454 | // enable associated tilemaps |
| 5449 | 5455 | for (layer=0; layer<4; layer++) |
| 5450 | 5456 | { |
| r6428 | r6429 | |
| 5460 | 5466 | for (c=0; c<colspan; c++) |
| 5461 | 5467 | { |
| 5462 | 5468 | pageIndex = (((rowstart + r) & 3) << 2) + ((colstart + c) & 3); |
| 5463 | if (!K056832_djmain_hack || K056832_LayerAssociatedWithPage[pageIndex] == -1) //* | |
| 5469 | if (!(K056832_djmain_hack==1) || K056832_LayerAssociatedWithPage[pageIndex] == -1) //* | |
| 5464 | 5470 | K056832_LayerAssociatedWithPage[pageIndex] = setlayer; |
| 5465 | 5471 | } |
| 5466 | 5472 | } |
| r6428 | r6429 | |
| 6816 | 6822 | drawrect.min_x = (dminx < cminx ) ? cminx : dminx; |
| 6817 | 6823 | drawrect.max_x = (dmaxx > cmaxx ) ? cmaxx : dmaxx; |
| 6818 | 6824 | |
| 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 | ||
| 6819 | 6831 | tilemap_set_scrollx(tmap, 0, dx); |
| 6820 | 6832 | |
| 6821 | 6833 | LINE_SHORTCIRCUIT: |
| r6428 | r6429 | |
| 7267 | 7279 | return k54338_regs[reg]; |
| 7268 | 7280 | } |
| 7269 | 7281 | |
| 7270 | void K054338_update_all_shadows(running_machine *machine) | |
| 7282 | void K054338_update_all_shadows(running_machine *machine, int rushingheroes_hack) | |
| 7271 | 7283 | { |
| 7272 | 7284 | int i, d; |
| 7273 | 7285 | int noclip = k54338_regs[K338_REG_CONTROL] & K338_CTL_CLIPSL; |
| r6428 | r6429 | |
| 7279 | 7291 | K054338_shdRGB[i] = d; |
| 7280 | 7292 | } |
| 7281 | 7293 | |
| 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 | } | |
| 7285 | 7306 | } |
| 7286 | 7307 | |
| 7287 | 7308 | // K054338 BG color fill |
| r6428 | r6429 | |
|---|---|---|
| 392 | 392 | WRITE16_HANDLER( K054338_word_w ); // "CLCT" registers |
| 393 | 393 | WRITE32_HANDLER( K054338_long_w ); |
| 394 | 394 | int K054338_read_register(int reg); |
| 395 | void K054338_update_all_shadows(running_machine *machine); // called at the beginning of VIDEO_UPDATE() | |
| 395 | void K054338_update_all_shadows(running_machine *machine, int rushingheroes_hack); // called at the beginning of VIDEO_UPDATE() | |
| 396 | 396 | void K054338_fill_solid_bg(bitmap_t *bitmap); // solid backcolor fill |
| 397 | 397 | void K054338_fill_backcolor(running_machine *machine, bitmap_t *bitmap, int mode); // unified fill, 0=solid, 1=gradient |
| 398 | 398 | int K054338_set_alpha_level(int pblend); // blend style 0-2 |
| r6428 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | video/aeroboto.c | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 7 | ||
| 1 | 8 | #include "driver.h" |
| 9 | #include "aeroboto.h" | |
| 2 | 10 | |
| 3 | 11 | |
| 4 | 12 | // how the starfield ROM is interpreted: 0=256x256x1 linear bitmap, 1=8x8x1x1024 tilemap |
| r6428 | r6429 | |
| 7 | 15 | // scroll speed of the stars: 1=normal, 2=half, 3=one-third...etc.(possitive integers only) |
| 8 | 16 | #define SCROLL_SPEED 1 |
| 9 | 17 | |
| 10 | ||
| 11 | UINT8 *aeroboto_videoram; | |
| 12 | UINT8 *aeroboto_hscroll, *aeroboto_vscroll, *aeroboto_tilecolor; | |
| 13 | UINT8 *aeroboto_starx, *aeroboto_stary, *aeroboto_bgcolor; | |
| 14 | ||
| 15 | static int aeroboto_charbank, aeroboto_starsoff; | |
| 16 | ||
| 17 | static tilemap *bg_tilemap; | |
| 18 | ||
| 19 | 18 | /*************************************************************************** |
| 20 | 19 | |
| 21 | 20 | Callbacks for the TileMap code |
| r6428 | r6429 | |
| 24 | 23 | |
| 25 | 24 | static TILE_GET_INFO( get_tile_info ) |
| 26 | 25 | { |
| 27 | UINT8 code = aeroboto_videoram[tile_index]; | |
| 26 | aeroboto_state *state = (aeroboto_state *)machine->driver_data; | |
| 27 | UINT8 code = state->videoram[tile_index]; | |
| 28 | 28 | SET_TILE_INFO( |
| 29 | 29 | 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); | |
| 33 | 33 | } |
| 34 | 34 | // transparency should only affect tiles with color 0x33 or higher |
| 35 | 35 | |
| r6428 | r6429 | |
| 42 | 42 | |
| 43 | 43 | VIDEO_START( aeroboto ) |
| 44 | 44 | { |
| 45 | b | |
| 45 | aeroboto_state *state = ( | |
| 46 | 46 | |
| 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); | |
| 48 | 50 | |
| 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); | |
| 50 | 57 | |
| 51 | state_save_register_global(machine, aeroboto_charbank); | |
| 52 | state_save_register_global(machine, aeroboto_starsoff); | |
| 53 | ||
| 54 | 58 | #if STARS_LAYOUT |
| 55 | 59 | { |
| 56 | UINT8 *rom, *temp; | |
| 57 | int i, length; | |
| 60 | UINT8 *temp; | |
| 61 | int i; | |
| 58 | 62 | |
| 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); | |
| 63 | 65 | |
| 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]; | |
| 65 | 68 | |
| 66 | 69 | free(temp); |
| 67 | 70 | } |
| r6428 | r6429 | |
| 83 | 86 | |
| 84 | 87 | WRITE8_HANDLER( aeroboto_3000_w ) |
| 85 | 88 | { |
| 89 | aeroboto_state *state = (aeroboto_state *)space->machine->driver_data; | |
| 90 | ||
| 86 | 91 | /* bit 0 selects both flip screen and player1/player2 controls */ |
| 87 | 92 | flip_screen_set(space->machine, data & 0x01); |
| 88 | 93 | |
| 89 | 94 | /* bit 1 = char bank select */ |
| 90 | if (a | |
| 95 | if (sta | |
| 91 | 96 | { |
| 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; | |
| 94 | 99 | } |
| 95 | 100 | |
| 96 | 101 | /* bit 2 = disable star field? */ |
| 97 | a | |
| 102 | sta | |
| 98 | 103 | } |
| 99 | 104 | |
| 100 | 105 | WRITE8_HANDLER( aeroboto_videoram_w ) |
| 101 | 106 | { |
| 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); | |
| 104 | 111 | } |
| 105 | 112 | |
| 106 | 113 | WRITE8_HANDLER( aeroboto_tilecolor_w ) |
| 107 | 114 | { |
| 108 | if (aeroboto_tilecolor[offset] != data) | |
| 115 | aeroboto_state *state = (aeroboto_state *)space->machine->driver_data; | |
| 116 | ||
| 117 | if (state->tilecolor[offset] != data) | |
| 109 | 118 | { |
| 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); | |
| 112 | 121 | } |
| 113 | 122 | } |
| 114 | 123 | |
| r6428 | r6429 | |
| 120 | 129 | |
| 121 | 130 | ***************************************************************************/ |
| 122 | 131 | |
| 123 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 132 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 124 | 133 | { |
| 134 | aeroboto_state *state = (aeroboto_state *)machine->driver_data; | |
| 125 | 135 | int offs; |
| 126 | 136 | |
| 127 | for (offs = 0;offs < spriteram_size;offs += 4) | |
| 137 | for (offs = 0; offs < spriteram_size; offs += 4) | |
| 128 | 138 | { |
| 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]; | |
| 131 | 141 | |
| 132 | 142 | if (flip_screen_get(machine)) |
| 133 | 143 | { |
| r6428 | r6429 | |
| 136 | 146 | } |
| 137 | 147 | |
| 138 | 148 | 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, | |
| 141 | 151 | flip_screen_get(machine), flip_screen_get(machine), |
| 142 | 152 | ((x + 8) & 0xff) - 8, y, 0); |
| 143 | 153 | } |
| r6428 | r6429 | |
| 146 | 156 | |
| 147 | 157 | VIDEO_UPDATE( aeroboto ) |
| 148 | 158 | { |
| 159 | aeroboto_state *state = (aeroboto_state *)screen->machine->driver_data; | |
| 160 | ||
| 149 | 161 | static const rectangle splitrect1 = { 0, 255, 0, 39 }; |
| 150 | 162 | static const rectangle splitrect2 = { 0, 255, 40, 255 }; |
| 151 | static int sx=0, sy=0; | |
| 152 | static UINT8 ox=0, oy=0; | |
| 153 | 163 | UINT8 *src_base, *src_colptr, *src_rowptr; |
| 154 | 164 | int src_offsx, src_colmask, sky_color, star_color, x, y, i, j, pen; |
| 155 | 165 | |
| 156 | sky_color = star_color = *a | |
| 166 | sky_color = star_color = *sta | |
| 157 | 167 | |
| 158 | 168 | // the star field is supposed to be seen through tile pen 0 when active |
| 159 | if (!a | |
| 169 | if (!sta | |
| 160 | 170 | { |
| 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 | ||
| 162 | 177 | star_color += 2; |
| 163 | 178 | |
| 164 | 179 | bitmap_fill(bitmap, cliprect, sky_color); |
| 165 | 180 | |
| 166 | 181 | // 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; | |
| 170 | 185 | |
| 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; | |
| 174 | 190 | |
| 175 | src_base = | |
| 191 | src_base = state->stars_r | |
| 176 | 192 | |
| 177 | for (i=0; i<256; i++) | |
| 193 | for (i = 0; i < 256; i++) | |
| 178 | 194 | { |
| 179 | 195 | src_offsx = (x + i) & 0xff; |
| 180 | 196 | src_colmask = 1 << (src_offsx & 7); |
| r6428 | r6429 | |
| 182 | 198 | src_colptr = src_base + src_offsx; |
| 183 | 199 | pen = star_color + ((i + 8) >> 4 & 1); |
| 184 | 200 | |
| 185 | for (j=0; j<256; j++) | |
| 201 | for (j = 0; j < 256; j++) | |
| 186 | 202 | { |
| 187 | 203 | 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; | |
| 189 | 206 | } |
| 190 | 207 | } |
| 191 | 208 | } |
| 192 | 209 | else |
| 193 | 210 | { |
| 194 | sx = ox = *aeroboto_starx; | |
| 195 | sy = oy = *aeroboto_stary; | |
| 211 | state->sx = state->ox = *state->starx; | |
| 212 | state->sy = state->oy = *state->stary; | |
| 196 | 213 | bitmap_fill(bitmap, cliprect, sky_color); |
| 197 | 214 | } |
| 198 | 215 | |
| 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]); | |
| 201 | 218 | |
| 202 | 219 | // 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); | |
| 205 | 222 | |
| 206 | draw_sprites(screen->machine,bitmap,cliprect); | |
| 223 | draw_sprites(screen->machine, bitmap, cliprect); | |
| 207 | 224 | |
| 208 | 225 | // 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); | |
| 211 | 228 | return 0; |
| 212 | 229 | } |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 13 | static int nbmj8900_scrolly; | |
| 14 | static int blitter_destx, blitter_desty; | |
| 15 | static int blitter_sizex, blitter_sizey; | |
| 16 | static int blitter_src_addr; | |
| 17 | static int blitter_direction_x, blitter_direction_y; | |
| 18 | static int nbmj8900_vram; | |
| 19 | static int nbmj8900_gfxrom; | |
| 20 | static int nbmj8900_dispflag; | |
| 21 | static int nbmj8900_flipscreen; | |
| 22 | static int nbmj8900_clutsel; | |
| 23 | static int nbmj8900_screen_refresh; | |
| 24 | static int gfxdraw_mode; | |
| 25 | ||
| 26 | static int screen_height; | |
| 27 | static int screen_width; | |
| 28 | ||
| 29 | static bitmap_t *nbmj8900_tmpbitmap0, *nbmj8900_tmpbitmap1; | |
| 30 | static UINT8 *nbmj8900_videoram0, *nbmj8900_videoram1; | |
| 31 | static UINT8 *nbmj8900_palette; | |
| 32 | static UINT8 *nbmj8900_clut; | |
| 33 | ||
| 34 | ||
| 35 | static void nbmj8900_vramflip(running_machine *machine, int vram); | |
| 36 | static void nbmj8900_gfxdraw(running_machine *machine); | |
| 37 | ||
| 38 | ||
| 39 | /****************************************************************************** | |
| 40 | ||
| 41 | ||
| 42 | ******************************************************************************/ | |
| 43 | READ8_HANDLER( nbmj8900_palette_type1_r ) | |
| 44 | { | |
| 45 | return nbmj8900_palette[offset]; | |
| 46 | } | |
| 47 | ||
| 48 | WRITE8_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 | ||
| 65 | READ8_HANDLER( nbmj8900_palette_type2_r ) | |
| 66 | { | |
| 67 | return nbmj8900_palette[offset]; | |
| 68 | } | |
| 69 | ||
| 70 | WRITE8_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 | ||
| 87 | READ8_HANDLER( nbmj8900_palette_type3_r ) | |
| 88 | { | |
| 89 | return nbmj8900_palette[offset]; | |
| 90 | } | |
| 91 | ||
| 92 | WRITE8_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 | ||
| 109 | WRITE8_HANDLER( nbmj8900_clutsel_w ) | |
| 110 | { | |
| 111 | nbmj8900_clutsel = data; | |
| 112 | } | |
| 113 | ||
| 114 | READ8_HANDLER( nbmj8900_clut_r ) | |
| 115 | { | |
| 116 | return nbmj8900_clut[offset]; | |
| 117 | } | |
| 118 | ||
| 119 | WRITE8_HANDLER( nbmj8900_clut_w ) | |
| 120 | { | |
| 121 | nbmj8900_clut[((nbmj8900_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data; | |
| 122 | } | |
| 123 | ||
| 124 | /****************************************************************************** | |
| 125 | ||
| 126 | ||
| 127 | ******************************************************************************/ | |
| 128 | WRITE8_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 | ||
| 152 | WRITE8_HANDLER( nbmj8900_scrolly_w ) | |
| 153 | { | |
| 154 | nbmj8900_scrolly = data; | |
| 155 | } | |
| 156 | ||
| 157 | WRITE8_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 | ||
| 165 | WRITE8_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 | ******************************************************************************/ | |
| 182 | void 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 | ||
| 211 | static 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 | ||
| 217 | static 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 | ||
| 223 | static TIMER_CALLBACK( blitter_timer_callback ) | |
| 224 | { | |
| 225 | nb1413m3_busyflag = 1; | |
| 226 | } | |
| 227 | ||
| 228 | static 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 | ******************************************************************************/ | |
| 383 | VIDEO_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 | ******************************************************************************/ | |
| 404 | VIDEO_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 | } |
| r6428 | r6429 | |
|---|---|---|
| 8 | 8 | #include "includes/atarifb.h" |
| 9 | 9 | |
| 10 | 10 | |
| 11 | /* local */ | |
| 12 | UINT8 *atarifb_alphap1_videoram; | |
| 13 | UINT8 *atarifb_alphap2_videoram; | |
| 14 | UINT8 *atarifb_field_videoram; | |
| 15 | UINT8 *atarifb_scroll_register; | |
| 16 | ||
| 17 | static tilemap *alpha1_tilemap; | |
| 18 | static tilemap *alpha2_tilemap; | |
| 19 | static tilemap *field_tilemap; | |
| 20 | ||
| 21 | ||
| 22 | ||
| 23 | 11 | /************************************* |
| 24 | 12 | * |
| 25 | 13 | * Tilemap callbacks |
| 26 | 14 | * |
| 27 | 15 | *************************************/ |
| 28 | 16 | |
| 29 | static void get_tile_info_common(running_machine *machine, tile_data *tileinfo, | |
| 30 | tilemap_memory_index tile_index, UINT8 *alpha_videoram) | |
| 17 | static void get_tile_info_common( running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, UINT8 *alpha_videoram ) | |
| 31 | 18 | { |
| 32 | 19 | int code = alpha_videoram[tile_index] & 0x3f; |
| 33 | 20 | int flip = alpha_videoram[tile_index] & 0x40; |
| r6428 | r6429 | |
| 42 | 29 | |
| 43 | 30 | static TILE_GET_INFO( alpha1_get_tile_info ) |
| 44 | 31 | { |
| 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); | |
| 46 | 34 | } |
| 47 | 35 | |
| 48 | 36 | |
| 49 | 37 | static TILE_GET_INFO( alpha2_get_tile_info ) |
| 50 | 38 | { |
| 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); | |
| 52 | 41 | } |
| 53 | 42 | |
| 54 | 43 | |
| 55 | 44 | static TILE_GET_INFO( field_get_tile_info ) |
| 56 | 45 | { |
| 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; | |
| 59 | 49 | |
| 60 | 50 | SET_TILE_INFO(1, code, 0, TILE_FLIPYX(flipyx)); |
| 61 | 51 | } |
| r6428 | r6429 | |
| 71 | 61 | |
| 72 | 62 | WRITE8_HANDLER( atarifb_alpha1_videoram_w ) |
| 73 | 63 | { |
| 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); | |
| 76 | 68 | } |
| 77 | 69 | |
| 78 | 70 | |
| 79 | 71 | WRITE8_HANDLER( atarifb_alpha2_videoram_w ) |
| 80 | 72 | { |
| 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); | |
| 83 | 77 | } |
| 84 | 78 | |
| 85 | 79 | |
| 86 | 80 | WRITE8_HANDLER( atarifb_field_videoram_w ) |
| 87 | 81 | { |
| 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); | |
| 90 | 86 | } |
| 91 | 87 | |
| 92 | 88 | |
| r6428 | r6429 | |
| 99 | 95 | |
| 100 | 96 | VIDEO_START( atarifb ) |
| 101 | 97 | { |
| 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); | |
| 105 | 103 | } |
| 106 | 104 | |
| 107 | 105 | |
| 108 | 106 | |
| 109 | static void draw_playfield_and_alpha(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, | |
| 110 | int playfield_x_offset, int playfield_y_offset) | |
| 107 | static void draw_playfield_and_alpha( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int playfield_x_offset, int playfield_y_offset ) | |
| 111 | 108 | { |
| 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 }; | |
| 113 | 111 | |
| 114 | 112 | int scroll_x[1]; |
| 115 | 113 | int scroll_y[1]; |
| 116 | 114 | |
| 117 | scroll_x[0] = - * | |
| 115 | scroll_x[0] = - *state-> | |
| 118 | 116 | scroll_y[0] = 8 + playfield_y_offset; |
| 119 | 117 | |
| 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); | |
| 123 | 121 | } |
| 124 | 122 | |
| 125 | 123 | |
| 126 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, | |
| 127 | int gfx, int is_soccer) | |
| 124 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int gfx, int is_soccer ) | |
| 128 | 125 | { |
| 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 }; | |
| 130 | 128 | |
| 131 | 129 | int obj; |
| 132 | 130 | |
| 133 | for (obj=0;obj<16;obj++) | |
| 131 | for (obj = 0; obj < 16; obj++) | |
| 134 | 132 | { |
| 135 | 133 | int charcode; |
| 136 | int flipx,flipy; | |
| 137 | int sx,sy; | |
| 134 | int flipx, flipy; | |
| 135 | int sx, sy; | |
| 138 | 136 | int shade = 0; |
| 139 | 137 | |
| 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; | |
| 142 | 141 | |
| 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; | |
| 147 | 146 | |
| 148 | 147 | /* Note on Atari Soccer: */ |
| 149 | 148 | /* There are 3 sets of 2 bits each, where the 2 bits represent */ |
| r6428 | r6429 | |
| 151 | 150 | /* color of each bit in the sprite, but I haven't implemented it that way. */ |
| 152 | 151 | if (is_soccer) |
| 153 | 152 | { |
| 154 | shade = ((spriteram[obj*2+1 + 0x20]) & 0x07); | |
| 153 | shade = ((state->spriteram[obj * 2 + 1 + 0x20]) & 0x07); | |
| 155 | 154 | |
| 156 | drawgfx_transpen(bitmap,&bigfield_area,machine->gfx[gfx + 1], | |
| 155 | drawgfx_transpen(bitmap, &bigfield_area, machine->gfx[gfx + 1], | |
| 157 | 156 | charcode, shade, |
| 158 | flipx,flipy,sx,sy,0); | |
| 157 | flipx, flipy, sx, sy, 0); | |
| 159 | 158 | |
| 160 | shade = ((spriteram[obj*2+1 + 0x20]) & 0x08) >> 3; | |
| 159 | shade = ((state->spriteram[obj * 2 + 1 + 0x20]) & 0x08) >> 3; | |
| 161 | 160 | } |
| 162 | 161 | |
| 163 | drawgfx_transpen(bitmap,&bigfield_area,machine->gfx[gfx], | |
| 162 | drawgfx_transpen(bitmap, &bigfield_area, machine->gfx[gfx], | |
| 164 | 163 | charcode, shade, |
| 165 | flipx,flipy,sx,sy,0); | |
| 164 | flipx, flipy, sx, sy, 0); | |
| 166 | 165 | |
| 167 | 166 | /* If this isn't soccer, handle the multiplexed sprites */ |
| 168 | 167 | if (!is_soccer) |
| r6428 | r6429 | |
| 172 | 171 | if ((charcode == 0x11) && (sy == 0x07)) |
| 173 | 172 | { |
| 174 | 173 | 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], | |
| 176 | 175 | charcode, 0, |
| 177 | flipx,flipy,sx,sy,0); | |
| 176 | flipx, flipy, sx, sy, 0); | |
| 178 | 177 | } |
| 179 | 178 | } |
| 180 | 179 | } |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | |
| 8 | 8 | #include "driver.h" |
| 9 | 9 | #include "video/konamiic.h" |
| 10 | #include " | |
| 10 | #include " | |
| 11 | 11 | |
| 12 | 12 | static int layer_colorbase[6]; |
| 13 | 13 | static int oinprion, cbparam; |
| r6428 | r6429 | |
| 337 | 337 | |
| 338 | 338 | sprite_colorbase = K055555_get_palette_index(4)<<5; |
| 339 | 339 | |
| 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); | |
| 341 | 341 | return 0; |
| 342 | 342 | } |
| 343 | 343 | |
| r6428 | r6429 | |
| 354 | 354 | |
| 355 | 355 | sprite_colorbase = K055555_get_palette_index(4)<<4; |
| 356 | 356 | |
| 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); | |
| 358 | 358 | return 0; |
| 359 | 359 | } |
| 360 | 360 | |
| r6428 | r6429 | |
| 377 | 377 | // not quite right |
| 378 | 378 | blendmode = (oinprion==0xef && K054338_read_register(K338_REG_PBLEND)) ? ((1<<16|GXMIX_BLEND_FORCE)<<2) : 0; |
| 379 | 379 | |
| 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); | |
| 381 | 381 | return 0; |
| 382 | 382 | } |
| 383 | 383 | |
| r6428 | r6429 | |
| 539 | 539 | popmessage("K053936: PSAC colorbase changed"); |
| 540 | 540 | } |
| 541 | 541 | |
| 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); | |
| 543 | 543 | return 0; |
| 544 | 544 | } |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ****************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "m | |
| 8 | #include "includes/iremz80.h" | |
| 9 | 9 | |
| 10 | 10 | |
| 11 | UINT8 *m57_scroll; | |
| 12 | ||
| 13 | static int flipscreen; | |
| 14 | static tilemap *bg_tilemap; | |
| 15 | ||
| 16 | ||
| 17 | 11 | /*************************************************************************** |
| 18 | 12 | |
| 19 | 13 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 35 | 29 | bit 0 -- 1 kohm resistor -- BLUE |
| 36 | 30 | |
| 37 | 31 | ***************************************************************************/ |
| 32 | ||
| 38 | 33 | PALETTE_INIT( m57 ) |
| 39 | 34 | { |
| 40 | 35 | int i; |
| 41 | 36 | |
| 42 | machine->colortable = colortable_alloc(machine, 32*8+16); | |
| 37 | machine->colortable = colortable_alloc(machine, 32 * 8 + 16); | |
| 43 | 38 | |
| 44 | 39 | /* character palette */ |
| 45 | for (i = 0;i < 256;i++) | |
| 40 | for (i = 0; i < 256; i++) | |
| 46 | 41 | { |
| 47 | int bit0,bit1,bit2,r,g,b; | |
| 42 | int bit0, bit1, bit2, r, g, b; | |
| 48 | 43 | |
| 49 | 44 | /* red component */ |
| 50 | 45 | bit0 = 0; |
| r6428 | r6429 | |
| 62 | 57 | bit2 = (color_prom[0] >> 2) & 0x01; |
| 63 | 58 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 64 | 59 | |
| 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); | |
| 67 | 62 | color_prom++; |
| 68 | 63 | } |
| 69 | 64 | |
| r6428 | r6429 | |
| 71 | 66 | /* color_prom now points to the beginning of the sprite palette */ |
| 72 | 67 | |
| 73 | 68 | /* sprite palette */ |
| 74 | for (i = 0;i < 16;i++) | |
| 69 | for (i = 0; i < 16; i++) | |
| 75 | 70 | { |
| 76 | int bit0,bit1,bit2,r,g,b; | |
| 71 | int bit0, bit1, bit2, r, g, b; | |
| 77 | 72 | |
| 78 | 73 | /* red component */ |
| 79 | 74 | bit0 = 0; |
| r6428 | r6429 | |
| 91 | 86 | bit2 = (*color_prom >> 2) & 0x01; |
| 92 | 87 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 93 | 88 | |
| 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)); | |
| 95 | 90 | color_prom++; |
| 96 | 91 | } |
| 97 | 92 | |
| r6428 | r6429 | |
| 100 | 95 | |
| 101 | 96 | |
| 102 | 97 | /* sprite lookup table */ |
| 103 | for (i = 0;i < 32*8;i++) | |
| 98 | for (i = 0; i < 32 * 8; i++) | |
| 104 | 99 | { |
| 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)); | |
| 106 | 101 | color_prom++; |
| 107 | 102 | } |
| 108 | 103 | } |
| r6428 | r6429 | |
| 116 | 111 | |
| 117 | 112 | static TILE_GET_INFO( get_tile_info ) |
| 118 | 113 | { |
| 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; | |
| 121 | 115 | |
| 116 | UINT8 attr = state->videoram[tile_index * 2 + 0]; | |
| 117 | UINT16 code = state->videoram[tile_index * 2 + 1] | ((attr & 0xc0) << 2); | |
| 118 | ||
| 122 | 119 | SET_TILE_INFO(0, code, attr & 0x0f, TILE_FLIPXY(attr >> 4)); |
| 123 | 120 | } |
| 124 | 121 | |
| r6428 | r6429 | |
| 131 | 128 | |
| 132 | 129 | WRITE8_HANDLER( m57_videoram_w ) |
| 133 | 130 | { |
| 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); | |
| 136 | 135 | } |
| 137 | 136 | |
| 138 | 137 | |
| r6428 | r6429 | |
| 144 | 143 | |
| 145 | 144 | VIDEO_START( m57 ) |
| 146 | 145 | { |
| 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); | |
| 149 | 152 | } |
| 150 | 153 | |
| 151 | 154 | |
| r6428 | r6429 | |
| 157 | 160 | |
| 158 | 161 | WRITE8_HANDLER( m57_flipscreen_w ) |
| 159 | 162 | { |
| 163 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 164 | ||
| 160 | 165 | /* 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); | |
| 163 | 168 | |
| 164 | 169 | coin_counter_w(0,data & 0x02); |
| 165 | 170 | coin_counter_w(1,data & 0x20); |
| r6428 | r6429 | |
| 174 | 179 | |
| 175 | 180 | static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 176 | 181 | { |
| 182 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 177 | 183 | int y,x; |
| 178 | 184 | INT16 scrolly; |
| 179 | 185 | |
| 180 | 186 | // from 64 to 127: not wrapped |
| 181 | 187 | for (y = 64; y < 128; y++) |
| 182 | tilemap_set_scrollx(bg_tilemap, y, | |
| 188 | tilemap_set_scrollx(state->bg_tilemap, y, | |
| 183 | 189 | |
| 184 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 190 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 185 | 191 | |
| 186 | 192 | // from 128 to 255: wrapped |
| 187 | 193 | for (y = 128; y <= cliprect->max_y; y++) |
| 188 | 194 | { |
| 189 | scrolly = | |
| 195 | scrolly = | |
| 190 | 196 | |
| 191 | 197 | if (scrolly >= 0) |
| 192 | 198 | { |
| r6428 | r6429 | |
| 217 | 223 | |
| 218 | 224 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 219 | 225 | { |
| 226 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 220 | 227 | int offs; |
| 221 | 228 | |
| 222 | ||
| 223 | for (offs = spriteram_size-4;offs >= 0;offs -= 4) | |
| 229 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) | |
| 224 | 230 | { |
| 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; | |
| 232 | 238 | |
| 233 | 239 | int tile_number = code & 0x3f; |
| 234 | 240 | |
| 235 | 241 | 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; | |
| 238 | 244 | |
| 239 | if (flipscreen) | |
| 245 | if (state->flipscreen) | |
| 240 | 246 | { |
| 241 | 247 | sx = 240 - sx; |
| 242 | 248 | sy = 224 - sy; |
| r6428 | r6429 | |
| 244 | 250 | flipy = !flipy; |
| 245 | 251 | } |
| 246 | 252 | |
| 247 | drawgfx_transmask(bitmap,cliprect,machine->gfx[1+bank], | |
| 253 | drawgfx_transmask(bitmap, cliprect, machine->gfx[1 + bank], | |
| 248 | 254 | tile_number, |
| 249 | 255 | 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)); | |
| 253 | 259 | } |
| 254 | 260 | } |
| 255 | 261 |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /* |
| 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) | |
| 3 | 3 | * |
| 4 | 4 | */ |
| 5 | 5 | |
| 6 | 6 | #include "driver.h" |
| 7 | 7 | #include "video/konamiic.h" |
| 8 | #include " | |
| 8 | #include " | |
| 9 | 9 | |
| 10 | ||
| 11 | #define GX_DEBUG 0 | |
| 10 | 12 | #define VERBOSE 0 |
| 11 | 13 | |
| 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 | ||
| 33 | static UINT8 *gx_objzbuf, *gx_shdzbuf; | |
| 34 | ||
| 35 | ||
| 36 | ||
| 12 | 37 | static int layer_colorbase[4]; |
| 13 | 38 | static INT32 gx_tilebanks[8], gx_oldbanks[8]; |
| 14 | 39 | static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase; |
| 15 | 40 | static 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 |
| 41 | static int gx_rushingheroes_hack; | |
| 16 | 42 | static tilemap *gx_psac_tilemap, *gx_psac_tilemap2; |
| 17 | 43 | extern UINT32 *gx_psacram, *gx_subpaletteram32; |
| 44 | static bitmap_t* type3_roz_temp_bitmap; | |
| 45 | static tilemap* gx_psac_tilemap_alt; | |
| 18 | 46 | |
| 47 | static int konamigx_has_dual_screen; | |
| 48 | int konamigx_current_frame; | |
| 49 | INLINE void set_color_555(running_machine *machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data); | |
| 50 | static int konamigx_palformat; | |
| 51 | static bitmap_t* dualscreen_left_tempbitmap; | |
| 52 | static bitmap_t* dualscreen_right_tempbitmap; | |
| 53 | ||
| 19 | 54 | /* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data |
| 20 | 55 | the 'voxel' effect to give the pixels height is a post-process operation on the |
| 21 | 56 | output of the K053936 (this can clearly be seen in videos as large chunks of |
| r6428 | r6429 | |
| 39 | 74 | |
| 40 | 75 | static void (*game_tile_callback)(int layer, int *code, int *color, int *flags); |
| 41 | 76 | |
| 77 | // Localized K053936/ROZ+ | |
| 78 | #define K053936_MAX_CHIPS 2 | |
| 79 | ||
| 80 | static rectangle K053936_cliprect[K053936_MAX_CHIPS] = {{0,0,0,0},{0,0,0,0}}; | |
| 81 | static int K053936_offset[K053936_MAX_CHIPS][2] = {{0,0},{0,0}}; | |
| 82 | static int K053936_clip_enabled[K053936_MAX_CHIPS] = {0,0}; | |
| 83 | ||
| 84 | ||
| 85 | void K053936GP_set_offset(int chip, int xoffs, int yoffs) { K053936_offset[chip][0] = xoffs; K053936_offset[chip][1] = yoffs; } | |
| 86 | ||
| 87 | void K053936GP_clip_enable(int chip, int status) { K053936_clip_enabled[chip] = status; } | |
| 88 | ||
| 89 | void 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 | ||
| 98 | INLINE 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() | |
| 266 | static 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 | ||
| 338 | void 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 | ||
| 344 | void 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 | ||
| 369 | INLINE 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 | |
| 821 | UINT8 konamigx_wrport1_0, konamigx_wrport1_1; | |
| 822 | UINT16 konamigx_wrport2; | |
| 823 | ||
| 824 | // frequently used registers | |
| 825 | static int K053246_objset1; | |
| 826 | static int K053247_vrcbk[4]; | |
| 827 | static int K053247_coreg, K053247_coregshift, K053247_opset; | |
| 828 | static int opri, oinprion; | |
| 829 | static int vcblk[6], ocblk; | |
| 830 | static int vinmix, vmixon, osinmix, osmixon; | |
| 831 | ||
| 832 | ||
| 833 | static 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 | ||
| 874 | INLINE 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 | ||
| 886 | INLINE 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 | ||
| 898 | INLINE 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 | ||
| 909 | void 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 | ||
| 920 | void 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 | ||
| 938 | void 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 | ||
| 956 | void 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 | ||
| 973 | int 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 | ||
| 998 | int 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 | ||
| 1036 | static 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 | ||
| 1089 | static struct GX_OBJ { int order, offs, code, color; } *gx_objpool; | |
| 1090 | static UINT16 *gx_spriteram; | |
| 1091 | static int gx_objdma, gx_primode; | |
| 1092 | ||
| 1093 | // mirrored K053247 and K054338 settings | |
| 1094 | UINT16 *K053247_ram; | |
| 1095 | static gfx_element *K053247_gfx; | |
| 1096 | static void (*K053247_callback)(int *code,int *color,int *priority); | |
| 1097 | static int K053247_dx, K053247_dy; | |
| 1098 | ||
| 1099 | static int *K054338_shdRGB; | |
| 1100 | ||
| 1101 | ||
| 1102 | void K053247GP_set_SpriteOffset(int offsx, int offsy) | |
| 1103 | { | |
| 1104 | K053247_dx = offsx; | |
| 1105 | K053247_dy = offsy; | |
| 1106 | } | |
| 1107 | ||
| 1108 | void 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 | ||
| 1132 | void konamigx_mixer_primode(int mode) | |
| 1133 | { | |
| 1134 | gx_primode = mode; | |
| 1135 | } | |
| 1136 | ||
| 1137 | void konamigx_objdma(void) | |
| 1138 | { | |
| 1139 | if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000); | |
| 1140 | } | |
| 1141 | ||
| 1142 | void 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 | ||
| 42 | 1783 | /* Run and Gun 2 / Rushing Heroes */ |
| 43 | 1784 | static TILE_GET_INFO( get_gx_psac_tile_info ) |
| 44 | 1785 | { |
| 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; | |
| 47 | 1793 | |
| 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; | |
| 51 | 1801 | |
| 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)); | |
| 53 | 1807 | } |
| 54 | 1808 | |
| 55 | /* Soccer Superstars (tile and flip bits now TRUSTED) */ | |
| 56 | static TILE_GET_INFO( get_gx_psac3_tile_info ) | |
| 1809 | UINT32* konamigx_type3_psac2_bank; | |
| 1810 | int konamigx_type3_psac2_actual_bank; | |
| 1811 | int konamigx_type3_psac2_actual_last_bank = 0; | |
| 1812 | ||
| 1813 | WRITE32_HANDLER( konamigx_type3_psac2_bank_w ) | |
| 57 | 1814 | { |
| 58 | int tileno, colour, flip; | |
| 59 | UINT8 *tmap = memory_region(machine, "gfx4"); | |
| 1815 | // other bits are used for something... | |
| 60 | 1816 | |
| 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; | |
| 63 | 1819 | |
| 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 | */ | |
| 69 | 1827 | } |
| 70 | 1828 | |
| 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 | ||
| 71 | 1875 | /* PSAC4 */ |
| 72 | 1876 | /* these tilemaps are weird in both format and content, one of them |
| 73 | 1877 | doesn't really look like it should be displayed? - it's height data */ |
| r6428 | r6429 | |
| 192 | 1996 | |
| 193 | 1997 | gx_rozenable = 0; |
| 194 | 1998 | gx_specialrozenable = 0; |
| 1999 | gx_rushingheroes_hack = 0; | |
| 195 | 2000 | |
| 196 | 2001 | // Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0). |
| 197 | 2002 | // (+ve values move layers to the right and -ve values move layers to the left) |
| r6428 | r6429 | |
| 202 | 2007 | K056832_set_LayerOffset(1, 0, 0); |
| 203 | 2008 | K056832_set_LayerOffset(2, 2, 0); |
| 204 | 2009 | K056832_set_LayerOffset(3, 3, 0); |
| 2010 | ||
| 2011 | konamigx_has_dual_screen = 0; | |
| 2012 | konamigx_current_frame = 0; | |
| 205 | 2013 | } |
| 206 | 2014 | |
| 207 | 2015 | static void _gxcommoninit(running_machine *machine) |
| r6428 | r6429 | |
| 257 | 2065 | |
| 258 | 2066 | VIDEO_START(winspike) |
| 259 | 2067 | { |
| 260 | K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, | |
| 2068 | K056832_vh_start(machine, "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, 2); | |
| 261 | 2069 | K055673_vh_start(machine, "gfx2", K055673_LAYOUT_LE2, -53, -23, konamigx_type2_sprite_callback); |
| 262 | 2070 | |
| 263 | 2071 | _gxcommoninitnosprites(machine); |
| r6428 | r6429 | |
| 301 | 2109 | |
| 302 | 2110 | VIDEO_START(konamigx_type3) |
| 303 | 2111 | { |
| 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); | |
| 305 | 2114 | |
| 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); | |
| 307 | 2117 | |
| 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); | |
| 310 | 2120 | |
| 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 | ||
| 311 | 2136 | 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; | |
| 313 | 2147 | } |
| 314 | 2148 | |
| 315 | 2149 | VIDEO_START(konamigx_type4) |
| 316 | 2150 | { |
| 2151 | int width = video_screen_get_width(machine->primary_screen); | |
| 2152 | int height = video_screen_get_height(machine->primary_screen); | |
| 2153 | ||
| 317 | 2154 | 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 | |
| 318 | 2156 | |
| 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); | |
| 320 | 2159 | |
| 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); | |
| 323 | 2161 | |
| 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 | ||
| 324 | 2171 | 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 | ||
| 326 | 2178 | } |
| 327 | 2179 | |
| 2180 | VIDEO_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 | ||
| 328 | 2214 | VIDEO_START(konamigx_6bpp_2) |
| 329 | 2215 | { |
| 330 | 2216 | K056832_vh_start(machine, "gfx1", K056832_BPP_6, 1, NULL, konamigx_type2_tile_callback, 0); |
| r6428 | r6429 | |
| 427 | 2313 | VIDEO_UPDATE(konamigx) |
| 428 | 2314 | { |
| 429 | 2315 | int i, newbank, newbase, dirty, unchained; |
| 2316 | bitmap_t* realbitmap = bitmap; | |
| 430 | 2317 | |
| 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 | ||
| 431 | 2409 | /* if any banks are different from last render, we need to flush the planes */ |
| 432 | 2410 | for (dirty = 0, i = 0; i < 8; i++) |
| 433 | 2411 | { |
| r6428 | r6429 | |
| 477 | 2455 | if (dirty) K056832_MarkAllTilemapsDirty(); |
| 478 | 2456 | |
| 479 | 2457 | // Type-1 |
| 480 | if (gx_specialrozenable) | |
| 2458 | if (gx_specialrozenable == 1) | |
| 481 | 2459 | { |
| 482 | 2460 | K053936_0_zoom_draw(gxtype1_roz_dstbitmap, &gxtype1_roz_dstbitmapclip,gx_psac_tilemap, 0,0,0); // height data |
| 483 | 2461 | K053936_0_zoom_draw(gxtype1_roz_dstbitmap2,&gxtype1_roz_dstbitmapclip,gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?) |
| 484 | 2462 | } |
| 485 | 2463 | |
| 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 | } | |
| 488 | 2487 | 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 | } | |
| 490 | 2491 | |
| 2492 | ||
| 2493 | ||
| 491 | 2494 | /* Hack! draw type-1 roz layer here for testing purposes only */ |
| 492 | if (gx_specialrozenable) | |
| 2495 | if (gx_specialrozenable == 1) | |
| 493 | 2496 | { |
| 494 | 2497 | const pen_t *paldata = screen->machine->pens; |
| 495 | 2498 | |
| r6428 | r6429 | |
| 523 | 2526 | |
| 524 | 2527 | } |
| 525 | 2528 | |
| 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 | ||
| 526 | 2544 | return 0; |
| 527 | 2545 | } |
| 528 | 2546 | |
| r6428 | r6429 | |
| 546 | 2564 | |
| 547 | 2565 | COMBINE_DATA(&gx_subpaletteram32[offset]); |
| 548 | 2566 | |
| 2567 | r = (gx_subpaletteram32[offset] >>16) & 0xff; | |
| 2568 | g = (gx_subpaletteram32[offset] >> 8) & 0xff; | |
| 2569 | b = (gx_subpaletteram32[offset] >> 0) & 0xff; | |
| 2570 | ||
| 549 | 2571 | offset += (0x8000/4); |
| 550 | 2572 | |
| 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 | ||
| 557 | 2573 | palette_set_color(space->machine,offset,MAKE_RGB(r,g,b)); |
| 558 | 2574 | } |
| 559 | 2575 | |
| 2576 | INLINE 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 | ||
| 560 | 2581 | // main monitor for type 3 |
| 561 | 2582 | WRITE32_HANDLER( konamigx_555_palette_w ) |
| 562 | 2583 | { |
| 2584 | UINT32 coldat; | |
| 563 | 2585 | COMBINE_DATA(&paletteram32[offset]); |
| 564 | paletteram16 = (UINT16 *)paletteram32; | |
| 565 | 2586 | |
| 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); | |
| 570 | 2591 | } |
| 571 | 2592 | |
| 572 | 2593 | // sub monitor for type 3 |
| 573 | 2594 | WRITE32_HANDLER( konamigx_555_palette2_w ) |
| 574 | 2595 | { |
| 2596 | UINT32 coldat; | |
| 575 | 2597 | COMBINE_DATA(&gx_subpaletteram32[offset]); |
| 2598 | coldat = gx_subpaletteram32[offset]; | |
| 2599 | ||
| 576 | 2600 | offset += (0x4000/4); |
| 577 | COMBINE_DATA(&paletteram32[offset]); | |
| 578 | paletteram16 = (UINT16 *)paletteram32; | |
| 579 | 2601 | |
| 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); | |
| 584 | 2604 | } |
| 585 | 2605 | |
| 2606 | ||
| 586 | 2607 | WRITE32_HANDLER( konamigx_tilebank_w ) |
| 587 | 2608 | { |
| 588 | 2609 | if (ACCESSING_BITS_24_31) |
| r6428 | r6429 | |
| 608 | 2629 | { |
| 609 | 2630 | COMBINE_DATA(&gx_psacram[offset]); |
| 610 | 2631 | |
| 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); | |
| 612 | 2634 | } |
| 613 | 2635 |
| r6428 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 2 | ||
| 3 | Blue Print | |
| 4 | ||
| 5 | ***************************************************************************/ | |
| 6 | ||
| 1 | 7 | #include "driver.h" |
| 8 | #include "blueprnt.h" | |
| 2 | 9 | |
| 3 | UINT8 *blueprnt_scrollram; | |
| 4 | static int gfx_bank; | |
| 5 | static tilemap *bg_tilemap; | |
| 6 | 10 | |
| 7 | 11 | /*************************************************************************** |
| 8 | 12 | |
| r6428 | r6429 | |
| 44 | 48 | |
| 45 | 49 | WRITE8_HANDLER( blueprnt_videoram_w ) |
| 46 | 50 | { |
| 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); | |
| 49 | 55 | } |
| 50 | 56 | |
| 51 | 57 | WRITE8_HANDLER( blueprnt_colorram_w ) |
| 52 | 58 | { |
| 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); | |
| 55 | 63 | } |
| 56 | 64 | |
| 57 | 65 | WRITE8_HANDLER( blueprnt_flipscreen_w ) |
| 58 | 66 | { |
| 67 | blueprnt_state *state = (blueprnt_state *)space->machine->driver_data; | |
| 68 | ||
| 59 | 69 | flip_screen_set(space->machine, ~data & 0x02); |
| 60 | 70 | |
| 61 | if (gfx_bank != ((data & 0x04) >> 2)) | |
| 71 | if (state->gfx_bank != ((data & 0x04) >> 2)) | |
| 62 | 72 | { |
| 63 | gfx_bank = ((data & 0x04) >> 2); | |
| 73 | state->gfx_bank = ((data & 0x04) >> 2); | |
| 64 | 74 | tilemap_mark_all_tiles_dirty_all(space->machine); |
| 65 | 75 | } |
| 66 | 76 | } |
| 67 | 77 | |
| 68 | 78 | static TILE_GET_INFO( get_bg_tile_info ) |
| 69 | 79 | { |
| 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; | |
| 72 | 83 | int color = attr & 0x7f; |
| 73 | 84 | |
| 74 | 85 | tileinfo->category = (attr & 0x80) ? 1 : 0; |
| r6428 | r6429 | |
| 78 | 89 | |
| 79 | 90 | VIDEO_START( blueprnt ) |
| 80 | 91 | { |
| 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; | |
| 83 | 93 | |
| 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); | |
| 86 | 99 | } |
| 87 | 100 | |
| 88 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 101 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 89 | 102 | { |
| 103 | blueprnt_state *state = (blueprnt_state *)machine->driver_data; | |
| 90 | 104 | int offs; |
| 91 | 105 | |
| 92 | 106 | for (offs = 0; offs < spriteram_size; offs += 4) |
| 93 | 107 | { |
| 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? | |
| 99 | 113 | |
| 100 | 114 | if (flip_screen_get(machine)) |
| 101 | 115 | { |
| r6428 | r6429 | |
| 106 | 120 | } |
| 107 | 121 | |
| 108 | 122 | // 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); | |
| 110 | 124 | } |
| 111 | 125 | } |
| 112 | 126 | |
| 113 | 127 | VIDEO_UPDATE( blueprnt ) |
| 114 | 128 | { |
| 129 | blueprnt_state *state = (blueprnt_state *)screen->machine->driver_data; | |
| 115 | 130 | int i; |
| 116 | 131 | |
| 117 | 132 | if (flip_screen_get(screen->machine)) |
| 118 | 133 | for (i = 0; i < 32; i++) |
| 119 | tilemap_set_scrolly(bg_tilemap, i, | |
| 134 | tilemap_set_scrolly(state->bg_tilemap, i, s | |
| 120 | 135 | else |
| 121 | 136 | for (i = 0; i < 32; i++) |
| 122 | tilemap_set_scrolly(bg_tilemap, i, | |
| 137 | tilemap_set_scrolly(state->bg_tilemap, i, s | |
| 123 | 138 | |
| 124 | 139 | 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); | |
| 128 | 143 | return 0; |
| 129 | 144 | } |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | #include "driver.h" |
| 2 | #include "pandoras.h" | |
| 2 | 3 | #include "video/resnet.h" |
| 3 | 4 | |
| 4 | static int flipscreen; | |
| 5 | static tilemap *layer0; | |
| 6 | ||
| 7 | 5 | /*********************************************************************** |
| 8 | 6 | |
| 9 | 7 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 22 | 20 | bit 0 -- 1 kohm resistor -- RED |
| 23 | 21 | |
| 24 | 22 | ***************************************************************************/ |
| 23 | ||
| 25 | 24 | PALETTE_INIT( pandoras ) |
| 26 | 25 | { |
| 27 | 26 | static const int resistances_rg[3] = { 1000, 470, 220 }; |
| r6428 | r6429 | |
| 90 | 89 | |
| 91 | 90 | static TILE_GET_INFO( get_tile_info0 ) |
| 92 | 91 | { |
| 93 | UINT8 attr = colorram[tile_index]; | |
| 92 | pandoras_state *state = (pandoras_state *)machine->driver_data; | |
| 93 | UINT8 attr = state->colorram[tile_index]; | |
| 94 | 94 | SET_TILE_INFO( |
| 95 | 95 | 1, |
| 96 | videoram[tile_index] + ((attr & 0x10) << 4), | |
| 96 | state->videoram[tile_index] + ((attr & 0x10) << 4), | |
| 97 | 97 | attr & 0x0f, |
| 98 | 98 | TILE_FLIPYX((attr & 0xc0) >> 6)); |
| 99 | 99 | tileinfo->category = (attr & 0x20) >> 5; |
| r6428 | r6429 | |
| 107 | 107 | |
| 108 | 108 | VIDEO_START( pandoras ) |
| 109 | 109 | { |
| 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); | |
| 111 | 114 | } |
| 112 | 115 | |
| 113 | 116 | /*************************************************************************** |
| r6428 | r6429 | |
| 118 | 121 | |
| 119 | 122 | WRITE8_HANDLER( pandoras_vram_w ) |
| 120 | 123 | { |
| 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; | |
| 123 | 128 | } |
| 124 | 129 | |
| 125 | 130 | WRITE8_HANDLER( pandoras_cram_w ) |
| 126 | 131 | { |
| 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; | |
| 129 | 136 | } |
| 130 | 137 | |
| 131 | 138 | WRITE8_HANDLER( pandoras_scrolly_w ) |
| 132 | 139 | { |
| 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); | |
| 134 | 143 | } |
| 135 | 144 | |
| 136 | 145 | WRITE8_HANDLER( pandoras_flipscreen_w ) |
| 137 | 146 | { |
| 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); | |
| 140 | 151 | } |
| 141 | 152 | |
| 142 | 153 | /*************************************************************************** |
| r6428 | r6429 | |
| 145 | 156 | |
| 146 | 157 | ***************************************************************************/ |
| 147 | 158 | |
| 148 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT8* sr) | |
| 159 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT8* sr ) | |
| 149 | 160 | { |
| 150 | 161 | int offs; |
| 151 | 162 | |
| r6428 | r6429 | |
| 168 | 179 | |
| 169 | 180 | VIDEO_UPDATE( pandoras ) |
| 170 | 181 | { |
| 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); | |
| 174 | 186 | return 0; |
| 175 | 187 | } |
| r6428 | r6429 | |
|---|---|---|
| 242 | 242 | |
| 243 | 243 | static RECTANGLE clip; |
| 244 | 244 | |
| 245 | static UINT8 *TMEM; | |
| 246 | #define tlut ((UINT16*)(TMEM + 0x800)) | |
| 245 | static UINT8 *texture_cache; | |
| 246 | static UINT32 tlut[256]; | |
| 247 | 247 | |
| 248 | 248 | static INT32 k0, k1, k2, k3, k4, k5; |
| 249 | 249 | static UINT8 primitive_lod_frac = 0; |
| r6428 | r6429 | |
| 473 | 473 | if (LOG_RDP_EXECUTION) |
| 474 | 474 | rdp_exec = fopen("rdp_execute.txt", "wt"); |
| 475 | 475 | |
| 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); | |
| 479 | 477 | |
| 480 | 478 | combiner_rgbsub_a_r[0] = combiner_rgbsub_a_r[1] = &one_color.r; |
| 481 | 479 | combiner_rgbsub_a_g[0] = combiner_rgbsub_a_g[1] = &one_color.g; |
| r6428 | r6429 | |
| 1128 | 1126 | } |
| 1129 | 1127 | |
| 1130 | 1128 | 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); | |
| 1133 | 1131 | |
| 1134 | 1132 | if (other_modes.image_read_en) |
| 1135 | 1133 | { |
| r6428 | r6429 | |
| 1335 | 1333 | { |
| 1336 | 1334 | case PIXEL_SIZE_4BIT: |
| 1337 | 1335 | { |
| 1338 | UINT8 *tc = (UINT8*) | |
| 1336 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1339 | 1337 | int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff; |
| 1340 | 1338 | UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4); |
| 1341 | UINT16 c = tlut[(( | |
| 1339 | UINT16 c = tlut[(( | |
| 1342 | 1340 | |
| 1343 | 1341 | if (other_modes.en_tlut) |
| 1344 | 1342 | { |
| r6428 | r6429 | |
| 1363 | 1361 | } |
| 1364 | 1362 | case PIXEL_SIZE_8BIT: |
| 1365 | 1363 | { |
| 1366 | UINT8 *tc = (UINT8*) | |
| 1364 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1367 | 1365 | int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff; |
| 1368 | 1366 | UINT8 p = tc[taddr ^ BYTE_ADDR_XOR]; |
| 1369 | UINT16 c = tlut[ | |
| 1367 | UINT16 c = tlut[ | |
| 1370 | 1368 | |
| 1371 | 1369 | if (other_modes.en_tlut) |
| 1372 | 1370 | { |
| r6428 | r6429 | |
| 1391 | 1389 | } |
| 1392 | 1390 | case PIXEL_SIZE_16BIT: |
| 1393 | 1391 | { |
| 1394 | UINT16 *tc = (UINT16*) | |
| 1392 | UINT16 *tc = (UINT16*)texture_cache; | |
| 1395 | 1393 | int taddr = ((tbase>>1) + ((t) * (twidth>>1)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0); |
| 1396 | 1394 | UINT16 c = tc[(taddr & 0x7ff) ^ WORD_ADDR_XOR]; // PGA European Tour (U) |
| 1397 | 1395 | |
| r6428 | r6429 | |
| 1422 | 1420 | } |
| 1423 | 1421 | case PIXEL_SIZE_32BIT: |
| 1424 | 1422 | { |
| 1425 | UINT32 *tc = (UINT32*) | |
| 1423 | UINT32 *tc = (UINT32*)texture_cache; | |
| 1426 | 1424 | 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 |
| 1427 | 1425 | int taddr = (((tbase >> 2) + ((t) * (twidth >> 1)) + (s)) ^ ((t & 1) ? xorval : 0)) & 0x3ff; |
| 1428 | 1426 | UINT32 c = tc[taddr]; |
| r6428 | r6429 | |
| 1468 | 1466 | INT32 newr = 0; |
| 1469 | 1467 | INT32 newg = 0; |
| 1470 | 1468 | INT32 newb = 0; |
| 1471 | UINT16 *tc = (UINT16*) | |
| 1469 | UINT16 *tc = (UINT16*)texture_cache; | |
| 1472 | 1470 | int taddr = ((tbase >> 1) + ((t) * (twidth)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0); |
| 1473 | 1471 | UINT16 c1, c2; |
| 1474 | 1472 | INT32 y; |
| r6428 | r6429 | |
| 1512 | 1510 | { |
| 1513 | 1511 | case PIXEL_SIZE_4BIT: |
| 1514 | 1512 | { |
| 1515 | UINT8 *tc = (UINT8*) | |
| 1513 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1516 | 1514 | int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff; |
| 1517 | 1515 | UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4); |
| 1518 | UINT16 c = tlut[(( | |
| 1516 | UINT16 c = tlut[(( | |
| 1519 | 1517 | |
| 1520 | 1518 | if (other_modes.en_tlut) |
| 1521 | 1519 | { |
| r6428 | r6429 | |
| 1540 | 1538 | } |
| 1541 | 1539 | case PIXEL_SIZE_8BIT: |
| 1542 | 1540 | { |
| 1543 | UINT8 *tc = (UINT8*) | |
| 1541 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1544 | 1542 | int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0x7ff; |
| 1545 | 1543 | UINT8 p = tc[taddr ^ BYTE_ADDR_XOR]; |
| 1546 | UINT16 c = tlut[ | |
| 1544 | UINT16 c = tlut[ | |
| 1547 | 1545 | |
| 1548 | 1546 | if (other_modes.en_tlut) |
| 1549 | 1547 | { |
| r6428 | r6429 | |
| 1569 | 1567 | case PIXEL_SIZE_16BIT: |
| 1570 | 1568 | { |
| 1571 | 1569 | // 16-bit CI is a "valid" mode; some games use it, it behaves the same as 16-bit RGBA |
| 1572 | UINT16 *tc = (UINT16*) | |
| 1570 | UINT16 *tc = (UINT16*)texture_cache; | |
| 1573 | 1571 | int taddr = ((tbase>>1) + ((t) * (twidth>>1)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0); |
| 1574 | 1572 | UINT16 c = tc[(taddr & 0x7ff) ^ WORD_ADDR_XOR]; // PGA European Tour (U) |
| 1575 | 1573 | |
| r6428 | r6429 | |
| 1611 | 1609 | { |
| 1612 | 1610 | case PIXEL_SIZE_4BIT: |
| 1613 | 1611 | { |
| 1614 | UINT8 *tc = (UINT8*) | |
| 1612 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1615 | 1613 | int taddr = (tbase + ((t) * twidth) + (s >> 1)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0); |
| 1616 | 1614 | UINT8 p = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4); |
| 1617 | 1615 | UINT8 i = ((p & 0xe) << 4) | ((p & 0xe) << 1) | (p & 0xe >> 2); |
| r6428 | r6429 | |
| 1628 | 1626 | UINT16 c = tlut[((tpal << 4) | p) << 2]; |
| 1629 | 1627 | if (!other_modes.tlut_type) |
| 1630 | 1628 | { |
| 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); | |
| 1634 | 1632 | color->a = (c & 1) ? 0xff : 0; |
| 1635 | 1633 | } |
| 1636 | 1634 | else |
| r6428 | r6429 | |
| 1643 | 1641 | } |
| 1644 | 1642 | case PIXEL_SIZE_8BIT: |
| 1645 | 1643 | { |
| 1646 | UINT8 *tc = (UINT8*) | |
| 1644 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1647 | 1645 | int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff; |
| 1648 | 1646 | UINT8 p = tc[taddr ^ BYTE_ADDR_XOR]; |
| 1649 | 1647 | UINT8 i = 0; |
| r6428 | r6429 | |
| 1676 | 1674 | } |
| 1677 | 1675 | case PIXEL_SIZE_16BIT: |
| 1678 | 1676 | { |
| 1679 | UINT16 *tc = (UINT16*) | |
| 1677 | UINT16 *tc = (UINT16*)texture_cache; | |
| 1680 | 1678 | int taddr = ((tbase >> 1) + ((t) * (twidth >> 1)) + (s)) ^ ((t & 1) ? XOR_SWAP_WORD : 0); |
| 1681 | 1679 | UINT16 c = tc[taddr ^ WORD_ADDR_XOR]; |
| 1682 | 1680 | UINT8 i = (c >> 8); |
| r6428 | r6429 | |
| 1721 | 1719 | { |
| 1722 | 1720 | case PIXEL_SIZE_4BIT: |
| 1723 | 1721 | { |
| 1724 | UINT8 *tc = (UINT8*) | |
| 1722 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1725 | 1723 | int taddr = ((tbase + ((t) * twidth) + ((s) / 2)) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff; |
| 1726 | 1724 | UINT8 c = ((s) & 1) ? (tc[taddr ^ BYTE_ADDR_XOR] & 0xf) : (tc[taddr ^ BYTE_ADDR_XOR] >> 4); |
| 1727 | 1725 | c |= (c << 4); |
| r6428 | r6429 | |
| 1753 | 1751 | } |
| 1754 | 1752 | case PIXEL_SIZE_8BIT: |
| 1755 | 1753 | { |
| 1756 | UINT8 *tc = (UINT8*) | |
| 1754 | UINT8 *tc = (UINT8*)texture_cache; | |
| 1757 | 1755 | int taddr = ((tbase + ((t) * twidth) + ((s))) ^ ((t & 1) ? XOR_SWAP_BYTE : 0)) & 0xfff; |
| 1758 | 1756 | UINT8 c = tc[taddr ^ BYTE_ADDR_XOR]; |
| 1759 | 1757 | |
| r6428 | r6429 | |
| 5135 | 5133 | sh = tile[tilenum].sh = ((w2 >> 12) & 0xfff); |
| 5136 | 5134 | th = tile[tilenum].th = w2 & 0xfff; |
| 5137 | 5135 | |
| 5138 | switch (ti_ | |
| 5136 | switch (ti_format) | |
| 5139 | 5137 | { |
| 5140 | case | |
| 5138 | case 0 | |
| 5141 | 5139 | { |
| 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) | |
| 5147 | 5141 | { |
| 5148 | | |
| 5142 | case | |
| 5149 | 5143 | { |
| 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; | |
| 5154 | 5151 | } |
| 5155 | | |
| 5152 | default: fatalerror("RDP: load_tlut: size = %d\n", ti_s | |
| 5156 | 5153 | } |
| 5157 | 5154 | break; |
| 5158 | 5155 | } |
| 5159 | /* | |
| 5160 | case PIXEL_SIZE_16BIT: | |
| 5161 | { | |
| 5162 | UINT16 *src = (UINT16*)&rdram[(ti_address + (tl >> 2) * (ti_width << 1) + (sl >> 1)) >> 2]; | |
| 5163 | 5156 | |
| 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); | |
| 5171 | 5158 | } |
| 5172 | ||
| 5173 | if (TMEM[0x1000] != 25 || TMEM[0x1001] != 25) | |
| 5174 | { | |
| 5175 | stricterror("rdp_load_tlut: TMEM has been written out-of-bounds"); | |
| 5176 | } | |
| 5177 | 5159 | } |
| 5178 | 5160 | |
| 5179 | 5161 | static RDP_COMMAND( rdp_set_tile_size ) |
| r6428 | r6429 | |
| 5229 | 5211 | } |
| 5230 | 5212 | |
| 5231 | 5213 | src = (UINT32*)&ram16[ti_address2 >> 1]; |
| 5232 | tc = (UINT32*) | |
| 5214 | tc = (UINT32*)texture_cache; | |
| 5233 | 5215 | tb = tile[tilenum].tmem >> 2; |
| 5234 | 5216 | |
| 5235 | 5217 | if ((tb + (width >> 2)) > 0x400) |
| r6428 | r6429 | |
| 5342 | 5324 | case PIXEL_SIZE_8BIT: |
| 5343 | 5325 | { |
| 5344 | 5326 | UINT8 *src = (UINT8*)rdram; |
| 5345 | UINT8 *tc = (UINT8*) | |
| 5327 | UINT8 *tc = (UINT8*)texture_cache; | |
| 5346 | 5328 | int tb = tile[tilenum].tmem; |
| 5347 | 5329 | |
| 5348 | 5330 | if (tb + (width * height) > 4096) |
| r6428 | r6429 | |
| 5372 | 5354 | { |
| 5373 | 5355 | UINT16 *src = (UINT16*)rdram; |
| 5374 | 5356 | UINT32 ti_addr16 = ti_address >> 1; |
| 5375 | UINT16 *tc = (UINT16*) | |
| 5357 | UINT16 *tc = (UINT16*)texture_cache; | |
| 5376 | 5358 | int tb = (tile[tilenum].tmem / 2); |
| 5377 | 5359 | int taddr; |
| 5378 | 5360 | |
| r6428 | r6429 | |
| 5412 | 5394 | case PIXEL_SIZE_32BIT: |
| 5413 | 5395 | { |
| 5414 | 5396 | UINT32 *src = (UINT32*)&rdram[ti_address / 4]; |
| 5415 | UINT32 *tc = (UINT32*) | |
| 5397 | UINT32 *tc = (UINT32*)texture_cache; | |
| 5416 | 5398 | int tb = (tile[tilenum].tmem / 4); |
| 5417 | 5399 | int xorval32 = ((fb_size == PIXEL_SIZE_16BIT) ? 2 : 1); |
| 5418 | 5400 |
| r6428 | r6429 | |
|---|---|---|
| 143 | 143 | |
| 144 | 144 | sortlayers(layers, layerpri); |
| 145 | 145 | |
| 146 | K054338_update_all_shadows(screen->machine); | |
| 146 | K054338_update_all_shadows(screen->machine, 0); | |
| 147 | 147 | K054338_fill_backcolor(screen->machine, bitmap, 0); |
| 148 | 148 | |
| 149 | 149 | bitmap_fill(screen->machine->priority_bitmap,cliprect,0); |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "m | |
| 8 | #include "includes/iremz80.h" | |
| 9 | 9 | #include "video/resnet.h" |
| 10 | 10 | |
| 11 | UINT8 *yard_scroll_x_low; | |
| 12 | UINT8 *yard_scroll_x_high; | |
| 13 | UINT8 *yard_scroll_y_low; | |
| 14 | UINT8 *yard_score_panel_disabled; | |
| 15 | static bitmap_t *scroll_panel_bitmap; | |
| 16 | ||
| 17 | static tilemap *bg_tilemap; | |
| 18 | ||
| 19 | 11 | #define SCROLL_PANEL_WIDTH (14*4) |
| 20 | 12 | #define RADAR_PALETTE_BASE (256) |
| 21 | 13 | |
| r6428 | r6429 | |
| 113 | 105 | |
| 114 | 106 | WRITE8_HANDLER( yard_videoram_w ) |
| 115 | 107 | { |
| 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); | |
| 118 | 112 | } |
| 119 | 113 | |
| 120 | 114 | |
| 121 | 115 | WRITE8_HANDLER( yard_scroll_panel_w ) |
| 122 | 116 | { |
| 117 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 118 | ||
| 123 | 119 | int sx,sy,i; |
| 124 | 120 | |
| 125 | 121 | sx = ( offset % 16 ); |
| 126 | 122 | sy = ( offset / 16 ); |
| 127 | 123 | |
| 128 | if (sx < 1 || sx > 14) return; | |
| 124 | if (sx < 1 || sx > 14) | |
| 125 | return; | |
| 129 | 126 | |
| 130 | 127 | sx = 4 * (sx - 1); |
| 131 | 128 | |
| r6428 | r6429 | |
| 136 | 133 | col = (data >> i) & 0x11; |
| 137 | 134 | col = ((col >> 3) | col) & 3; |
| 138 | 135 | |
| 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; | |
| 140 | 137 | } |
| 141 | 138 | } |
| 142 | 139 | |
| r6428 | r6429 | |
| 150 | 147 | |
| 151 | 148 | static TILE_GET_INFO( yard_get_bg_tile_info ) |
| 152 | 149 | { |
| 150 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 151 | ||
| 153 | 152 | 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); | |
| 156 | 155 | int color = attr & 0x1f; |
| 157 | 156 | int flags = (attr & 0x20) ? TILE_FLIPX : 0; |
| 158 | 157 | |
| r6428 | r6429 | |
| 164 | 163 | { |
| 165 | 164 | /* logical (col,row) -> memory offset */ |
| 166 | 165 | if (col >= 32) |
| 167 | return (row+32)*32 + col-32; | |
| 166 | return (row + 32) * 32 + col - 32; | |
| 168 | 167 | else |
| 169 | return row*32 + col; | |
| 168 | return row * 32 + col; | |
| 170 | 169 | } |
| 171 | 170 | |
| 172 | 171 | |
| r6428 | r6429 | |
| 179 | 178 | |
| 180 | 179 | VIDEO_START( yard ) |
| 181 | 180 | { |
| 181 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 182 | ||
| 182 | 183 | int width = video_screen_get_width(machine->primary_screen); |
| 183 | 184 | int height = video_screen_get_height(machine->primary_screen); |
| 184 | 185 | bitmap_format format = video_screen_get_format(machine->primary_screen); |
| 185 | 186 | const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen); |
| 186 | 187 | |
| 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)); | |
| 190 | 191 | |
| 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); | |
| 192 | 193 | } |
| 193 | 194 | |
| 194 | 195 | |
| r6428 | r6429 | |
| 220 | 221 | |
| 221 | 222 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) |
| 222 | 223 | { |
| 224 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 223 | 225 | int offs; |
| 224 | 226 | const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen); |
| 225 | 227 | |
| 226 | 228 | for (offs = spriteram_size - 4; offs >= 0; offs -= 4) |
| 227 | 229 | { |
| 228 | int attr = spriteram[offs + 1]; | |
| 230 | int attr = state->spriteram[offs + 1]; | |
| 229 | 231 | int bank = (attr & 0x20) >> 5; |
| 230 | int code1 = spriteram[offs + 2] & 0xbf; | |
| 232 | int code1 = state->spriteram[offs + 2] & 0xbf; | |
| 231 | 233 | int code2 = 0; |
| 232 | 234 | int color = attr & 0x1f; |
| 233 | 235 | int flipx = attr & 0x40; |
| 234 | 236 | 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]; | |
| 237 | 239 | int sy2 = 0; |
| 238 | 240 | |
| 239 | 241 | if (flipy) |
| r6428 | r6429 | |
| 274 | 276 | |
| 275 | 277 | static void draw_panel( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) |
| 276 | 278 | { |
| 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) | |
| 278 | 282 | { |
| 279 | 283 | static const rectangle clippanel = |
| 280 | 284 | { |
| r6428 | r6429 | |
| 295 | 299 | clip.max_y += visarea->max_y + yoffs; |
| 296 | 300 | sect_rect(&clip, cliprect); |
| 297 | 301 | |
| 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), | |
| 299 | 303 | sx, visarea->min_y + yoffs, &clip); |
| 300 | 304 | } |
| 301 | 305 | } |
| r6428 | r6429 | |
| 310 | 314 | |
| 311 | 315 | VIDEO_UPDATE( yard ) |
| 312 | 316 | { |
| 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; | |
| 315 | 318 | |
| 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); | |
| 317 | 323 | draw_sprites(screen->machine, bitmap, cliprect); |
| 318 | 324 | draw_panel(screen->machine, bitmap, cliprect); |
| 319 | 325 | return 0; |
| r6428 | r6429 | |
|---|---|---|
| 10 | 10 | #include "includes/espial.h" |
| 11 | 11 | |
| 12 | 12 | |
| 13 | UINT8 *marineb_videoram; | |
| 14 | UINT8 *marineb_colorram; | |
| 15 | UINT8 marineb_active_low_flipscreen; | |
| 16 | ||
| 17 | static UINT8 column_scroll; | |
| 18 | static UINT8 palette_bank; | |
| 19 | static UINT8 flipscreen_x; | |
| 20 | static UINT8 flipscreen_y; | |
| 21 | static tilemap *bg_tilemap; | |
| 22 | ||
| 23 | ||
| 24 | ||
| 25 | 13 | /*************************************************************************** |
| 26 | 14 | |
| 27 | 15 | Callbacks for the TileMap code |
| r6428 | r6429 | |
| 30 | 18 | |
| 31 | 19 | static TILE_GET_INFO( get_tile_info ) |
| 32 | 20 | { |
| 33 | UINT8 code = marineb_videoram[tile_index]; | |
| 34 | UINT8 col = marineb_colorram[tile_index]; | |
| 21 | espial_state *state = (espial_state *)machine->driver_data; | |
| 35 | 22 | |
| 23 | UINT8 code = state->videoram[tile_index]; | |
| 24 | UINT8 col = state->colorram[tile_index]; | |
| 25 | ||
| 36 | 26 | SET_TILE_INFO(0, |
| 37 | 27 | code | ((col & 0xc0) << 2), |
| 38 | (col & 0x0f) | (palette_bank << 4), | |
| 28 | (col & 0x0f) | (state->palette_bank << 4), | |
| 39 | 29 | TILE_FLIPXY((col >> 4) & 0x03)); |
| 40 | 30 | } |
| 41 | 31 | |
| r6428 | r6429 | |
| 49 | 39 | |
| 50 | 40 | VIDEO_START( marineb ) |
| 51 | 41 | { |
| 52 | | |
| 42 | esp | |
| 53 | 43 | |
| 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); | |
| 55 | 51 | } |
| 56 | 52 | |
| 57 | 53 | |
| r6428 | r6429 | |
| 64 | 60 | |
| 65 | 61 | WRITE8_HANDLER( marineb_videoram_w ) |
| 66 | 62 | { |
| 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); | |
| 69 | 67 | } |
| 70 | 68 | |
| 71 | 69 | |
| 72 | 70 | WRITE8_HANDLER( marineb_colorram_w ) |
| 73 | 71 | { |
| 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); | |
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | |
| 79 | 79 | WRITE8_HANDLER( marineb_column_scroll_w ) |
| 80 | 80 | { |
| 81 | column_scroll = data; | |
| 81 | espial_state *state = (espial_state *)space->machine->driver_data; | |
| 82 | state->column_scroll = data; | |
| 82 | 83 | } |
| 83 | 84 | |
| 84 | 85 | |
| 85 | 86 | WRITE8_HANDLER( marineb_palette_bank_0_w ) |
| 86 | 87 | { |
| 87 | UINT8 old = palette_bank; | |
| 88 | espial_state *state = (espial_state *)space->machine->driver_data; | |
| 89 | UINT8 old = state->palette_bank; | |
| 88 | 90 | |
| 89 | palette_bank = (palette_bank & 0x02) | ( | |
| 91 | state->palette_bank = (state->palette_bank & 0x02) | ( | |
| 90 | 92 | |
| 91 | if (old != palette_bank) | |
| 93 | if (old != state->palette_bank) | |
| 92 | 94 | { |
| 93 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 95 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 94 | 96 | } |
| 95 | 97 | } |
| 96 | 98 | |
| 97 | 99 | |
| 98 | 100 | WRITE8_HANDLER( marineb_palette_bank_1_w ) |
| 99 | 101 | { |
| 100 | UINT8 old = palette_bank; | |
| 102 | espial_state *state = (espial_state *)space->machine->driver_data; | |
| 103 | UINT8 old = state->palette_bank; | |
| 101 | 104 | |
| 102 | palette_bank = (palette_bank & 0x01) | ((data & 0x01) << 1); | |
| 105 | state->palette_bank = (state->palette_bank & 0x01) | ((data & 0x01) << 1); | |
| 103 | 106 | |
| 104 | if (old != palette_bank) | |
| 107 | if (old != state->palette_bank) | |
| 105 | 108 | { |
| 106 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 109 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 107 | 110 | } |
| 108 | 111 | } |
| 109 | 112 | |
| 110 | 113 | |
| 111 | 114 | WRITE8_HANDLER( marineb_flipscreen_x_w ) |
| 112 | 115 | { |
| 113 | | |
| 116 | es | |
| 114 | 117 | |
| 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)); | |
| 116 | 120 | } |
| 117 | 121 | |
| 118 | 122 | |
| 119 | 123 | WRITE8_HANDLER( marineb_flipscreen_y_w ) |
| 120 | 124 | { |
| 121 | | |
| 125 | es | |
| 122 | 126 | |
| 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)); | |
| 124 | 129 | } |
| 125 | 130 | |
| 126 | 131 | |
| r6428 | r6429 | |
| 131 | 136 | * |
| 132 | 137 | *************************************/ |
| 133 | 138 | |
| 134 | static void set_tilemap_scrolly(int cols) | |
| 139 | static void set_tilemap_scrolly( running_machine *machine, int cols ) | |
| 135 | 140 | { |
| 141 | espial_state *state = (espial_state *)machine->driver_data; | |
| 136 | 142 | int col; |
| 137 | 143 | |
| 138 | 144 | 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); | |
| 140 | 146 | |
| 141 | 147 | for (; col < 32; col++) |
| 142 | tilemap_set_scrolly(bg_tilemap, col, 0); | |
| 148 | tilemap_set_scrolly(state->bg_tilemap, col, 0); | |
| 143 | 149 | } |
| 144 | 150 | |
| 145 | 151 | |
| 146 | 152 | VIDEO_UPDATE( marineb ) |
| 147 | 153 | { |
| 154 | espial_state *state = (espial_state *)screen->machine->driver_data; | |
| 148 | 155 | int offs; |
| 149 | 156 | |
| 157 | set_tilemap_scrolly(screen->machine, 24); | |
| 158 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 150 | 159 | |
| 151 | set_tilemap_scrolly(24); | |
| 152 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 153 | ||
| 154 | ||
| 155 | 160 | /* draw the sprites */ |
| 156 | 161 | for (offs = 0x0f; offs >= 0; offs--) |
| 157 | 162 | { |
| 158 | int gfx,sx,sy,code,col,flipx,flipy,offs2; | |
| 163 | int gfx, sx, sy, code, col, flipx, flipy, offs2; | |
| 159 | 164 | |
| 165 | if ((offs == 0) || (offs == 2)) | |
| 166 | continue; /* no sprites here */ | |
| 160 | 167 | |
| 161 | if ((offs == 0) || (offs == 2)) continue; /* no sprites here */ | |
| 162 | ||
| 163 | ||
| 164 | 168 | if (offs < 8) |
| 165 | { | |
| 166 | 169 | offs2 = 0x0018 + offs; |
| 167 | } | |
| 168 | 170 | else |
| 169 | { | |
| 170 | 171 | offs2 = 0x03d8 - 8 + offs; |
| 171 | } | |
| 172 | 172 | |
| 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; | |
| 179 | 178 | flipy = !(code & 0x01); |
| 180 | 179 | |
| 181 | 180 | if (offs < 4) |
| r6428 | r6429 | |
| 191 | 190 | code >>= 2; |
| 192 | 191 | } |
| 193 | 192 | |
| 194 | if (!flipscreen_y) | |
| 193 | if (!state->flipscreen_y) | |
| 195 | 194 | { |
| 196 | 195 | sy = 256 - screen->machine->gfx[gfx]->width - sy; |
| 197 | 196 | flipy = !flipy; |
| 198 | 197 | } |
| 199 | 198 | |
| 200 | if (flipscreen_x) | |
| 199 | if (state->flipscreen_x) | |
| 201 | 200 | { |
| 202 | 201 | sx++; |
| 203 | 202 | } |
| r6428 | r6429 | |
| 214 | 213 | |
| 215 | 214 | VIDEO_UPDATE( changes ) |
| 216 | 215 | { |
| 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; | |
| 218 | 218 | |
| 219 | set_tilemap_scrolly(screen->machine, 26); | |
| 220 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 219 | 221 | |
| 220 | set_tilemap_scrolly(26); | |
| 221 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 222 | ||
| 223 | ||
| 224 | 222 | /* draw the small sprites */ |
| 225 | 223 | for (offs = 0x05; offs >= 0; offs--) |
| 226 | 224 | { |
| 227 | 225 | int offs2; |
| 228 | 226 | |
| 229 | ||
| 230 | 227 | offs2 = 0x001a + offs; |
| 231 | 228 | |
| 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; | |
| 237 | 234 | flipy = !(code & 0x01); |
| 238 | 235 | |
| 239 | if (!flipscreen_y) | |
| 236 | if (!state->flipscreen_y) | |
| 240 | 237 | { |
| 241 | 238 | sy = 256 - screen->machine->gfx[1]->width - sy; |
| 242 | 239 | flipy = !flipy; |
| 243 | 240 | } |
| 244 | 241 | |
| 245 | if (flipscreen_x) | |
| 242 | if (state->flipscreen_x) | |
| 246 | 243 | { |
| 247 | 244 | sx++; |
| 248 | 245 | } |
| r6428 | r6429 | |
| 256 | 253 | |
| 257 | 254 | /* draw the big sprite */ |
| 258 | 255 | |
| 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; | |
| 264 | 261 | flipy = !(code & 0x01); |
| 265 | 262 | |
| 266 | if (!flipscreen_y) | |
| 263 | if (!state->flipscreen_y) | |
| 267 | 264 | { |
| 268 | 265 | sy = 256 - screen->machine->gfx[2]->width - sy; |
| 269 | 266 | flipy = !flipy; |
| 270 | 267 | } |
| 271 | 268 | |
| 272 | if (flipscreen_x) | |
| 269 | if (state->flipscreen_x) | |
| 273 | 270 | { |
| 274 | 271 | sx++; |
| 275 | 272 | } |
| r6428 | r6429 | |
| 295 | 292 | |
| 296 | 293 | VIDEO_UPDATE( springer ) |
| 297 | 294 | { |
| 295 | espial_state *state = (espial_state *)screen->machine->driver_data; | |
| 298 | 296 | int offs; |
| 299 | 297 | |
| 298 | set_tilemap_scrolly(screen->machine, 0); | |
| 299 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 300 | 300 | |
| 301 | set_tilemap_scrolly(0); | |
| 302 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 303 | ||
| 304 | ||
| 305 | 301 | /* draw the sprites */ |
| 306 | 302 | for (offs = 0x0f; offs >= 0; offs--) |
| 307 | 303 | { |
| 308 | int gfx,sx,sy,code,col,flipx,flipy,offs2; | |
| 304 | int gfx, sx, sy, code, col, flipx, flipy, offs2; | |
| 309 | 305 | |
| 306 | if ((offs == 0) || (offs == 2)) | |
| 307 | continue; /* no sprites here */ | |
| 310 | 308 | |
| 311 | if ((offs == 0) || (offs == 2)) continue; /* no sprites here */ | |
| 312 | ||
| 313 | ||
| 314 | 309 | offs2 = 0x0010 + offs; |
| 315 | 310 | |
| 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; | |
| 321 | 315 | flipx = !(code & 0x02); |
| 322 | 316 | flipy = !(code & 0x01); |
| 323 | 317 | |
| r6428 | r6429 | |
| 335 | 329 | code >>= 2; |
| 336 | 330 | } |
| 337 | 331 | |
| 338 | if (!flipscreen_y) | |
| 332 | if (!state->flipscreen_y) | |
| 339 | 333 | { |
| 340 | 334 | sy = 256 - screen->machine->gfx[gfx]->width - sy; |
| 341 | 335 | flipy = !flipy; |
| 342 | 336 | } |
| 343 | 337 | |
| 344 | if (!flipscreen_x) | |
| 338 | if (!state->flipscreen_x) | |
| 345 | 339 | { |
| 346 | 340 | sx--; |
| 347 | 341 | } |
| r6428 | r6429 | |
| 358 | 352 | |
| 359 | 353 | VIDEO_UPDATE( hoccer ) |
| 360 | 354 | { |
| 355 | espial_state *state = (espial_state *)screen->machine->driver_data; | |
| 361 | 356 | int offs; |
| 362 | 357 | |
| 358 | set_tilemap_scrolly(screen->machine, 0); | |
| 359 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 363 | 360 | |
| 364 | set_tilemap_scrolly(0); | |
| 365 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 366 | ||
| 367 | ||
| 368 | 361 | /* draw the sprites */ |
| 369 | 362 | for (offs = 0x07; offs >= 0; offs--) |
| 370 | 363 | { |
| 371 | int sx,sy,code,col,flipx,flipy,offs2; | |
| 364 | int sx, sy, code, col, flipx, flipy, offs2; | |
| 372 | 365 | |
| 373 | ||
| 374 | 366 | offs2 = 0x0018 + offs; |
| 375 | 367 | |
| 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; | |
| 382 | 373 | flipy = !(code & 0x01); |
| 383 | 374 | |
| 384 | if (!flipscreen_y) | |
| 375 | if (!state->flipscreen_y) | |
| 385 | 376 | { |
| 386 | 377 | sy = 256 - screen->machine->gfx[1]->width - sy; |
| 387 | 378 | flipy = !flipy; |
| 388 | 379 | } |
| 389 | 380 | |
| 390 | if (flipscreen_x) | |
| 381 | if (state->flipscreen_x) | |
| 391 | 382 | { |
| 392 | 383 | sx = 256 - screen->machine->gfx[1]->width - sx; |
| 393 | 384 | flipx = !flipx; |
| r6428 | r6429 | |
| 405 | 396 | |
| 406 | 397 | VIDEO_UPDATE( hopprobo ) |
| 407 | 398 | { |
| 399 | espial_state *state = (espial_state *)screen->machine->driver_data; | |
| 408 | 400 | int offs; |
| 409 | 401 | |
| 402 | set_tilemap_scrolly(screen->machine, 0); | |
| 403 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 410 | 404 | |
| 411 | set_tilemap_scrolly(0); | |
| 412 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 413 | ||
| 414 | ||
| 415 | 405 | /* draw the sprites */ |
| 416 | 406 | for (offs = 0x0f; offs >= 0; offs--) |
| 417 | 407 | { |
| 418 | int gfx,sx,sy,code,col,flipx,flipy,offs2; | |
| 408 | int gfx, sx, sy, code, col, flipx, flipy, offs2; | |
| 419 | 409 | |
| 410 | if ((offs == 0) || (offs == 2)) | |
| 411 | continue; /* no sprites here */ | |
| 420 | 412 | |
| 421 | if ((offs == 0) || (offs == 2)) continue; /* no sprites here */ | |
| 422 | ||
| 423 | ||
| 424 | 413 | offs2 = 0x0010 + offs; |
| 425 | 414 | |
| 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; | |
| 432 | 420 | flipy = !(code & 0x01); |
| 433 | 421 | |
| 434 | 422 | if (offs < 4) |
| r6428 | r6429 | |
| 444 | 432 | code >>= 2; |
| 445 | 433 | } |
| 446 | 434 | |
| 447 | if (!flipscreen_y) | |
| 435 | if (!state->flipscreen_y) | |
| 448 | 436 | { |
| 449 | 437 | sy = 256 - screen->machine->gfx[gfx]->width - sy; |
| 450 | 438 | flipy = !flipy; |
| 451 | 439 | } |
| 452 | 440 | |
| 453 | if (!flipscreen_x) | |
| 441 | if (!state->flipscreen_x) | |
| 454 | 442 | { |
| 455 | 443 | sx--; |
| 456 | 444 | } |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | #include "driver.h" |
| 10 | 10 | #include "includes/arkanoid.h" |
| 11 | 11 | |
| 12 | static UINT8 gfxbank, palettebank; | |
| 13 | 12 | |
| 14 | static tilemap *bg_tilemap; | |
| 15 | ||
| 16 | 13 | WRITE8_HANDLER( arkanoid_videoram_w ) |
| 17 | 14 | { |
| 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); | |
| 20 | 18 | } |
| 21 | 19 | |
| 22 | 20 | WRITE8_HANDLER( arkanoid_d008_w ) |
| 23 | 21 | { |
| 22 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 24 | 23 | int bank; |
| 25 | 24 | |
| 26 | 25 | /* bits 0 and 1 flip X and Y, I don't know which is which */ |
| 27 | 26 | if (flip_screen_x_get(space->machine) != (data & 0x01)) |
| 28 | 27 | { |
| 29 | 28 | 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); | |
| 31 | 30 | } |
| 32 | 31 | |
| 33 | 32 | if (flip_screen_y_get(space->machine) != (data & 0x02)) |
| 34 | 33 | { |
| 35 | 34 | 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); | |
| 37 | 36 | } |
| 38 | 37 | |
| 39 | 38 | /* bit 2 selects the input paddle */ |
| 40 | a | |
| 39 | state-> | |
| 41 | 40 | |
| 42 | 41 | /* bit 3 is coin lockout (but not the service coin) */ |
| 43 | 42 | coin_lockout_w(0, !(data & 0x08)); |
| r6428 | r6429 | |
| 49 | 48 | /* so I don't know which is which. */ |
| 50 | 49 | bank = (data & 0x20) >> 5; |
| 51 | 50 | |
| 52 | if (gfxbank != bank) | |
| 51 | if (state->gfxbank != bank) | |
| 53 | 52 | { |
| 54 | gfxbank = bank; | |
| 55 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 53 | state->gfxbank = bank; | |
| 54 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 56 | 55 | } |
| 57 | 56 | |
| 58 | 57 | bank = (data & 0x40) >> 6; |
| 59 | 58 | |
| 60 | if (palettebank != bank) | |
| 59 | if (state->palettebank != bank) | |
| 61 | 60 | { |
| 62 | palettebank = bank; | |
| 63 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 61 | state->palettebank = bank; | |
| 62 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 64 | 63 | } |
| 65 | 64 | |
| 66 | 65 | /* BM: bit 7 is suspected to be MCU reset, the evidence for this is that |
| r6428 | r6429 | |
| 76 | 75 | /* different hook-up, everything except for bits 0-1 and 7 aren't tested afaik. */ |
| 77 | 76 | WRITE8_HANDLER( tetrsark_d008_w ) |
| 78 | 77 | { |
| 78 | arkanoid_state *state = (arkanoid_state *)space->machine->driver_data; | |
| 79 | 79 | int bank; |
| 80 | 80 | |
| 81 | 81 | /* bits 0 and 1 flip X and Y, I don't know which is which */ |
| 82 | 82 | if (flip_screen_x_get(space->machine) != (data & 0x01)) |
| 83 | 83 | { |
| 84 | 84 | 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); | |
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | if (flip_screen_y_get(space->machine) != (data & 0x02)) |
| 89 | 89 | { |
| 90 | 90 | 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); | |
| 92 | 92 | } |
| 93 | 93 | |
| 94 | 94 | /* bit 2 selects the input paddle? */ |
| 95 | a | |
| 95 | state-> | |
| 96 | 96 | |
| 97 | 97 | /* bit 3-4 is unknown? */ |
| 98 | 98 | |
| r6428 | r6429 | |
| 100 | 100 | /* so I don't know which is which.? */ |
| 101 | 101 | bank = (data & 0x20) >> 5; |
| 102 | 102 | |
| 103 | if (gfxbank != bank) | |
| 103 | if (state->gfxbank != bank) | |
| 104 | 104 | { |
| 105 | gfxbank = bank; | |
| 106 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 105 | state->gfxbank = bank; | |
| 106 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 107 | 107 | } |
| 108 | 108 | |
| 109 | 109 | bank = (data & 0x40) >> 6; |
| 110 | 110 | |
| 111 | if (palettebank != bank) | |
| 111 | if (state->palettebank != bank) | |
| 112 | 112 | { |
| 113 | palettebank = bank; | |
| 114 | tilemap_mark_all_tiles_dirty(bg_tilemap); | |
| 113 | state->palettebank = bank; | |
| 114 | tilemap_mark_all_tiles_dirty(state->bg_tilemap); | |
| 115 | 115 | } |
| 116 | 116 | |
| 117 | 117 | /* bit 7 is coin lockout (but not the service coin) */ |
| r6428 | r6429 | |
| 122 | 122 | |
| 123 | 123 | static TILE_GET_INFO( get_bg_tile_info ) |
| 124 | 124 | { |
| 125 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 125 | 126 | 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; | |
| 128 | 129 | |
| 129 | 130 | SET_TILE_INFO(0, code, color, 0); |
| 130 | 131 | } |
| 131 | 132 | |
| 132 | 133 | VIDEO_START( arkanoid ) |
| 133 | 134 | { |
| 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; | |
| 136 | 136 | |
| 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); | |
| 139 | 138 | } |
| 140 | 139 | |
| 141 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 140 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 142 | 141 | { |
| 142 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 143 | 143 | int offs; |
| 144 | 144 | |
| 145 | for (offs = 0;offs < spriteram_size;offs += 4) | |
| 145 | for (offs = 0; offs < spriteram_size; offs += 4) | |
| 146 | 146 | { |
| 147 | int sx,sy,code; | |
| 147 | int sx, sy, code; | |
| 148 | 148 | |
| 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; | |
| 153 | 155 | |
| 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; | |
| 155 | 157 | |
| 156 | 158 | drawgfx_transpen(bitmap,cliprect,machine->gfx[0], |
| 157 | 159 | 2 * code, |
| 158 | ((spriteram[offs + 2] & 0xf8) >> 3) + 32 * palettebank, | |
| 160 | ((state->spriteram[offs + 2] & 0xf8) >> 3) + 32 * state->palettebank, | |
| 159 | 161 | flip_screen_x_get(machine),flip_screen_y_get(machine), |
| 160 | 162 | sx,sy + (flip_screen_y_get(machine) ? 8 : -8),0); |
| 161 | 163 | drawgfx_transpen(bitmap,cliprect,machine->gfx[0], |
| 162 | 164 | 2 * code + 1, |
| 163 | ((spriteram[offs + 2] & 0xf8) >> 3) + 32 * palettebank, | |
| 165 | ((state->spriteram[offs + 2] & 0xf8) >> 3) + 32 * state->palettebank, | |
| 164 | 166 | flip_screen_x_get(machine),flip_screen_y_get(machine), |
| 165 | 167 | sx,sy,0); |
| 166 | 168 | } |
| r6428 | r6429 | |
| 169 | 171 | |
| 170 | 172 | VIDEO_UPDATE( arkanoid ) |
| 171 | 173 | { |
| 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); | |
| 173 | 177 | draw_sprites(screen->machine, bitmap, cliprect); |
| 174 | 178 | return 0; |
| 175 | 179 | } |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "brkthru.h" | |
| 8 | 9 | |
| 9 | 10 | |
| 10 | //UINT8 *brkthru_scroll; | |
| 11 | UINT8 *brkthru_videoram; | |
| 12 | size_t brkthru_videoram_size; | |
| 13 | static int bgscroll; | |
| 14 | static int bgbasecolor; | |
| 15 | static int flipscreen; | |
| 16 | ||
| 17 | static tilemap *fg_tilemap; | |
| 18 | static tilemap *bg_tilemap; | |
| 19 | ||
| 20 | ||
| 21 | 11 | /*************************************************************************** |
| 22 | 12 | |
| 23 | 13 | Convert the color PROMs into a more useable format. |
| r6428 | r6429 | |
| 41 | 31 | bit 0 -- 2.2kohm resistor -- BLUE |
| 42 | 32 | |
| 43 | 33 | ***************************************************************************/ |
| 34 | ||
| 44 | 35 | PALETTE_INIT( brkthru ) |
| 45 | 36 | { |
| 46 | 37 | int i; |
| 47 | 38 | |
| 48 | ||
| 49 | for (i = 0;i < machine->config->total_colors;i++) | |
| 39 | for (i = 0; i < machine->config->total_colors; i++) | |
| 50 | 40 | { |
| 51 | int bit0,bit1,bit2,bit3,r,g,b; | |
| 41 | int bit0, bit1, bit2, bit3, r, g, b; | |
| 52 | 42 | |
| 53 | ||
| 54 | 43 | bit0 = (color_prom[0] >> 0) & 0x01; |
| 55 | 44 | bit1 = (color_prom[0] >> 1) & 0x01; |
| 56 | 45 | bit2 = (color_prom[0] >> 2) & 0x01; |
| r6428 | r6429 | |
| 67 | 56 | bit3 = (color_prom[machine->config->total_colors] >> 3) & 0x01; |
| 68 | 57 | b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3; |
| 69 | 58 | |
| 70 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); | |
| 59 | palette_set_color(machine, i, MAKE_RGB(r,g,b)); | |
| 71 | 60 | |
| 72 | 61 | color_prom++; |
| 73 | 62 | } |
| r6428 | r6429 | |
| 83 | 72 | |
| 84 | 73 | static TILE_GET_INFO( get_bg_tile_info ) |
| 85 | 74 | { |
| 75 | brkthru_state *state = (brkthru_state *)machine->driver_data; | |
| 86 | 76 | /* BG RAM format |
| 87 | 77 | 0 1 |
| 88 | 78 | ---- -c-- ---- ---- = Color |
| 89 | 79 | ---- --xx xxxx xxxx = Code |
| 90 | 80 | */ |
| 91 | 81 | |
| 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; | |
| 93 | 83 | 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); | |
| 95 | 85 | |
| 96 | SET_TILE_INFO(region, code & 0x7f,colour,0); | |
| 86 | SET_TILE_INFO(region, code & 0x7f, colour,0); | |
| 97 | 87 | } |
| 98 | 88 | |
| 99 | 89 | WRITE8_HANDLER( brkthru_bgram_w ) |
| 100 | 90 | { |
| 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); | |
| 103 | 95 | } |
| 104 | 96 | |
| 105 | 97 | |
| 106 | 98 | static TILE_GET_INFO( get_fg_tile_info ) |
| 107 | 99 | { |
| 108 | UINT8 code = brkthru_videoram[tile_index]; | |
| 100 | brkthru_state *state = (brkthru_state *)machine->driver_data; | |
| 101 | UINT8 code = state->fg_videoram[tile_index]; | |
| 109 | 102 | SET_TILE_INFO(0, code, 0, 0); |
| 110 | 103 | } |
| 111 | 104 | |
| 112 | 105 | WRITE8_HANDLER( brkthru_fgram_w ) |
| 113 | 106 | { |
| 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); | |
| 116 | 111 | } |
| 117 | 112 | |
| 118 | 113 | VIDEO_START( brkthru ) |
| 119 | 114 | { |
| 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; | |
| 122 | 116 | |
| 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); | |
| 125 | 126 | } |
| 126 | 127 | |
| 127 | 128 | |
| 128 | ||
| 129 | 129 | WRITE8_HANDLER( brkthru_1800_w ) |
| 130 | 130 | { |
| 131 | brkthru_state *state = (brkthru_state *)space->machine->driver_data; | |
| 132 | ||
| 131 | 133 | if (offset == 0) /* low 8 bits of scroll */ |
| 132 | bgscroll = (bgscroll & 0x100) | data; | |
| 134 | state->bgscroll = (state->bgscroll & 0x100) | data; | |
| 133 | 135 | else if (offset == 1) |
| 134 | 136 | { |
| 135 | int bankaddress; | |
| 136 | UINT8 *RAM = memory_region(space->machine, "maincpu"); | |
| 137 | ||
| 138 | ||
| 139 | 137 | /* 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); | |
| 142 | 139 | |
| 143 | 140 | /* bit 3-5 = background tiles color code */ |
| 144 | if (((data & 0x38) >> 2) != bgbasecolor) | |
| 141 | if (((data & 0x38) >> 2) != state->bgbasecolor) | |
| 145 | 142 | { |
| 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); | |
| 148 | 145 | } |
| 149 | 146 | |
| 150 | 147 | /* bit 6 = screen flip */ |
| 151 | if (flipscreen != (data & 0x40)) | |
| 148 | if (state->flipscreen != (data & 0x40)) | |
| 152 | 149 | { |
| 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); | |
| 156 | 153 | |
| 157 | 154 | } |
| 158 | 155 | |
| 159 | 156 | /* bit 7 = high bit of scroll */ |
| 160 | bgscroll = (bgscroll & 0xff) | ((data & 0x80) << 1); | |
| 157 | state->bgscroll = (state->bgscroll & 0xff) | ((data & 0x80) << 1); | |
| 161 | 158 | } |
| 162 | 159 | } |
| 163 | 160 | |
| r6428 | r6429 | |
| 173 | 170 | #endif |
| 174 | 171 | |
| 175 | 172 | |
| 176 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int prio ) | |
| 173 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int prio ) | |
| 177 | 174 | { |
| 175 | brkthru_state *state = (brkthru_state *)machine->driver_data; | |
| 178 | 176 | int offs; |
| 179 | 177 | /* Draw the sprites. Note that it is important to draw them exactly in this */ |
| 180 | 178 | /* order, to have the correct priorities. */ |
| r6428 | r6429 | |
| 193 | 191 | |
| 194 | 192 | for (offs = 0;offs < spriteram_size; offs += 4) |
| 195 | 193 | { |
| 196 | if ((spriteram[offs] & 0x09) == prio) /* Enable && Low Priority */ | |
| 194 | if ((state->spriteram[offs] & 0x09) == prio) /* Enable && Low Priority */ | |
| 197 | 195 | { |
| 198 | int sx,sy,code,color; | |
| 196 | int sx, sy, code, color; | |
| 199 | 197 | |
| 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) | |
| 206 | 206 | { |
| 207 | 207 | sx = 240 - sx; |
| 208 | 208 | sy = 240 - sy; |
| 209 | 209 | } |
| 210 | 210 | |
| 211 | if (spriteram[offs] & 0x10) /* double height */ | |
| 211 | if (state->spriteram[offs] & 0x10) /* double height */ | |
| 212 | 212 | { |
| 213 | 213 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 214 | 214 | code & ~1, |
| 215 | 215 | 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); | |
| 218 | 218 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 219 | 219 | code | 1, |
| 220 | 220 | color, |
| 221 | flipscreen,flipscreen, | |
| 221 | state->flipscreen, state->flipscreen, | |
| 222 | 222 | sx,sy,0); |
| 223 | 223 | |
| 224 | 224 | /* redraw with wraparound */ |
| 225 | 225 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 226 | 226 | code & ~1, |
| 227 | 227 | 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); | |
| 230 | 230 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 231 | 231 | code | 1, |
| 232 | 232 | color, |
| 233 | flipscreen,flipscreen, | |
| 233 | state->flipscreen, state->flipscreen, | |
| 234 | 234 | sx,sy + 256,0); |
| 235 | 235 | |
| 236 | 236 | } |
| r6428 | r6429 | |
| 239 | 239 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 240 | 240 | code, |
| 241 | 241 | color, |
| 242 | flipscreen,flipscreen, | |
| 242 | state->flipscreen, state->flipscreen, | |
| 243 | 243 | sx,sy,0); |
| 244 | 244 | |
| 245 | 245 | /* redraw with wraparound */ |
| 246 | 246 | drawgfx_transpen(bitmap,cliprect,machine->gfx[9], |
| 247 | 247 | code, |
| 248 | 248 | color, |
| 249 | flipscreen,flipscreen, | |
| 249 | state->flipscreen, state->flipscreen, | |
| 250 | 250 | sx,sy + 256,0); |
| 251 | 251 | |
| 252 | 252 | } |
| r6428 | r6429 | |
| 255 | 255 | } |
| 256 | 256 | |
| 257 | 257 | VIDEO_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; | |
| 261 | 260 | |
| 261 | tilemap_set_scrollx(state->bg_tilemap, 0, state->bgscroll); | |
| 262 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_OPAQUE, 0); | |
| 263 | ||
| 262 | 264 | /* low priority sprites */ |
| 263 | draw_sprites(screen->machine, bitmap, cliprect, 0x01 | |
| 265 | draw_sprites(screen->machine, bitmap, cliprect, 0x01 | |
| 264 | 266 | |
| 265 | 267 | /* 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); | |
| 267 | 269 | |
| 268 | 270 | /* high priority sprites */ |
| 269 | draw_sprites(screen->machine, bitmap, cliprect, 0x09 | |
| 271 | draw_sprites(screen->machine, bitmap, cliprect, 0x09 | |
| 270 | 272 | |
| 271 | 273 | /* fg layer */ |
| 272 | tilemap_draw(bitmap,cliprect,fg_tilemap,0,0); | |
| 274 | tilemap_draw(bitmap, cliprect, state->fg_tilemap, 0, 0); | |
| 273 | 275 | |
| 274 | /* show_register(bitmap,8,8,(UINT32)flipscreen); */ | |
| 276 | /* show_register(bitmap, 8, 8, (UINT32)state->flipscreen); */ | |
| 275 | 277 | |
| 276 | 278 | return 0; |
| 277 | 279 | } |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | ***************************************************************************/ |
| 6 | 6 | |
| 7 | 7 | #include "driver.h" |
| 8 | #include "battlane.h" | |
| 8 | 9 | |
| 9 | UINT8 *battlane_spriteram; | |
| 10 | UINT8 *battlane_tileram; | |
| 11 | ||
| 12 | static tilemap *bg_tilemap; | |
| 13 | ||
| 14 | static int battlane_video_ctrl; | |
| 15 | extern int battlane_cpu_control; | |
| 16 | ||
| 17 | static bitmap_t *screen_bitmap; | |
| 18 | ||
| 19 | 10 | /* |
| 20 | 11 | Video control register |
| 21 | 12 | |
| r6428 | r6429 | |
| 26 | 17 | |
| 27 | 18 | WRITE8_HANDLER( battlane_palette_w ) |
| 28 | 19 | { |
| 20 | battlane_state *state = (battlane_state *)space->machine->driver_data; | |
| 29 | 21 | int r, g, b; |
| 30 | 22 | int bit0, bit1, bit2; |
| 31 | 23 | |
| r6428 | r6429 | |
| 45 | 37 | |
| 46 | 38 | /* blue component */ |
| 47 | 39 | |
| 48 | bit0 = (~ | |
| 40 | bit0 = (~s | |
| 49 | 41 | bit1 = (~data >> 6) & 0x01; |
| 50 | 42 | bit2 = (~data >> 7) & 0x01; |
| 51 | 43 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| r6428 | r6429 | |
| 55 | 47 | |
| 56 | 48 | WRITE8_HANDLER( battlane_scrollx_w ) |
| 57 | 49 | { |
| 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); | |
| 59 | 52 | } |
| 60 | 53 | |
| 61 | 54 | WRITE8_HANDLER( battlane_scrolly_w ) |
| 62 | 55 | { |
| 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); | |
| 64 | 58 | } |
| 65 | 59 | |
| 66 | 60 | WRITE8_HANDLER( battlane_tileram_w ) |
| 67 | 61 | { |
| 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); | |
| 70 | 65 | } |
| 71 | 66 | |
| 72 | 67 | WRITE8_HANDLER( battlane_spriteram_w ) |
| 73 | 68 | { |
| 74 | battlane_spriteram[offset] = data; | |
| 69 | battlane_state *state = (battlane_state *)space->machine->driver_data; | |
| 70 | state->spriteram[offset] = data; | |
| 75 | 71 | } |
| 76 | 72 | |
| 77 | 73 | WRITE8_HANDLER( battlane_bitmap_w ) |
| 78 | 74 | { |
| 75 | battlane_state *state = (battlane_state *)space->machine->driver_data; | |
| 79 | 76 | int i, orval; |
| 80 | 77 | |
| 81 | ||
| 78 | | |
| 82 | 79 | |
| 83 | 80 | if (!orval) |
| 84 | 81 | orval = 7; |
| r6428 | r6429 | |
| 87 | 84 | { |
| 88 | 85 | if (data & 1 << i) |
| 89 | 86 | { |
| 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; | |
| 91 | 88 | } |
| 92 | 89 | else |
| 93 | 90 | { |
| 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; | |
| 95 | 92 | } |
| 96 | 93 | } |
| 97 | 94 | } |
| 98 | 95 | |
| 99 | 96 | WRITE8_HANDLER( battlane_video_ctrl_w ) |
| 100 | 97 | { |
| 101 | battlane_video_ctrl = data; | |
| 98 | battlane_state *state = (battlane_state *)space->machine->driver_data; | |
| 99 | state->video_ctrl = data; | |
| 102 | 100 | } |
| 103 | 101 | |
| 104 | 102 | static TILE_GET_INFO( get_tile_info_bg ) |
| 105 | 103 | { |
| 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]; | |
| 108 | 107 | int gfxn = (attr & 0x01) + 1; |
| 109 | 108 | int color = (attr >> 1) & 0x03; |
| 110 | 109 | |
| r6428 | r6429 | |
| 141 | 140 | Start the video hardware emulation. |
| 142 | 141 | |
| 143 | 142 | ***************************************************************************/ |
| 143 | ||
| 144 | 144 | VIDEO_START( battlane ) |
| 145 | 145 | { |
| 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); | |
| 148 | 149 | |
| 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); | |
| 150 | 152 | } |
| 151 | 153 | |
| 152 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 154 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 153 | 155 | { |
| 156 | battlane_state *state = (battlane_state *)machine->driver_data; | |
| 154 | 157 | int offs, attr, code, color, sx, sy, flipx, flipy, dy; |
| 155 | 158 | |
| 156 | 159 | for (offs = 0; offs < 0x100; offs += 4) |
| r6428 | r6429 | |
| 166 | 169 | 0x01 = Sprite Enable |
| 167 | 170 | */ |
| 168 | 171 | |
| 169 | attr = battlane_spriteram[offs + 1]; | |
| 170 | code = battlane_spriteram[offs + 3]; | |
| 172 | attr = state->spriteram[offs + 1]; | |
| 173 | code = state->spriteram[offs + 3]; | |
| 171 | 174 | |
| 172 | 175 | code += 256 * ((attr >> 6) & 0x02); |
| 173 | 176 | code += 256 * ((attr >> 5) & 0x01); |
| r6428 | r6429 | |
| 176 | 179 | { |
| 177 | 180 | color = (attr >> 3) & 0x01; |
| 178 | 181 | |
| 179 | sx = battlane_spriteram[offs + 2]; | |
| 180 | sy = battlane_spriteram[offs]; | |
| 182 | sx = state->spriteram[offs + 2]; | |
| 183 | sy = state->spriteram[offs]; | |
| 181 | 184 | |
| 182 | 185 | flipx = attr & 0x04; |
| 183 | 186 | flipy = attr & 0x02; |
| r6428 | r6429 | |
| 212 | 215 | } |
| 213 | 216 | } |
| 214 | 217 | |
| 215 | static void draw_fg_bitmap(running_machine *machine, bitmap_t *bitmap ) | |
| 218 | static void draw_fg_bitmap( running_machine *machine, bitmap_t *bitmap ) | |
| 216 | 219 | { |
| 220 | battlane_state *state = (battlane_state *)machine->driver_data; | |
| 217 | 221 | int x, y, data; |
| 218 | 222 | |
| 219 | 223 | for (y = 0; y < 32 * 8; y++) |
| 220 | 224 | { |
| 221 | 225 | for (x = 0; x < 32 * 8; x++) |
| 222 | 226 | { |
| 223 | data = *BITMAP_ADDR8(screen_bitmap, y, x); | |
| 227 | data = *BITMAP_ADDR8(state->screen_bitmap, y, x); | |
| 224 | 228 | |
| 225 | 229 | if (data) |
| 226 | 230 | { |
| r6428 | r6429 | |
| 235 | 239 | |
| 236 | 240 | VIDEO_UPDATE( battlane ) |
| 237 | 241 | { |
| 238 | t | |
| 242 | battl | |
| 239 | 243 | |
| 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); | |
| 241 | 247 | draw_sprites(screen->machine, bitmap, cliprect); |
| 242 | 248 | draw_fg_bitmap(screen->machine, bitmap); |
| 243 | 249 | return 0; |
| r6428 | r6429 | |
|---|---|---|
| 395 | 395 | case 0x09: |
| 396 | 396 | case 0x0a: |
| 397 | 397 | case 0x0b: |
| 398 | device = devtag_get_device(space->machine, "sn"); | |
| 398 | device = devtag_get_device(space->machine, "snsnd"); | |
| 399 | 399 | if (device != NULL && ACCESSING_BITS_0_7) |
| 400 | 400 | sn76496_w(device, 0, data & 0xff); |
| 401 | 401 | break; |
| r6428 | r6429 | |
|---|---|---|
| 13 | 13 | #include "driver.h" |
| 14 | 14 | #include "m10.h" |
| 15 | 15 | |
| 16 | static tilemap * tx_tilemap; | |
| 17 | static gfx_element * back_gfx; | |
| 18 | static UINT32 extyoffs[32*8]; | |
| 16 | static UINT32 extyoffs[32 * 8]; // FIXME: this should be moved to m10_state, but backlayout would have problems | |
| 19 | 17 | |
| 18 | ||
| 20 | 19 | static const gfx_layout backlayout = |
| 21 | 20 | { |
| 22 | 21 | 8,8*32, /* 8*(8*32) characters */ |
| r6428 | r6429 | |
| 40 | 39 | 8*8 /* every char takes 8 consecutive bytes */ |
| 41 | 40 | }; |
| 42 | 41 | |
| 43 | static UINT32 tilemap_scan(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) | |
| 42 | static UINT32 tilemap_scan( UINT32 col, UINT32 row, UINT32 num_cols, UINT32 num_rows ) | |
| 44 | 43 | { |
| 45 | return (31-col)*32 + row; | |
| 44 | return (31 - col) * 32 + row; | |
| 46 | 45 | } |
| 47 | 46 | |
| 48 | 47 | |
| 49 | static void get_tile_info(running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, void *param) | |
| 48 | static void get_tile_info( running_machine *machine, tile_data *tileinfo, tilemap_memory_index tile_index, void *param ) | |
| 50 | 49 | { |
| 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); | |
| 52 | 53 | } |
| 53 | 54 | |
| 54 | 55 | |
| 55 | 56 | WRITE8_HANDLER( m10_colorram_w ) |
| 56 | 57 | { |
| 57 | if (colorram[offset] != data) | |
| 58 | m10_state *state = (m10_state *)space->machine->driver_data; | |
| 59 | ||
| 60 | if (state->colorram[offset] != data) | |
| 58 | 61 | { |
| 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; | |
| 61 | 64 | } |
| 62 | 65 | } |
| 63 | 66 | |
| r6428 | r6429 | |
| 69 | 72 | if (state->chargen[offset] != data) |
| 70 | 73 | { |
| 71 | 74 | 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)); | |
| 73 | 76 | } |
| 74 | 77 | } |
| 75 | 78 | |
| r6428 | r6429 | |
| 81 | 84 | if (state->chargen[offset] != data) |
| 82 | 85 | { |
| 83 | 86 | 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); | |
| 85 | 88 | } |
| 86 | 89 | } |
| 87 | 90 | |
| 88 | 91 | |
| 89 | INLINE void plot_pixel_m10(running_machine *machine, bitmap_t *bm, int x, int y, int col) | |
| 92 | INLINE void plot_pixel_m10( running_machine *machine, bitmap_t *bm, int x, int y, int col ) | |
| 90 | 93 | { |
| 91 | 94 | m10_state *state = (m10_state *)machine->driver_data; |
| 92 | 95 | |
| 93 | 96 | if (!state->flip) |
| 94 | 97 | *BITMAP_ADDR16(bm, y, x) = col; |
| 95 | 98 | 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(?) | |
| 98 | 101 | } |
| 99 | 102 | |
| 100 | 103 | VIDEO_START( m10 ) |
| r6428 | r6429 | |
| 102 | 105 | m10_state *state = (m10_state *)machine->driver_data; |
| 103 | 106 | int i; |
| 104 | 107 | |
| 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; | |
| 107 | 110 | |
| 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); | |
| 112 | 115 | |
| 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); | |
| 114 | 117 | |
| 115 | machine->gfx[1] = back_gfx; | |
| 118 | machine->gfx[1] = state->back_gfx; | |
| 116 | 119 | return ; |
| 117 | 120 | } |
| 118 | 121 | |
| r6428 | r6429 | |
| 122 | 125 | |
| 123 | 126 | machine->gfx[0] = gfx_element_alloc(machine, &charlayout, state->chargen, 8, 0); |
| 124 | 127 | |
| 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); | |
| 128 | 131 | |
| 129 | 132 | return ; |
| 130 | 133 | } |
| r6428 | r6429 | |
| 134 | 137 | Draw the game screen in the given bitmap_t. |
| 135 | 138 | |
| 136 | 139 | ***************************************************************************/ |
| 140 | ||
| 137 | 141 | VIDEO_UPDATE( m10 ) |
| 138 | 142 | { |
| 139 | 143 | m10_state *state = (m10_state *)screen->machine->driver_data; |
| r6428 | r6429 | |
| 142 | 146 | static const int xpos[4] = { 4*8, 26*8, 7*8, 6*8}; |
| 143 | 147 | int i; |
| 144 | 148 | |
| 145 | bitmap_fill(bitmap,cliprect,0); | |
| 149 | bitmap_fill(bitmap, cliprect, 0); | |
| 146 | 150 | |
| 147 | for (i=0;i<4;i++) | |
| 151 | for (i = 0; i < 4; i++) | |
| 148 | 152 | 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); | |
| 150 | 154 | 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); | |
| 152 | 156 | |
| 153 | 157 | if (state->bottomline) |
| 154 | 158 | { |
| 155 | 159 | int y; |
| 156 | 160 | |
| 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); | |
| 159 | 163 | } |
| 160 | 164 | |
| 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); | |
| 163 | 167 | |
| 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); | |
| 166 | 170 | |
| 167 | 171 | return 0; |
| 168 | 172 | } |
| r6428 | r6429 | |
| 173 | 177 | Draw the game screen in the given bitmap_t. |
| 174 | 178 | |
| 175 | 179 | ***************************************************************************/ |
| 180 | ||
| 176 | 181 | VIDEO_UPDATE( m15 ) |
| 177 | 182 | { |
| 178 | 183 | m10_state *state = (m10_state *)screen->machine->driver_data; |
| 179 | 184 | int offs; |
| 180 | 185 | |
| 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); | |
| 183 | 188 | |
| 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); | |
| 187 | 192 | |
| 188 | 193 | return 0; |
| 189 | 194 | } |
| 190 |
| r6428 | r6429 | |
|---|---|---|
| 1444 | 1444 | AM_RANGE(0x2800, 0x2800) AM_RAM // W |
| 1445 | 1445 | AM_RANGE(0x2A00, 0x2A02) AM_READWRITE(latch_r, latch_w) |
| 1446 | 1446 | 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) | |
| 1449 | 1449 | AM_RANGE(0x3404, 0x3404) AM_DEVREADWRITE("acia6850_1", acia6850_stat_r, acia6850_ctrl_w) |
| 1450 | 1450 | AM_RANGE(0x3405, 0x3405) AM_DEVREADWRITE("acia6850_1", acia6850_data_r, acia6850_data_w) |
| 1451 | 1451 | AM_RANGE(0x3406, 0x3406) AM_DEVREADWRITE("acia6850_2", acia6850_stat_r, acia6850_ctrl_w) |
| r6428 | r6429 | |
| 1759 | 1759 | |
| 1760 | 1760 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1761 | 1761 | |
| 1762 | MDRV_SOUND_ADD("ay", AY8910, M6809_XTAL) | |
| 1762 | MDRV_SOUND_ADD("aysnd", AY8910, M6809_XTAL) | |
| 1763 | 1763 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 1764 | 1764 | |
| 1765 | 1765 | MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) |
| r6428 | r6429 | |
|---|---|---|
| 373 | 373 | The Mahjong games and Block Block need special input treatment */ |
| 374 | 374 | AM_RANGE(0x01, 0x01) AM_WRITE(input_w) |
| 375 | 375 | 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) | |
| 378 | 378 | AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE("oki", okim6295_w) |
| 379 | 379 | AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */ |
| 380 | 380 | AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */ |
| r6428 | r6429 | |
| 399 | 399 | AM_RANGE(0x00, 0x02) AM_READ(input_r) /* Super Pang needs a kludge to initialize EEPROM. */ |
| 400 | 400 | AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */ |
| 401 | 401 | 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) | |
| 404 | 404 | AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) |
| 405 | 405 | AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */ |
| 406 | 406 | AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */ |
| r6428 | r6429 | |
| 1117 | 1117 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified |
| 1118 | 1118 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1119 | 1119 | |
| 1120 | MDRV_SOUND_ADD("ym", YM2413, 4000000) | |
| 1120 | MDRV_SOUND_ADD("ymsnd", YM2413, 4000000) | |
| 1121 | 1121 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1122 | 1122 | MACHINE_DRIVER_END |
| 1123 | 1123 | |
| r6428 | r6429 | |
| 1153 | 1153 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 verified |
| 1154 | 1154 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1155 | 1155 | |
| 1156 | MDRV_SOUND_ADD("ym",YM2413, XTAL_16MHz/4) /* verified on pcb */ | |
| 1156 | MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_16MHz/4) /* verified on pcb */ | |
| 1157 | 1157 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1158 | 1158 | MACHINE_DRIVER_END |
| 1159 | 1159 | |
| r6428 | r6429 | |
| 1283 | 1283 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified |
| 1284 | 1284 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1285 | 1285 | |
| 1286 | MDRV_SOUND_ADD("ym", YM2413, 4000000) | |
| 1286 | MDRV_SOUND_ADD("ymsnd", YM2413, 4000000) | |
| 1287 | 1287 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1288 | 1288 | MACHINE_DRIVER_END |
| 1289 | 1289 |
| r6428 | r6429 | |
|---|---|---|
| 391 | 391 | AM_RANGE(0x9800, 0x9800) AM_READNOP // ??? |
| 392 | 392 | AM_RANGE(0xa000, 0xa000) AM_WRITE(bublbobl_sh_nmi_disable_w) |
| 393 | 393 | 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) | |
| 395 | 395 | AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM? |
| 396 | 396 | ADDRESS_MAP_END |
| 397 | 397 | |
| r6428 | r6429 | |
| 720 | 720 | // sound hardware |
| 721 | 721 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 722 | 722 | |
| 723 | MDRV_SOUND_ADD("ym", YM2203, MAIN_XTAL/8) | |
| 723 | MDRV_SOUND_ADD("ymsnd", YM2203, MAIN_XTAL/8) | |
| 724 | 724 | MDRV_SOUND_CONFIG(ym2203_config) |
| 725 | 725 | MDRV_SOUND_ROUTE(0, "mono", 0.08) |
| 726 | 726 | MDRV_SOUND_ROUTE(1, "mono", 0.08) |
| r6428 | r6429 | |
|---|---|---|
| 197 | 197 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 198 | 198 | AM_RANGE(0x00, 0x00) AM_READ(question_r) |
| 199 | 199 | 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) | |
| 202 | 202 | AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) |
| 203 | 203 | AM_RANGE(0x50, 0x53) AM_READNOP |
| 204 | 204 | AM_RANGE(0x50, 0x53) AM_WRITENOP |
| r6428 | r6429 | |
| 215 | 215 | AM_RANGE(0x00, 0x03) AM_WRITE(question_w) |
| 216 | 216 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_address_w) |
| 217 | 217 | 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) | |
| 220 | 220 | AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) //? |
| 221 | 221 | AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w) |
| 222 | 222 | AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pia2", pia6821_r, pia6821_w) |
| r6428 | r6429 | |
| 239 | 239 | AM_RANGE(0x68, 0x69) AM_READNOP |
| 240 | 240 | AM_RANGE(0x68, 0x6b) AM_WRITENOP |
| 241 | 241 | 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) | |
| 244 | 244 | AM_RANGE(0xc0, 0xc1) AM_READNOP |
| 245 | 245 | AM_RANGE(0xc0, 0xc3) AM_WRITENOP |
| 246 | 246 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 249 | 249 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 250 | 250 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_address_w) |
| 251 | 251 | 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) | |
| 254 | 254 | AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) /* confirmed */ |
| 255 | 255 | AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia1", pia6821_r, pia6821_w) /* confirmed */ |
| 256 | 256 | AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE("pia2", pia6821_r, pia6821_w) /* confirmed */ |
| r6428 | r6429 | |
| 1008 | 1008 | /* sound hardware */ |
| 1009 | 1009 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1010 | 1010 | |
| 1011 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 1011 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 1012 | 1012 | MDRV_SOUND_CONFIG(ay8912_interface) |
| 1013 | 1013 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1014 | 1014 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 111 | 111 | devtag_reset(space->machine, "oki"); |
| 112 | 112 | atarigen_set_ym2413_vol(space->machine, ((data >> 1) & 7) * 100 / 7); |
| 113 | 113 | if (!(data & 0x0001)) |
| 114 | devtag_reset(space->machine, "ym"); | |
| 114 | devtag_reset(space->machine, "ymsnd"); | |
| 115 | 115 | } |
| 116 | 116 | } |
| 117 | 117 | |
| r6428 | r6429 | |
| 136 | 136 | AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) |
| 137 | 137 | AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM |
| 138 | 138 | 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) | |
| 140 | 140 | AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_BASE(&atarigen_eeprom) AM_SIZE(&atarigen_eeprom_size) |
| 141 | 141 | AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_WRITE(atarigen_eeprom_enable_w) |
| 142 | 142 | AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffe) AM_WRITE(latch_w) |
| r6428 | r6429 | |
| 365 | 365 | MDRV_SOUND_CONFIG(okim6295_interface_pin7low) |
| 366 | 366 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 367 | 367 | |
| 368 | MDRV_SOUND_ADD("ym", YM2413, MASTER_CLOCK/4) | |
| 368 | MDRV_SOUND_ADD("ymsnd", YM2413, MASTER_CLOCK/4) | |
| 369 | 369 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 370 | 370 | MACHINE_DRIVER_END |
| 371 | 371 |
| r6428 | r6429 | |
|---|---|---|
| 478 | 478 | AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 479 | 479 | AM_RANGE(0x001ffd00, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_WRITE(paletteram_io_w) //RAMDAC |
| 480 | 480 | /*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) | |
| 482 | 482 | AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r) |
| 483 | 483 | AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? |
| 484 | 484 | AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? |
| r6428 | r6429 | |
| 543 | 543 | MDRV_MACHINE_RESET(magicard) |
| 544 | 544 | |
| 545 | 545 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 546 | MDRV_SOUND_ADD("ym", YM2413, CLOCK_A/12) | |
| 546 | MDRV_SOUND_ADD("ymsnd", YM2413, CLOCK_A/12) | |
| 547 | 547 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 548 | 548 | MACHINE_DRIVER_END |
| 549 | 549 |
| r6428 | r6429 | |
|---|---|---|
| 88 | 88 | AM_RANGE(0x0000, 0x0000) AM_DEVREAD("vlm", yiear_speech_r) |
| 89 | 89 | AM_RANGE(0x4000, 0x4000) AM_WRITE(yiear_control_w) |
| 90 | 90 | 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) | |
| 92 | 92 | AM_RANGE(0x4a00, 0x4a00) AM_DEVWRITE("vlm", yiear_VLM5030_control_w) |
| 93 | 93 | AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("vlm", vlm5030_data_w) |
| 94 | 94 | AM_RANGE(0x4c00, 0x4c00) AM_READ_PORT("DSW1") |
| r6428 | r6429 | |
| 219 | 219 | /* sound hardware */ |
| 220 | 220 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 221 | 221 | |
| 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 */ | |
| 223 | 223 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 224 | 224 | |
| 225 | 225 | MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ |
| r6428 | r6429 | |
|---|---|---|
| 780 | 780 | AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch |
| 781 | 781 | |
| 782 | 782 | 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) | |
| 785 | 785 | |
| 786 | 786 | AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register |
| 787 | 787 | AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register |
| r6428 | r6429 | |
| 825 | 825 | AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch |
| 826 | 826 | |
| 827 | 827 | 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) | |
| 830 | 830 | |
| 831 | 831 | AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register |
| 832 | 832 | AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register |
| r6428 | r6429 | |
| 874 | 874 | AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch |
| 875 | 875 | |
| 876 | 876 | 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) | |
| 879 | 879 | |
| 880 | 880 | AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register |
| 881 | 881 | AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register |
| r6428 | r6429 | |
| 1247 | 1247 | MDRV_CPU_PERIODIC_INT(timer_irq, 1000 ) // generate 1000 IRQ's per second |
| 1248 | 1248 | |
| 1249 | 1249 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1250 | MDRV_SOUND_ADD("ay",AY8912, MASTER_CLOCK/4) | |
| 1250 | MDRV_SOUND_ADD("aysnd",AY8912, MASTER_CLOCK/4) | |
| 1251 | 1251 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1252 | 1252 | |
| 1253 | 1253 | MDRV_NVRAM_HANDLER(generic_0fill) |
| r6428 | r6429 | |
|---|---|---|
| 198 | 198 | |
| 199 | 199 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 200 | 200 | 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) | |
| 202 | 202 | AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w) /* goes back to the main CPU, checked during boot */ |
| 203 | 203 | ADDRESS_MAP_END |
| 204 | 204 | |
| r6428 | r6429 | |
| 300 | 300 | |
| 301 | 301 | static ADDRESS_MAP_START( honeydol_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 302 | 302 | 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? | |
| 304 | 304 | AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w) /* goes back to the main CPU, checked during boot */ |
| 305 | 305 | ADDRESS_MAP_END |
| 306 | 306 | |
| r6428 | r6429 | |
| 375 | 375 | static ADDRESS_MAP_START( hyperpac_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 376 | 376 | AM_RANGE(0x0000, 0xcfff) AM_ROM |
| 377 | 377 | 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) | |
| 379 | 379 | AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki",okim6295_r,okim6295_w) |
| 380 | 380 | AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r) |
| 381 | 381 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1543 | 1543 | /* sound hardware */ |
| 1544 | 1544 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1545 | 1545 | |
| 1546 | MDRV_SOUND_ADD("ym", YM3812, 3000000) | |
| 1546 | MDRV_SOUND_ADD("ymsnd", YM3812, 3000000) | |
| 1547 | 1547 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1548 | 1548 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1549 | 1549 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1575 | 1575 | MDRV_GFXDECODE(hyperpac) |
| 1576 | 1576 | |
| 1577 | 1577 | /* sound hardware */ |
| 1578 | MDRV_SOUND_REPLACE("ym", YM2151, 4000000) | |
| 1578 | MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000) | |
| 1579 | 1579 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1580 | 1580 | MDRV_SOUND_ROUTE(0, "mono", 0.10) |
| 1581 | 1581 | MDRV_SOUND_ROUTE(1, "mono", 0.10) |
| r6428 | r6429 | |
| 1652 | 1652 | |
| 1653 | 1653 | /* sound hardware */ |
| 1654 | 1654 | |
| 1655 | MDRV_SOUND_ADD("ym", YM3812, 3000000) | |
| 1655 | MDRV_SOUND_ADD("ymsnd", YM3812, 3000000) | |
| 1656 | 1656 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1657 | 1657 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1658 | 1658 | |
| r6428 | r6429 | |
| 1725 | 1725 | |
| 1726 | 1726 | MDRV_MACHINE_RESET ( finalttr ) |
| 1727 | 1727 | |
| 1728 | MDRV_SOUND_REPLACE("ym", YM2151, 4000000) | |
| 1728 | MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000) | |
| 1729 | 1729 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1730 | 1730 | MDRV_SOUND_ROUTE(0, "mono", 0.08) |
| 1731 | 1731 | MDRV_SOUND_ROUTE(1, "mono", 0.08) |
| r6428 | r6429 | |
|---|---|---|
| 793 | 793 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 794 | 794 | ADDRESS_MAP_UNMAP_HIGH |
| 795 | 795 | 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) | |
| 797 | 797 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 798 | 798 | ADDRESS_MAP_END |
| 799 | 799 | |
| r6428 | r6429 | |
| 1366 | 1366 | /* sound hardware */ |
| 1367 | 1367 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1368 | 1368 | |
| 1369 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4) | |
| 1369 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) | |
| 1370 | 1370 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1371 | 1371 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1372 | 1372 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.43) |
| r6428 | r6429 | |
|---|---|---|
| 1010 | 1010 | AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_1_dir_pc_r,tmpz84c011_1_dir_pc_w) |
| 1011 | 1011 | AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_1_dir_pd_r,tmpz84c011_1_dir_pd_w) |
| 1012 | 1012 | 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) | |
| 1014 | 1014 | ADDRESS_MAP_END |
| 1015 | 1015 | |
| 1016 | 1016 | /******************************************************************************** |
| r6428 | r6429 | |
| 2947 | 2947 | /* sound hardware */ |
| 2948 | 2948 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2949 | 2949 | |
| 2950 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 2950 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 2951 | 2951 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 2952 | 2952 | |
| 2953 | 2953 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 91 | 91 | AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("konami2", k051649_frequency_w) |
| 92 | 92 | AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("konami2", k051649_volume_w) |
| 93 | 93 | 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) | |
| 95 | 95 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w) |
| 96 | 96 | AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("konami1", sound_bank_w) /* 7232 bankswitch */ |
| 97 | 97 | AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 223 | 223 | MDRV_SOUND_ROUTE(0, "mono", 0.44) |
| 224 | 224 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| 225 | 225 | |
| 226 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 226 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 227 | 227 | MDRV_SOUND_CONFIG(ym3812_config) |
| 228 | 228 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 229 | 229 |
| r6428 | r6429 | |
|---|---|---|
| 137 | 137 | |
| 138 | 138 | static WRITE8_HANDLER( ay8910_w ) |
| 139 | 139 | { |
| 140 | const device_config *ay = devtag_get_device(space->machine, "ay"); | |
| 140 | const device_config *ay = devtag_get_device(space->machine, "aysnd"); | |
| 141 | 141 | |
| 142 | 142 | if (ay_sel) |
| 143 | 143 | ay8910_data_w(ay, 0, data); |
| r6428 | r6429 | |
| 248 | 248 | |
| 249 | 249 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 250 | 250 | |
| 251 | MDRV_SOUND_ADD("ay", AY8910, 2000000) // ? | |
| 251 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) // ? | |
| 252 | 252 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 253 | 253 | MACHINE_DRIVER_END |
| 254 | 254 |
| r6428 | r6429 | |
|---|---|---|
| 468 | 468 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 469 | 469 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 470 | 470 | 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) | |
| 472 | 472 | AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w) |
| 473 | 473 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) |
| 474 | 474 | AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch? |
| r6428 | r6429 | |
| 691 | 691 | /* sound hardware */ |
| 692 | 692 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 693 | 693 | |
| 694 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 694 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 695 | 695 | MDRV_SOUND_CONFIG(ym2151_config) |
| 696 | 696 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 697 | 697 |
| r6428 | r6429 | |
|---|---|---|
| 71 | 71 | #include "arabian.h" |
| 72 | 72 | #include "sound/ay8910.h" |
| 73 | 73 | |
| 74 | ||
| 75 | 74 | /* constants */ |
| 76 | 75 | #define MAIN_OSC 12000000 |
| 77 | 76 | |
| 78 | 77 | |
| 79 | /* local variables */ | |
| 80 | static UINT8 custom_cpu_reset; | |
| 81 | static UINT8 custom_cpu_busy; | |
| 82 | static UINT8 *custom_cpu_ram; | |
| 83 | ||
| 84 | ||
| 85 | ||
| 86 | 78 | /************************************* |
| 87 | 79 | * |
| 88 | 80 | * Audio chip output ports |
| r6428 | r6429 | |
| 91 | 83 | |
| 92 | 84 | static WRITE8_DEVICE_HANDLER( ay8910_porta_w ) |
| 93 | 85 | { |
| 86 | arabian_state *state = (arabian_state *)device->machine->driver_data; | |
| 87 | ||
| 94 | 88 | /* |
| 95 | 89 | bit 7 = ENA |
| 96 | 90 | bit 6 = ENB |
| r6428 | r6429 | |
| 98 | 92 | bit 4 = /AGHF |
| 99 | 93 | bit 3 = /ARHF |
| 100 | 94 | */ |
| 101 | a | |
| 95 | state-> | |
| 102 | 96 | } |
| 103 | 97 | |
| 104 | 98 | |
| 105 | 99 | static WRITE8_DEVICE_HANDLER( ay8910_portb_w ) |
| 106 | 100 | { |
| 101 | arabian_state *state = (arabian_state *)device->machine->driver_data; | |
| 102 | ||
| 107 | 103 | /* |
| 108 | 104 | bit 5 = /IREQ to custom CPU |
| 109 | 105 | bit 4 = /SRES to custom CPU |
| r6428 | r6429 | |
| 112 | 108 | */ |
| 113 | 109 | |
| 114 | 110 | /* track the custom CPU reset */ |
| 115 | custom_cpu_reset = ~data & 0x10; | |
| 111 | state->custom_cpu_reset = ~data & 0x10; | |
| 116 | 112 | |
| 117 | 113 | /* clock the coin counters */ |
| 118 | 114 | coin_counter_w(1, ~data & 0x02); |
| r6428 | r6429 | |
| 129 | 125 | |
| 130 | 126 | static READ8_HANDLER( custom_cpu_r ) |
| 131 | 127 | { |
| 128 | arabian_state *state = (arabian_state *)space->machine->driver_data; | |
| 129 | ||
| 132 | 130 | /* since we don't have a simulator for the Fujitsu 8841 4-bit microprocessor */ |
| 133 | 131 | /* we have to simulate its behavior; it looks like Arabian reads out of the */ |
| 134 | 132 | /* alternate CPU's RAM space while the CPU is running. If the CPU is not */ |
| r6428 | r6429 | |
| 137 | 135 | static const char *const comnames[] = { "COM0", "COM1", "COM2", "COM3", "COM4", "COM5" }; |
| 138 | 136 | |
| 139 | 137 | /* 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]; | |
| 142 | 140 | |
| 143 | 141 | /* otherwise, assume the custom CPU is live */ |
| 144 | 142 | switch (offset) |
| r6428 | r6429 | |
| 157 | 155 | /* it wants. There appears to be a number of different ways to make */ |
| 158 | 156 | /* the custom turn this on. */ |
| 159 | 157 | case 6: |
| 160 | return custom_cpu_busy ^= 1; | |
| 158 | return state->custom_cpu_busy ^= 1; | |
| 161 | 159 | |
| 162 | 160 | /* handshake read; the main CPU writes to the previous memory location */ |
| 163 | 161 | /* and waits for the custom to copy that value here */ |
| 164 | 162 | case 8: |
| 165 | return custom_cpu_ram[0x7f0 + offset - 1]; | |
| 163 | return state->custom_cpu_ram[0x7f0 + offset - 1]; | |
| 166 | 164 | |
| 167 | 165 | /* error cases */ |
| 168 | 166 | 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)); | |
| 170 | 168 | } |
| 171 | 169 | return 0; |
| 172 | 170 | } |
| 173 | 171 | |
| 174 | 172 | static WRITE8_HANDLER( custom_cpu_w ) |
| 175 | 173 | { |
| 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; | |
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | |
| 180 | static void update_flip_state( | |
| 180 | static void update_flip_state( running_machine *machine ) | |
| 181 | 181 | { |
| 182 | arabian_state *state = (arabian_state *)machine->driver_data; | |
| 183 | ||
| 182 | 184 | /* the custom CPU also controls the video flip control line; unfortunately, */ |
| 183 | 185 | /* it appears that the custom is smart enough to flip the screen itself, based */ |
| 184 | 186 | /* on the information stored at $d400 and $d401. The value at $d400 specifies */ |
| r6428 | r6429 | |
| 187 | 189 | /* state. */ |
| 188 | 190 | |
| 189 | 191 | /* initial state is based on the flip screen flag */ |
| 190 | a | |
| 192 | state-> | |
| 191 | 193 | |
| 192 | 194 | /* 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; | |
| 195 | 197 | } |
| 196 | 198 | |
| 197 | 199 | |
| 198 | 200 | static WRITE8_HANDLER( custom_flip_w ) |
| 199 | 201 | { |
| 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); | |
| 202 | 206 | } |
| 203 | 207 | |
| 204 | 208 | |
| 205 | 209 | static WRITE8_HANDLER( custom_cocktail_w ) |
| 206 | 210 | { |
| 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); | |
| 209 | 215 | } |
| 210 | 216 | |
| 211 | 217 | |
| r6428 | r6429 | |
| 221 | 227 | AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w) |
| 222 | 228 | AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x01ff) AM_READ_PORT("IN0") |
| 223 | 229 | AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x01ff) AM_READ_PORT("DSW1") |
| 224 | AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE( | |
| 230 | AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE_MEMBER(arabian_state, custom_cpu_ram) | |
| 225 | 231 | 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( | |
| 232 | AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_BASE_MEMBER( | |
| 227 | 233 | ADDRESS_MAP_END |
| 228 | 234 | |
| 229 | 235 | |
| r6428 | r6429 | |
| 235 | 241 | *************************************/ |
| 236 | 242 | |
| 237 | 243 | static 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) | |
| 240 | 246 | ADDRESS_MAP_END |
| 241 | 247 | |
| 242 | 248 | |
| r6428 | r6429 | |
| 368 | 374 | |
| 369 | 375 | static MACHINE_START( arabian ) |
| 370 | 376 | { |
| 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); | |
| 373 | 381 | } |
| 374 | 382 | |
| 383 | static 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 | ||
| 375 | 393 | static MACHINE_DRIVER_START( arabian ) |
| 376 | 394 | |
| 395 | /* driver data */ | |
| 396 | MDRV_DRIVER_DATA(arabian_state) | |
| 397 | ||
| 377 | 398 | /* basic machine hardware */ |
| 378 | 399 | MDRV_CPU_ADD("maincpu", Z80, MAIN_OSC/4) |
| 379 | 400 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 380 | 401 | MDRV_CPU_IO_MAP(main_io_map) |
| 381 | 402 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 382 | 403 | |
| 383 | MDRV_MACHINE_START(arabian) | |
| 404 | MDRV_MACHINE_START(arabian) | |
| 405 | MDRV_MACHINE_RESET(arabian) | |
| 384 | 406 | |
| 385 | 407 | /* video hardware */ |
| 386 | 408 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
| 398 | 420 | /* sound hardware */ |
| 399 | 421 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 400 | 422 | |
| 401 | MDRV_SOUND_ADD("ay", AY8910, MAIN_OSC/4/2) | |
| 423 | MDRV_SOUND_ADD("aysnd", AY8910, MAIN_OSC/4/2) | |
| 402 | 424 | MDRV_SOUND_CONFIG(ay8910_config) |
| 403 | 425 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 404 | 426 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 278 | 278 | |
| 279 | 279 | AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") |
| 280 | 280 | 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) | |
| 283 | 283 | AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE(1) /* 2114 x 2 (0x400 x 4bit each) */ |
| 284 | 284 | AM_RANGE(0x7800, 0x7bff) AM_RAM AM_SHARE(2) /* 2114 x 2 (0x400 x 4bit each) */ |
| 285 | 285 | |
| r6428 | r6429 | |
| 407 | 407 | /* sound hardware */ |
| 408 | 408 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 409 | 409 | |
| 410 | MDRV_SOUND_ADD("ay", AY8910, 10000000/8) | |
| 410 | MDRV_SOUND_ADD("aysnd", AY8910, 10000000/8) | |
| 411 | 411 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 412 | 412 | MACHINE_DRIVER_END |
| 413 | 413 |
| r6428 | r6429 | |
|---|---|---|
| 66 | 66 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 67 | 67 | AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM |
| 68 | 68 | 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) | |
| 70 | 70 | AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w) |
| 71 | 71 | AM_RANGE(0x500800, 0x500fff) AM_RAM AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) |
| 72 | 72 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 254 | 254 | |
| 255 | 255 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 256 | 256 | |
| 257 | MDRV_SOUND_ADD("ym", YM2203, 2000000) /*?? MHz */ | |
| 257 | MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) /*?? MHz */ | |
| 258 | 258 | MDRV_SOUND_CONFIG(ym2203_config) |
| 259 | 259 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 260 | 260 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 823 | 823 | static ADDRESS_MAP_START( sound_memmap, ADDRESS_SPACE_PROGRAM, 16 ) |
| 824 | 824 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 825 | 825 | 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 */ | |
| 827 | 827 | AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w) |
| 828 | 828 | AM_RANGE(0x480000, 0x480001) AM_WRITENOP |
| 829 | 829 | AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP |
| r6428 | r6429 | |
| 1117 | 1117 | |
| 1118 | 1118 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1119 | 1119 | |
| 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 | |
| 1121 | 1121 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1122 | 1122 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1123 | 1123 | |
| r6428 | r6429 | |
| 1395 | 1395 | |
| 1396 | 1396 | ROM_START(sscope) |
| 1397 | 1397 | ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */ |
| 1398 | ROM_LOAD16_WORD_SWAP(" | |
| 1398 | ROM_LOAD16_WORD_SWAP("830d01 | |
| 1399 | 1399 | ROM_RELOAD(0x000000, 0x200000) |
| 1400 | 1400 | |
| 1401 | 1401 | ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */ |
| 1402 | 1402 | |
| 1403 | 1403 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1404 | ROM_LOAD16_WORD_SWAP(" | |
| 1404 | ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) ) | |
| 1405 | 1405 | |
| 1406 | 1406 | 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) ) | |
| 1409 | 1409 | |
| 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) ) | |
| 1413 | 1413 | |
| 1414 | 1414 | ROM_REGION(0x2000, "m48t58",0) |
| 1415 | ROM_LOAD( "m48t58y | |
| 1415 | ROM_LOAD( "m48t58y.35d | |
| 1416 | 1416 | ROM_END |
| 1417 | 1417 | |
| 1418 | 1418 | ROM_START(sscopea) |
| 1419 | 1419 | ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */ |
| 1420 | ROM_LOAD16_WORD_SWAP("830 | |
| 1420 | ROM_LOAD16_WORD_SWAP("830b | |
| 1421 | 1421 | ROM_RELOAD(0x000000, 0x200000) |
| 1422 | 1422 | |
| 1423 | 1423 | ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */ |
| 1424 | 1424 | |
| 1425 | 1425 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1426 | ROM_LOAD16_WORD_SWAP(" | |
| 1426 | ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) ) | |
| 1427 | 1427 | |
| 1428 | 1428 | 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) ) | |
| 1431 | 1431 | |
| 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) ) | |
| 1435 | 1435 | |
| 1436 | 1436 | ROM_REGION(0x2000, "m48t58",0) |
| 1437 | 1437 | ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(ee815325) SHA1(91b10802791b68a8360c0cd6c376c0c4bbbc6fa0) ) |
| r6428 | r6429 | |
| 1439 | 1439 | |
| 1440 | 1440 | ROM_START(sscopeb) |
| 1441 | 1441 | ROM_REGION32_BE(0x400000, "user1", 0) /* PowerPC program */ |
| 1442 | ROM_LOAD16_WORD_SWAP("830 | |
| 1442 | ROM_LOAD16_WORD_SWAP("830 | |
| 1443 | 1443 | ROM_RELOAD(0x000000, 0x200000) |
| 1444 | 1444 | |
| 1445 | 1445 | ROM_REGION32_BE(0x800000, "user2", ROMREGION_ERASE00) /* Data roms */ |
| 1446 | 1446 | |
| 1447 | 1447 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1448 | ROM_LOAD16_WORD_SWAP(" | |
| 1448 | ROM_LOAD16_WORD_SWAP("830a08.7s", 0x000000, 0x80000, CRC(2805ea1d) SHA1(2556a51ee98cb8f59bf081e916c69a24532196f1) ) | |
| 1449 | 1449 | |
| 1450 | 1450 | 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) ) | |
| 1453 | 1453 | |
| 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) ) | |
| 1457 | 1457 | |
| 1458 | 1458 | ROM_REGION(0x2000, "m48t58",0) |
| 1459 | 1459 | ROM_LOAD( "m48t58y-70pc1", 0x000000, 0x002000, CRC(ee815325) SHA1(91b10802791b68a8360c0cd6c376c0c4bbbc6fa0) ) |
| r6428 | r6429 | |
| 1476 | 1476 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1477 | 1477 | ROM_LOAD16_WORD_SWAP("931a08.bin", 0x000000, 0x80000, CRC(1597d604) SHA1(a1eab4d25907930b59ea558b484c3b6ddcb9303c) ) |
| 1478 | 1478 | |
| 1479 | ROM_REGION(0xc00000, "rf", 0) /* PCM sample roms */ | |
| 1479 | ROM_REGION(0xc00000, "rfsnd", 0) /* PCM sample roms */ | |
| 1480 | 1480 | ROM_LOAD( "931a09.bin", 0x000000, 0x400000, CRC(694c354c) SHA1(42f54254a5959e1b341f2801f1ad032c4ed6f329) ) |
| 1481 | 1481 | ROM_LOAD( "931a10.bin", 0x400000, 0x400000, CRC(78ceb519) SHA1(e61c0d21b6dc37a9293e72814474f5aee59115ad) ) |
| 1482 | 1482 | ROM_LOAD( "931a11.bin", 0x800000, 0x400000, CRC(9c8362b2) SHA1(a8158c4db386e2bbd61dc9a600720f07a1eba294) ) |
| r6428 | r6429 | |
| 1503 | 1503 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1504 | 1504 | ROM_LOAD16_WORD_SWAP( "837a08.7s", 0x000000, 0x080000, CRC(c3a7ff56) SHA1(9d8d033277d560b58da151338d14b4758a9235ea) ) |
| 1505 | 1505 | |
| 1506 | ROM_REGION(0x800000, "rf", 0) /* PCM sample roms */ | |
| 1506 | ROM_REGION(0x800000, "rfsnd", 0) /* PCM sample roms */ | |
| 1507 | 1507 | ROM_LOAD( "837a09.16p", 0x000000, 0x400000, CRC(fb8f3dc2) SHA1(69e314ac06308c5a24309abc3d7b05af6c0302a8) ) |
| 1508 | 1508 | ROM_LOAD( "837a10.14p", 0x400000, 0x400000, CRC(1419cad2) SHA1(a6369a5c29813fa51e8246d0c091736f32994f3d) ) |
| 1509 | 1509 | |
| r6428 | r6429 | |
| 1529 | 1529 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1530 | 1530 | ROM_LOAD16_WORD_SWAP( "778a08.7s", 0x000000, 0x080000, CRC(6259b4bf) SHA1(d0c38870495c9a07984b4b85e736d6477dd44832) ) |
| 1531 | 1531 | |
| 1532 | ROM_REGION(0x1000000, "rf", 0) /* PCM sample roms */ | |
| 1532 | ROM_REGION(0x1000000, "rfsnd", 0) /* PCM sample roms */ | |
| 1533 | 1533 | ROM_LOAD( "778a09.16p", 0x000000, 0x400000, CRC(e8c6fd93) SHA1(dd378b67b3b7dd932e4b39fbf4321e706522247f) ) |
| 1534 | 1534 | ROM_LOAD( "778a10.14p", 0x400000, 0x400000, CRC(c6a0857b) SHA1(976734ba56460fcc090619fbba043a3d888c4f4e) ) |
| 1535 | 1535 | ROM_LOAD( "778a11.12p", 0x800000, 0x400000, CRC(40199382) SHA1(bee268adf9b6634a4f6bb39278ecd02f2bdcb1f4) ) |
| r6428 | r6429 | |
| 1555 | 1555 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1556 | 1556 | ROM_LOAD16_WORD_SWAP( "715a08.7s", 0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) ) |
| 1557 | 1557 | |
| 1558 | ROM_REGION(0x1000000, "rf", 0) /* PCM sample roms */ | |
| 1558 | ROM_REGION(0x1000000, "rfsnd", 0) /* PCM sample roms */ | |
| 1559 | 1559 | ROM_LOAD( "715a09.16p", 0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) ) |
| 1560 | 1560 | ROM_LOAD( "715a10.14p", 0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) ) |
| 1561 | 1561 | |
| r6428 | r6429 | |
| 1582 | 1582 | ROM_REGION(0x80000, "audiocpu", 0) /* 68K Program */ |
| 1583 | 1583 | ROM_LOAD16_WORD_SWAP( "715a08.7s", 0x000000, 0x080000, CRC(3aa2f4a5) SHA1(bb43e5f5ef4ac51f228d4d825be66d3c720d51ea) ) |
| 1584 | 1584 | |
| 1585 | ROM_REGION(0x1000000, "rf", 0) /* PCM sample roms */ | |
| 1585 | ROM_REGION(0x1000000, "rfsnd", 0) /* PCM sample roms */ | |
| 1586 | 1586 | ROM_LOAD( "715a09.16p", 0x000000, 0x400000, CRC(65845866) SHA1(d2a63d0deef1901e6fa21b55c5f96e1f781dceda) ) |
| 1587 | 1587 | ROM_LOAD( "715a10.14p", 0x400000, 0x400000, CRC(294fe71b) SHA1(ac5fff5627df1cee4f1e1867377f208b34334899) ) |
| 1588 | 1588 | |
| r6428 | r6429 | |
| 1599 | 1599 | GAME( 1998, nbapbp, 0, hornet, hornet, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 1600 | 1600 | GAMEL( 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 ) |
| 1601 | 1601 | GAMEL( 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 ) |
| 1602 | GAMEL( 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 ) | |
| 1603 | GAMEL( 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 ) | |
| 1602 | GAMEL( 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 ) | |
| 1603 | GAMEL( 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 ) | |
| 1604 | GAMEL( 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 ) | |
| 1604 | 1605 | GAMEL( 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 ) |
| r6428 | r6429 | |
|---|---|---|
| 322 | 322 | AM_RANGE(0x04, 0x04) AM_WRITE(sound_bankswitch_w) |
| 323 | 323 | AM_RANGE(0x16, 0x16) AM_READ(sound_command_r) |
| 324 | 324 | 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) | |
| 326 | 326 | ADDRESS_MAP_END |
| 327 | 327 | |
| 328 | 328 | |
| 329 | 329 | static ADDRESS_MAP_START( hatris_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 330 | 330 | 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) | |
| 332 | 332 | AM_RANGE(0x04, 0x04) AM_READ(sound_command_r) |
| 333 | 333 | AM_RANGE(0x05, 0x05) AM_READWRITE(pending_command_r, pending_command_clear_w) |
| 334 | 334 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 634 | 634 | /* sound hardware */ |
| 635 | 635 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 636 | 636 | |
| 637 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 637 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 638 | 638 | MDRV_SOUND_CONFIG(ym2610_config) |
| 639 | 639 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 640 | 640 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 673 | 673 | /* sound hardware */ |
| 674 | 674 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 675 | 675 | |
| 676 | MDRV_SOUND_ADD("ym", YM2608, 8000000) | |
| 676 | MDRV_SOUND_ADD("ymsnd", YM2608, 8000000) | |
| 677 | 677 | MDRV_SOUND_CONFIG(ym2608_config) |
| 678 | 678 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 679 | 679 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 709 | 709 | ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) ) |
| 710 | 710 | ROM_LOAD16_BYTE( "a29.u2", 0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) ) |
| 711 | 711 | |
| 712 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 712 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 713 | 713 | ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) ) |
| 714 | 714 | |
| 715 | 715 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 743 | 743 | ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) ) |
| 744 | 744 | ROM_LOAD16_BYTE( "a29.u2", 0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) ) |
| 745 | 745 | |
| 746 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 746 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 747 | 747 | ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) ) |
| 748 | 748 | |
| 749 | 749 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 778 | 778 | ROM_LOAD16_BYTE( "a30.u12", 0x00000, 0x40000, CRC(50bc5e98) SHA1(b351af780d04e67a560935a9eeaedf597ac5bb1f) ) |
| 779 | 779 | ROM_LOAD16_BYTE( "a29.u2", 0x00001, 0x40000, CRC(a240a448) SHA1(d64169258e91eb09e8685bcdd96b16bf56e82ef1) ) |
| 780 | 780 | |
| 781 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 781 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 782 | 782 | ROM_LOAD( "g71.u118", 0x00000, 0x80000, CRC(488e2fd1) SHA1(8ef8ceb2bd36a245138802f51babf62f17c30942) ) |
| 783 | 783 | |
| 784 | 784 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 809 | 809 | ROM_LOAD( "a0-ic55.bin", 0x00000, 0x20000, CRC(7b7bc619) SHA1(b661c772e33aa7352dcdc20c4a9a84ed25ff89d7) ) |
| 810 | 810 | ROM_LOAD( "a1-ic60.bin", 0x20000, 0x20000, CRC(f74d4168) SHA1(9ac433c4ce61fe402334aa97d32a51cfac634c46) ) |
| 811 | 811 | |
| 812 | ROM_REGION( 0x20000, "ym", 0 ) | |
| 812 | ROM_REGION( 0x20000, "ymsnd", 0 ) | |
| 813 | 813 | ROM_LOAD( "pc-ic53.bin", 0x00000, 0x20000, CRC(07147712) SHA1(97692186e85f3a4a19dbd1bd95ed882e903a3c4a) ) |
| 814 | 814 | ROM_END |
| 815 | 815 | |
| r6428 | r6429 | |
| 831 | 831 | ROM_LOAD( "a0-ic55.bin", 0x00000, 0x20000, CRC(7b7bc619) SHA1(b661c772e33aa7352dcdc20c4a9a84ed25ff89d7) ) |
| 832 | 832 | ROM_LOAD( "a1-ic60.bin", 0x20000, 0x20000, CRC(f74d4168) SHA1(9ac433c4ce61fe402334aa97d32a51cfac634c46) ) |
| 833 | 833 | |
| 834 | ROM_REGION( 0x20000, "ym", 0 ) | |
| 834 | ROM_REGION( 0x20000, "ymsnd", 0 ) | |
| 835 | 835 | ROM_LOAD( "pc-ic53.bin", 0x00000, 0x20000, CRC(07147712) SHA1(97692186e85f3a4a19dbd1bd95ed882e903a3c4a) ) |
| 836 | 836 | ROM_END |
| 837 | 837 |
| r6428 | r6429 | |
|---|---|---|
| 326 | 326 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 327 | 327 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 328 | 328 | 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) | |
| 330 | 330 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r) |
| 331 | 331 | ADDRESS_MAP_END |
| 332 | 332 | |
| r6428 | r6429 | |
| 474 | 474 | /* sound hardware */ |
| 475 | 475 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 476 | 476 | |
| 477 | MDRV_SOUND_ADD("ym", YM3812, 2500000) | |
| 477 | MDRV_SOUND_ADD("ymsnd", YM3812, 2500000) | |
| 478 | 478 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 479 | 479 | |
| 480 | 480 |
| r6428 | r6429 | |
|---|---|---|
| 363 | 363 | |
| 364 | 364 | static READ8_DEVICE_HANDLER(at_dma8237_2_r) |
| 365 | 365 | { |
| 366 | return | |
| 366 | return i | |
| 367 | 367 | } |
| 368 | 368 | |
| 369 | 369 | static WRITE8_DEVICE_HANDLER(at_dma8237_2_w) |
| 370 | 370 | { |
| 371 | | |
| 371 | i | |
| 372 | 372 | } |
| 373 | 373 | |
| 374 | 374 | |
| r6428 | r6429 | |
| 726 | 726 | * |
| 727 | 727 | *************************************************************************/ |
| 728 | 728 | |
| 729 | static int dma_channel; | |
| 729 | 730 | static UINT8 dma_offset[2][4]; |
| 730 | 731 | static UINT8 at_pages[0x10]; |
| 731 | 732 | |
| r6428 | r6429 | |
| 775 | 776 | } |
| 776 | 777 | |
| 777 | 778 | |
| 778 | static | |
| 779 | static W | |
| 779 | 780 | { |
| 780 | 781 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 781 | 782 | |
| 782 | 783 | /* Assert HLDA */ |
| 783 | | |
| 784 | i | |
| 784 | 785 | } |
| 785 | 786 | |
| 786 | 787 | |
| 787 | static | |
| 788 | static READ8 | |
| 788 | 789 | { |
| 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) | |
| 791 | 791 | & 0xFF0000; |
| 792 | 792 | |
| 793 | 793 | return memory_read_byte(space, page_offset + offset); |
| 794 | 794 | } |
| 795 | 795 | |
| 796 | 796 | |
| 797 | static | |
| 797 | static | |
| 798 | 798 | { |
| 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) | |
| 801 | 800 | & 0xFF0000; |
| 802 | 801 | |
| 803 | 802 | memory_write_byte(space, page_offset + offset, data); |
| 804 | 803 | } |
| 805 | 804 | |
| 806 | ||
| 807 | static const struct dma8237_interface dma8237_1_config = | |
| 805 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 808 | 806 | { |
| 809 | XTAL_14_31818MHz/3, | |
| 807 | if (!state) dma_channel = channel; | |
| 808 | } | |
| 810 | 809 | |
| 811 | pc_dma_hrq_changed, | |
| 812 | pc_dma_read_byte, | |
| 813 | pc_dma_write_byte, | |
| 810 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 811 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 812 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 813 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 814 | 814 | |
| 815 | { NULL, NULL, NULL, NULL }, | |
| 816 | { NULL, NULL, NULL, NULL }, | |
| 817 | NULL | |
| 815 | static 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) } | |
| 818 | 824 | }; |
| 819 | 825 | |
| 820 | ||
| 821 | static const struct dma8237_interface dma8237_2_config = | |
| 826 | static I8237_INTERFACE( dma8237_2_config ) | |
| 822 | 827 | { |
| 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 } | |
| 832 | 835 | }; |
| 833 | 836 | |
| 834 | 837 | |
| r6428 | r6429 | |
| 848 | 851 | ADDRESS_MAP_END |
| 849 | 852 | |
| 850 | 853 | static ADDRESS_MAP_START(mediagx_io, ADDRESS_SPACE_IO, 32) |
| 851 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 854 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 852 | 855 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_master", io20_r, io20_w, 0xffffffff) |
| 853 | 856 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 854 | 857 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| r6428 | r6429 | |
| 1057 | 1060 | |
| 1058 | 1061 | MDRV_PIT8254_ADD( "pit8254", mediagx_pit8254_config ) |
| 1059 | 1062 | |
| 1060 | MDRV_ | |
| 1063 | MDRV_I | |
| 1061 | 1064 | |
| 1062 | MDRV_ | |
| 1065 | MDRV_I | |
| 1063 | 1066 | |
| 1064 | 1067 | MDRV_PIC8259_ADD( "pic8259_master", mediagx_pic8259_1_config ) |
| 1065 | 1068 |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Ambush Memory Map (preliminary) | |
| 3 | Ambush Memory Map (preliminary) | |
| 4 | 4 | |
| 5 | driver by Zsolt Vasvari | |
| 5 | driver by Zsolt Vasvari | |
| 6 | 6 | |
| 7 | 7 | |
| 8 | Memory Mapped: | |
| 8 | Memory Mapped: | |
| 9 | 9 | |
| 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 | |
| 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 | |
| 22 | 22 | |
| 23 | 23 | |
| 24 | I/O Ports: | |
| 24 | I/O Ports: | |
| 25 | 25 | |
| 26 | 00-01 R/W AY8910 #0 (Port A = Input Port #0) | |
| 27 | 80-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) | |
| 28 | 28 | |
| 29 | 29 | |
| 30 | TODO: | |
| 30 | TODO: | |
| 31 | 31 | |
| 32 | - Verify Z80 and AY8910 clock speeds | |
| 32 | - Verify Z80 and AY8910 clock speeds | |
| 33 | 33 | |
| 34 | 34 | ***************************************************************************/ |
| 35 | 35 | |
| 36 | 36 | #include "driver.h" |
| 37 | 37 | #include "cpu/z80/z80.h" |
| 38 | 38 | #include "sound/ay8910.h" |
| 39 | #include "ambush.h" | |
| 39 | 40 | |
| 40 | 41 | |
| 41 | extern UINT8 *ambush_scrollram; | |
| 42 | extern UINT8 *ambush_colorbank; | |
| 42 | /************************************* | |
| 43 | * | |
| 44 | * Memory handlers | |
| 45 | * | |
| 46 | *************************************/ | |
| 43 | 47 | |
| 44 | PALETTE_INIT( ambush ); | |
| 45 | VIDEO_UPDATE( ambush ); | |
| 46 | ||
| 47 | ||
| 48 | 48 | static WRITE8_HANDLER( ambush_coin_counter_w ) |
| 49 | 49 | { |
| 50 | 50 | coin_counter_w(0, data & 0x01); |
| r6428 | r6429 | |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | |
| 60 | /************************************* | |
| 61 | * | |
| 62 | * Address maps | |
| 63 | * | |
| 64 | *************************************/ | |
| 65 | ||
| 60 | 66 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 61 | 67 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 62 | 68 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 63 | 69 | AM_RANGE(0xa000, 0xa000) AM_READ(watchdog_reset_r) |
| 64 | 70 | 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) | |
| 69 | 75 | AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW1") |
| 70 | 76 | AM_RANGE(0xcc00, 0xcc03) AM_WRITENOP |
| 71 | 77 | AM_RANGE(0xcc04, 0xcc04) AM_WRITE(flip_screen_w) |
| 72 | AM_RANGE(0xcc05, 0xcc05) AM_WRITEONLY AM_BASE( | |
| 78 | AM_RANGE(0xcc05, 0xcc05) AM_WRITEONLY AM_BASE_MEMBER( | |
| 73 | 79 | AM_RANGE(0xcc07, 0xcc07) AM_WRITE(ambush_coin_counter_w) |
| 74 | 80 | ADDRESS_MAP_END |
| 75 | 81 | |
| r6428 | r6429 | |
| 82 | 88 | ADDRESS_MAP_END |
| 83 | 89 | |
| 84 | 90 | |
| 91 | /************************************* | |
| 92 | * | |
| 93 | * Input ports | |
| 94 | * | |
| 95 | *************************************/ | |
| 96 | ||
| 85 | 97 | static INPUT_PORTS_START( ambush ) |
| 86 | 98 | PORT_START("SYSTEM") |
| 87 | 99 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
| r6428 | r6429 | |
| 145 | 157 | INPUT_PORTS_END |
| 146 | 158 | |
| 147 | 159 | |
| 160 | /************************************* | |
| 161 | * | |
| 162 | * Graphics definitions | |
| 163 | * | |
| 164 | *************************************/ | |
| 165 | ||
| 148 | 166 | static const gfx_layout charlayout = |
| 149 | 167 | { |
| 150 | 168 | 8,8, /* 8*8 chars */ |
| r6428 | r6429 | |
| 175 | 193 | GFXDECODE_END |
| 176 | 194 | |
| 177 | 195 | |
| 196 | /************************************* | |
| 197 | * | |
| 198 | * Sound interfaces | |
| 199 | * | |
| 200 | *************************************/ | |
| 201 | ||
| 178 | 202 | static const ay8910_interface ay8910_interface_1 = |
| 179 | 203 | { |
| 180 | 204 | AY8910_LEGACY_OUTPUT, |
| r6428 | r6429 | |
| 196 | 220 | }; |
| 197 | 221 | |
| 198 | 222 | |
| 223 | /************************************* | |
| 224 | * | |
| 225 | * Machine driver | |
| 226 | * | |
| 227 | *************************************/ | |
| 228 | ||
| 199 | 229 | static MACHINE_DRIVER_START( ambush ) |
| 200 | 230 | |
| 231 | /* driver data */ | |
| 232 | MDRV_DRIVER_DATA(ambush_state) | |
| 233 | ||
| 201 | 234 | /* basic machine hardware */ |
| 202 | 235 | MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4.00 MHz??? */ |
| 203 | 236 | MDRV_CPU_PROGRAM_MAP(main_map) |
| r6428 | r6429 | |
| 230 | 263 | MACHINE_DRIVER_END |
| 231 | 264 | |
| 232 | 265 | |
| 233 | /*************************************************************************** | |
| 266 | /************************************* | |
| 267 | * | |
| 268 | * ROM definition(s) | |
| 269 | * | |
| 270 | *************************************/ | |
| 234 | 271 | |
| 235 | Game driver(s) | |
| 236 | ||
| 237 | ***************************************************************************/ | |
| 238 | ||
| 239 | 272 | ROM_START( ambush ) |
| 240 | 273 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 241 | 274 | ROM_LOAD( "ambush.h7", 0x0000, 0x2000, CRC(ce306563) SHA1(c69b5c4465187a8eda6367d6cd3e0b71a57588d1) ) |
| r6428 | r6429 | |
| 294 | 327 | ROM_LOAD( "14.bpr", 0x0300, 0x0100, CRC(622a8ce7) SHA1(6834f67874251f2ef3a33aec893311f5d10e496f) ) /* They don't look like color PROMs */ |
| 295 | 328 | ROM_END |
| 296 | 329 | |
| 330 | /************************************* | |
| 331 | * | |
| 332 | * Game driver(s) | |
| 333 | * | |
| 334 | *************************************/ | |
| 335 | ||
| 297 | 336 | GAME( 1983, ambush, 0, ambush, ambush, 0, ROT0, "Nippon Amuse Co-Ltd", "Ambush", GAME_SUPPORTS_SAVE ) |
| 298 | GAME( 1983, ambushv, ambush, ambush, ambush, 0, ROT0, "Volt Elec co-ltd", "Ambush (Volt Elec co-ltd)", GAME_SUPPORTS_SAVE ) | |
| 299 | GAME( 1983, ambusht, ambush, ambush, ambusht, 0, ROT0, "Tecfri", "Ambush (Tecfri)", GAME_SUPPORTS_SAVE ) | |
| 337 | GAME( 1983, ambushv, ambush, ambush, ambush, 0, ROT0, "Volt Elec co-ltd", "Ambush (Volt Elec co-ltd)", GAME_SUPPORTS_SAVE ) | |
| 338 | GAME( 1983, ambusht, ambush, ambush, ambusht, 0, ROT0, "Tecfri", "Ambush (Tecfri)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 1 | /*************************************************************************** | |
| 1 | /***************************************************************************************************** | |
| 2 | 2 | |
| 3 | 3 | Skimaxx |
| 4 | 4 | |
| 5 | | |
| 5 | | |
| 6 | 6 | |
| 7 | 68030-40 * 2 | |
| 8 | TMS34010-50 | |
| 9 | MSM6295 * 4 | |
| 7 | Top Board: | |
| 10 | 8 | |
| 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 | |
| 13 | 11 | |
| 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: | |
| 16 | 13 | |
| 17 | ***************************************************************************/ | |
| 14 | 68EC030-40 | |
| 15 | TMS34010-50 | |
| 18 | 16 | |
| 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 | ||
| 19 | 37 | #include "driver.h" |
| 20 | 38 | #include "cpu/m68000/m68000.h" |
| 21 | 39 | #include "cpu/tms34010/tms34010.h" |
| 40 | #include "sound/okim6295.h" | |
| 22 | 41 | |
| 23 | 42 | |
| 24 | 43 | /************************************* |
| r6428 | r6429 | |
| 27 | 46 | * |
| 28 | 47 | *************************************/ |
| 29 | 48 | |
| 30 | static UINT32 *sprite_buffer; | |
| 31 | static UINT16 *frame_buffer; | |
| 49 | static UINT32 *bg_buffer; // i.e. background and sprites | |
| 50 | static UINT16 *fg_buffer; // i.e. text | |
| 32 | 51 | |
| 33 | 52 | |
| 34 | 53 | /************************************* |
| r6428 | r6429 | |
| 37 | 56 | * |
| 38 | 57 | *************************************/ |
| 39 | 58 | |
| 59 | UINT32 *skimaxx_bg_buffer_front; | |
| 60 | UINT32 *skimaxx_bg_buffer_back; | |
| 61 | ||
| 62 | UINT32 *skimaxx_blitter_regs; | |
| 63 | UINT16 *skimaxx_blitter_gfx; | |
| 64 | ||
| 65 | UINT32 skimaxx_blitter_gfx_len; | |
| 66 | ||
| 67 | UINT32 skimaxx_blitter_src_x, skimaxx_blitter_src_dx; | |
| 68 | UINT32 skimaxx_blitter_src_y, skimaxx_blitter_src_dy; | |
| 69 | ||
| 70 | // Set up blit parameters | |
| 71 | static 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) | |
| 102 | static 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 | ||
| 40 | 125 | static VIDEO_START( skimaxx ) |
| 41 | 126 | { |
| 127 | skimaxx_blitter_gfx = (UINT16 *) memory_region( machine, "blitter" ); | |
| 128 | skimaxx_blitter_gfx_len = memory_region_length( machine, "blitter" ) / 2; | |
| 42 | 129 | |
| 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); | |
| 43 | 135 | } |
| 44 | 136 | |
| 137 | static VIDEO_UPDATE( skimaxx ) | |
| 138 | { | |
| 139 | // popmessage("%02x %02x", input_port_read(screen->machine, "X"), input_port_read(screen->machine, "Y") ); | |
| 45 | 140 | |
| 141 | VIDEO_UPDATE_CALL(tms340x0); | |
| 142 | ||
| 143 | return 0; | |
| 144 | } | |
| 145 | ||
| 46 | 146 | /************************************* |
| 47 | 147 | * |
| 48 | 148 | * VRAM shift register callbacks |
| r6428 | r6429 | |
| 52 | 152 | // TODO: Might not be used |
| 53 | 153 | static void skimaxx_to_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg) |
| 54 | 154 | { |
| 55 | memcpy(shiftreg, &f | |
| 155 | memcpy(shiftreg, &fg | |
| 56 | 156 | } |
| 57 | 157 | |
| 58 | 158 | static void skimaxx_from_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg) |
| 59 | 159 | { |
| 60 | memcpy(&f | |
| 160 | memcpy(&fg | |
| 61 | 161 | } |
| 62 | 162 | |
| 63 | 163 | |
| r6428 | r6429 | |
| 70 | 170 | static void skimaxx_scanline_update(const device_config *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params) |
| 71 | 171 | { |
| 72 | 172 | // TODO: This isn't correct. I just hacked it together quickly so I could see something! |
| 173 | ||
| 73 | 174 | if (params->rowaddr >= 0x220) |
| 74 | 175 | { |
| 75 | 176 | 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]; | |
| 77 | 179 | UINT16 *dest = BITMAP_ADDR16(bitmap, scanline, 0); |
| 78 | 180 | int coladdr = params->coladdr; |
| 79 | 181 | int x; |
| 80 | 182 | coladdr = 0; |
| 81 | 183 | |
| 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) | |
| 86 | 186 | { |
| 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++; | |
| 89 | 202 | } |
| 90 | 203 | } |
| 91 | 204 | } |
| r6428 | r6429 | |
| 114 | 227 | * |
| 115 | 228 | *************************************/ |
| 116 | 229 | |
| 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 | ||
| 239 | UINT32 *skimaxx_fpga_ctrl; | |
| 240 | static 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 | |
| 117 | 257 | static READ32_HANDLER( unk_r ) |
| 118 | 258 | { |
| 259 | return (*skimaxx_fpga_ctrl & 0x20) ? 0x80 : 0x00; | |
| 260 | } | |
| 261 | ||
| 262 | // 0x20000023 | |
| 263 | static READ32_HANDLER( skimaxx_unk1_r ) | |
| 264 | { | |
| 119 | 265 | return 0x80; |
| 120 | 266 | } |
| 121 | 267 | |
| 268 | static WRITE32_HANDLER( skimaxx_unk1_w ) | |
| 269 | { | |
| 270 | } | |
| 122 | 271 | |
| 272 | static 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 | */ | |
| 293 | static 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 | ||
| 123 | 298 | /************************************* |
| 124 | 299 | * |
| 125 | 300 | * Main CPU memory map |
| r6428 | r6429 | |
| 128 | 303 | |
| 129 | 304 | static ADDRESS_MAP_START( 68030_1_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 130 | 305 | 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) | |
| 144 | 328 | ADDRESS_MAP_END |
| 145 | 329 | |
| 146 | 330 | |
| 147 | 331 | /************************************* |
| 148 | 332 | * |
| 149 | * Sub CPU memory map | |
| 333 | * Sub CPU memory map (Blitter control) | |
| 150 | 334 | * |
| 151 | 335 | *************************************/ |
| 152 | 336 | |
| 153 | 337 | static ADDRESS_MAP_START( 68030_2_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 154 | 338 | 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 | |
| 159 | 352 | ADDRESS_MAP_END |
| 160 | 353 | |
| 161 | 354 | |
| 162 | 355 | /************************************* |
| 163 | 356 | * |
| 164 | * Video CPU memory map | |
| 357 | * Video CPU memory map (Text layer) | |
| 165 | 358 | * |
| 166 | 359 | *************************************/ |
| 167 | 360 | |
| r6428 | r6429 | |
| 169 | 362 | AM_RANGE(0x00000000, 0x000100ff) AM_RAM |
| 170 | 363 | AM_RANGE(0x00008000, 0x0003ffff) AM_RAM |
| 171 | 364 | AM_RANGE(0x00050000, 0x0005ffff) AM_RAM |
| 172 | AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_BASE(&f | |
| 365 | AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_BASE(&fg | |
| 173 | 366 | AM_RANGE(0x02000000, 0x0200000f) AM_RAM |
| 174 | 367 | AM_RANGE(0x02100000, 0x0210000f) AM_RAM |
| 175 | 368 | AM_RANGE(0x04000000, 0x047fffff) AM_ROM AM_REGION("tmsgfx", 0) |
| r6428 | r6429 | |
| 180 | 373 | |
| 181 | 374 | /************************************* |
| 182 | 375 | * |
| 376 | * Graphics decoding (for debug) | |
| 377 | * | |
| 378 | *************************************/ | |
| 379 | ||
| 380 | #if 0 | |
| 381 | ||
| 382 | static const UINT32 texlayout_xoffset[512] = | |
| 383 | { | |
| 384 | STEP512(0,16) | |
| 385 | }; | |
| 386 | ||
| 387 | static const UINT32 texlayout_yoffset[128] = | |
| 388 | { | |
| 389 | STEP128(0,512*16) | |
| 390 | }; | |
| 391 | ||
| 392 | static 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 | ||
| 405 | static GFXDECODE_START( skimaxx ) | |
| 406 | GFXDECODE_ENTRY( "blitter", 0, texlayout, 0, 1 ) | |
| 407 | GFXDECODE_END | |
| 408 | ||
| 409 | #endif | |
| 410 | ||
| 411 | ||
| 412 | /************************************* | |
| 413 | * | |
| 183 | 414 | * Input definitions |
| 184 | 415 | * |
| 185 | 416 | *************************************/ |
| 186 | 417 | |
| 187 | 418 | static 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 | ||
| 190 | 462 | INPUT_PORTS_END |
| 191 | 463 | |
| 192 | 464 | |
| r6428 | r6429 | |
| 206 | 478 | FALSE, /* halt on reset */ |
| 207 | 479 | "screen", /* the screen operated on */ |
| 208 | 480 | 50000000/8, /* pixel clock */ |
| 209 | | |
| 481 | 2, /* pixels per clock */ | |
| 210 | 482 | skimaxx_scanline_update, /* scanline updater */ |
| 211 | 483 | skimaxx_tms_irq, /* generate interrupt */ |
| 212 | 484 | skimaxx_to_shiftreg, /* write to shiftreg function */ |
| r6428 | r6429 | |
| 225 | 497 | |
| 226 | 498 | } |
| 227 | 499 | |
| 228 | ||
| 229 | 500 | /************************************* |
| 230 | 501 | * |
| 231 | 502 | * Machine driver |
| r6428 | r6429 | |
| 233 | 504 | *************************************/ |
| 234 | 505 | |
| 235 | 506 | static MACHINE_DRIVER_START( skimaxx ) |
| 236 | MDRV_CPU_ADD("maincpu", M680 | |
| 507 | MDRV_CPU_ADD("maincpu", M68EC030, XTAL_40MHz) | |
| 237 | 508 | MDRV_CPU_PROGRAM_MAP(68030_1_map) |
| 238 | ||
| 509 | | |
| 239 | 510 | |
| 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) | |
| 242 | 513 | |
| 514 | MDRV_MACHINE_RESET(skimaxx) | |
| 515 | ||
| 516 | /* video hardware */ | |
| 243 | 517 | MDRV_CPU_ADD("tms", TMS34010, XTAL_50MHz) |
| 244 | 518 | MDRV_CPU_CONFIG(tms_config) |
| 245 | 519 | MDRV_CPU_PROGRAM_MAP(tms_program_map) |
| 246 | 520 | |
| 247 | MDRV_MACHINE_RESET(skimaxx) | |
| 248 | ||
| 249 | 521 | MDRV_SCREEN_ADD("screen", RASTER) |
| 250 | 522 | 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) | |
| 252 | 528 | |
| 529 | MDRV_VIDEO_START(skimaxx) | |
| 530 | // MDRV_VIDEO_UPDATE(tms340x0) | |
| 531 | MDRV_VIDEO_UPDATE(skimaxx) | |
| 532 | ||
| 533 | // MDRV_GFXDECODE( skimaxx ) | |
| 534 | ||
| 253 | 535 | MDRV_PALETTE_INIT(RRRRR_GGGGG_BBBBB) |
| 254 | 536 | MDRV_PALETTE_LENGTH(32768) |
| 255 | 537 | |
| 256 | MDRV_SPEAKER_STANDARD_MONO("mono") | |
| 538 | /* sound hardware */ | |
| 539 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") | |
| 257 | 540 | |
| 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) | |
| 260 | 556 | MACHINE_DRIVER_END |
| 261 | 557 | |
| 262 | 558 | |
| r6428 | r6429 | |
| 283 | 579 | ROM_LOAD16_BYTE( "vc8v-2_0", 0x000000, 0x80000, CRC(a6e9ef81) SHA1(59a0fb149e17d3773adb980428a0b107647bd4fa) ) |
| 284 | 580 | ROM_LOAD16_BYTE( "vc9v-2_0", 0x000001, 0x80000, CRC(b1e8ba65) SHA1(b91cf93ecd9b6067664780ab2c1b69f632c7ae05) ) |
| 285 | 581 | |
| 286 | ROM_REGION( 0x | |
| 582 | ROM_REGION( 0x100000, "tmsgfx", 0 ) | |
| 287 | 583 | ROM_LOAD16_BYTE( "vc10v2_0", 0x000000, 0x80000, CRC(433651cd) SHA1(9b9801703d16adbbca2b03e1714490fb166d48a0) ) |
| 288 | 584 | ROM_LOAD16_BYTE( "vc11v2_0", 0x000001, 0x80000, CRC(a906fc72) SHA1(c61ad560f203c7f507cc7b7dc8834f529a6501a7) ) |
| 289 | 585 | |
| 290 | ROM_REGION( 0x600000, " | |
| 586 | ROM_REGION16_LE( 0x600000, "blitter", 0 ) | |
| 291 | 587 | ROM_LOAD16_BYTE( "ve5v-2_0", 0x000000, 0x100000, CRC(b95544a3) SHA1(1ad49da54d36543229e241887c3dd8411ef5c89a) ) |
| 292 | 588 | 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) ) | |
| 297 | 593 | |
| 298 | 594 | ROM_REGION( 0x80000, "oki1", 0 ) |
| 299 | ROM_LOAD( "main2_0.u | |
| 595 | ROM_LOAD( "main2_0.u3", 0x000000, 0x80000, CRC(2 | |
| 300 | 596 | |
| 301 | 597 | ROM_REGION( 0x80000, "oki2", 0 ) |
| 302 | ROM_LOAD( "main2_0.u | |
| 598 | ROM_LOAD( "main2_0.u2", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) ) // identical to main2_0.u4 | |
| 303 | 599 | |
| 304 | 600 | ROM_REGION( 0x80000, "oki3", 0 ) |
| 305 | ROM_LOAD( "main2_0.u | |
| 601 | ROM_LOAD( "main2_0.u5", 0x000000, 0x80000, CRC(e2b | |
| 306 | 602 | |
| 307 | 603 | ROM_REGION( 0x80000, "oki4", 0 ) |
| 308 | ROM_LOAD( "main2_0.u | |
| 604 | ROM_LOAD( "main2_0.u4", 0x000000, 0x80000, CRC(c84b3c46 | |
| 309 | 605 | ROM_END |
| 310 | 606 | |
| 311 | 607 | |
| r6428 | r6429 | |
| 315 | 611 | * |
| 316 | 612 | *************************************/ |
| 317 | 613 | |
| 318 | GAME( 1996, skimaxx, 0, skimaxx, skimaxx, 0, ROT0, "Kyle Hodgetts/ICE", "Skimaxx", GAME_ | |
| 614 | GAME( 1996, skimaxx, 0, skimaxx, skimaxx, 0, ROT0, "Kyle Hodgetts / ICE", "Skimaxx", GAME_ |
| r6428 | r6429 | |
|---|---|---|
| 198 | 198 | AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_address_w) |
| 199 | 199 | AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_register_w) |
| 200 | 200 | 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) | |
| 203 | 203 | //what's 60-6f for? Seems used only in attract mode... |
| 204 | 204 | ADDRESS_MAP_END |
| 205 | 205 | |
| r6428 | r6429 | |
| 345 | 345 | /* sound hardware */ |
| 346 | 346 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 347 | 347 | |
| 348 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/4) //divider is unknown | |
| 348 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/4) //divider is unknown | |
| 349 | 349 | MDRV_SOUND_CONFIG(ay8910_config) |
| 350 | 350 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 351 | 351 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 114 | 114 | |
| 115 | 115 | static ADDRESS_MAP_START( vroulet_io_map, ADDRESS_SPACE_IO, 8 ) |
| 116 | 116 | 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) | |
| 119 | 119 | AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) |
| 120 | 120 | AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) |
| 121 | 121 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 287 | 287 | // sound hardware |
| 288 | 288 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 289 | 289 | |
| 290 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 290 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 291 | 291 | MDRV_SOUND_CONFIG(ay8910_config) |
| 292 | 292 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 293 | 293 |
| r6428 | r6429 | |
|---|---|---|
| 85 | 85 | ADDRESS_MAP_END |
| 86 | 86 | |
| 87 | 87 | static 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) | |
| 90 | 90 | AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w) |
| 91 | 91 | AM_RANGE(0x0006, 0x0007) AM_WRITE(port6_pal0_w) |
| 92 | 92 | AM_RANGE(0x000e, 0x000f) AM_WRITE(porte_paloff0_w) |
| r6428 | r6429 | |
| 189 | 189 | /* sound hardware */ |
| 190 | 190 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 191 | 191 | |
| 192 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 192 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 193 | 193 | MDRV_SOUND_CONFIG(ay8910_config) |
| 194 | 194 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 195 | 195 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 248 | 248 | AM_RANGE(0x0000, 0x0001) AM_READWRITE(twinsa_unk_r, porte_paloff0_w) |
| 249 | 249 | AM_RANGE(0x0002, 0x0003) AM_WRITE(porte_paloff0_w) |
| 250 | 250 | 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) | |
| 253 | 253 | AM_RANGE(0x0018, 0x0019) AM_READ(twins_port4_r) AM_WRITE(twins_port4_w) |
| 254 | 254 | ADDRESS_MAP_END |
| 255 | 255 | |
| r6428 | r6429 | |
| 277 | 277 | /* sound hardware */ |
| 278 | 278 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 279 | 279 | |
| 280 | MDRV_SOUND_ADD("ay", AY8910, XTAL_16MHz/8) /* verified on pcb */ | |
| 280 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_16MHz/8) /* verified on pcb */ | |
| 281 | 281 | MDRV_SOUND_CONFIG(ay8910_config) |
| 282 | 282 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 283 | 283 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 68 | 68 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 69 | 69 | AM_RANGE(0x4000, 0x47ff) AM_RAM |
| 70 | 70 | 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) | |
| 72 | 72 | AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76496_w) |
| 73 | 73 | AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn2", sn76496_w) |
| 74 | 74 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 240 | 240 | /* sound hardware */ |
| 241 | 241 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 242 | 242 | |
| 243 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 243 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 244 | 244 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 245 | 245 | |
| 246 | 246 | MDRV_SOUND_ADD("sn1", SN76489, 3000000) |
| r6428 | r6429 | |
|---|---|---|
| 549 | 549 | { |
| 550 | 550 | if (ACCESSING_BITS_0_7) |
| 551 | 551 | { |
| 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; | |
| 554 | 554 | if (data >= banks) |
| 555 | 555 | { |
| 556 | 556 | logerror("CPU #0 PC %06X: invalid sound bank %04X\n",cpu_get_pc(space->cpu),data); |
| r6428 | r6429 | |
| 587 | 587 | AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins |
| 588 | 588 | AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r) // Watchdog |
| 589 | 589 | 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 | |
| 591 | 591 | AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 592 | 592 | AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 593 | 593 | AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared |
| r6428 | r6429 | |
| 649 | 649 | AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2 |
| 650 | 650 | AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w) |
| 651 | 651 | 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 | |
| 653 | 653 | AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 654 | 654 | AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette |
| 655 | 655 | AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared |
| r6428 | r6429 | |
| 710 | 710 | AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 |
| 711 | 711 | AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 |
| 712 | 712 | 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 | |
| 714 | 714 | AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 715 | 715 | AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 716 | 716 | AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers |
| r6428 | r6429 | |
| 733 | 733 | AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1 |
| 734 | 734 | AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2 |
| 735 | 735 | 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 | |
| 737 | 737 | AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 738 | 738 | AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 739 | 739 | AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers |
| r6428 | r6429 | |
| 756 | 756 | AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 |
| 757 | 757 | AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 |
| 758 | 758 | 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 | |
| 760 | 760 | AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 761 | 761 | AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 762 | 762 | AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs ) // Video Registers |
| r6428 | r6429 | |
| 804 | 804 | AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 805 | 805 | AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 806 | 806 | 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 | |
| 808 | 808 | AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers |
| 809 | 809 | ADDRESS_MAP_END |
| 810 | 810 | |
| r6428 | r6429 | |
| 830 | 830 | AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites |
| 831 | 831 | AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 832 | 832 | 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 | |
| 834 | 834 | AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs) // TMP68301 Registers |
| 835 | 835 | ADDRESS_MAP_END |
| 836 | 836 | |
| r6428 | r6429 | |
| 874 | 874 | AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // Palette |
| 875 | 875 | AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs) // Video Registers |
| 876 | 876 | |
| 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 | |
| 878 | 878 | |
| 879 | 879 | AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2") // parallel data register (DSW 2) |
| 880 | 880 | AM_RANGE( 0xfffc00, 0xffffff ) AM_RAM_WRITE( tmp68301_regs_w) AM_BASE(&tmp68301_regs ) // TMP68301 Registers |
| r6428 | r6429 | |
| 2318 | 2318 | /* sound hardware */ |
| 2319 | 2319 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2320 | 2320 | |
| 2321 | MDRV_SOUND_ADD("x1", X1_010, 50000000/3) | |
| 2321 | MDRV_SOUND_ADD("x1snd", X1_010, 50000000/3) | |
| 2322 | 2322 | MDRV_SOUND_CONFIG(x1_010_sound_intf) |
| 2323 | 2323 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2324 | 2324 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2530 | 2530 | ROM_LOAD( "ka001008.u23", 0x1400000, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) ) |
| 2531 | 2531 | ROM_FILL( 0x1800000, 0x600000, 0 ) /* 6bpp instead of 8bpp */ |
| 2532 | 2532 | |
| 2533 | ROM_REGION( 0x300000, "x1", 0 ) /* Samples */ | |
| 2533 | ROM_REGION( 0x300000, "x1snd", 0 ) /* Samples */ | |
| 2534 | 2534 | /* Leave 1MB empty (addressable by the chip) */ |
| 2535 | 2535 | ROM_LOAD( "ka001015.u28", 0x100000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) ) |
| 2536 | 2536 | ROM_END |
| r6428 | r6429 | |
| 2559 | 2559 | ROM_LOAD( "u21.bin", 0x1e00000, 0x200000, CRC(6f95e466) SHA1(28482fad16a3ac9302f152d81552e6f84a44f3e4) ) |
| 2560 | 2560 | ROM_CONTINUE( 0x1c00000, 0x200000 ) |
| 2561 | 2561 | |
| 2562 | ROM_REGION( 0x200000, "x1", 0 ) /* Samples */ | |
| 2562 | ROM_REGION( 0x200000, "x1snd", 0 ) /* Samples */ | |
| 2563 | 2563 | /* Leave 1MB empty (addressable by the chip) */ |
| 2564 | 2564 | ROM_LOAD( "u32.bin", 0x100000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) ) |
| 2565 | 2565 | ROM_END |
| r6428 | r6429 | |
| 2580 | 2580 | ROM_LOAD( "cha-02.u22", 0x1400000, 0x400000, CRC(f6346860) SHA1(4eebd3fa315b97964fa39b88224f9de7622ba881) ) |
| 2581 | 2581 | ROM_FILL( 0x1800000, 0x800000, 0 ) /* 6bpp instead of 8bpp */ |
| 2582 | 2582 | |
| 2583 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2583 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2584 | 2584 | /* Leave 1MB empty (addressable by the chip) */ |
| 2585 | 2585 | ROM_LOAD( "cha-07.u32", 0x100000, 0x400000, CRC(817519ee) SHA1(ed09740cdbf61a328f7b50eb569cf498fb749416) ) |
| 2586 | 2586 | ROM_END |
| r6428 | r6429 | |
| 2602 | 2602 | ROM_LOAD( "kq1-cg7.u21", 0xc00000, 0x200000, CRC(9f48382c) SHA1(80dfc33a55123b5d3cdb3ed97b43a527f0254d61) ) |
| 2603 | 2603 | ROM_LOAD( "kq1-cg5.u17", 0xe00000, 0x200000, CRC(a4bc4516) SHA1(0eb11fa54d16bba1b96f9dd943a68949a3bb9a2f) ) |
| 2604 | 2604 | |
| 2605 | ROM_REGION( 0x300000, "x1", 0 ) /* Samples */ | |
| 2605 | ROM_REGION( 0x300000, "x1snd", 0 ) /* Samples */ | |
| 2606 | 2606 | /* Leave 1MB empty (addressable by the chip) */ |
| 2607 | 2607 | ROM_LOAD( "kq1-snd.u32", 0x100000, 0x200000, CRC(8ca1b449) SHA1(f54096fb5400843af4879135c96760485b6cb319) ) |
| 2608 | 2608 | ROM_END |
| r6428 | r6429 | |
| 2624 | 2624 | ROM_LOAD( "kqs1-cg7.u21", 0x1200000, 0x200000, CRC(2c977904) SHA1(2589447f2471cdc414266b34aff552044c680d93) ) |
| 2625 | 2625 | ROM_LOAD( "kqs1-cg3.u17", 0x1400000, 0x400000, CRC(de3b2191) SHA1(d7d6ea07b665cfd834747d3c0776b968ce03bc6a) ) |
| 2626 | 2626 | |
| 2627 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2627 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2628 | 2628 | /* Leave 1MB empty (addressable by the chip) */ |
| 2629 | 2629 | ROM_LOAD( "kqs1-snd.u32", 0x100000, 0x400000, CRC(792a6b49) SHA1(341b4e8f248b5032217733bada32e353c67e3888) ) |
| 2630 | 2630 | ROM_END |
| r6428 | r6429 | |
| 2640 | 2640 | ROM_LOAD( "kuc-u40.i00", 0x800000, 0x400000, CRC(7e49a2cf) SHA1(d24683addbc54515c33fb620ac500e6702bd9e17) ) |
| 2641 | 2641 | ROM_LOAD( "kuc-u41.i00", 0xc00000, 0x400000, CRC(2febf19b) SHA1(8081ac590c0463529777b5e4817305a1a6f6ea41) ) |
| 2642 | 2642 | |
| 2643 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2643 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2644 | 2644 | /* Leave 1MB empty (addressable by the chip) */ |
| 2645 | 2645 | ROM_LOAD( "kus-u18.i00", 0x100000, 0x400000, CRC(e2b1dfcf) SHA1(fb0b8be119531a1a27efa46ed7b86b05a37ed585) ) |
| 2646 | 2646 | ROM_END |
| r6428 | r6429 | |
| 2656 | 2656 | ROM_LOAD( "u40.bin", 0x800000, 0x400000, CRC(dc9e0a96) SHA1(c2c8ccf9039ee0e179b08fdd2d37f29899349cda) ) |
| 2657 | 2657 | ROM_FILL( 0xc00000, 0x400000, 0 ) /* 6bpp instead of 8bpp */ |
| 2658 | 2658 | |
| 2659 | ROM_REGION( 0x300000, "x1", 0 ) /* Samples */ | |
| 2659 | ROM_REGION( 0x300000, "x1snd", 0 ) /* Samples */ | |
| 2660 | 2660 | /* Leave 1MB empty (addressable by the chip) */ |
| 2661 | 2661 | ROM_LOAD( "u18.bin", 0x100000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) ) |
| 2662 | 2662 | ROM_END |
| r6428 | r6429 | |
| 2672 | 2672 | ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) ) |
| 2673 | 2673 | ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) ) |
| 2674 | 2674 | |
| 2675 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2675 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2676 | 2676 | /* Leave 1MB empty (addressable by the chip) */ |
| 2677 | 2677 | ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) ) |
| 2678 | 2678 | ROM_END |
| r6428 | r6429 | |
| 2688 | 2688 | ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) ) |
| 2689 | 2689 | ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) ) |
| 2690 | 2690 | |
| 2691 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2691 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2692 | 2692 | /* Leave 1MB empty (addressable by the chip) */ |
| 2693 | 2693 | ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) ) |
| 2694 | 2694 | ROM_END |
| r6428 | r6429 | |
| 2704 | 2704 | ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) ) |
| 2705 | 2705 | ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) ) |
| 2706 | 2706 | |
| 2707 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2707 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2708 | 2708 | /* Leave 1MB empty (addressable by the chip) */ |
| 2709 | 2709 | ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) ) |
| 2710 | 2710 | ROM_END |
| r6428 | r6429 | |
| 2722 | 2722 | ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) ) |
| 2723 | 2723 | ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) ) |
| 2724 | 2724 | |
| 2725 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2725 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2726 | 2726 | /* Leave 1MB empty (addressable by the chip) */ |
| 2727 | 2727 | ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) ) |
| 2728 | 2728 | ROM_END |
| r6428 | r6429 | |
| 2738 | 2738 | ROM_LOAD( "asx903m01.u40", 0x1000000, 0x800000, CRC(5f86c322) SHA1(5a72adb99eea176199f172384cb051e2b045ab94) ) |
| 2739 | 2739 | ROM_LOAD( "asx904m01.u41", 0x1800000, 0x800000, CRC(c77e0b66) SHA1(0eba30e62e4bd38c198fa6cb69fb94d002ded77a) ) |
| 2740 | 2740 | |
| 2741 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2741 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2742 | 2742 | /* Leave 1MB empty (addressable by the chip) */ |
| 2743 | 2743 | ROM_LOAD( "asx905m01.u18", 0x100000, 0x400000, CRC(8d9dd9a9) SHA1(1fc2f3688d2c24c720dca7357bca6bf5f4016c53) ) |
| 2744 | 2744 | ROM_END |
| r6428 | r6429 | |
| 2754 | 2754 | ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) ) |
| 2755 | 2755 | ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) ) |
| 2756 | 2756 | |
| 2757 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2757 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2758 | 2758 | /* Leave 1MB empty (addressable by the chip) */ |
| 2759 | 2759 | ROM_LOAD( "as1005m01.u18", 0x100000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) ) |
| 2760 | 2760 | ROM_END |
| r6428 | r6429 | |
| 2770 | 2770 | ROM_LOAD( "as1003m01.u40", 0x1000000, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) ) |
| 2771 | 2771 | ROM_LOAD( "as1004m01.u41", 0x1800000, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) ) |
| 2772 | 2772 | |
| 2773 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2773 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2774 | 2774 | /* Leave 1MB empty (addressable by the chip) */ |
| 2775 | 2775 | ROM_LOAD( "as1005m01.u18", 0x100000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) ) |
| 2776 | 2776 | ROM_END |
| r6428 | r6429 | |
| 2786 | 2786 | ROM_LOAD( "as1103m01.u40", 0x1000000, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) ) |
| 2787 | 2787 | ROM_LOAD( "as1104m01.u41", 0x1800000, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) ) |
| 2788 | 2788 | |
| 2789 | ROM_REGION( 0x500000, "x1", 0 ) /* Samples */ | |
| 2789 | ROM_REGION( 0x500000, "x1snd", 0 ) /* Samples */ | |
| 2790 | 2790 | /* Leave 1MB empty (addressable by the chip) */ |
| 2791 | 2791 | ROM_LOAD( "as1105m01.u18", 0x100000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) ) |
| 2792 | 2792 | ROM_END |
| r6428 | r6429 | |
|---|---|---|
| 126 | 126 | AM_RANGE(0x9006, 0x9006) AM_WRITENOP /* ??? */ |
| 127 | 127 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 128 | 128 | 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 */ | |
| 130 | 130 | ADDRESS_MAP_END |
| 131 | 131 | |
| 132 | 132 | |
| r6428 | r6429 | |
| 237 | 237 | /* sound hardware */ |
| 238 | 238 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 239 | 239 | |
| 240 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 240 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 241 | 241 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 242 | 242 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 243 | 243 |
| r6428 | r6429 | |
|---|---|---|
| 108 | 108 | |
| 109 | 109 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 110 | 110 | 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) | |
| 112 | 112 | AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */ |
| 113 | 113 | AM_RANGE(0x6000, 0x67ff) AM_RAM |
| 114 | 114 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 216 | 216 | /* sound hardware */ |
| 217 | 217 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 218 | 218 | |
| 219 | MDRV_SOUND_ADD("ym", YM2151, 3582071) | |
| 219 | MDRV_SOUND_ADD("ymsnd", YM2151, 3582071) | |
| 220 | 220 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 221 | 221 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 222 | 222 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 1214 | 1214 | AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10)) /* Fallthrough */ |
| 1215 | 1215 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1216 | 1216 | 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) | |
| 1218 | 1218 | AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w) |
| 1219 | 1219 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 1220 | 1220 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 1242 | 1242 | MDRV_MACHINE_RESET( coh1000ta ) |
| 1243 | 1243 | MDRV_NVRAM_HANDLER( coh1000ta ) |
| 1244 | 1244 | |
| 1245 | MDRV_SOUND_ADD("ym", YM2610B, 16000000/2) | |
| 1245 | MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2) | |
| 1246 | 1246 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1247 | 1247 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1248 | 1248 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1441 | 1441 | { |
| 1442 | 1442 | if (state) |
| 1443 | 1443 | { |
| 1444 | psx_irq_set(device->machine, | |
| 1444 | psx_irq_set(device->machine, 0x400 | |
| 1445 | 1445 | } |
| 1446 | 1446 | } |
| 1447 | 1447 | |
| r6428 | r6429 | |
| 2008 | 2008 | { |
| 2009 | 2009 | if (state) |
| 2010 | 2010 | { |
| 2011 | psx_irq_set(device->machine, | |
| 2011 | psx_irq_set(device->machine, 0x400 | |
| 2012 | 2012 | } |
| 2013 | 2013 | } |
| 2014 | 2014 | |
| r6428 | r6429 | |
| 2111 | 2111 | static WRITE32_HANDLER( nbajamex_80_w ) |
| 2112 | 2112 | { |
| 2113 | 2113 | verboselog( space->machine, 0, "nbajamex_80_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); |
| 2114 | psx_irq_set(space->machine, | |
| 2114 | psx_irq_set(space->machine, 0x400 | |
| 2115 | 2115 | } |
| 2116 | 2116 | |
| 2117 | 2117 | static READ32_HANDLER( nbajamex_08_r ) |
| r6428 | r6429 | |
| 3906 | 3906 | ROM_LOAD( "e32-07.22", 0x0000000, 0x004000, CRC(adf3feb5) SHA1(bae5bc3fad99a92a3492be1b775dab861007eb3b) ) |
| 3907 | 3907 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 3908 | 3908 | |
| 3909 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3909 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3910 | 3910 | ROM_LOAD( "e32-04.15", 0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) ) |
| 3911 | 3911 | ROM_END |
| 3912 | 3912 | |
| r6428 | r6429 | |
| 3924 | 3924 | ROM_LOAD( "e32-10.22", 0x0000000, 0x004000, CRC(adf3feb5) SHA1(bae5bc3fad99a92a3492be1b775dab861007eb3b) ) |
| 3925 | 3925 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 3926 | 3926 | |
| 3927 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3927 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3928 | 3928 | ROM_LOAD( "e32-04.15", 0x0000000, 0x400000, CRC(c72f9eea) SHA1(7ab8b412a8ed00a42016acb7d13d3b074155780a) ) |
| 3929 | 3929 | ROM_END |
| 3930 | 3930 | |
| r6428 | r6429 | |
| 3942 | 3942 | ROM_LOAD( "e22-07.22", 0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) ) |
| 3943 | 3943 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 3944 | 3944 | |
| 3945 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3945 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3946 | 3946 | ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) ) |
| 3947 | 3947 | ROM_END |
| 3948 | 3948 | |
| r6428 | r6429 | |
| 3960 | 3960 | ROM_LOAD( "e22-07.22", 0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) ) |
| 3961 | 3961 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 3962 | 3962 | |
| 3963 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3963 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3964 | 3964 | ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) ) |
| 3965 | 3965 | ROM_END |
| 3966 | 3966 | |
| r6428 | r6429 | |
| 3978 | 3978 | ROM_LOAD( "e22-07.22", 0x0000000, 0x004000, CRC(739af589) SHA1(dbb4d1c6d824a99ccf27168e2c21644e19811523) ) |
| 3979 | 3979 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 3980 | 3980 | |
| 3981 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3981 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3982 | 3982 | ROM_LOAD( "e22-01.15", 0x000000, 0x200000, CRC(808b8340) SHA1(d8bde850dd9b5b71e94ea707d2d728754f907977) ) |
| 3983 | 3983 | ROM_END |
| 3984 | 3984 | |
| r6428 | r6429 | |
| 4030 | 4030 | ROM_LOAD( "e18-09.22", 0x0000000, 0x004000, CRC(bb5a5319) SHA1(0bb700cafc157d3af663cc9bebb8167487ff2852) ) |
| 4031 | 4031 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 4032 | 4032 | |
| 4033 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 4033 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 4034 | 4034 | ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) ) |
| 4035 | 4035 | ROM_END |
| 4036 | 4036 | |
| r6428 | r6429 | |
| 4049 | 4049 | ROM_LOAD( "e18-09.22", 0x0000000, 0x004000, CRC(bb5a5319) SHA1(0bb700cafc157d3af663cc9bebb8167487ff2852) ) |
| 4050 | 4050 | ROM_CONTINUE( 0x0010000, 0x01c000 ) /* banked stuff */ |
| 4051 | 4051 | |
| 4052 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 4052 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 4053 | 4053 | ROM_LOAD( "e18-01.15", 0x0000000, 0x200000, CRC(dbd1408c) SHA1(ef81064f2f95e5ae25eb1f10d1e78f27f9e294f5) ) |
| 4054 | 4054 | ROM_END |
| 4055 | 4055 |
| r6428 | r6429 | |
|---|---|---|
| 589 | 589 | PORT_DIPSETTING( 0x18, "5 Coins = 2 Bonus" ) |
| 590 | 590 | PORT_DIPSETTING( 0x1c, "5 Coins = 3 Bonus" ) |
| 591 | 591 | PORT_DIPNAME( 0x20, 0x00, "Left Coin Mech" ) PORT_DIPLOCATION("H1:6") |
| 592 | PORT_DIPSETTING( 0x00, "x1" ) | |
| 592 | PORT_DIPSETTING( 0x00, "x1snd" ) | |
| 593 | 593 | PORT_DIPSETTING( 0x20, "x2" ) |
| 594 | 594 | PORT_DIPNAME( 0xc0, 0x00, "Right Coin Mech" ) PORT_DIPLOCATION("H1:7,8") |
| 595 | PORT_DIPSETTING( 0x00, "x1" ) | |
| 595 | PORT_DIPSETTING( 0x00, "x1snd" ) | |
| 596 | 596 | PORT_DIPSETTING( 0x40, "x4" ) |
| 597 | 597 | PORT_DIPSETTING( 0x80, "x5" ) |
| 598 | 598 | PORT_DIPSETTING( 0xc0, "x6" ) |
| r6428 | r6429 | |
|---|---|---|
| 248 | 248 | |
| 249 | 249 | static ADDRESS_MAP_START( sound_3526_io_map, ADDRESS_SPACE_IO, 8 ) |
| 250 | 250 | 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) | |
| 252 | 252 | AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_signed_w) |
| 253 | 253 | AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_signed_w) |
| 254 | 254 | AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) |
| r6428 | r6429 | |
| 568 | 568 | |
| 569 | 569 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 570 | 570 | |
| 571 | MDRV_SOUND_ADD("ym", YM3526, 4000000) | |
| 571 | MDRV_SOUND_ADD("ymsnd", YM3526, 4000000) | |
| 572 | 572 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 573 | 573 | |
| 574 | 574 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 605 | 605 | |
| 606 | 606 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 607 | 607 | |
| 608 | MDRV_SOUND_ADD("ym", YM3526, 4000000) | |
| 608 | MDRV_SOUND_ADD("ymsnd", YM3526, 4000000) | |
| 609 | 609 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 610 | 610 | |
| 611 | 611 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 957 | 957 | |
| 958 | 958 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 959 | 959 | 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) | |
| 961 | 961 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 962 | 962 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 963 | 963 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 987 | 987 | static ADDRESS_MAP_START( nslasher_sound, ADDRESS_SPACE_PROGRAM, 8 ) |
| 988 | 988 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 989 | 989 | 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) | |
| 991 | 991 | AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 992 | 992 | AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 993 | 993 | AM_RANGE(0xd000, 0xd000) AM_READ(latch_r) |
| r6428 | r6429 | |
| 1701 | 1701 | /* sound hardware */ |
| 1702 | 1702 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1703 | 1703 | |
| 1704 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1704 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1705 | 1705 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1706 | 1706 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1707 | 1707 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.42) |
| r6428 | r6429 | |
| 1747 | 1747 | /* sound hardware */ |
| 1748 | 1748 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1749 | 1749 | |
| 1750 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1750 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1751 | 1751 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1752 | 1752 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1753 | 1753 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.42) |
| r6428 | r6429 | |
| 1793 | 1793 | /* sound hardware */ |
| 1794 | 1794 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1795 | 1795 | |
| 1796 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1796 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1797 | 1797 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1798 | 1798 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1799 | 1799 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.42) |
| r6428 | r6429 | |
| 1841 | 1841 | /* sound hardware */ |
| 1842 | 1842 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1843 | 1843 | |
| 1844 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1844 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1845 | 1845 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1846 | 1846 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1847 | 1847 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.42) |
| r6428 | r6429 | |
| 1894 | 1894 | /* sound hardware */ |
| 1895 | 1895 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1896 | 1896 | |
| 1897 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1897 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1898 | 1898 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1899 | 1899 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.42) |
| 1900 | 1900 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.42) |
| r6428 | r6429 | |
| 1984 | 1984 | /* sound hardware */ |
| 1985 | 1985 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1986 | 1986 | |
| 1987 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 1987 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 1988 | 1988 | MDRV_SOUND_CONFIG(ym2151_interface_nslasher) |
| 1989 | 1989 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 1990 | 1990 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 10 | 10 | |
| 11 | 11 | Name: Draw 80 Poker |
| 12 | 12 | Company: IGT - International Gaming Technology |
| 13 | Year: 198 | |
| 13 | Year: 1982 | |
| 14 | 14 | |
| 15 | 15 | Hardware: |
| 16 | 16 | |
| r6428 | r6429 | |
| 22 | 22 | |
| 23 | 23 | This is one of the first video machines produced by IGT. Originally, the |
| 24 | 24 | 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. | |
| 27 | 26 | |
| 28 | 27 | ***********************************************************************************/ |
| 29 | 28 | #include "driver.h" |
| r6428 | r6429 | |
| 34 | 33 | |
| 35 | 34 | static tilemap *bg_tilemap; |
| 36 | 35 | |
| 37 | static UINT8 p1, p2, prog, bus; | |
| 36 | static UINT8 t0, t1, p0, p1, p2, prog, bus; | |
| 38 | 37 | |
| 39 | static UINT8 *pkr_io_ram; | |
| 40 | 38 | static UINT8 active_bank = 0; |
| 41 | 39 | |
| 40 | static UINT8 pkr_io_ram[0x100]; | |
| 42 | 41 | static UINT16 video_ram[0x0400]; |
| 43 | 42 | static UINT8 color_ram[0x0400]; |
| 44 | 43 | |
| r6428 | r6429 | |
| 47 | 46 | * Write Handlers * |
| 48 | 47 | ******************/ |
| 49 | 48 | |
| 49 | static WRITE8_HANDLER( t0_w ) | |
| 50 | { | |
| 51 | t0 = data; | |
| 52 | } | |
| 53 | ||
| 54 | static WRITE8_HANDLER( t1_w ) | |
| 55 | { | |
| 56 | t1 = data; | |
| 57 | } | |
| 58 | ||
| 59 | static WRITE8_HANDLER( p0_w ) | |
| 60 | { | |
| 61 | p0 = data; | |
| 62 | } | |
| 63 | ||
| 50 | 64 | static WRITE8_HANDLER( p1_w ) |
| 51 | 65 | { |
| 52 | 66 | p1 = data; |
| r6428 | r6429 | |
| 64 | 78 | // Bankswitch Program Memory |
| 65 | 79 | if (prog == 0x01) |
| 66 | 80 | { |
| 67 | active_bank++; | |
| 68 | if (active_bank == 2) | |
| 69 | active_bank = 0; | |
| 81 | active_bank = active_bank ^ 0x01; | |
| 70 | 82 | |
| 71 | 83 | memory_set_bank(space->machine, 1, active_bank); |
| 72 | 84 | } |
| r6428 | r6429 | |
| 79 | 91 | |
| 80 | 92 | static WRITE8_HANDLER( drw80pkr_io_w ) |
| 81 | 93 | { |
| 82 | static UINT16 n_offs; | |
| 83 | static UINT16 n_data; | |
| 84 | static UINT16 add; | |
| 94 | UINT16 n_offs; | |
| 85 | 95 | |
| 86 | ||
| 87 | if (p2 == 0x3f) // write cg address | |
| 96 | if (p2 == 0x3f || p2 == 0x7f) | |
| 88 | 97 | { |
| 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; | |
| 97 | 99 | |
| 98 | add = ((p1 & 0xc0) << 2); | |
| 99 | if (p1 == 0x3f && offset >= 0xf0) | |
| 100 | if (p2 == 0x3f) | |
| 100 | 101 | { |
| 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 | |
| 102 | 106 | } |
| 103 | n_offs = (add) + (0xff-offset); | |
| 104 | 107 | |
| 105 | video_ram[n_offs] = n_data; | |
| 106 | ||
| 107 | 108 | tilemap_mark_tile_dirty(bg_tilemap, n_offs); |
| 108 | 109 | } |
| 109 | 110 | |
| 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 | ||
| 122 | 111 | // ay8910 control port |
| 123 | 112 | 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); | |
| 125 | 114 | |
| 126 | 115 | // ay8910_write_port_0_w |
| 127 | 116 | 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); | |
| 129 | 118 | |
| 130 | 119 | // CRTC Register |
| 131 | 120 | // R0 = 0x1f(31) Horizontal Total |
| r6428 | r6429 | |
| 152 | 141 | // CRTC Address |
| 153 | 142 | //if (p1 == 0xff && p2 == 0xd7) |
| 154 | 143 | |
| 155 | pkr_io_ram[offset] = data; | |
| 144 | if (p2 == 0xfb) { | |
| 145 | pkr_io_ram[offset] = data; | |
| 146 | } | |
| 156 | 147 | } |
| 157 | 148 | |
| 158 | 149 | /**************** |
| 159 | 150 | * Read Handlers * |
| 160 | 151 | ****************/ |
| 161 | 152 | |
| 153 | static READ8_HANDLER( t0_r ) | |
| 154 | { | |
| 155 | return t0; | |
| 156 | } | |
| 157 | ||
| 158 | static READ8_HANDLER( t1_r ) | |
| 159 | { | |
| 160 | return t1; | |
| 161 | } | |
| 162 | ||
| 163 | static READ8_HANDLER( p0_r ) | |
| 164 | { | |
| 165 | return p0; | |
| 166 | } | |
| 167 | ||
| 162 | 168 | static READ8_HANDLER( p1_r ) |
| 163 | 169 | { |
| 164 | 170 | return p1; |
| r6428 | r6429 | |
| 176 | 182 | |
| 177 | 183 | static READ8_HANDLER( drw80pkr_io_r ) |
| 178 | 184 | { |
| 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; | |
| 180 | 243 | } |
| 181 | 244 | |
| 182 | 245 | |
| r6428 | r6429 | |
| 206 | 269 | |
| 207 | 270 | static PALETTE_INIT( drw80pkr ) |
| 208 | 271 | { |
| 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; | |
| 216 | 273 | |
| 217 | for ( | |
| 274 | for (j = 0; | |
| 218 | 275 | { |
| 219 | int | |
| 276 | int r | |
| 220 | 277 | |
| 278 | i = (color_prom[j] >> 3) & 0x01; | |
| 279 | //i = color_prom[j]; | |
| 280 | ||
| 221 | 281 | /* 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)); | |
| 226 | 284 | |
| 227 | 285 | /* 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)); | |
| 232 | 288 | |
| 233 | 289 | /* 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)); | |
| 238 | 292 | |
| 239 | palette_set_color(machine, | |
| 293 | palette_set_color(machine, j, MAKE_RGB(r, g, b)); | |
| 240 | 294 | } |
| 241 | 295 | } |
| 242 | 296 | |
| r6428 | r6429 | |
| 250 | 304 | 8,8, /* 8x8 characters */ |
| 251 | 305 | RGN_FRAC(1,2), /* 512 characters */ |
| 252 | 306 | 2, /* 2 bitplanes */ |
| 253 | { RGN_FRAC(1,2) | |
| 307 | { 0, RGN_FRAC(1,2) | |
| 254 | 308 | { STEP8(0,1) }, |
| 255 | 309 | { STEP8(0,8) }, |
| 256 | 310 | 8*8 |
| r6428 | r6429 | |
| 285 | 339 | ADDRESS_MAP_END |
| 286 | 340 | |
| 287 | 341 | static 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) | |
| 290 | 346 | AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) |
| 291 | 347 | AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) |
| 292 | ||
| 348 | | |
| 293 | 349 | AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) |
| 294 | 350 | ADDRESS_MAP_END |
| 295 | 351 | |
| r6428 | r6429 | |
| 299 | 355 | |
| 300 | 356 | static INPUT_PORTS_START( drw80pkr ) |
| 301 | 357 | // 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 ) | |
| 302 | 378 | INPUT_PORTS_END |
| 303 | 379 | |
| 304 | 380 | /************************* |
| r6428 | r6429 | |
| 331 | 407 | // sound hardware |
| 332 | 408 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 333 | 409 | |
| 334 | MDRV_SOUND_ADD("ay", AY8912, 20000000/12) | |
| 410 | MDRV_SOUND_ADD("aysnd", AY8912, 20000000/12) | |
| 335 | 411 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 336 | 412 | MACHINE_DRIVER_END |
| 337 | 413 | |
| r6428 | r6429 | |
| 341 | 417 | |
| 342 | 418 | ROM_START( drw80pkr ) |
| 343 | 419 | 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) ) | |
| 429 | ROM_END | |
| 430 | ||
| 431 | ROM_START( drw80pk2 ) | |
| 432 | ROM_REGION( 0x2000, "maincpu", 0 ) | |
| 344 | 433 | ROM_LOAD( "pm0.u81", 0x0000, 0x1000, CRC(0f3e97d2) SHA1(aa9e4015246284f32435d7320de667e075412e5b) ) |
| 345 | 434 | ROM_LOAD( "pm1.u82", 0x1000, 0x1000, CRC(5a6ad467) SHA1(0128bd70b65244a0f68031d5f451bf115eeb7609) ) |
| 346 | 435 | |
| 347 | ||
| 348 | 436 | ROM_REGION( 0x002000, "gfx1", 0 ) |
| 349 | 437 | ROM_LOAD( "cg0-a.u74", 0x0000, 0x1000, CRC(97f5eb92) SHA1(f6c7bb42ccef8a78e8d56104ad942ae5b8e5b0df) ) |
| 350 | 438 | ROM_LOAD( "cg1-a.u76", 0x1000, 0x1000, CRC(2a3a750d) SHA1(db6183d11b2865b011c3748dc472cf5858dde78f) ) |
| 351 | 439 | |
| 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) ) | |
| 354 | 442 | ROM_END |
| 355 | 443 | |
| 356 | ||
| 357 | 444 | /************************* |
| 358 | 445 | * Game Drivers * |
| 359 | 446 | *************************/ |
| 360 | 447 | |
| 361 | /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ | |
| 362 | GAME( 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 */ | |
| 449 | GAME( 1982, drw80pkr, 0, drw80pkr, drw80pkr, drw80pkr, ROT0, "IGT - International Gaming Technology", "Draw 80 Poker", GAME_NOT_WORKING ) | |
| 450 | GAME( 1983, drw80pk2, 0, drw80pkr, drw80pkr, drw80pkr, ROT0, "IGT - International Gaming Technology", "Draw 80 Poker - Minn", GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 186 | 186 | AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") |
| 187 | 187 | AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") |
| 188 | 188 | 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) | |
| 190 | 190 | AM_RANGE(0x08, 0x08) AM_WRITE(superdq_io_w) |
| 191 | 191 | AM_RANGE(0x0c, 0x0d) AM_NOP /* HD46505S */ |
| 192 | 192 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 322 | 322 | /* sound hardware */ |
| 323 | 323 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 324 | 324 | |
| 325 | MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK/8) | |
| 325 | MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/8) | |
| 326 | 326 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.8) |
| 327 | 327 | |
| 328 | 328 | MDRV_SOUND_ADD("ldsound", LASERDISC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 288 | 288 | |
| 289 | 289 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 290 | 290 | 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) | |
| 292 | 292 | AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w) |
| 293 | 293 | AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG |
| 294 | 294 | AM_RANGE(0x5000, 0x507f) AM_RAM // 6532 ram |
| r6428 | r6429 | |
| 418 | 418 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 419 | 419 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 420 | 420 | |
| 421 | MDRV_SOUND_ADD("ym", YM2151, XTAL_14_31818MHz / 4) | |
| 421 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz / 4) | |
| 422 | 422 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 423 | 423 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 424 | 424 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 324 | 324 | |
| 325 | 325 | static ADDRESS_MAP_START( chinhero_bbx_portmap, ADDRESS_SPACE_IO, 8 ) |
| 326 | 326 | 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) | |
| 328 | 328 | ADDRESS_MAP_END |
| 329 | 329 | |
| 330 | 330 | static ADDRESS_MAP_START( shangkid_bbx_portmap, ADDRESS_SPACE_IO, 8 ) |
| 331 | 331 | 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) | |
| 333 | 333 | ADDRESS_MAP_END |
| 334 | 334 | |
| 335 | 335 | /***************************************************************************************/ |
| r6428 | r6429 | |
| 414 | 414 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 415 | 415 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 416 | 416 | |
| 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 */ | |
| 418 | 418 | MDRV_SOUND_CONFIG(chinhero_ay8910_interface) |
| 419 | 419 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 420 | 420 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 439 | 439 | /* video hardware */ |
| 440 | 440 | MDRV_GFXDECODE(shangkid) |
| 441 | 441 | |
| 442 | MDRV_SOUND_MODIFY("ay") | |
| 442 | MDRV_SOUND_MODIFY("aysnd") | |
| 443 | 443 | MDRV_SOUND_CONFIG(shangkid_ay8910_interface) |
| 444 | 444 | MACHINE_DRIVER_END |
| 445 | 445 | |
| r6428 | r6429 | |
| 463 | 463 | static ADDRESS_MAP_START( dynamski_portmap, ADDRESS_SPACE_IO, 8 ) |
| 464 | 464 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 465 | 465 | /* 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) | |
| 467 | 467 | ADDRESS_MAP_END |
| 468 | 468 | |
| 469 | 469 | static MACHINE_DRIVER_START( dynamski ) |
| r6428 | r6429 | |
| 491 | 491 | /* sound hardware */ |
| 492 | 492 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 493 | 493 | |
| 494 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 494 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 495 | 495 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 496 | 496 | MACHINE_DRIVER_END |
| 497 | 497 |
| r6428 | r6429 | |
|---|---|---|
| 2183 | 2183 | |
| 2184 | 2184 | /* The following ones are 'Draw Poker Hi-Lo', running in a i8080a based hardware */ |
| 2185 | 2185 | GAME( 1983, dphl, 0, dphl, norautp, dphl, ROT0, "M. Kramer Manufacturing.", "Draw Poker Hi-Lo (M.Kramer)", GAME_NOT_WORKING ) |
| 2186 | GAME( 1983, dphla, 0, dphla, norautp, dphla, ROT0, " | |
| 2186 | GAME( 1983, dphla, 0, dphla, norautp, dphla, ROT0, "<unknown>", | |
| 2187 | 2187 | |
| 2188 | 2188 | GAME( 1983, gtipoker, 0, dphl, norautp, gtipoker, ROT0, "GTI Inc", "GTI Poker", GAME_NOT_WORKING ) |
| 2189 | GAME( 1983, dphljp, 0, dphl, norautp, 0, ROT0, " | |
| 2189 | GAME( 1983, dphljp, 0, dphl, norautp, 0, ROT0, "<unknown>", | |
| 2190 | 2190 | GAME( 1983, smshilo, 0, dphlnv, norautp, 0, ROT0, "SMS Manufacturing Corp.", "Hi-Lo Double Up Joker Poker ", GAME_NOT_WORKING ) |
| 2191 | 2191 | GAME( 1993, tpoker2, 0, dphltest, norautp, 0, ROT0, "Micro Manufacturing, Inc.", "Turbo Poker 2", GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 460 | 460 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 461 | 461 | ADDRESS_MAP_UNMAP_HIGH |
| 462 | 462 | 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) | |
| 464 | 464 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 465 | 465 | ADDRESS_MAP_END |
| 466 | 466 | |
| r6428 | r6429 | |
| 858 | 858 | PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) |
| 859 | 859 | PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) |
| 860 | 860 | PORT_DIPNAME( 0x04, 0x04, "Coin #1 multiplier" ) PORT_DIPLOCATION("SWA:3") |
| 861 | PORT_DIPSETTING( 0x04, "x1" ) | |
| 861 | PORT_DIPSETTING( 0x04, "x1snd" ) | |
| 862 | 862 | PORT_DIPSETTING( 0x00, "x2" ) |
| 863 | 863 | PORT_DIPNAME( 0x18, 0x18, "Coin #2 multiplier" ) PORT_DIPLOCATION("SWA:4,5") |
| 864 | PORT_DIPSETTING( 0x18, "x1" ) | |
| 864 | PORT_DIPSETTING( 0x18, "x1snd" ) | |
| 865 | 865 | PORT_DIPSETTING( 0x10, "x4" ) |
| 866 | 866 | PORT_DIPSETTING( 0x08, "x5" ) |
| 867 | 867 | PORT_DIPSETTING( 0x00, "x6" ) |
| r6428 | r6429 | |
| 999 | 999 | /* sound hardware */ |
| 1000 | 1000 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1001 | 1001 | |
| 1002 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/8) | |
| 1002 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/8) | |
| 1003 | 1003 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1004 | 1004 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1005 | 1005 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.43) |
| r6428 | r6429 | |
|---|---|---|
| 381 | 381 | |
| 382 | 382 | static ADDRESS_MAP_START( cclimber_portmap, ADDRESS_SPACE_IO, 8 ) |
| 383 | 383 | 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) | |
| 386 | 386 | ADDRESS_MAP_END |
| 387 | 387 | |
| 388 | 388 | static ADDRESS_MAP_START( yamato_portmap, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 1006 | 1006 | /* sound hardware */ |
| 1007 | 1007 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1008 | 1008 | |
| 1009 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/3/2/2) | |
| 1009 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/3/2/2) | |
| 1010 | 1010 | MDRV_SOUND_CONFIG(cclimber_ay8910_interface) |
| 1011 | 1011 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1012 | 1012 | |
| r6428 | r6429 | |
| 1079 | 1079 | static MACHINE_DRIVER_START( swimmer ) |
| 1080 | 1080 | |
| 1081 | 1081 | /* basic machine hardware */ |
| 1082 | ||
| 1082 | MDRV_CPU_ADD("maincpu", Z80, XTAL_18_43 | |
| 1083 | 1083 | MDRV_CPU_PROGRAM_MAP(swimmer_map) |
| 1084 | 1084 | MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) |
| 1085 | 1085 | |
| 1086 | ||
| 1086 | MDRV_CPU_ADD("audiocpu", Z80,XTAL_4MHz | |
| 1087 | 1087 | MDRV_CPU_PROGRAM_MAP(swimmer_audio_map) |
| 1088 | 1088 | MDRV_CPU_IO_MAP(swimmer_audio_portmap) |
| 1089 | 1089 | MDRV_CPU_PERIODIC_INT(nmi_line_pulse, (double)4000000/16384) /* IRQs are triggered by the main CPU */ |
| 1090 | 1090 | |
| 1091 | 1091 | /* video hardware */ |
| 1092 | 1092 | MDRV_SCREEN_ADD("screen", RASTER) |
| 1093 | ||
| 1093 | MDRV_SCREEN_REFRESH_RATE(60.57) /* verified on pcb */ | |
| 1094 | 1094 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1095 | 1095 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 1096 | 1096 | MDRV_SCREEN_SIZE(32*8, 32*8) |
| r6428 | r6429 | |
| 1105 | 1105 | |
| 1106 | 1106 | /* audio hardware */ |
| 1107 | 1107 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1108 | ||
| 1108 | MDRV_SOUND_ADD("ay1", AY8910, XTAL_4MHz | |
| 1109 | 1109 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1110 | 1110 | |
| 1111 | ||
| 1111 | MDRV_SOUND_ADD("ay2", AY8910, XTAL_4MHz | |
| 1112 | 1112 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1113 | 1113 | MACHINE_DRIVER_END |
| 1114 | 1114 |
| r6428 | r6429 | |
|---|---|---|
| 37 | 37 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 38 | 38 | AM_RANGE(0x98, 0x98) AM_READWRITE( TMS9928A_vram_r, TMS9928A_vram_w ) |
| 39 | 39 | 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) | |
| 42 | 42 | |
| 43 | 43 | //Ports a8-ab are originally for communicating with the i8255 PPI on MSX. |
| 44 | 44 | //( http://map.tni.nl/resources/msx_io_ports.php#ppi ) |
| r6428 | r6429 | |
| 137 | 137 | |
| 138 | 138 | /* sound hardware */ |
| 139 | 139 | 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) | |
| 141 | 141 | MDRV_SOUND_CONFIG(forte2_ay8910_interface) |
| 142 | 142 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 143 | 143 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 108 | 108 | static ADDRESS_MAP_START( aliens_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 109 | 109 | AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM g04_b03.bin */ |
| 110 | 110 | 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) | |
| 112 | 112 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 113 | 113 | AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w) |
| 114 | 114 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 219 | 219 | /* sound hardware */ |
| 220 | 220 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 221 | 221 | |
| 222 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 222 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 223 | 223 | MDRV_SOUND_CONFIG(ym2151_config) |
| 224 | 224 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 225 | 225 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 113 | 113 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 114 | 114 | AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w) |
| 115 | 115 | 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) | |
| 117 | 117 | AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w) |
| 118 | 118 | ADDRESS_MAP_END |
| 119 | 119 | |
| r6428 | r6429 | |
| 252 | 252 | /* sound hardware */ |
| 253 | 253 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 254 | 254 | |
| 255 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 255 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 256 | 256 | MDRV_SOUND_ROUTE(0, "mono", 0.75) |
| 257 | 257 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| 258 | 258 |
| r6428 | r6429 | |
|---|---|---|
| 1613 | 1613 | AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r) // Video Chip |
| 1614 | 1614 | |
| 1615 | 1615 | 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) | |
| 1617 | 1617 | 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) | |
| 1620 | 1620 | AM_RANGE(0x3003c2, 0x3003c3) AM_DEVWRITE("oki", quiz365_oki_bank1_w) |
| 1621 | 1621 | AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge |
| 1622 | 1622 | AM_RANGE(0x3003cc, 0x3003cd) AM_DEVWRITE("oki", quiz365_oki_bank2_w) |
| r6428 | r6429 | |
| 1667 | 1667 | AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) |
| 1668 | 1668 | AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w) |
| 1669 | 1669 | 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) | |
| 1671 | 1671 | 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) | |
| 1673 | 1673 | AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1") |
| 1674 | 1674 | AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") |
| 1675 | 1675 | AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 1735 | 1735 | AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters |
| 1736 | 1736 | AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // |
| 1737 | 1737 | |
| 1738 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff) | |
| 1738 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) | |
| 1739 | 1739 | 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) | |
| 1742 | 1742 | AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) // Sound |
| 1743 | 1743 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1744 | 1744 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1773 | 1773 | AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters |
| 1774 | 1774 | AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // |
| 1775 | 1775 | |
| 1776 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff) | |
| 1776 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) | |
| 1777 | 1777 | 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) | |
| 1780 | 1780 | AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) // Sound |
| 1781 | 1781 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 1782 | 1782 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1847 | 1847 | AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) |
| 1848 | 1848 | AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w) |
| 1849 | 1849 | 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) | |
| 1851 | 1851 | 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) | |
| 1853 | 1853 | AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1") |
| 1854 | 1854 | AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") |
| 1855 | 1855 | AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 1909 | 1909 | AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r) |
| 1910 | 1910 | |
| 1911 | 1911 | 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) | |
| 1913 | 1913 | |
| 1914 | 1914 | AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) |
| 1915 | 1915 | AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) |
| r6428 | r6429 | |
| 1944 | 1944 | |
| 1945 | 1945 | AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 1946 | 1946 | 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) | |
| 1948 | 1948 | |
| 1949 | 1949 | AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) |
| 1950 | 1950 | AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) |
| r6428 | r6429 | |
| 2070 | 2070 | AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w) |
| 2071 | 2071 | AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r) // Video Chip |
| 2072 | 2072 | 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) | |
| 2074 | 2074 | AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w) |
| 2075 | 2075 | AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0") |
| 2076 | 2076 | AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1") |
| r6428 | r6429 | |
| 2100 | 2100 | AM_RANGE(0x02, 0x02) AM_READ(SMH_NOP ) // read just before port 00 |
| 2101 | 2101 | AM_RANGE(0x04, 0x04) AM_NOP // read only once at the start |
| 2102 | 2102 | 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) | |
| 2106 | 2106 | ADDRESS_MAP_END |
| 2107 | 2107 | |
| 2108 | 2108 | |
| r6428 | r6429 | |
| 2390 | 2390 | AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w) |
| 2391 | 2391 | AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w) |
| 2392 | 2392 | 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) | |
| 2394 | 2394 | AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 2395 | 2395 | AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 2396 | 2396 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 2405 | 2405 | AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) |
| 2406 | 2406 | AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) |
| 2407 | 2407 | 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) | |
| 2409 | 2409 | AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM") |
| 2410 | 2410 | AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r) |
| 2411 | 2411 | AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w) |
| r6428 | r6429 | |
| 2443 | 2443 | AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM") |
| 2444 | 2444 | AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r) |
| 2445 | 2445 | 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) | |
| 2447 | 2447 | AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 2448 | 2448 | AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 2449 | 2449 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 2570 | 2570 | AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4") |
| 2571 | 2571 | AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5") // DSW 1-4 high bits |
| 2572 | 2572 | 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) | |
| 2574 | 2574 | 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) | |
| 2576 | 2576 | ADDRESS_MAP_END |
| 2577 | 2577 | |
| 2578 | 2578 | |
| r6428 | r6429 | |
| 2678 | 2678 | AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r) |
| 2679 | 2679 | AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) |
| 2680 | 2680 | 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) | |
| 2685 | 2685 | AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 2686 | 2686 | AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) |
| 2687 | 2687 | AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) |
| r6428 | r6429 | |
| 2843 | 2843 | AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) |
| 2844 | 2844 | AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) |
| 2845 | 2845 | 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) | |
| 2850 | 2850 | AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w) |
| 2851 | 2851 | AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w) |
| 2852 | 2852 | AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r) |
| r6428 | r6429 | |
| 2959 | 2959 | AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w) |
| 2960 | 2960 | AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r) |
| 2961 | 2961 | 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) | |
| 2966 | 2966 | AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r) |
| 2967 | 2967 | ADDRESS_MAP_END |
| 2968 | 2968 | |
| r6428 | r6429 | |
| 3038 | 3038 | AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r) |
| 3039 | 3039 | AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w) |
| 3040 | 3040 | 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) | |
| 3042 | 3042 | AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) |
| 3043 | 3043 | AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) |
| 3044 | 3044 | AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) |
| r6428 | r6429 | |
| 3083 | 3083 | AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r) |
| 3084 | 3084 | AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) |
| 3085 | 3085 | 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) | |
| 3090 | 3090 | AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 3091 | 3091 | AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) |
| 3092 | 3092 | AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) |
| r6428 | r6429 | |
| 3184 | 3184 | AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters |
| 3185 | 3185 | AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // |
| 3186 | 3186 | |
| 3187 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff) | |
| 3187 | AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) | |
| 3188 | 3188 | 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) | |
| 3191 | 3191 | AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) // Sound |
| 3192 | 3192 | AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM |
| 3193 | 3193 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 3277 | 3277 | AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1") |
| 3278 | 3278 | AM_RANGE(0x0181, 0x0181) AM_WRITENOP // ? int. enable |
| 3279 | 3279 | 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) | |
| 3281 | 3281 | 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) | |
| 3283 | 3283 | AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 3284 | 3284 | ADDRESS_MAP_END |
| 3285 | 3285 | |
| r6428 | r6429 | |
| 3317 | 3317 | AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w) |
| 3318 | 3318 | AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w) |
| 3319 | 3319 | 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) | |
| 3321 | 3321 | AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 3322 | 3322 | AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 3323 | 3323 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 3377 | 3377 | |
| 3378 | 3378 | static ADDRESS_MAP_START( sryudens_portmap, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 3379 | 3379 | 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) | |
| 3382 | 3382 | AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int |
| 3383 | 3383 | AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w) |
| 3384 | 3384 | AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) |
| r6428 | r6429 | |
| 3494 | 3494 | AM_RANGE(0x42, 0x44) AM_READ(hanakanz_gfxrom_r) |
| 3495 | 3495 | AM_RANGE(0x8a, 0x8b) AM_READ(daimyojn_year_hack_r) // ? |
| 3496 | 3496 | 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) | |
| 3498 | 3498 | AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 3499 | 3499 | AM_RANGE(0xa8, 0xa8) AM_READ_PORT("SYSTEM") |
| 3500 | 3500 | AM_RANGE(0xaa, 0xaa) AM_READ(daimyojn_keyb1_r) |
| r6428 | r6429 | |
| 7362 | 7362 | /* sound hardware */ |
| 7363 | 7363 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7364 | 7364 | |
| 7365 | MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8) | |
| 7365 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8) | |
| 7366 | 7366 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7367 | 7367 | |
| 7368 | MDRV_SOUND_ADD("ay", AY8910, XTAL_28_63636MHz / 16) // or /8 ? | |
| 7368 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 16) // or /8 ? | |
| 7369 | 7369 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7370 | 7370 | |
| 7371 | 7371 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28) |
| r6428 | r6429 | |
| 7416 | 7416 | MDRV_CPU_MODIFY("maincpu") |
| 7417 | 7417 | MDRV_CPU_PROGRAM_MAP(quiz365_map) |
| 7418 | 7418 | |
| 7419 | MDRV_SOUND_MODIFY("ay") | |
| 7419 | MDRV_SOUND_MODIFY("aysnd") | |
| 7420 | 7420 | MDRV_SOUND_CONFIG(quiz365_ay8910_interface) |
| 7421 | 7421 | MACHINE_DRIVER_END |
| 7422 | 7422 | |
| r6428 | r6429 | |
| 7488 | 7488 | /* sound hardware */ |
| 7489 | 7489 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7490 | 7490 | |
| 7491 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 7491 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 7492 | 7492 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7493 | 7493 | |
| 7494 | 7494 | MDRV_SOUND_ADD("oki", OKIM6295, 1022720) |
| r6428 | r6429 | |
| 7566 | 7566 | /* sound hardware */ |
| 7567 | 7567 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7568 | 7568 | |
| 7569 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 7569 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 7570 | 7570 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7571 | 7571 | |
| 7572 | MDRV_SOUND_ADD("ay", AY8910, 3579545) | |
| 7572 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) | |
| 7573 | 7573 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7574 | 7574 | |
| 7575 | 7575 | MDRV_SOUND_ADD("oki", OKIM6295, 1022720) |
| r6428 | r6429 | |
| 7633 | 7633 | /* sound hardware */ |
| 7634 | 7634 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7635 | 7635 | |
| 7636 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 7636 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 7637 | 7637 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7638 | 7638 | |
| 7639 | 7639 | MDRV_SOUND_ADD("oki", OKIM6295, 1022720) |
| r6428 | r6429 | |
| 7692 | 7692 | MDRV_CPU_IO_MAP(mjchuuka_portmap) |
| 7693 | 7693 | MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq) |
| 7694 | 7694 | |
| 7695 | MDRV_SOUND_ADD("ay", AY8910, 1789772) | |
| 7695 | MDRV_SOUND_ADD("aysnd", AY8910, 1789772) | |
| 7696 | 7696 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 7697 | 7697 | MACHINE_DRIVER_END |
| 7698 | 7698 | |
| r6428 | r6429 | |
| 7767 | 7767 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7768 | 7768 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7769 | 7769 | |
| 7770 | MDRV_SOUND_ADD("ay", AY8910, 3579545) | |
| 7770 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) | |
| 7771 | 7771 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7772 | 7772 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7773 | 7773 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7815 | 7815 | MDRV_CPU_IO_MAP(hginga_portmap) |
| 7816 | 7816 | MDRV_CPU_VBLANK_INT("screen", hginga_irq) |
| 7817 | 7817 | |
| 7818 | MDRV_SOUND_ADD("ay", AY8910, 3579545) | |
| 7818 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) | |
| 7819 | 7819 | MDRV_SOUND_CONFIG(hginga_ay8910_interface) |
| 7820 | 7820 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7821 | 7821 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7828 | 7828 | MDRV_CPU_IO_MAP(hgokou_portmap) |
| 7829 | 7829 | MDRV_CPU_VBLANK_INT("screen", hginga_irq) |
| 7830 | 7830 | |
| 7831 | MDRV_SOUND_ADD("ay", AY8910, 3579545) | |
| 7831 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) | |
| 7832 | 7832 | MDRV_SOUND_CONFIG(hginga_ay8910_interface) |
| 7833 | 7833 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7834 | 7834 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7850 | 7850 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7851 | 7851 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7852 | 7852 | |
| 7853 | MDRV_SOUND_ADD("ay", AY8910, 1789772) | |
| 7853 | MDRV_SOUND_ADD("aysnd", AY8910, 1789772) | |
| 7854 | 7854 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7855 | 7855 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7856 | 7856 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7863 | 7863 | MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2) |
| 7864 | 7864 | MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1) |
| 7865 | 7865 | |
| 7866 | MDRV_SOUND_ADD("ay", AY8910, 1789772) | |
| 7866 | MDRV_SOUND_ADD("aysnd", AY8910, 1789772) | |
| 7867 | 7867 | MDRV_SOUND_CONFIG(mjmyster_ay8910_interface) |
| 7868 | 7868 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7869 | 7869 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7895 | 7895 | |
| 7896 | 7896 | MDRV_VIDEO_START(mjflove) // blitter commands in the roms are shuffled around |
| 7897 | 7897 | |
| 7898 | MDRV_SOUND_ADD("ay", AY8910, 28636363/8) | |
| 7898 | MDRV_SOUND_ADD("aysnd", AY8910, 28636363/8) | |
| 7899 | 7899 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7900 | 7900 | MACHINE_DRIVER_END |
| 7901 | 7901 | |
| r6428 | r6429 | |
| 7940 | 7940 | /* sound hardware */ |
| 7941 | 7941 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7942 | 7942 | |
| 7943 | MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8) | |
| 7943 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8) | |
| 7944 | 7944 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7945 | 7945 | |
| 7946 | 7946 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28) |
| r6428 | r6429 | |
| 7980 | 7980 | /* sound hardware */ |
| 7981 | 7981 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 7982 | 7982 | |
| 7983 | MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8) | |
| 7983 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8) | |
| 7984 | 7984 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 7985 | 7985 | |
| 7986 | MDRV_SOUND_ADD("ay", AY8910, XTAL_28_63636MHz / 8) | |
| 7986 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8) | |
| 7987 | 7987 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 7988 | 7988 | |
| 7989 | 7989 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28) // ? |
| r6428 | r6429 | |
| 8023 | 8023 | /* sound hardware */ |
| 8024 | 8024 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 8025 | 8025 | |
| 8026 | MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8) | |
| 8026 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8) | |
| 8027 | 8027 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 8028 | 8028 | |
| 8029 | 8029 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28) |
| r6428 | r6429 | |
|---|---|---|
| 365 | 365 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 366 | 366 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 367 | 367 | 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) | |
| 369 | 369 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 370 | 370 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r) |
| 371 | 371 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 383 | 383 | // AM_RANGE(0x8804, 0x8804) AM_WRITE(SMH_RAM) |
| 384 | 384 | // AM_RANGE(0x8805, 0x8805) AM_WRITE(SMH_RAM) |
| 385 | 385 | |
| 386 | // AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w) | |
| 386 | // AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w) | |
| 387 | 387 | // AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 388 | 388 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r) |
| 389 | 389 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 391 | 391 | static ADDRESS_MAP_START( saiyugb1_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 392 | 392 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 393 | 393 | 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) | |
| 395 | 395 | AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugb1_mcu_command_w) |
| 396 | 396 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r) |
| 397 | 397 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 575 | 575 | /* sound hardware */ |
| 576 | 576 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 577 | 577 | |
| 578 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 578 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 579 | 579 | MDRV_SOUND_CONFIG(ym2151_config) |
| 580 | 580 | MDRV_SOUND_ROUTE(0, "mono", 0.80) |
| 581 | 581 | MDRV_SOUND_ROUTE(1, "mono", 0.80) |
| r6428 | r6429 | |
| 618 | 618 | /* sound hardware */ |
| 619 | 619 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 620 | 620 | |
| 621 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 621 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 622 | 622 | MDRV_SOUND_CONFIG(ym2151_config) |
| 623 | 623 | MDRV_SOUND_ROUTE(0, "mono", 0.80) |
| 624 | 624 | MDRV_SOUND_ROUTE(1, "mono", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 889 | 889 | |
| 890 | 890 | static ADDRESS_MAP_START( blazeon_soundport, ADDRESS_SPACE_IO, 8 ) |
| 891 | 891 | 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) | |
| 893 | 893 | AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r) |
| 894 | 894 | ADDRESS_MAP_END |
| 895 | 895 | |
| r6428 | r6429 | |
| 1921 | 1921 | /* sound hardware */ |
| 1922 | 1922 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1923 | 1923 | |
| 1924 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 1924 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1925 | 1925 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1926 | 1926 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1927 | 1927 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 155 | 155 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 156 | 156 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 157 | 157 | 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) | |
| 159 | 159 | AM_RANGE(0xfc00, 0xfc00) AM_READNOP /* ??? adpcm ??? */ |
| 160 | 160 | AM_RANGE(0xfc10, 0xfc10) AM_READ(soundlatch_r) |
| 161 | 161 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 338 | 338 | /* sound hardware */ |
| 339 | 339 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 340 | 340 | |
| 341 | MDRV_SOUND_ADD("ym", YM2608, 8000000) | |
| 341 | MDRV_SOUND_ADD("ymsnd", YM2608, 8000000) | |
| 342 | 342 | MDRV_SOUND_CONFIG(ym2608_config) |
| 343 | 343 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 344 | 344 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 380 | 380 | ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) ) /* sprites */ |
| 381 | 381 | ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) ) /* sprites */ |
| 382 | 382 | |
| 383 | ROM_REGION( 0x20000, "ym", 0 ) /* 64k for ADPCM samples */ | |
| 383 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* 64k for ADPCM samples */ | |
| 384 | 384 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 385 | 385 | ROM_END |
| 386 | 386 | |
| r6428 | r6429 | |
| 413 | 413 | ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) ) /* sprites */ |
| 414 | 414 | ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) ) /* sprites */ |
| 415 | 415 | |
| 416 | ROM_REGION( 0x20000, "ym", 0 ) /* 64k for ADPCM samples */ | |
| 416 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* 64k for ADPCM samples */ | |
| 417 | 417 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 418 | 418 | ROM_END |
| 419 | 419 | |
| r6428 | r6429 | |
| 446 | 446 | ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) ) /* sprites */ |
| 447 | 447 | ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) ) /* sprites */ |
| 448 | 448 | |
| 449 | ROM_REGION( 0x20000, "ym", 0 ) /* 64k for ADPCM samples */ | |
| 449 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* 64k for ADPCM samples */ | |
| 450 | 450 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 451 | 451 | ROM_END |
| 452 | 452 | |
| r6428 | r6429 | |
| 479 | 479 | ROM_LOAD( "ic60_14v.bin", 0x40000, 0x20000, CRC(499dfb1b) SHA1(ac67985d36fea18c82a4ea00019d9e6e4bcb5d0d) ) /* sprites */ |
| 480 | 480 | ROM_LOAD( "ic65_15v.bin", 0x60000, 0x20000, CRC(d8ea5c81) SHA1(ccb3f7d565b1c1b8e874a2df91cda40dde2962ed) ) /* sprites */ |
| 481 | 481 | |
| 482 | ROM_REGION( 0x20000, "ym", 0 ) /* 64k for ADPCM samples */ | |
| 482 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* 64k for ADPCM samples */ | |
| 483 | 483 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 484 | 484 | ROM_END |
| 485 | 485 |
| r6428 | r6429 | |
|---|---|---|
| 337 | 337 | AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w) |
| 338 | 338 | AM_RANGE(0x1030, 0x103f) AM_MIRROR(0x27c0) AM_READWRITE(switch_6502_r, sound_ctl_w) |
| 339 | 339 | 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) | |
| 341 | 341 | AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE("tms", tms5220_data_w) |
| 342 | 342 | AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_READWRITE(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w) |
| 343 | 343 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 529 | 529 | /* sound hardware */ |
| 530 | 530 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 531 | 531 | |
| 532 | MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4) | |
| 532 | MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 533 | 533 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.48) |
| 534 | 534 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.48) |
| 535 | 535 |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /* Jaleco MegaSystem 32 (Preliminary Driver) |
| 2 | 2 | |
| 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.) | |
| 5 | 4 | |
| 6 | ||
| 7 | 5 | Used by Jaleco in the Mid-90's this system, based on the V70 processor consisted |
| 8 | 6 | of a two board set up, the first a standard mainboard and the second a 'cartridge' |
| 9 | 7 | |
| r6428 | r6429 | |
| 45 | 43 | |
| 46 | 44 | Game Roms + Custom Chip |
| 47 | 45 | |
| 48 | The Custom chip | |
| 46 | The Custom chip | |
| 49 | 47 | |
| 50 | 48 | Desert War - Custom chip: JALECO SS91022-10 (144 pin PQFP) (located on small plug-in board with) (ID: SE93139 EB91022-30056) |
| 51 | 49 | Game Paradise - Custom chip: JALECO SS91022-10 9515EV 420201 06441 |
| r6428 | r6429 | |
| 75 | 73 | |
| 76 | 74 | Z80 + Sound Bits |
| 77 | 75 | |
| 78 | Re-Add Priorities | |
| 76 | Priorities (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! | |
| 79 | 78 | |
| 80 | 79 | Dip switches/inputs in t2m32 and f1superb |
| 81 | 80 | some games (hayaosi2) don't seeem to have service mode even if it's listed among the dips |
| r6428 | r6429 | |
| 83 | 82 | |
| 84 | 83 | Fix Anything Else (Palette etc.) |
| 85 | 84 | |
| 86 | Replace CPU divider with Idle skip since we don't know how fast the v70 really is (cpu timing is ignored)... | |
| 87 | 85 | |
| 88 | Mirror Ram addresses? | |
| 89 | ||
| 90 | 86 | Not sure about the main "global brightness" control register, I don't think it can make the palette |
| 91 | 87 | completely 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? | |
| 92 | 90 | |
| 93 | 91 | gametngk seems to need some kind of shadow sprites but the only difference in the sprite attributes is one of the |
| 94 | 92 | priority bits, forcing sprites of that priority to be shadows doesn't work |
| r6428 | r6429 | |
| 99 | 97 | |
| 100 | 98 | horizontal position of tx and bg tilemaps is off by 1 pixel in some games |
| 101 | 99 | |
| 102 | There should be NVRAM somewhere, maybe fc000000-fc007fff | |
| 103 | ||
| 104 | 100 | bbbxing: some sprite/roz/bg alignment issues |
| 105 | 101 | |
| 106 | 102 | gratia: at the beginning of a level it shows the level name in the bottom right corner, scrolling it up |
| r6428 | r6429 | |
| 123 | 119 | repeated on the screen (p47aces, kirarast, bbbxing, gametngk need it OFF). |
| 124 | 120 | gratia and desertwr need it ON. |
| 125 | 121 | |
| 126 | there 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. | |
| 122 | there are sprite lag issues - sprites should be framebuffered | |
| 128 | 123 | |
| 124 | missing clipping window effect in gametngk intro | |
| 129 | 125 | |
| 126 | ||
| 130 | 127 | Not Working Games |
| 131 | 128 | ----------------- |
| 132 | 129 | |
| 133 | tp2m32 - writes invalid SBR, enables interrupts, crashes (fixed patching the bogus SBR). | |
| 134 | f1superb - 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. | |
| 130 | f1superb - 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 | |
| 137 | 133 | |
| 138 | ||
| 139 | 134 | Jaleco Megasystem 32 Game List - thanks to Yasuhiro |
| 140 | 135 | --------------------------------------------------- |
| 141 | 136 | |
| r6428 | r6429 | |
| 146 | 141 | Best Bout Boxing (bbbxing) |
| 147 | 142 | Wangan Sensou / Desert War (desertwr) |
| 148 | 143 | Second 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) | |
| 151 | 145 | F-1 Super Battle (f1superb) |
| 152 | 146 | |
| 153 | 147 | Idol Janshi Su-Chi-Pi 2 (47pie2) |
| 154 | 148 | Ryuusei Janshi Kirara Star (kirarast) |
| 155 | 149 | Mahjong Angel Kiss |
| 156 | ||
| 150 | ||
| 157 | 151 | |
| 158 | Hayaoshi Quiz Ouza Ketteisen (hayaosi2) | |
| 159 | *Hayaoshi Quiz Nettou Namahousou | |
| 160 | *Hayaoshi Quiz Grand Champion Taikai | |
| 161 | 152 | |
| 162 | Maybe some more... | |
| 153 | Hayaoshi Quiz Nettou Namahousou ( hayaosi3 ) | |
| 154 | Hayaoshi Quiz Grand Champion Taikai (hayaosi2) | |
| 163 | 155 | |
| 164 | ||
| 156 | Not | |
| 165 | 157 | |
| 158 | Super Strong Warriors | |
| 159 | ||
| 160 | ||
| 161 | ||
| 166 | 162 | */ |
| 167 | 163 | |
| 168 | 164 | /********** BITS & PIECES **********/ |
| r6428 | r6429 | |
| 174 | 170 | #include "sound/ymf271.h" |
| 175 | 171 | #include "includes/ms32.h" |
| 176 | 172 | |
| 177 | static UINT | |
| 173 | static UINT8 | |
| 178 | 174 | |
| 179 | 175 | static UINT32 *ms32_mahjong_input_select; |
| 180 | 176 | |
| r6428 | r6429 | |
| 211 | 207 | return mj_input & 0xff; |
| 212 | 208 | } |
| 213 | 209 | |
| 210 | ||
| 214 | 211 | static READ32_HANDLER( ms32_read_inputs3 ) |
| 215 | 212 | { |
| 216 | 213 | int a,b,c,d; |
| r6428 | r6429 | |
| 221 | 218 | return a << 24 | b << 16 | c << 8 | d << 0; |
| 222 | 219 | } |
| 223 | 220 | |
| 221 | ||
| 224 | 222 | static WRITE32_HANDLER( ms32_sound_w ) |
| 225 | 223 | { |
| 226 | 224 | soundlatch_w(space, 0, data & 0xff); |
| r6428 | r6429 | |
| 245 | 243 | |
| 246 | 244 | /********** MEMORY MAP **********/ |
| 247 | 245 | |
| 248 | /* some games games test more ram than others .. ram areas with closed comments before | |
| 249 | the lines get tested by various games but I'm not sure are really used, maybe they're | |
| 250 | mirror addresses? */ | |
| 251 | 246 | |
| 252 | /* | |
| 253 | p47 aces: | |
| 254 | there are bugs in the test routine, so it checks twice the amount of RAM | |
| 255 | actually present, relying on mirror addresses. | |
| 256 | See how ASCII and SCROLL overlap. | |
| 257 | SCRATCH RAM fee00000-fee1ffff | |
| 258 | ASCII RAM fec00000-fec0ffff (actually fec00000-fec07fff ?) | |
| 259 | SCROLL RAM fec08000-fec17fff (actually fec08000-fec0ffff ?) | |
| 260 | ROTATE RAM fe000000-fe03ffff (actually fe000000-fe01ffff ?) | |
| 261 | OBJECT RAM fe800000-fe87ffff (actually fe800000-fe83ffff ?) | |
| 262 | COLOR RAM fd400000-fd40ffff (this one is actually larger than tested) | |
| 263 | PRIORITY RAM fd180000-fd1bffff (actually fd180000-fd19ffff ?) | |
| 264 | SOUND RAM | |
| 247 | extern tilemap *ms32_tx_tilemap, *ms32_roz_tilemap, *ms32_bg_tilemap, *ms32_bg_tilemap_alt; | |
| 248 | extern UINT8* ms32_priram_8; | |
| 249 | extern UINT16* ms32_palram_16; | |
| 250 | extern UINT16* ms32_rozram_16; | |
| 251 | extern UINT16* ms32_lineram_16; | |
| 252 | extern UINT16* ms32_sprram_16; | |
| 253 | extern UINT16* ms32_txram_16; | |
| 254 | extern UINT16* ms32_bgram_16; | |
| 255 | extern UINT32 ms32_tilemaplayoutcontrol; | |
| 265 | 256 | |
| 266 | This applies to most of the other games. | |
| 267 | Also, gametngk uses mirror addresses for the background during gameplay, without | |
| 268 | support for them bad tiles appear in the bg. | |
| 269 | */ | |
| 257 | static READ8_HANDLER( ms32_nvram_r8 ) { return ms32_nvram_8[offset]; } | |
| 258 | static WRITE8_HANDLER( ms32_nvram_w8 ) { ms32_nvram_8[offset] = data; } | |
| 259 | static READ8_HANDLER( ms32_priram_r8 ) { return ms32_priram_8[offset]; } | |
| 260 | static WRITE8_HANDLER( ms32_priram_w8 ) { ms32_priram_8[offset] = data; } | |
| 261 | static READ16_HANDLER( ms32_palram_r16 ) { return ms32_palram_16[offset]; } | |
| 262 | static WRITE16_HANDLER( ms32_palram_w16 ) { COMBINE_DATA(&ms32_palram_16[offset]); } | |
| 263 | static READ16_HANDLER( ms32_rozram_r16 ) { return ms32_rozram_16[offset]; } | |
| 264 | static WRITE16_HANDLER( ms32_rozram_w16 ) { COMBINE_DATA(&ms32_rozram_16[offset]); tilemap_mark_tile_dirty(ms32_roz_tilemap,offset/2); } | |
| 265 | static READ16_HANDLER( ms32_lineram_r16 ) { return ms32_lineram_16[offset]; } | |
| 266 | static WRITE16_HANDLER( ms32_lineram_w16 ) { COMBINE_DATA(&ms32_lineram_16[offset]); } | |
| 267 | static READ16_HANDLER( ms32_sprram_r16 ) { return ms32_sprram_16[offset]; } | |
| 268 | static WRITE16_HANDLER( ms32_sprram_w16 ) { COMBINE_DATA(&ms32_sprram_16[offset]); } | |
| 269 | static READ16_HANDLER( ms32_txram_r16 ) { return ms32_txram_16[offset]; } | |
| 270 | static WRITE16_HANDLER( ms32_txram_w16 ) { COMBINE_DATA(&ms32_txram_16[offset]); tilemap_mark_tile_dirty(ms32_tx_tilemap,offset/2); } | |
| 271 | static READ16_HANDLER( ms32_bgram_r16 ) { return ms32_bgram_16[offset]; } | |
| 272 | static 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); } | |
| 270 | 273 | |
| 271 | 274 | static WRITE32_HANDLER( pip_w ) |
| 272 | 275 | { |
| 273 | if (data) | |
| 276 | ms32_tilemaplayoutcontrol = data; | |
| 277 | ||
| 278 | if ((data) && (data != 1)) | |
| 274 | 279 | popmessage("fce00a7c = %02x",data); |
| 275 | 280 | } |
| 276 | 281 | |
| 282 | ||
| 277 | 283 | static 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 */ | |
| 280 | 304 | AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP /* sound? */ |
| 281 | 305 | AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) /* sound? */ |
| 282 | ||
| 283 | 306 | AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS") |
| 284 | 307 | AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW") |
| 285 | ||
| 286 | 308 | AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP // irq ack? |
| 287 | 309 | AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w) |
| 288 | 310 | AM_RANGE(0xfce00050, 0xfce0005f) AM_WRITENOP // watchdog? I haven't investigated |
| r6428 | r6429 | |
| 293 | 315 | /**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_RAM AM_BASE(&ms32_tx_scroll) /* tx layer scroll */ |
| 294 | 316 | /**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_RAM AM_BASE(&ms32_bg_scroll) /* bg layer scroll */ |
| 295 | 317 | AM_RANGE(0xfce00a7c, 0xfce00a7f) AM_WRITE(pip_w) // ??? layer related? seems to be always 0 |
| 296 | // AM_RANGE(0xfce00800, 0xfce0085f) // f1superb, roz #2 control? | |
| 297 | 318 | // AM_RANGE(0xfce00e00, 0xfce00e03) coin counters + something else |
| 298 | ||
| 299 | 319 | 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) | |
| 321 | ADDRESS_MAP_END | |
| 301 | 322 | |
| 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 | ||
| 327 | extern UINT16* f1superb_extraram_16; | |
| 328 | extern tilemap* ms32_extra_tilemap; | |
| 329 | ||
| 330 | static WRITE16_HANDLER( ms32_extra_w16 ) { COMBINE_DATA(&f1superb_extraram_16[offset]); tilemap_mark_tile_dirty(ms32_extra_tilemap,offset/2); } | |
| 331 | static READ16_HANDLER( ms32_extra_r16 ) { return f1superb_extraram_16[offset]; } | |
| 332 | ||
| 333 | static void irq_raise(running_machine *machine, int level); | |
| 334 | ||
| 335 | static WRITE32_HANDLER( ms32_irq2_guess_w ) | |
| 336 | { | |
| 337 | irq_raise(space->machine, 2); | |
| 338 | } | |
| 339 | ||
| 340 | static WRITE32_HANDLER( ms32_irq5_guess_w ) | |
| 341 | { | |
| 342 | irq_raise(space->machine, 5); | |
| 343 | } | |
| 344 | ||
| 345 | static 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) | |
| 367 | ADDRESS_MAP_END | |
| 368 | ||
| 369 | /* F1 Super Battle speculation from nuapete | |
| 370 | ||
| 371 | Hi David, | |
| 372 | ||
| 373 | I had a first look at f1superb, this is what I found so far. | |
| 374 | ||
| 375 | The sprite RAM is updated in a few places, but taking one of the | |
| 376 | sprite RAM updating routines at 0xFFE47B6F which is used to draw stuff | |
| 377 | that should move around, I see that the information is copied from | |
| 378 | buffers with these bases: | |
| 379 | FEE11000 = x position data | |
| 380 | FEE11100 = y position data | |
| 381 | FEE11200 = priority etc data | |
| 382 | ||
| 383 | You already spotted that loop at FFE19D1C that fills the "y position" | |
| 384 | buffer from an array of static values. The buffers are refilled again | |
| 385 | by the routine at 0xFFE17581. You can see that the data is sourced | |
| 386 | from another buffer at 0xFD100000 (currently not mapped in the driver, | |
| 387 | but I mapped it in for testing...) | |
| 388 | ||
| 389 | If you backtrace that call, it comes from irq 5 and 7. (They have | |
| 390 | identical ISR code) so I tried adding in a trigger for irq 7. Now the | |
| 391 | values are populated, and stuff moves, but everything moves way too | |
| 392 | much, it's all over the place, eventually the car zooms off up into | |
| 393 | the sky. It gets clearer as you map less and less of the RAM at | |
| 394 | 0xFD100000. With just 1K or so mapped, you can see the buildings in | |
| 395 | the background veer about in quite a promising manner. (The patch you | |
| 396 | put in loses effect with irq 5 or 7 hooked up, because they repopulate | |
| 397 | the Y coords too.) | |
| 398 | ||
| 399 | I took a closer look at the interrupts. Handily enough they left some | |
| 400 | strings in the ROM with names for each interrupt :) They aren't quite | |
| 401 | in the order of the interrupts, but I matched the unreferenced strings | |
| 402 | up to the valid interrupts as well as I could and then tried to | |
| 403 | confirm them by looking at the code. The ROM string is in quotes. | |
| 404 | ||
| 405 | FFE00DE8 ; irq_0 probably "1msec interrupt" | |
| 406 | FFE00DF4 ; irq_1 "sound cpu interrupt" | |
| 407 | FFE00878 ; irq_2 probably "fpu 1-1 interrupt" | |
| 408 | FFE00884 ; irq_3 unused and labelled "fpu 0-1 interrupt" | |
| 409 | FFE00898 ; irq_4 unused and labelled "fpu 1-0 interrupt" | |
| 410 | FFE008AC ; irq_5 probably "fpu 0-0 interrupt", x coords (and y) populated from here | |
| 411 | FFE008D0 ; irq_6 unused and labelled "option 2 interrupt" | |
| 412 | FFE008E4 ; irq_7 same as 5 - probably "option 1 interrupt" | |
| 413 | FFE01034 ; irq_9 VBL at 60Hz this would be "16msec interrupt" | |
| 414 | FFE01094 ; irq_10 loads of processing in the 0xfc000000 area : must be "32msec interrupt" | |
| 415 | FFE00E14 ; irq_11 "communication interrupt" | |
| 416 | ||
| 417 | irq_0 is sort of confirmed by the "hayaosi2 needs at least 12 IRQ | |
| 418 | 0..." comment. irq_1 I see is already known. irq_9 is known, irq_10 I | |
| 419 | tried halving the frequency it runs at, no effect. irq_11 can be | |
| 420 | pretty much confirmed as comms by the code there and the use of | |
| 421 | MOVT/MOVZ to i/o with 16 bit device based at FEE00000, so that leaves | |
| 422 | the ones that do the sprite info loading, this is where it starts to | |
| 423 | look less promising :( | |
| 424 | ||
| 425 | Between irqs 2,3,4,5,7 the only unused strings in the ROM are the four "fpu | |
| 426 | * interrupt" and the "option 1". | |
| 427 | Irqs 2,5,7 all do "or.w #6, FD1424C8[PC]" ,so they are all probably | |
| 428 | "fpu * interrupt". | |
| 429 | ||
| 430 | I'm thinking that the stuff is dumped in that RAM at 0xFD100000 that's | |
| 431 | not used by other games and then some FPU operation is carried out on it | |
| 432 | before it's grabbed by the sprite copy code. The "option" stuff, may be | |
| 433 | they tried a few different ways to work out the sprite coords? There's | |
| 434 | one more intersting string at 0xFFE481FC referenced from unused code | |
| 435 | at 0xFFE47FBC. It looks like debugging dump of sprite coordinate and | |
| 436 | angle information. | |
| 437 | ||
| 438 | I had a scout around for photos or anything of the PCB to see if there | |
| 439 | is some sort of DSP or FPU on it, but I can't find anything useful. I | |
| 440 | suspect it's not a generic MegaSystem 32 PCB, going by the extra | |
| 441 | stuff, and also the IRQ 5/7 breaks the other games. I see a vanilla | |
| 442 | one for sale, but I'd guess there's no point me picking it up for a | |
| 443 | closer look because it won't have whatever the extras are. | |
| 444 | ||
| 445 | I'll keep looking a bit more, but I think that 0xFD100000 buffer is | |
| 446 | processed by something external that triggers irq 5 or 7 when it's | |
| 447 | done. I might see something obvious by looking at the values in | |
| 448 | fact... I'd be interested to know what you think, or if there's any | |
| 449 | chance of finding out if there's stuff like dual port RAM or something | |
| 450 | that might qualify as a FPU? | |
| 451 | ||
| 452 | ||
| 453 | Hi David, | |
| 454 | ||
| 455 | On the f1superb stuff, I've traced the sprite elements right back to | |
| 456 | the arrays for each race track in ROM that they are sourced from. The | |
| 457 | only processing they get is in that "fpu" interrupt. I've figured out | |
| 458 | the structure of the "fpu" device, it uses two arrays of static info | |
| 459 | loaded from the ROM at boot, two identical sets of registers, and 4 | |
| 460 | banks of volatile data read in every frame or so from the ROM race | |
| 461 | track arrays (although it looks like one was not used in the end). | |
| 462 | There's a sequence of four operations ivolving the "fpu" carried out | |
| 463 | to prepare the info which then gets copied back to RAM and then to | |
| 464 | sprite RAM. I'll capture the relevant info and see if I can figure out | |
| 465 | what the operations might be, my maths isn't up to much though... | |
| 466 | ||
| 467 | */ | |
| 468 | ||
| 469 | // AM_RANGE(0xfce00800, 0xfce0085f) // f1superb, roz #2 control? | |
| 302 | 470 | ///**/AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM /* f1superb */ |
| 303 | 471 | ///**/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 */ | |
| 310 | 472 | ///**/AM_RANGE(0xfd440000, 0xfd47ffff) AM_RAM /* f1superb color */ |
| 311 | ||
| 312 | 473 | ///**/AM_RANGE(0xfdc00000, 0xfdc006ff) AM_RAM /* f1superb */ |
| 313 | 474 | ///**/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 */ | |
| 318 | 475 | ///**/AM_RANGE(0xfe202000, 0xfe2fffff) AM_RAM /* f1superb vram */ |
| 476 | // AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) /* analog controls in f1superb? */ | |
| 319 | 477 | |
| 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) | |
| 328 | ADDRESS_MAP_END | |
| 329 | ||
| 330 | 478 | /************************************* |
| 331 | 479 | * |
| 332 | 480 | * Generic port definitions |
| r6428 | r6429 | |
| 1041 | 1189 | static GFXLAYOUT_RAW( bglayout, 8, 16, 16, 16*8, 16*16*8 ) |
| 1042 | 1190 | static GFXLAYOUT_RAW( txlayout, 8, 8, 8, 8*8, 8*8*8 ) |
| 1043 | 1191 | |
| 1192 | static GFXLAYOUT_RAW( f1layout, 8, 2048, 1, 2048*8, 2048*8 ) | |
| 1193 | ||
| 1194 | ||
| 1044 | 1195 | static GFXDECODE_START( ms32 ) |
| 1045 | 1196 | GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x0000, 0x10 ) |
| 1046 | 1197 | GFXDECODE_ENTRY( "gfx2", 0, bglayout, 0x2000, 0x10 ) |
| r6428 | r6429 | |
| 1048 | 1199 | GFXDECODE_ENTRY( "gfx4", 0, txlayout, 0x6000, 0x10 ) |
| 1049 | 1200 | GFXDECODE_END |
| 1050 | 1201 | |
| 1202 | static 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? | |
| 1208 | GFXDECODE_END | |
| 1051 | 1209 | |
| 1052 | 1210 | |
| 1211 | ||
| 1053 | 1212 | /********** INTERRUPTS **********/ |
| 1054 | 1213 | |
| 1055 | 1214 | /* Irqs used in desertwr: |
| r6428 | r6429 | |
| 1184 | 1343 | MDRV_SCREEN_ADD("screen", RASTER) |
| 1185 | 1344 | MDRV_SCREEN_REFRESH_RATE(60) |
| 1186 | 1345 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1187 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_ | |
| 1346 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32 | |
| 1188 | 1347 | MDRV_SCREEN_SIZE(40*8, 28*8) |
| 1189 | 1348 | MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) |
| 1190 | 1349 | |
| 1191 | 1350 | MDRV_GFXDECODE(ms32) |
| 1192 | MDRV_PALETTE_LENGTH(0x | |
| 1351 | MDRV_PALETTE_LENGTH(0x10000) | |
| 1193 | 1352 | |
| 1194 | 1353 | MDRV_VIDEO_START(ms32) |
| 1195 | 1354 | MDRV_VIDEO_UPDATE(ms32) |
| r6428 | r6429 | |
| 1202 | 1361 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1203 | 1362 | MACHINE_DRIVER_END |
| 1204 | 1363 | |
| 1364 | static 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) | |
| 1205 | 1369 | |
| 1370 | MDRV_GFXDECODE(f1superb) | |
| 1371 | ||
| 1372 | MDRV_VIDEO_START(f1superb) | |
| 1373 | MACHINE_DRIVER_END | |
| 1374 | ||
| 1375 | ||
| 1376 | ||
| 1206 | 1377 | /********** ROM LOADING **********/ |
| 1207 | 1378 | |
| 1208 | 1379 | ROM_START( bbbxing ) |
| r6428 | r6429 | |
| 1398 | 1569 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles, don't dispose since we use GFX_RAW */ |
| 1399 | 1570 | ROM_LOAD( "f1sb32.bin", 0x000000, 0x080000, CRC(1b31fcce) SHA1(354cc6f43cd3bf3ba921ac8c5631ab993bedf563) ) |
| 1400 | 1571 | |
| 1401 | ROM_REGION( 0x800000, " | |
| 1572 | ROM_REGION( 0x800000, "gfx5 | |
| 1402 | 1573 | ROM_LOAD( "f1sb2b.bin", 0x000000, 0x200000, CRC(18d73b16) SHA1(f06f4d31b15658cc1e1b559ae3b8a90b797546ca) ) |
| 1403 | 1574 | ROM_LOAD( "f1sb3b.bin", 0x200000, 0x200000, CRC(ce728fe0) SHA1(e0fd7b8f4d3dc9e2b15ddf027c61e67e5c1f22b5) ) |
| 1404 | 1575 | ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) ) |
| r6428 | r6429 | |
| 2121 | 2292 | memory_configure_bank(machine, 5, 0, 16, memory_region(machine, "audiocpu") + 0x14000, 0x4000); |
| 2122 | 2293 | } |
| 2123 | 2294 | |
| 2295 | static DRIVER_INIT( ms32_common ) | |
| 2296 | { | |
| 2297 | ms32_nvram_8 = auto_alloc_array(machine, UINT8, 0x2000); | |
| 2298 | configure_banks(machine); | |
| 2299 | } | |
| 2300 | ||
| 2124 | 2301 | /* SS91022-10: desertwr, gratiaa, tp2m32, gametngk */ |
| 2125 | 2302 | static DRIVER_INIT (ss91022_10) |
| 2126 | 2303 | { |
| 2127 | | |
| 2304 | DRIVER | |
| 2128 | 2305 | ms32_rearrange_sprites(machine, "gfx1"); |
| 2129 | 2306 | decrypt_ms32_tx(machine, 0x00000,0x35, "gfx4"); |
| 2130 | 2307 | decrypt_ms32_bg(machine, 0x00000,0xa3, "gfx3"); |
| r6428 | r6429 | |
| 2133 | 2310 | /* SS92046_01: bbbxing, f1superb, tetrisp, hayaosi2 */ |
| 2134 | 2311 | static DRIVER_INIT (ss92046_01) |
| 2135 | 2312 | { |
| 2136 | | |
| 2313 | DRIVER | |
| 2137 | 2314 | ms32_rearrange_sprites(machine, "gfx1"); |
| 2138 | 2315 | decrypt_ms32_tx(machine, 0x00020,0x7e, "gfx4"); |
| 2139 | 2316 | decrypt_ms32_bg(machine, 0x00001,0x9b, "gfx3"); |
| r6428 | r6429 | |
| 2142 | 2319 | /* SS92047-01: gratia, kirarast */ |
| 2143 | 2320 | static DRIVER_INIT (ss92047_01) |
| 2144 | 2321 | { |
| 2145 | | |
| 2322 | DRIVER | |
| 2146 | 2323 | ms32_rearrange_sprites(machine, "gfx1"); |
| 2147 | 2324 | decrypt_ms32_tx(machine, 0x24000,0x18, "gfx4"); |
| 2148 | 2325 | decrypt_ms32_bg(machine, 0x24000,0x55, "gfx3"); |
| r6428 | r6429 | |
| 2151 | 2328 | /* SS92048-01: p47aces, 47pie2, 47pie2o */ |
| 2152 | 2329 | static DRIVER_INIT (ss92048_01) |
| 2153 | 2330 | { |
| 2154 | | |
| 2331 | DRIVER | |
| 2155 | 2332 | ms32_rearrange_sprites(machine, "gfx1"); |
| 2156 | 2333 | decrypt_ms32_tx(machine, 0x20400,0xd6, "gfx4"); |
| 2157 | 2334 | decrypt_ms32_bg(machine, 0x20400,0xd4, "gfx3"); |
| r6428 | r6429 | |
| 2204 | 2381 | |
| 2205 | 2382 | |
| 2206 | 2383 | /* these boot and show something */ |
| 2207 | GAME( 1994, f1superb, 0, ms32, f1superb, f1superb, ROT0, "Jaleco", "F1 Super Battle", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2384 | GAME( 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 | */ |
| r6428 | r6429 | |
|---|---|---|
| 114 | 114 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 115 | 115 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 116 | 116 | 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) | |
| 118 | 118 | AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 119 | 119 | AM_RANGE(0x07, 0x07) AM_DEVWRITE("oki", deniam16b_oki_rom_bank_w) |
| 120 | 120 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 132 | 132 | AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1") |
| 133 | 133 | AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP /* irq ack? */ |
| 134 | 134 | 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) | |
| 136 | 136 | AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") /* probably YM3812 input port */ |
| 137 | 137 | AM_RANGE(0xff0000, 0xffffff) AM_RAM |
| 138 | 138 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 276 | 276 | /* sound hardware */ |
| 277 | 277 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 278 | 278 | |
| 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 */ | |
| 280 | 280 | MDRV_SOUND_CONFIG(ym3812_config) |
| 281 | 281 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 282 | 282 | |
| r6428 | r6429 | |
| 312 | 312 | /* sound hardware */ |
| 313 | 313 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 314 | 314 | |
| 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) */ | |
| 316 | 316 | MDRV_SOUND_CONFIG(ym3812_config) |
| 317 | 317 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 318 | 318 |
| r6428 | r6429 | |
|---|---|---|
| 140 | 140 | AM_RANGE(0x99, 0x99) AM_WRITE(v9938_0_command_w) AM_READ(v9938_0_status_r) |
| 141 | 141 | AM_RANGE(0x9a, 0x9a) AM_WRITE(v9938_0_palette_w) |
| 142 | 142 | 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. */ | |
| 145 | 145 | ADDRESS_MAP_END |
| 146 | 146 | |
| 147 | 147 | |
| r6428 | r6429 | |
| 207 | 207 | PORT_DIPSETTING( 0x20, "80%" ) |
| 208 | 208 | PORT_DIPSETTING( 0x30, "90%" ) |
| 209 | 209 | 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" ) | |
| 211 | 211 | PORT_DIPSETTING( 0x40, "x2" ) |
| 212 | 212 | PORT_DIPSETTING( 0x80, "x5" ) |
| 213 | 213 | PORT_DIPSETTING( 0xC0, "x10" ) |
| r6428 | r6429 | |
| 265 | 265 | |
| 266 | 266 | /* sound hardware */ |
| 267 | 267 | 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 */ | |
| 269 | 269 | MDRV_SOUND_CONFIG(ay8910_config) |
| 270 | 270 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 271 | 271 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 397 | 397 | |
| 398 | 398 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 399 | 399 | |
| 400 | MDRV_SOUND_ADD("ym", YM2203, 7372800/4) | |
| 400 | MDRV_SOUND_ADD("ymsnd", YM2203, 7372800/4) | |
| 401 | 401 | MDRV_SOUND_CONFIG(ym2203_config) |
| 402 | 402 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 403 | 403 |
| r6428 | r6429 | |
|---|---|---|
| 189 | 189 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 190 | 190 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 191 | 191 | 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) | |
| 193 | 193 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 194 | 194 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 195 | 195 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 457 | 457 | /* sound hardware */ |
| 458 | 458 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 459 | 459 | |
| 460 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 460 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 461 | 461 | MDRV_SOUND_CONFIG(ym2151_config) |
| 462 | 462 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 463 | 463 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 685 | 685 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 686 | 686 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 687 | 687 | 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) | |
| 689 | 689 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 690 | 690 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 691 | 691 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 694 | 694 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 695 | 695 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 696 | 696 | 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) | |
| 698 | 698 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 699 | 699 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 700 | 700 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 709 | 709 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 710 | 710 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 711 | 711 | 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) | |
| 713 | 713 | AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) /* yes, both addresses for the same chip */ |
| 714 | 714 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 715 | 715 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| r6428 | r6429 | |
| 2111 | 2111 | { |
| 2112 | 2112 | if (channel==1) |
| 2113 | 2113 | { |
| 2114 | const device_config *ym = devtag_get_device(machine, "ym"); | |
| 2114 | const device_config *ym = devtag_get_device(machine, "ymsnd"); | |
| 2115 | 2115 | sound_set_output_gain(ym, 0, percent / 100.0); |
| 2116 | 2116 | sound_set_output_gain(ym, 1, percent / 100.0); |
| 2117 | 2117 | sound_set_output_gain(ym, 2, percent / 100.0); |
| r6428 | r6429 | |
| 2168 | 2168 | /* sound hardware */ |
| 2169 | 2169 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2170 | 2170 | |
| 2171 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2171 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2172 | 2172 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2173 | 2173 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2174 | 2174 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2206 | 2206 | /* sound hardware */ |
| 2207 | 2207 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2208 | 2208 | |
| 2209 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2209 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2210 | 2210 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2211 | 2211 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2212 | 2212 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2244 | 2244 | /* sound hardware */ |
| 2245 | 2245 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2246 | 2246 | |
| 2247 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2247 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2248 | 2248 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2249 | 2249 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2250 | 2250 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2282 | 2282 | /* sound hardware */ |
| 2283 | 2283 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2284 | 2284 | |
| 2285 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2285 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2286 | 2286 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2287 | 2287 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2288 | 2288 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2319 | 2319 | /* sound hardware */ |
| 2320 | 2320 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2321 | 2321 | |
| 2322 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 2322 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 2323 | 2323 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2324 | 2324 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2325 | 2325 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
| 2358 | 2358 | /* sound hardware */ |
| 2359 | 2359 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2360 | 2360 | |
| 2361 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 2361 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 2362 | 2362 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2363 | 2363 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2364 | 2364 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
| 2401 | 2401 | /* sound hardware */ |
| 2402 | 2402 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2403 | 2403 | |
| 2404 | MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 2404 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 2405 | 2405 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2406 | 2406 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2407 | 2407 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2439 | 2439 | /* sound hardware */ |
| 2440 | 2440 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2441 | 2441 | |
| 2442 | MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 2442 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 2443 | 2443 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2444 | 2444 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2445 | 2445 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2480 | 2480 | /* sound hardware */ |
| 2481 | 2481 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2482 | 2482 | |
| 2483 | MDRV_SOUND_ADD("ym", YM2610B, 8000000) | |
| 2483 | MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000) | |
| 2484 | 2484 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2485 | 2485 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2486 | 2486 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2521 | 2521 | /* sound hardware */ |
| 2522 | 2522 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2523 | 2523 | |
| 2524 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2524 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2525 | 2525 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2526 | 2526 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2527 | 2527 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2559 | 2559 | /* sound hardware */ |
| 2560 | 2560 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2561 | 2561 | |
| 2562 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2562 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2563 | 2563 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2564 | 2564 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2565 | 2565 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2600 | 2600 | /* sound hardware */ |
| 2601 | 2601 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2602 | 2602 | |
| 2603 | MDRV_SOUND_ADD("ym", YM2610B, 8000000) | |
| 2603 | MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000) | |
| 2604 | 2604 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2605 | 2605 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2606 | 2606 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2638 | 2638 | /* sound hardware */ |
| 2639 | 2639 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2640 | 2640 | |
| 2641 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 2641 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 2642 | 2642 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2643 | 2643 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2644 | 2644 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
| 2680 | 2680 | /* sound hardware */ |
| 2681 | 2681 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2682 | 2682 | |
| 2683 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 2683 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 2684 | 2684 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2685 | 2685 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2686 | 2686 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
| 2719 | 2719 | /* sound hardware */ |
| 2720 | 2720 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2721 | 2721 | |
| 2722 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2722 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2723 | 2723 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2724 | 2724 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2725 | 2725 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2757 | 2757 | /* sound hardware */ |
| 2758 | 2758 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2759 | 2759 | |
| 2760 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2760 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2761 | 2761 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2762 | 2762 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2763 | 2763 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2804 | 2804 | /* sound hardware */ |
| 2805 | 2805 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2806 | 2806 | |
| 2807 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 2807 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 2808 | 2808 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2809 | 2809 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2810 | 2810 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2849 | 2849 | /* sound hardware */ |
| 2850 | 2850 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2851 | 2851 | |
| 2852 | MDRV_SOUND_ADD("ym", YM2610B, 8000000) | |
| 2852 | MDRV_SOUND_ADD("ymsnd", YM2610B, 8000000) | |
| 2853 | 2853 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2854 | 2854 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2855 | 2855 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2877 | 2877 | ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) ) |
| 2878 | 2878 | ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) ) |
| 2879 | 2879 | |
| 2880 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2880 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2881 | 2881 | ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) ) |
| 2882 | 2882 | |
| 2883 | 2883 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 2899 | 2899 | ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) ) |
| 2900 | 2900 | ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) ) |
| 2901 | 2901 | |
| 2902 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2902 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2903 | 2903 | ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) ) |
| 2904 | 2904 | |
| 2905 | 2905 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 2921 | 2921 | ROM_LOAD( "b81-03.14", 0x000000, 0x080000, CRC(551b75e6) SHA1(5b8388ee2c6262f359c9e6d04c951ea8dc3901c9) ) |
| 2922 | 2922 | ROM_LOAD( "b81-04.15", 0x080000, 0x080000, CRC(cf734e12) SHA1(4201a74468058761454515738fbf3a7b22a66e00) ) |
| 2923 | 2923 | |
| 2924 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2924 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2925 | 2925 | ROM_LOAD( "b81-02.2", 0x00000, 0x80000, CRC(20ec3b86) SHA1(fcdcc7f0a09feb824d8d73b1af0aae7ec30fd1ed) ) |
| 2926 | 2926 | |
| 2927 | 2927 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 2947 | 2947 | ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) ) |
| 2948 | 2948 | ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) ) |
| 2949 | 2949 | |
| 2950 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2950 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2951 | 2951 | ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) ) |
| 2952 | 2952 | ROM_END |
| 2953 | 2953 | |
| r6428 | r6429 | |
| 2966 | 2966 | ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) ) |
| 2967 | 2967 | ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) ) |
| 2968 | 2968 | |
| 2969 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2969 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2970 | 2970 | ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) ) |
| 2971 | 2971 | ROM_END |
| 2972 | 2972 | |
| r6428 | r6429 | |
| 2985 | 2985 | ROM_LOAD( "b99-02.18", 0x000000, 0x080000, CRC(2a5d4a26) SHA1(94bdfca9365970a80a639027b195b71cebc5ab9c) ) |
| 2986 | 2986 | ROM_LOAD( "b99-01.19", 0x080000, 0x080000, CRC(a19e373a) SHA1(2208c9142473dc2218fd8b97fd6d0c861aeba011) ) |
| 2987 | 2987 | |
| 2988 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2988 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2989 | 2989 | ROM_LOAD( "b99-03.37", 0x000000, 0x080000, CRC(dda10df7) SHA1(ffbe1423794035e6f049fddb096b7282610b7cee) ) |
| 2990 | 2990 | ROM_END |
| 2991 | 2991 | |
| r6428 | r6429 | |
| 3004 | 3004 | ROM_LOAD( "c43-02", 0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) ) |
| 3005 | 3005 | ROM_LOAD( "c43-03", 0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) ) |
| 3006 | 3006 | |
| 3007 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3007 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3008 | 3008 | ROM_LOAD( "c43-01", 0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) ) |
| 3009 | 3009 | ROM_END |
| 3010 | 3010 | |
| r6428 | r6429 | |
| 3023 | 3023 | ROM_LOAD( "c43-02", 0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) ) |
| 3024 | 3024 | ROM_LOAD( "c43-03", 0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) ) |
| 3025 | 3025 | |
| 3026 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3026 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3027 | 3027 | ROM_LOAD( "c43-01", 0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) ) |
| 3028 | 3028 | ROM_END |
| 3029 | 3029 | |
| r6428 | r6429 | |
| 3042 | 3042 | ROM_LOAD( "c43-02", 0x00000, 0x80000, CRC(105722ae) SHA1(1de5d396d2a4d5948544082c471a15ca1b8e756c) ) |
| 3043 | 3043 | ROM_LOAD( "c43-03", 0x80000, 0x80000, CRC(426606ba) SHA1(961ec0a9dc18044adae433337bfa89d951c5207c) ) |
| 3044 | 3044 | |
| 3045 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3045 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3046 | 3046 | ROM_LOAD( "c43-01", 0x00000, 0x80000, CRC(db953f37) SHA1(252591b676366d4828acb20c77aa9960ad9b367e) ) |
| 3047 | 3047 | ROM_END |
| 3048 | 3048 | |
| r6428 | r6429 | |
| 3060 | 3060 | ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASE00 ) |
| 3061 | 3061 | /* empty (uses only pixel layer) */ |
| 3062 | 3062 | |
| 3063 | ROM_REGION( 0x80000, "ym", ROMREGION_ERASE00 ) /* adpcm samples */ | |
| 3063 | ROM_REGION( 0x80000, "ymsnd", ROMREGION_ERASE00 ) /* adpcm samples */ | |
| 3064 | 3064 | /* empty */ |
| 3065 | 3065 | |
| 3066 | 3066 | ROM_REGION( 0x80000, "ym.deltat", ROMREGION_ERASE00 ) /* DELTA-T samples */ |
| r6428 | r6429 | |
| 3176 | 3176 | ROM_LOAD( "r3-ch2lh.rom", 0x1c0000, 0x020000, CRC(df3bc48f) SHA1(6747a453da4bca0b837f4ef1f1bbe871f15332ed) ) |
| 3177 | 3177 | ROM_LOAD( "r3-ch2hh.rom", 0x1e0000, 0x020000, CRC(bf37dfac) SHA1(27e825bd0a4d7ae65714fefeb6fedac501984ba9) ) |
| 3178 | 3178 | |
| 3179 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3179 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3180 | 3180 | ROM_LOAD( "r3-a1.rom", 0x00000, 0x20000, CRC(4396fa19) SHA1(cb6d983f210249676c500723041d74fa3fdc517d) ) |
| 3181 | 3181 | ROM_LOAD( "r3-a2.rom", 0x20000, 0x20000, CRC(41fe53a8) SHA1(1723046111d0115d3f64c3111c50d51306e88ad0) ) |
| 3182 | 3182 | ROM_LOAD( "r3-a3.rom", 0x40000, 0x20000, CRC(e89249ba) SHA1(cd94492a0643e9e1e25b121160914822a6a7723e) ) |
| r6428 | r6429 | |
| 3200 | 3200 | ROM_LOAD( "ramb3-01.bin", 0x100000, 0x80000, CRC(c55fcf54) SHA1(6a26ed2541be9e3341f20e74cc49b5366ce7d424) ) |
| 3201 | 3201 | ROM_LOAD( "ramb3-02.bin", 0x180000, 0x80000, CRC(9dd014c6) SHA1(0f046d9de57db0272810adde7d49cc348b78f1f7) ) |
| 3202 | 3202 | |
| 3203 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3203 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3204 | 3204 | ROM_LOAD( "ramb3-05.bin", 0x00000, 0x80000, CRC(0179dc40) SHA1(89feb708618ae7fa96883473d5c7a09dcc6f452a) ) |
| 3205 | 3205 | ROM_END |
| 3206 | 3206 | |
| r6428 | r6429 | |
| 3221 | 3221 | ROM_LOAD( "ramb3-01.bin", 0x100000, 0x80000, CRC(c55fcf54) SHA1(6a26ed2541be9e3341f20e74cc49b5366ce7d424) ) |
| 3222 | 3222 | ROM_LOAD( "ramb3-02.bin", 0x180000, 0x80000, CRC(9dd014c6) SHA1(0f046d9de57db0272810adde7d49cc348b78f1f7) ) |
| 3223 | 3223 | |
| 3224 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3224 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3225 | 3225 | ROM_LOAD( "ramb3-05.bin", 0x00000, 0x80000, CRC(0179dc40) SHA1(89feb708618ae7fa96883473d5c7a09dcc6f452a) ) |
| 3226 | 3226 | ROM_END |
| 3227 | 3227 | |
| r6428 | r6429 | |
| 3238 | 3238 | ROM_LOAD( "pb-ic14.bin", 0x00000, 0x80000, CRC(55f90ea4) SHA1(793c79e5b72171124368ad09dd31235252c541f5) ) |
| 3239 | 3239 | ROM_LOAD( "pb-ic9.bin", 0x80000, 0x80000, CRC(3253aac9) SHA1(916d85aa96e2914630833292a0655b0389b4a39b) ) |
| 3240 | 3240 | |
| 3241 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 3241 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 3242 | 3242 | ROM_LOAD( "pb-ic15.bin", 0x000000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) ) |
| 3243 | 3243 | ROM_END |
| 3244 | 3244 | |
| r6428 | r6429 | |
| 3255 | 3255 | ROM_LOAD( "d89-02.14", 0x00000, 0x80000, CRC(c36544b9) SHA1(6bd5257dfb27532621b75f43e31aa351ad2192a2) ) |
| 3256 | 3256 | ROM_LOAD( "d89-01.9", 0x80000, 0x80000, CRC(fffa0660) SHA1(de1abe1b1e9d14405b5663103ea4a6119fce7cc5) ) |
| 3257 | 3257 | |
| 3258 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3258 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3259 | 3259 | ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) ) |
| 3260 | 3260 | |
| 3261 | 3261 | ROM_REGION( 0x0c00, "plds", 0 ) |
| r6428 | r6429 | |
| 3281 | 3281 | ROM_LOAD( "d89-02.14", 0x00000, 0x80000, CRC(c36544b9) SHA1(6bd5257dfb27532621b75f43e31aa351ad2192a2) ) |
| 3282 | 3282 | ROM_LOAD( "d89-01.9" , 0x80000, 0x80000, CRC(fffa0660) SHA1(de1abe1b1e9d14405b5663103ea4a6119fce7cc5) ) |
| 3283 | 3283 | |
| 3284 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3284 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3285 | 3285 | ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) ) |
| 3286 | 3286 | |
| 3287 | 3287 | ROM_REGION( 0x0c00, "plds", 0 ) |
| r6428 | r6429 | |
| 3307 | 3307 | ROM_LOAD( "d89-12.bin",0x00000, 0x80000, CRC(53df86f1) SHA1(f03d77dd54eb455462133a29dd8fec007abedcfd) ) |
| 3308 | 3308 | ROM_LOAD( "d89-13.bin",0x80000, 0x80000, CRC(c44c1352) SHA1(78a04fe0ade6e8f9e6bbda7652a54a79b6208fdd) ) |
| 3309 | 3309 | |
| 3310 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3310 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3311 | 3311 | ROM_LOAD( "d89-03.15", 0x00000, 0x80000, CRC(218f31a4) SHA1(9f52b9fa8f02003888180524a6e9ee7c9230f55d) ) |
| 3312 | 3312 | ROM_END |
| 3313 | 3313 | |
| r6428 | r6429 | |
| 3324 | 3324 | ROM_LOAD( "d72-03.bin", 0x000000, 0x200000, CRC(1de257d0) SHA1(df03b1fb5cd69e2d2eb2088f96f26b0ea9756fb7) ) |
| 3325 | 3325 | ROM_LOAD( "d72-02.bin", 0x200000, 0x200000, CRC(bf0da640) SHA1(2b2493904ed0b94dc12b56dae71cc5c25701aef9) ) |
| 3326 | 3326 | |
| 3327 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3327 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3328 | 3328 | ROM_LOAD( "d72-01.bin", 0x00000, 0x200000, CRC(b82b8830) SHA1(4b2dca16fe072a5ee51de5cf40637e3f1b39f695) ) |
| 3329 | 3329 | ROM_END |
| 3330 | 3330 | |
| r6428 | r6429 | |
| 3468 | 3468 | ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) ) |
| 3469 | 3469 | ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) ) |
| 3470 | 3470 | |
| 3471 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3471 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3472 | 3472 | ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) ) |
| 3473 | 3473 | |
| 3474 | 3474 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 3492 | 3492 | ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) ) |
| 3493 | 3493 | ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) ) |
| 3494 | 3494 | |
| 3495 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3495 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3496 | 3496 | ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) ) |
| 3497 | 3497 | |
| 3498 | 3498 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 3516 | 3516 | ROM_LOAD( "east-03.ic39", 0x200000, 0x100000, CRC(1b9b2846) SHA1(d9c87e130bc3baa949d8a8738daad648fcf284df) ) |
| 3517 | 3517 | ROM_LOAD( "east-05.ic40", 0x300000, 0x100000, CRC(e02472c5) SHA1(35572610f6823ec980a928a75abd689197ebe207) ) |
| 3518 | 3518 | |
| 3519 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 3519 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 3520 | 3520 | ROM_LOAD( "east-01.ic1", 0x00000, 0x80000, CRC(b41fff1a) SHA1(54920d13fa2b3000eedab9d0050a299ae743c663) ) |
| 3521 | 3521 | |
| 3522 | 3522 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 3536 | 3536 | ROM_LOAD( "se-04.2", 0x000000, 0x80000, CRC(920ad100) SHA1(69cd2af6218db90632f09a131d2956ab69034643) ) |
| 3537 | 3537 | ROM_LOAD( "se-05.1", 0x080000, 0x80000, CRC(d297c995) SHA1(e5ad5a8ce222621c9156c2949916bee6b3099c4e) ) |
| 3538 | 3538 | |
| 3539 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3539 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3540 | 3540 | ROM_LOAD( "se-06.11", 0x00000, 0x80000, CRC(80d5e772) SHA1(bee4982a3d65210ff86495e36a0b656934b00c7d) ) |
| 3541 | 3541 | ROM_END |
| 3542 | 3542 | |
| r6428 | r6429 | |
| 3555 | 3555 | ROM_LOAD( "ryujin07.2", 0x000000, 0x100000, CRC(34f50980) SHA1(432384bd283389bca17611602eb310726c9d78a4) ) |
| 3556 | 3556 | ROM_LOAD( "ryujin06.1", 0x100000, 0x100000, CRC(1b85ff34) SHA1(5ad259e6f7aa4a0c08975da73bf41400495f2e61) ) |
| 3557 | 3557 | |
| 3558 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3558 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3559 | 3559 | ROM_LOAD( "ryujin08.11", 0x00000, 0x80000, CRC(480d040d) SHA1(50add2f304ef34f7f45f25a2a2cf0568d58259ad) ) |
| 3560 | 3560 | ROM_END |
| 3561 | 3561 | |
| r6428 | r6429 | |
| 3580 | 3580 | ROM_LOAD16_BYTE( "c69-14.ic3", 0x300001, 0x020000, CRC(0ed0272a) SHA1(03b15654213ff71ffc96d3a87657bdeb724e9269) ) |
| 3581 | 3581 | /* 340000-3fffff empty */ |
| 3582 | 3582 | |
| 3583 | ROM_REGION( 0x80000, "ym", 0 ) /* adpcm samples */ | |
| 3583 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* adpcm samples */ | |
| 3584 | 3584 | ROM_LOAD( "c69-03.36", 0x00000, 0x80000, CRC(63e6b6e7) SHA1(72574ca7505eee15fabc4996f253505d9dd65898) ) |
| 3585 | 3585 | ROM_END |
| 3586 | 3586 |
| r6428 | r6429 | |
|---|---|---|
| 117 | 117 | ADDRESS_MAP_END |
| 118 | 118 | |
| 119 | 119 | static 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) | |
| 121 | 121 | 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 |
| 122 | 122 | AM_RANGE(0x6000, 0x605f) AM_RAM // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff) |
| 123 | 123 | AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE(1) |
| r6428 | r6429 | |
| 281 | 281 | // sound hardware |
| 282 | 282 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 283 | 283 | |
| 284 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) // verified on pcb | |
| 284 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) // verified on pcb | |
| 285 | 285 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 286 | 286 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 287 | 287 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 911 | 911 | |
| 912 | 912 | static ADDRESS_MAP_START( hardhead_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 913 | 913 | 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 ) | |
| 916 | 916 | 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 | |
| 918 | 918 | AM_RANGE(0xd000, 0xd000) AM_WRITE(soundlatch2_w ) // |
| 919 | 919 | AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_r ) // From Main CPU |
| 920 | 920 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 946 | 946 | |
| 947 | 947 | static ADDRESS_MAP_START( brickzn_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 948 | 948 | 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 ) | |
| 951 | 951 | AM_RANGE(0xe000, 0xe7ff) AM_RAM // RAM |
| 952 | 952 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w ) // To PCM CPU |
| 953 | 953 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r ) // From Main CPU |
| r6428 | r6429 | |
| 1437 | 1437 | /* sound hardware */ |
| 1438 | 1438 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1439 | 1439 | |
| 1440 | MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 8) | |
| 1440 | MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) | |
| 1441 | 1441 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1442 | 1442 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 1443 | 1443 | |
| 1444 | MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1444 | MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1445 | 1445 | MDRV_SOUND_CONFIG(hardhead_ay8910_interface) |
| 1446 | 1446 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) |
| 1447 | 1447 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) |
| r6428 | r6429 | |
| 1567 | 1567 | /* sound hardware */ |
| 1568 | 1568 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1569 | 1569 | |
| 1570 | MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1570 | MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1571 | 1571 | MDRV_SOUND_CONFIG(brickzn_ym3812_interface) |
| 1572 | 1572 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1573 | 1573 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 1574 | 1574 | |
| 1575 | MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1575 | MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1576 | 1576 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33) |
| 1577 | 1577 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33) |
| 1578 | 1578 | |
| r6428 | r6429 | |
| 1667 | 1667 | /* sound hardware */ |
| 1668 | 1668 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1669 | 1669 | |
| 1670 | MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1670 | MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1671 | 1671 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1672 | 1672 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 1673 | 1673 | |
| 1674 | MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1674 | MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1675 | 1675 | MDRV_SOUND_CONFIG(starfigh_ay8910_interface) |
| 1676 | 1676 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 1677 | 1677 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| r6428 | r6429 | |
| 1725 | 1725 | /* sound hardware */ |
| 1726 | 1726 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1727 | 1727 | |
| 1728 | MDRV_SOUND_ADD("ym", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1728 | MDRV_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 6) | |
| 1729 | 1729 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1730 | 1730 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 1731 | 1731 | |
| 1732 | MDRV_SOUND_ADD("ay", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1732 | MDRV_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16) | |
| 1733 | 1733 | MDRV_SOUND_CONFIG(hardhead_ay8910_interface) |
| 1734 | 1734 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) |
| 1735 | 1735 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 414 | 414 | AM_RANGE(0x0080, 0x00ff) AM_RAM \ |
| 415 | 415 | AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namcos1_cus30_r,namcos1_cus30_w) /* PSG device, shared RAM */ \ |
| 416 | 416 | 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) \ | |
| 418 | 418 | AM_RANGE(ADDR_INPUT+0x20, ADDR_INPUT+0x20) AM_READ_PORT("IN0") \ |
| 419 | 419 | AM_RANGE(ADDR_INPUT+0x21, ADDR_INPUT+0x21) AM_READ_PORT("IN1") \ |
| 420 | 420 | AM_RANGE(ADDR_INPUT+0x30, ADDR_INPUT+0x30) AM_READ(dsw0_r) \ |
| r6428 | r6429 | |
| 1053 | 1053 | /* sound hardware */ |
| 1054 | 1054 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1055 | 1055 | |
| 1056 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1056 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1057 | 1057 | MDRV_SOUND_ROUTE(0, "mono", 0.0) |
| 1058 | 1058 | MDRV_SOUND_ROUTE(1, "mono", 0.60) /* only right channel is connected */ |
| 1059 | 1059 |
| r6428 | r6429 | |
|---|---|---|
| 183 | 183 | AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW0") |
| 184 | 184 | AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM") |
| 185 | 185 | 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) | |
| 187 | 187 | AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1)) |
| 188 | 188 | AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM) |
| 189 | 189 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 350 | 350 | |
| 351 | 351 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 352 | 352 | |
| 353 | MDRV_SOUND_ADD("ym", YM2203, 12000000/8) | |
| 353 | MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/8) | |
| 354 | 354 | MDRV_SOUND_CONFIG(ym2203_config) |
| 355 | 355 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 356 | 356 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 53 | 53 | #include "driver.h" |
| 54 | 54 | #include "cpu/i8085/i8085.h" |
| 55 | 55 | |
| 56 | static tilemap *m14_tilemap; | |
| 57 | 56 | |
| 57 | typedef struct _m14_state m14_state; | |
| 58 | struct _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 | ||
| 58 | 70 | /************************************* |
| 59 | 71 | * |
| 60 | 72 | * Video Hardware |
| r6428 | r6429 | |
| 81 | 93 | |
| 82 | 94 | static TILE_GET_INFO( m14_get_tile_info ) |
| 83 | 95 | { |
| 84 | int code = videoram[tile_index]; | |
| 85 | int color = colorram[tile_index] & 0xf; | |
| 96 | m14_state *state = (m14_state *)machine->driver_data; | |
| 86 | 97 | |
| 98 | int code = state->video_ram[tile_index]; | |
| 99 | int color = state->color_ram[tile_index] & 0x0f; | |
| 100 | ||
| 87 | 101 | /* colorram & 0xf0 used but unknown purpose*/ |
| 88 | 102 | |
| 89 | 103 | SET_TILE_INFO( |
| r6428 | r6429 | |
| 95 | 109 | |
| 96 | 110 | static VIDEO_START( m14 ) |
| 97 | 111 | { |
| 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); | |
| 99 | 115 | } |
| 100 | 116 | |
| 101 | 117 | static VIDEO_UPDATE( m14 ) |
| 102 | 118 | { |
| 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); | |
| 104 | 122 | return 0; |
| 105 | 123 | } |
| 106 | 124 | |
| 107 | 125 | |
| 108 | 126 | static WRITE8_HANDLER( m14_vram_w ) |
| 109 | 127 | { |
| 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); | |
| 112 | 132 | } |
| 113 | 133 | |
| 114 | 134 | static WRITE8_HANDLER( m14_cram_w ) |
| 115 | 135 | { |
| 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); | |
| 118 | 140 | } |
| 119 | 141 | |
| 120 | 142 | /************************************* |
| r6428 | r6429 | |
| 123 | 145 | * |
| 124 | 146 | *************************************/ |
| 125 | 147 | |
| 126 | static UINT8 hop_mux; | |
| 127 | ||
| 128 | 148 | static READ8_HANDLER( m14_rng_r ) |
| 129 | 149 | { |
| 130 | 150 | /* graphic artifacts happens if this doesn't return random values. */ |
| r6428 | r6429 | |
| 134 | 154 | /* Here routes the hopper & the inputs */ |
| 135 | 155 | static READ8_HANDLER( input_buttons_r ) |
| 136 | 156 | { |
| 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"); | |
| 139 | 166 | } |
| 140 | 167 | |
| 141 | 168 | #if 0 |
| r6428 | r6429 | |
| 151 | 178 | |
| 152 | 179 | static WRITE8_HANDLER( hopper_w ) |
| 153 | 180 | { |
| 181 | m14_state *state = (m14_state *)space->machine->driver_data; | |
| 182 | ||
| 154 | 183 | /* ---- x--- coin out */ |
| 155 | 184 | /* ---- --x- hopper/input mux? */ |
| 156 | hop_mux = data & 2; | |
| 185 | state->hop_mux = data & 2; | |
| 157 | 186 | //popmessage("%02x",data); |
| 158 | 187 | } |
| 159 | 188 | |
| r6428 | r6429 | |
| 166 | 195 | static ADDRESS_MAP_START( m14_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 167 | 196 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 168 | 197 | 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) | |
| 171 | 200 | ADDRESS_MAP_END |
| 172 | 201 | |
| 173 | 202 | static ADDRESS_MAP_START( m14_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 188 | 217 | static INPUT_CHANGED( left_coin_inserted ) |
| 189 | 218 | { |
| 190 | 219 | /* left coin insertion causes a rst6.5 (vector 0x34) */ |
| 191 | if(newval) | |
| 220 | if (newval) | |
| 192 | 221 | cputag_set_input_line(field->port->machine, "maincpu", I8085_RST65_LINE, HOLD_LINE); |
| 193 | 222 | } |
| 194 | 223 | |
| 195 | 224 | static INPUT_CHANGED( right_coin_inserted ) |
| 196 | 225 | { |
| 197 | 226 | /* right coin insertion causes a rst5.5 (vector 0x2c) */ |
| 198 | if(newval) | |
| 227 | if (newval) | |
| 199 | 228 | cputag_set_input_line(field->port->machine, "maincpu", I8085_RST55_LINE, HOLD_LINE); |
| 200 | 229 | } |
| 201 | 230 | |
| r6428 | r6429 | |
| 275 | 304 | cpu_set_input_line(device, I8085_RST75_LINE, CLEAR_LINE); |
| 276 | 305 | } |
| 277 | 306 | |
| 307 | static 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 | ||
| 314 | static MACHINE_RESET( m14 ) | |
| 315 | { | |
| 316 | m14_state *state = (m14_state *)machine->driver_data; | |
| 317 | ||
| 318 | state->hop_mux = 0; | |
| 319 | } | |
| 320 | ||
| 321 | ||
| 278 | 322 | static MACHINE_DRIVER_START( m14 ) |
| 279 | 323 | |
| 324 | /* driver data */ | |
| 325 | MDRV_DRIVER_DATA(m14_state) | |
| 326 | ||
| 280 | 327 | /* basic machine hardware */ |
| 281 | 328 | MDRV_CPU_ADD("maincpu",8085A,6000000/2) //guess: 6 Mhz internally divided by 2 |
| 282 | 329 | MDRV_CPU_PROGRAM_MAP(m14_map) |
| 283 | 330 | MDRV_CPU_IO_MAP(m14_io_map) |
| 284 | 331 | MDRV_CPU_VBLANK_INT("screen",m14_irq) |
| 285 | 332 | |
| 333 | MDRV_MACHINE_START(m14) | |
| 334 | MDRV_MACHINE_RESET(m14) | |
| 335 | ||
| 286 | 336 | /* video hardware */ |
| 287 | 337 | MDRV_SCREEN_ADD("screen", RASTER) |
| 288 | 338 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 328 | 378 | ROM_LOAD( "mgpa10.bin", 0x0400, 0x0400, CRC(e1a4ebdc) SHA1(d9df42424ede17f0634d8d0a56c0374a33c55333) ) |
| 329 | 379 | ROM_END |
| 330 | 380 | |
| 331 | GAME( 1979, ptrmj, 0, m14, m14, 0, ROT0, "Irem", "PT Reach Mahjong (Japan)", GAME_NO_SOUND ) | |
| 381 | GAME( 1979, ptrmj, 0, m14, m14, 0, ROT0, "Irem", "PT Reach Mahjong (Japan)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 58 | 58 | * |
| 59 | 59 | *************************************/ |
| 60 | 60 | |
| 61 | static UINT8 avalance_video_inverted; | |
| 62 | ||
| 63 | ||
| 64 | 61 | static VIDEO_UPDATE( avalnche ) |
| 65 | 62 | { |
| 63 | avalnche_state *state = (avalnche_state *)screen->machine->driver_data; | |
| 66 | 64 | offs_t offs; |
| 67 | 65 | |
| 68 | 66 | for (offs = 0; offs < videoram_size; offs++) |
| r6428 | r6429 | |
| 71 | 69 | |
| 72 | 70 | UINT8 x = offs << 3; |
| 73 | 71 | int y = offs >> 5; |
| 74 | UINT8 data = videoram[offs]; | |
| 72 | UINT8 data = state->videoram[offs]; | |
| 75 | 73 | |
| 76 | 74 | for (i = 0; i < 8; i++) |
| 77 | 75 | { |
| 78 | 76 | pen_t pen; |
| 79 | 77 | |
| 80 | if (avalance_video_inverted) | |
| 78 | if (state->avalance_video_inverted) | |
| 81 | 79 | pen = (data & 0x80) ? RGB_WHITE : RGB_BLACK; |
| 82 | 80 | else |
| 83 | 81 | pen = (data & 0x80) ? RGB_BLACK : RGB_WHITE; |
| r6428 | r6429 | |
| 95 | 93 | |
| 96 | 94 | static WRITE8_HANDLER( avalance_video_invert_w ) |
| 97 | 95 | { |
| 98 | avalance_video_inverted = data & 0x01; | |
| 96 | avalnche_state *state = (avalnche_state *)space->machine->driver_data; | |
| 97 | state->avalance_video_inverted = data & 0x01; | |
| 99 | 98 | } |
| 100 | 99 | |
| 101 | 100 | |
| r6428 | r6429 | |
| 133 | 132 | |
| 134 | 133 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 135 | 134 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 136 | AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE( | |
| 135 | AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_MEMBER(avalnche_state, videoram) AM_SIZE(&videoram_size) | |
| 137 | 136 | AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0") |
| 138 | 137 | AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1") |
| 139 | 138 | AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE") |
| r6428 | r6429 | |
| 217 | 216 | * |
| 218 | 217 | *************************************/ |
| 219 | 218 | |
| 219 | static 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 | ||
| 226 | static MACHINE_RESET( avalnche ) | |
| 227 | { | |
| 228 | avalnche_state *state = (avalnche_state *)machine->driver_data; | |
| 229 | ||
| 230 | state->avalance_video_inverted = 0; | |
| 231 | } | |
| 232 | ||
| 220 | 233 | static MACHINE_DRIVER_START( avalnche ) |
| 221 | 234 | |
| 235 | /* driver data */ | |
| 236 | MDRV_DRIVER_DATA(avalnche_state) | |
| 237 | ||
| 222 | 238 | /* basic machine hardware */ |
| 223 | 239 | MDRV_CPU_ADD("maincpu", M6502,MASTER_CLOCK/16) /* clock input is the "2H" signal divided by two */ |
| 224 | 240 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 225 | 241 | MDRV_CPU_VBLANK_INT_HACK(avalnche_interrupt,8) |
| 226 | 242 | |
| 243 | MDRV_MACHINE_START(avalnche) | |
| 244 | MDRV_MACHINE_RESET(avalnche) | |
| 245 | ||
| 227 | 246 | /* video hardware */ |
| 228 | 247 | MDRV_VIDEO_UPDATE(avalnche) |
| 229 | 248 | |
| r6428 | r6429 | |
| 278 | 297 | * |
| 279 | 298 | *************************************/ |
| 280 | 299 | |
| 281 | GAMEL( 1978, avalnche, 0, avalnche, avalnche, 0, ROT0, "Atari", "Avalanche", 0, layout_avalnche ) | |
| 282 | GAMEL( 1978, cascade, avalnche, avalnche, cascade, 0, ROT0, "Sidam", "Cascade", 0, layout_avalnche ) | |
| 300 | GAMEL( 1978, avalnche, 0, avalnche, avalnche, 0, ROT0, "Atari", "Avalanche", GAME_SUPPORTS_SAVE, layout_avalnche ) | |
| 301 | GAMEL( 1978, cascade, avalnche, avalnche, cascade, 0, ROT0, "Sidam", "Cascade", GAME_SUPPORTS_SAVE, layout_avalnche ) |
| r6428 | r6429 | |
|---|---|---|
| 324 | 324 | ROM_LOAD16_BYTE("p1-1", 0x040001, 0x20000, CRC(4b8de320) SHA1(14a3ab347fc468869355951294c3e3a8f9211b6a) ) |
| 325 | 325 | |
| 326 | 326 | 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) ) | |
| 328 | 328 | ROM_CONTINUE( 0x010000, 0x08000 ) |
| 329 | 329 | ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 ) |
| 330 | 330 |
| r6428 | r6429 | |
|---|---|---|
| 315 | 315 | |
| 316 | 316 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 317 | 317 | 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) | |
| 319 | 319 | AM_RANGE(0x04, 0x04) AM_WRITE(gs_sh_bankswitch_w) |
| 320 | 320 | AM_RANGE(0x08, 0x08) AM_WRITE(gs_sh_pending_command_clear_w) |
| 321 | 321 | AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 574 | 574 | |
| 575 | 575 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 576 | 576 | |
| 577 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 577 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 578 | 578 | MDRV_SOUND_CONFIG(ym2610_config) |
| 579 | 579 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 580 | 580 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 614 | 614 | |
| 615 | 615 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 616 | 616 | |
| 617 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 617 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 618 | 618 | MDRV_SOUND_CONFIG(ym2610_config) |
| 619 | 619 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 620 | 620 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 652 | 652 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 653 | 653 | ROM_LOAD( "human_scr-gs-106_m532001b-16_3402370.u93", 0x00000, 0x040000, CRC(93c9868c) SHA1(dcecb34e46405155e35aaf134b8547430d23f5a7) ) |
| 654 | 654 | |
| 655 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 655 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 656 | 656 | ROM_LOAD( "scrgs107.u99", 0x00000, 0x100000, CRC(ecc0a01b) SHA1(239e832b7d22925460a8f44eb82e782cd13aba49) ) |
| 657 | 657 | |
| 658 | 658 | ROM_REGION( 0x1000, "plds", 0 ) |
| r6428 | r6429 | |
| 688 | 688 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 689 | 689 | ROM_LOAD( "human_scr-gs-106_m532001b-16_3402370.u93", 0x00000, 0x040000, CRC(93c9868c) SHA1(dcecb34e46405155e35aaf134b8547430d23f5a7) ) |
| 690 | 690 | |
| 691 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 691 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 692 | 692 | ROM_LOAD( "scrgs107.u99", 0x00000, 0x100000, CRC(ecc0a01b) SHA1(239e832b7d22925460a8f44eb82e782cd13aba49) ) |
| 693 | 693 | |
| 694 | 694 | /* PALs were protected on this version, used the ones from the "gstriker" set */ |
| r6428 | r6429 | |
| 726 | 726 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 727 | 727 | ROM_LOAD( "c13_u86.u86", 0x000000, 0x040000, CRC(4b76a162) SHA1(38dcb7536662f5f520e59f3ff746b42e9df789d2) ) |
| 728 | 728 | |
| 729 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 729 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 730 | 730 | ROM_LOAD( "c13_u104.104", 0x000000, 0x200000, CRC(8437b6f8) SHA1(79f183dcbf3cde5c77e086e4fdd8341809396e37) ) |
| 731 | 731 | ROM_END |
| 732 | 732 | |
| r6428 | r6429 | |
| 754 | 754 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 755 | 755 | ROM_LOAD( "c13_u86.u86", 0x000000, 0x040000, CRC(4b76a162) SHA1(38dcb7536662f5f520e59f3ff746b42e9df789d2) ) |
| 756 | 756 | |
| 757 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 757 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 758 | 758 | ROM_LOAD( "vgoalc16.104", 0x000000, 0x100000, CRC(6fb06e1b) SHA1(c4584b480fe1165f8e2f887acaa578690514d35d) ) |
| 759 | 759 | ROM_END |
| 760 | 760 | |
| r6428 | r6429 | |
| 784 | 784 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 785 | 785 | ROM_LOAD( "u86", 0x000000, 0x040000, CRC(775f45dc) SHA1(1a740dd880d9f873e93dfc096fbcae1784b4f522) ) |
| 786 | 786 | |
| 787 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 787 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 788 | 788 | ROM_LOAD( "u104", 0x000000, 0x100000, CRC(df07d0af) SHA1(356560e164ff222bc9004fe202f829c93244a6c9) ) |
| 789 | 789 | ROM_END |
| 790 | 790 | |
| r6428 | r6429 | |
| 814 | 814 | ROM_REGION( 0x40000, "ym.deltat", 0 ) |
| 815 | 815 | ROM_LOAD( "u86", 0x000000, 0x040000, CRC(775f45dc) SHA1(1a740dd880d9f873e93dfc096fbcae1784b4f522) ) |
| 816 | 816 | |
| 817 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 817 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 818 | 818 | ROM_LOAD( "u104", 0x000000, 0x100000, CRC(df07d0af) SHA1(356560e164ff222bc9004fe202f829c93244a6c9) ) |
| 819 | 819 | ROM_END |
| 820 | 820 |
| r6428 | r6429 | |
|---|---|---|
| 926 | 926 | AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE(3) |
| 927 | 927 | ADDRESS_MAP_END |
| 928 | 928 | |
| 929 | static 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) | |
| 954 | ADDRESS_MAP_END | |
| 929 | 955 | |
| 956 | static 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) | |
| 974 | ADDRESS_MAP_END | |
| 975 | ||
| 976 | ||
| 930 | 977 | static ADDRESS_MAP_START( jcross_cpuA_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 931 | 978 | AM_RANGE(0x0000, 0x9fff) AM_ROM |
| 932 | 979 | AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") |
| r6428 | r6429 | |
| 1623 | 1670 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) |
| 1624 | 1671 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) |
| 1625 | 1672 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(marvins_sound_busy, NULL) /* sound CPU status */ |
| 1626 | PORT_BIT( 0x40, IP_ACTIVE_ | |
| 1673 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, | |
| 1627 | 1674 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) |
| 1628 | 1675 | |
| 1629 | 1676 | PORT_START("IN1") |
| r6428 | r6429 | |
| 3624 | 3671 | MACHINE_DRIVER_END |
| 3625 | 3672 | |
| 3626 | 3673 | |
| 3674 | static 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) | |
| 3684 | MACHINE_DRIVER_END | |
| 3685 | ||
| 3686 | ||
| 3627 | 3687 | static MACHINE_DRIVER_START( jcross ) |
| 3628 | 3688 | |
| 3629 | 3689 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 4114 | 4174 | ROM_LOAD( "m1-prom.j5", 0x800, 0x400, CRC(07678443) SHA1(267951886d8b031dd633dc4823d9bd862a585437) ) |
| 4115 | 4175 | ROM_END |
| 4116 | 4176 | |
| 4177 | ROM_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) ) | |
| 4213 | ROM_END | |
| 4214 | ||
| 4117 | 4215 | /***********************************************************************/ |
| 4118 | 4216 | |
| 4119 | 4217 | ROM_START( vangrd2 ) |
| r6428 | r6429 | |
| 6169 | 6267 | GAME( 1983, marvins, 0, marvins, marvins, 0, ROT270, "SNK", "Marvin's Maze", 0 ) |
| 6170 | 6268 | GAME( 1984, vangrd2, 0, vangrd2, vangrd2, 0, ROT270, "SNK", "Vanguard II", 0 ) |
| 6171 | 6269 | GAME( 1984, madcrash, 0, vangrd2, madcrash, 0, ROT0, "SNK", "Mad Crasher", 0 ) |
| 6270 | GAME( 1984, madcrush, madcrash, madcrush, madcrash, 0, ROT0, "SNK", "Mad Crusher (Japan)", 0 ) | |
| 6172 | 6271 | |
| 6173 | 6272 | GAME( 1984, jcross, 0, jcross, jcross, 0, ROT270, "SNK", "Jumping Cross", 0 ) |
| 6174 | 6273 | GAME( 1984, sgladiat, 0, sgladiat, sgladiat, 0, ROT0, "SNK", "Gladiator 1984", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 80 | 80 | |
| 81 | 81 | static ADDRESS_MAP_START( mosaicf2_io, ADDRESS_SPACE_IO, 32 ) |
| 82 | 82 | 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) | |
| 84 | 84 | AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1") |
| 85 | 85 | AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r) |
| 86 | 86 | AM_RANGE(0x5400, 0x5403) AM_READ(eeprom_r) |
| 87 | 87 | 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) | |
| 90 | 90 | AM_RANGE(0x7000, 0x7003) AM_WRITE(eeprom_clock_line_w) |
| 91 | 91 | AM_RANGE(0x7200, 0x7203) AM_WRITE(eeprom_cs_line_w) |
| 92 | 92 | AM_RANGE(0x7400, 0x7403) AM_WRITE(eeprom_bit_w) |
| r6428 | r6429 | |
| 148 | 148 | /* sound hardware */ |
| 149 | 149 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 150 | 150 | |
| 151 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 151 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 152 | 152 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 153 | 153 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 154 | 154 |
| r6428 | r6429 | |
|---|---|---|
| 23 | 23 | * In devzone, setting SWA:3,4 on anything but OFF,OFF results in no coins |
| 24 | 24 | accepted at all |
| 25 | 25 | |
| 26 | TODO: Cosmic alien colors in-game are wrong; | |
| 27 | See http://www.andysarcade.net/pix/dumping/cosmic/ | |
| 28 | The colors for the text on the "titlescreen" (with the 1979 universal | |
| 29 | copyright), and the status bars are correct in mame, but the sprite colors | |
| 30 | for the aliens when in formation are clearly wrong as compared to andy's pics. | |
| 31 | The shots on andy's page are the correct ones, as the aliens when 'breaking | |
| 32 | formation' in mame change to colors which match the ones in his pictures. | |
| 33 | There is probably a missing bit for color prom banking or for | |
| 34 | forcing all sprites on a row to have an added blue component. | |
| 35 | ||
| 26 | 36 | ***************************************************************************/ |
| 27 | 37 | |
| 28 | 38 | |
| r6428 | r6429 | |
| 33 | 43 | #include "sound/samples.h" |
| 34 | 44 | #include "sound/dac.h" |
| 35 | 45 | |
| 36 | #define MASTER_CLOCK (XTAL_9_828MHz) | |
| 46 | #define COSMICG_MASTER_CLOCK (XTAL_9_828MHz) | |
| 47 | #define Z80_MASTER_CLOCK (XTAL_10_816MHz) | |
| 37 | 48 | |
| 38 | ||
| 39 | 49 | PALETTE_INIT( panic ); |
| 40 | 50 | PALETTE_INIT( cosmica ); |
| 41 | 51 | PALETTE_INIT( cosmicg ); |
| r6428 | r6429 | |
| 1063 | 1073 | static MACHINE_DRIVER_START( cosmic ) |
| 1064 | 1074 | |
| 1065 | 1075 | /* basic machine hardware */ |
| 1066 | MDRV_CPU_ADD("maincpu", Z80, | |
| 1076 | MDRV_CPU_ADD("maincpu", Z80,Z | |
| 1067 | 1077 | |
| 1068 | 1078 | /* video hardware */ |
| 1069 | 1079 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
| 1134 | 1144 | static MACHINE_DRIVER_START( cosmicg ) |
| 1135 | 1145 | |
| 1136 | 1146 | /* basic machine hardware */ |
| 1137 | MDRV_CPU_ADD("maincpu", TMS9980, MASTER_CLOCK/8) | |
| 1147 | MDRV_CPU_ADD("maincpu", TMS9980, COSMICG_MASTER_CLOCK/8) | |
| 1138 | 1148 | /* 9.828 MHz Crystal */ |
| 1139 | 1149 | /* R Nabet : huh ? This would imply the crystal frequency is somehow divided by 2 before being |
| 1140 | 1150 | fed to the tms9904 or tms9980. Also, I have never heard of a tms9900/9980 operating under |
| r6428 | r6429 | |
| 1340 | 1350 | ROM_LOAD( "spcpanic.8", 0x0000, 0x0800, CRC(7da0b321) SHA1(b450cc02de9cc27e3f336c626221c90c6961b51e) ) |
| 1341 | 1351 | ROM_END |
| 1342 | 1352 | |
| 1343 | ROM_START( cosmica ) | |
| 1353 | ROM_START( cosmica ) /* later revision 7910-AII pcb; some roms are marked II-x */ | |
| 1344 | 1354 | 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 */ | |
| 1350 | 1360 | |
| 1351 | 1361 | 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 | |
| 1354 | 1364 | |
| 1355 | 1365 | ROM_REGION( 0x0020, "proms", 0 ) |
| 1356 | ROM_LOAD( " | |
| 1366 | ROM_LOAD( "u7910.d9", | |
| 1357 | 1367 | |
| 1358 | 1368 | ROM_REGION( 0x0400, "user1", 0 ) /* color map */ |
| 1359 | ROM_LOAD( " | |
| 1369 | ROM_LOAD( "9 | |
| 1360 | 1370 | |
| 1361 | 1371 | ROM_REGION( 0x0400, "user2", 0 ) /* starfield generator */ |
| 1362 | ROM_LOAD( " | |
| 1372 | ROM_LOAD( "8 | |
| 1363 | 1373 | ROM_END |
| 1364 | 1374 | |
| 1365 | ROM_START( cosmica2 ) | |
| 1375 | ROM_START( cosmica2 ) /* this set is strange; bootleg, or maybe a hack to make the game easier/harder/etc? */ | |
| 1366 | 1376 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 1367 | ROM_LOAD( " | |
| 1377 | ROM_LOAD( "ii-1.e3", | |
| 1368 | 1378 | ROM_LOAD( "c3.bin", 0x0800, 0x0400, CRC(699c849e) SHA1(90a58ab8ede9c31eec3df1f8f251b59858f85eb6) ) |
| 1369 | 1379 | 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 */ | |
| 1372 | 1382 | ROM_LOAD( "i9.bin", 0x2000, 0x0400, CRC(3bb57720) SHA1(2d1edcad57767a4fa2c7713726ed0cb1203f6fbc) ) |
| 1373 | 1383 | ROM_LOAD( "j0.bin", 0x2400, 0x0400, CRC(4ff70f45) SHA1(791499be62a7b91bde75e7a7ab6c546f5fb63027) ) |
| 1374 | 1384 | |
| 1375 | 1385 | 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 | |
| 1378 | 1388 | |
| 1379 | 1389 | ROM_REGION( 0x0020, "proms", 0 ) |
| 1380 | ROM_LOAD( " | |
| 1390 | ROM_LOAD( "u7910.d9", | |
| 1381 | 1391 | |
| 1382 | 1392 | ROM_REGION( 0x0400, "user1", 0 ) /* color map */ |
| 1383 | ROM_LOAD( " | |
| 1393 | ROM_LOAD( "9 | |
| 1384 | 1394 | |
| 1385 | 1395 | ROM_REGION( 0x0400, "user2", 0 ) /* starfield generator */ |
| 1386 | ROM_LOAD( " | |
| 1396 | ROM_LOAD( "8 | |
| 1387 | 1397 | ROM_END |
| 1388 | 1398 | |
| 1399 | ROM_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 */ | |
| 1419 | ROM_END | |
| 1420 | ||
| 1389 | 1421 | ROM_START( cosmicg ) |
| 1390 | 1422 | ROM_REGION( 0x10000, "maincpu", 0 ) /* 8k for code */ |
| 1391 | 1423 | ROM_LOAD( "cosmicg1.bin", 0x0000, 0x0400, CRC(e1b9f894) SHA1(bab7fd9b3db145a889542653191905b6efc5ce75) ) |
| r6428 | r6429 | |
| 1598 | 1630 | |
| 1599 | 1631 | |
| 1600 | 1632 | GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL ) |
| 1601 | GAME( 1979, cosmica, 0, cosmica, cosmica, cosmica, ROT270, "Universal", "Cosmic Alien", GAME_IMPERFECT_SOUND ) | |
| 1602 | GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmica, ROT270, "Universal", "Cosmic Alien (older)", GAME_IMPERFECT_SOUND ) | |
| 1633 | GAME( 1979, cosmica, 0, cosmica, cosmica, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1634 | GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1635 | GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmica, ROT270, "Universal", "Cosmic Alien (bootleg or hack?)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1603 | 1636 | GAME( 1980, nomnlnd, 0, nomnlnd, nomnlnd, nomnlnd, ROT270, "Universal", "No Man's Land", GAME_IMPERFECT_SOUND ) |
| 1604 | 1637 | GAME( 1980, nomnlndg, nomnlnd, nomnlnd, nomnlndg, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", GAME_IMPERFECT_SOUND ) |
| 1605 | 1638 | GAME( 1980, magspot, 0, magspot, magspot, 0, ROT270, "Universal", "Magical Spot", GAME_IMPERFECT_SOUND ) |
| r6428 | r6429 | |
|---|---|---|
| 1699 | 1699 | AM_RANGE(0xc50000, 0xc50001) AM_DEVWRITE( "sega1", m1_snd_mpcm_bnk_w ) |
| 1700 | 1700 | AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8( "sega2", multipcm_r, multipcm_w, 0x00ff ) |
| 1701 | 1701 | 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 ) | |
| 1703 | 1703 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM |
| 1704 | 1704 | ADDRESS_MAP_END |
| 1705 | 1705 | |
| r6428 | r6429 | |
| 1858 | 1858 | |
| 1859 | 1859 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1860 | 1860 | |
| 1861 | MDRV_SOUND_ADD("ym", YM3438, 8000000) | |
| 1861 | MDRV_SOUND_ADD("ymsnd", YM3438, 8000000) | |
| 1862 | 1862 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1863 | 1863 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 1864 | 1864 |
| r6428 | r6429 | |
|---|---|---|
| 327 | 327 | MDRV_IMPORT_FROM(ataxx) |
| 328 | 328 | |
| 329 | 329 | /* sound hardware */ |
| 330 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 330 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 331 | 331 | MDRV_SOUND_ROUTE(0, "mono", 0.40) |
| 332 | 332 | MDRV_SOUND_ROUTE(1, "mono", 0.40) |
| 333 | 333 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 210 | 210 | /* Note: there's rom data after 0x8000 but the game never seem to call a rom bank, left-over? */ |
| 211 | 211 | static ADDRESS_MAP_START( sshangha_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 212 | 212 | 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) | |
| 214 | 214 | AM_RANGE(0xc200, 0xc201) AM_DEVREADWRITE("oki",okim6295_r,okim6295_w) |
| 215 | 215 | AM_RANGE(0xf800, 0xf807) AM_READWRITE(sshangha_sound_shared_r,sshangha_sound_shared_w) |
| 216 | 216 | AM_RANGE(0xf808, 0xffff) AM_RAM |
| r6428 | r6429 | |
| 386 | 386 | /* sound hardware */ |
| 387 | 387 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") /* sure it's stereo? */ |
| 388 | 388 | |
| 389 | MDRV_SOUND_ADD("ym", YM2203, 16000000/4) | |
| 389 | MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4) | |
| 390 | 390 | MDRV_SOUND_CONFIG(ym2203_config) |
| 391 | 391 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33) |
| 392 | 392 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33) |
| r6428 | r6429 | |
|---|---|---|
| 121 | 121 | |
| 122 | 122 | static ADDRESS_MAP_START( popeye_io_map, ADDRESS_SPACE_IO, 8 ) |
| 123 | 123 | 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) | |
| 125 | 125 | AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") |
| 126 | 126 | AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") |
| 127 | 127 | 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) | |
| 129 | 129 | ADDRESS_MAP_END |
| 130 | 130 | |
| 131 | 131 | |
| r6428 | r6429 | |
| 466 | 466 | /* sound hardware */ |
| 467 | 467 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 468 | 468 | |
| 469 | MDRV_SOUND_ADD("ay", AY8910, XTAL_8MHz/4) | |
| 469 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) | |
| 470 | 470 | MDRV_SOUND_CONFIG(ay8910_config) |
| 471 | 471 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 472 | 472 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 52 | 52 | #include "deprecat.h" |
| 53 | 53 | #include "cpu/z80/z80.h" |
| 54 | 54 | #include "sound/ay8910.h" |
| 55 | #include "includes/4enraya.h" | |
| 55 | 56 | |
| 56 | VIDEO_START( 4enraya ); | |
| 57 | VIDEO_UPDATE( 4enraya ); | |
| 58 | ||
| 59 | WRITE8_HANDLER( fenraya_videoram_w ); | |
| 60 | ||
| 61 | static int soundlatch; | |
| 62 | ||
| 63 | 57 | static WRITE8_HANDLER( sound_data_w ) |
| 64 | 58 | { |
| 65 | soundlatch = data; | |
| 59 | _4enraya_state *state = (_4enraya_state *)space->machine->driver_data; | |
| 60 | state->soundlatch = data; | |
| 66 | 61 | } |
| 67 | 62 | |
| 68 | 63 | static WRITE8_DEVICE_HANDLER( sound_control_w ) |
| 69 | 64 | { |
| 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; | |
| 74 | 71 | } |
| 75 | 72 | |
| 76 | 73 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 77 | 74 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 78 | 75 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
| 79 | AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE( | |
| 76 | AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE_MEMBER(_4enraya_state, videoram) AM_SIZE(&videoram_size) | |
| 80 | 77 | ADDRESS_MAP_END |
| 81 | 78 | |
| 82 | 79 | static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 85 | 82 | AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS") |
| 86 | 83 | AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") |
| 87 | 84 | 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) | |
| 89 | 86 | ADDRESS_MAP_END |
| 90 | 87 | |
| 91 | 88 | |
| r6428 | r6429 | |
| 152 | 149 | |
| 153 | 150 | static MACHINE_START( 4enraya ) |
| 154 | 151 | { |
| 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); | |
| 156 | 156 | } |
| 157 | 157 | |
| 158 | static 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 | ||
| 158 | 166 | static MACHINE_DRIVER_START( 4enraya ) |
| 159 | 167 | |
| 168 | MDRV_DRIVER_DATA(_4enraya_state) | |
| 169 | ||
| 160 | 170 | /* basic machine hardware */ |
| 161 | 171 | MDRV_CPU_ADD("maincpu",Z80,8000000/2) |
| 162 | 172 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 163 | 173 | MDRV_CPU_IO_MAP(main_portmap) |
| 164 | 174 | MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) |
| 165 | 175 | |
| 176 | MDRV_MACHINE_START(4enraya) | |
| 177 | MDRV_MACHINE_RESET(4enraya) | |
| 178 | ||
| 166 | 179 | /* video hardware */ |
| 167 | 180 | MDRV_SCREEN_ADD("screen", RASTER) |
| 168 | 181 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 176 | 189 | MDRV_VIDEO_START(4enraya) |
| 177 | 190 | MDRV_VIDEO_UPDATE(4enraya) |
| 178 | 191 | |
| 179 | MDRV_MACHINE_START(4enraya) | |
| 180 | ||
| 181 | 192 | /* sound hardware */ |
| 182 | 193 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 183 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */) | |
| 194 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */) | |
| 184 | 195 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 185 | 196 | MACHINE_DRIVER_END |
| 186 | 197 | |
| r6428 | r6429 | |
| 204 | 215 | ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) ) /* not used */ |
| 205 | 216 | ROM_END |
| 206 | 217 | |
| 207 | GAME( 1990, 4enraya, 0, | |
| 218 | GAME( 1990, 4enraya, 0, |
| r6428 | r6429 | |
|---|---|---|
| 61 | 61 | AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_WRITE(compgolf_ctrl_w) |
| 62 | 62 | AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1") |
| 63 | 63 | 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) | |
| 65 | 65 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 66 | 66 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 67 | 67 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 219 | 219 | |
| 220 | 220 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 221 | 221 | |
| 222 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 222 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 223 | 223 | MDRV_SOUND_CONFIG(ym2203_config) |
| 224 | 224 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 225 | 225 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 2753 | 2753 | ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) ) |
| 2754 | 2754 | ROM_END |
| 2755 | 2755 | |
| 2756 | ROM_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) ) | |
| 2785 | ROM_END | |
| 2786 | ||
| 2756 | 2787 | ROM_START( dimahoo ) |
| 2757 | 2788 | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| 2758 | 2789 | ROM_LOAD16_WORD_SWAP( "gmde.03", 0x000000, 0x80000, CRC(968fcecd) SHA1(82d6eb6488df48bc7b977fc900c24b29bd6573a9) ) |
| r6428 | r6429 | |
| 3430 | 3461 | ROM_LOAD16_WORD_SWAP( "rm2.12m", 0x200000, 0x200000, CRC(546c1636) SHA1(f96b172ab899f2c6ee17a5dd1fb61af9432e3cd2) ) |
| 3431 | 3462 | ROM_END |
| 3432 | 3463 | |
| 3464 | ROM_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) ) | |
| 3485 | ROM_END | |
| 3486 | ||
| 3433 | 3487 | /* |
| 3434 | 3488 | |
| 3435 | 3489 | Gigaman 2 - 2004 Chinese rebuild Bootleg |
| r6428 | r6429 | |
| 6353 | 6407 | ROM_LOAD( "ssf.q08", 0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) ) |
| 6354 | 6408 | ROM_END |
| 6355 | 6409 | |
| 6410 | ROM_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) ) | |
| 6441 | ROM_END | |
| 6442 | ||
| 6356 | 6443 | ROM_START( ssf2tb ) |
| 6357 | 6444 | ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ |
| 6358 | 6445 | ROM_LOAD16_WORD_SWAP( "ssfe.3tc", 0x000000, 0x80000, CRC(496a8409) SHA1(3101689e86ab78c544524e31057478fce336ddaa) ) |
| r6428 | r6429 | |
| 7513 | 7600 | GAME( 1993, ssf2j, ssf2, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", 0 ) |
| 7514 | 7601 | GAME( 1993, ssf2jr1, ssf2, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", 0 ) |
| 7515 | 7602 | GAME( 1993, ssf2jr2, ssf2, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", 0 ) |
| 7603 | GAME( 1993, ssf2h, ssf2, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", 0 ) | |
| 7516 | 7604 | GAME( 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 |
| 7517 | 7605 | GAME( 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 |
| 7518 | 7606 | GAME( 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 |
| r6428 | r6429 | |
| 7614 | 7702 | GAME( 1996, ddsomj, ddsom, cps2, cps2_4p4b, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", 0 ) |
| 7615 | 7703 | GAME( 1996, ddsomjr1, ddsom, cps2, cps2_4p4b, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", 0 ) |
| 7616 | 7704 | GAME( 1996, ddsoma, ddsom, cps2, cps2_4p4b, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", 0 ) |
| 7705 | GAME( 1996, ddsomh, ddsom, cps2, cps2_4p4b, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", 0 ) | |
| 7617 | 7706 | GAME( 1996, ddsomb, ddsom, cps2, cps2_4p4b, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", 0 ) |
| 7618 | 7707 | GAME( 1996, sfa2, 0, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (Euro 960229)", 0 ) |
| 7619 | 7708 | GAME( 1996, sfa2u, sfa2, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960306)", 0 ) |
| r6428 | r6429 | |
| 7633 | 7722 | GAME( 1996, megaman2, 0, cps2, cps2_2p3b, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", 0 ) |
| 7634 | 7723 | GAME( 1996, megaman2a,megaman2, cps2, cps2_2p3b, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", 0 ) |
| 7635 | 7724 | GAME( 1996, rckman2j, megaman2, cps2, cps2_2p3b, cps2, ROT0, "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", 0 ) |
| 7636 | GAME( 1996, g | |
| 7725 | GAME( 1996, meg | |
| 7637 | 7726 | GAME( 1996, qndream, 0, cps2, qndream, cps2, ROT0, "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", 0 ) |
| 7638 | 7727 | GAME( 1996, xmvsf, 0, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", 0 ) |
| 7639 | 7728 | GAME( 1996, xmvsfr1, xmvsf, cps2, cps2_2p6b, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", 0 ) |
| r6428 | r6429 | |
| 8695 | 8784 | GAME( 1996, sfz2ad, sfa2, dead_cps2, cps2_2p6b, cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", 0 ) |
| 8696 | 8785 | GAME( 1996, spf2xjd, spf2t, dead_cps2, cps2_2p2b, cps2, ROT0, "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", 0 ) |
| 8697 | 8786 | GAME( 1996, ddsomud, ddsom, dead_cps2, cps2_4p4b, cps2, ROT0, "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", 0 ) |
| 8787 | GAME( 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 | |
| 8698 | 8788 | GAME( 1996, megamn2d, megaman2,dead_cps2, cps2_2p3b, cps2, ROT0, "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", 0 ) |
| 8699 | 8789 | GAME( 1996, sfz2ald, sfz2al, dead_cps2, cps2_2p6b, cps2, ROT0, "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", 0 ) |
| 8700 | 8790 | GAME( 1996, xmvsfu1d, xmvsf, dead_cps2, cps2_2p6b, cps2, ROT0, "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /************************************************************************************************************ |
| 2 | 2 | |
| 3 | | |
| 3 | | |
| 4 | 4 | |
| 5 | 5 | driver by Pierpaolo Prazzoli, Luca Elia (l.elia@tin.it) |
| 6 | 6 | |
| 7 | IGS017: 2 tilemaps, variable size sprites, protection. | |
| 7 | CPU: Z180 or 68000 | |
| 8 | Video: IGS017 or IGS031 (2 tilemaps, variable size sprites, protection) | |
| 9 | Other: IGS025 (8255), IGS022 (protection, MCU), IGS029 (protection) | |
| 10 | Sound: M6295 + [YM2413] | |
| 8 | 11 | |
| 9 | 12 | ------------------------------------------------------------------------------------------------------------- |
| 10 | Year + Game | |
| 13 | Year + Game | |
| 11 | 14 | ------------------------------------------------------------------------------------------------------------- |
| 12 | 96 Shu Zi Le Yuan N0-0131-4 HD64180 M6295 YM2413 IGS017 8255 Battery | |
| 13 | 97 Mahjong Tian Jiang Shen Bing N0-0157-2 HD64180 M6295 YM2413 IGS017 IGS025 Battery | |
| 14 | 98 Mahjong Man Guan Cai Shen N0-0192-1 M68000 M6295 IGS017 IGS025 IGS029 Battery | |
| 15 | 96 Shu Zi Le Yuan NO-0131-4 Z180 M6295 YM2413 IGS017 8255 Battery | |
| 16 | 97 Mj Super Da Man Guan II NO-0147-6 68000 M6295 IGS031 8255 Battery | |
| 17 | 97 Mj Tian Jiang Shen Bing NO-0157-2 Z180 M6295 YM2413 IGS017 IGS025 Battery | |
| 18 | 97 Mj Man Guan Da Heng NO-0252 68000 M6295 IGS031 IGS025 Battery | |
| 19 | 98 Mj Long Hu Zheng Ba 2 NO-0206 68000 M6295 IGS031 IGS025 IGS022* Battery | |
| 20 | 98 Mj Shuang Long Qiang Zhu 2 NO-0207 68000 M6295 IGS031 IGS025 IGS022 Battery | |
| 21 | 98 Mj Man Guan Cai Shen NO-0192-1 68000 M6295 IGS017 IGS025 IGS029 Battery | |
| 22 | 99? Tarzan (V107)? NO-0248-1 Z180 M6295 IGS031 IGS025 Battery | |
| 23 | 99? Tarzan (V109C)? NO-0228? Z180 M6295 IGS031 IGS025 IGS029 Battery | |
| 24 | 00? Super Tarzan (V100I) NO-0230-1 Z180 M6295 IGS031 IGS025 Battery | |
| 15 | 25 | ------------------------------------------------------------------------------------------------------------- |
| 16 | ||
| 26 | * not preset in one set | |
| 17 | 27 | To Do: |
| 18 | 28 | |
| 19 | 29 | - Protection emulation, instead of patching the roms. |
| 30 | - NVRAM. | |
| 20 | 31 | - tjsb: finish sprites decryption (data lines scrambling), protection, inputs. |
| 21 | - iqblocka: NVRAM. | |
| 22 | 32 | - iqblockf: protection. |
| 33 | - mgcs, mgdh, sdmg2: implement joystick inputs | |
| 23 | 34 | |
| 24 | 35 | Notes: |
| 25 | 36 | |
| 26 | 37 | - 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. | |
| 27 | 41 | |
| 28 | 42 | ************************************************************************************************************/ |
| 29 | 43 | |
| r6428 | r6429 | |
| 41 | 55 | Video Hardware |
| 42 | 56 | ***************************************************************************/ |
| 43 | 57 | |
| 58 | static UINT8 video_disable; | |
| 59 | static 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 | } | |
| 66 | static WRITE16_HANDLER( video_disable_lsb_w ) | |
| 67 | { | |
| 68 | if (ACCESSING_BITS_0_7) | |
| 69 | video_disable_w(space,offset,data); | |
| 70 | } | |
| 71 | ||
| 72 | static VIDEO_RESET( igs017 ) | |
| 73 | { | |
| 74 | video_disable = 0; | |
| 75 | } | |
| 76 | ||
| 44 | 77 | static UINT8 *fg_videoram, *bg_videoram; |
| 45 | 78 | static tilemap *fg_tilemap, *bg_tilemap; |
| 46 | 79 | |
| 47 | #define COLOR(_X) (((_X)>>2)) | |
| 80 | #define COLOR(_X) (((_X)>>2)&7) | |
| 48 | 81 | |
| 49 | 82 | static TILE_GET_INFO( get_fg_tile_info ) |
| 50 | 83 | { |
| 51 | 84 | int code = fg_videoram[tile_index*4+0] + (fg_videoram[tile_index*4+1] << 8); |
| 52 | 85 | int attr = fg_videoram[tile_index*4+2] + (fg_videoram[tile_index*4+3] << 8); |
| 53 | SET_TILE_INFO(0, code, COLOR(attr), | |
| 86 | SET_TILE_INFO(0, code, COLOR(attr), TILE_FLIPXY( attr >> 5 )); | |
| 54 | 87 | } |
| 55 | 88 | static TILE_GET_INFO( get_bg_tile_info ) |
| 56 | 89 | { |
| 57 | 90 | int code = bg_videoram[tile_index*4+0] + (bg_videoram[tile_index*4+1] << 8); |
| 58 | 91 | int attr = bg_videoram[tile_index*4+2] + (bg_videoram[tile_index*4+3] << 8); |
| 59 | SET_TILE_INFO(0, code, COLOR(attr)+8, | |
| 92 | SET_TILE_INFO(0, code, COLOR(attr)+8, TILE_FLIPXY( attr >> 5 )); | |
| 60 | 93 | } |
| 61 | 94 | |
| 62 | 95 | static WRITE8_HANDLER( fg_w ) |
| r6428 | r6429 | |
| 104 | 137 | } |
| 105 | 138 | |
| 106 | 139 | |
| 107 | static 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 | ||
| 121 | 140 | static UINT8 *sprites_gfx; |
| 122 | 141 | static int sprites_gfx_size; |
| 123 | 142 | |
| r6428 | r6429 | |
| 142 | 161 | } |
| 143 | 162 | } |
| 144 | 163 | |
| 164 | static 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 | ||
| 145 | 179 | /*************************************************************************** |
| 146 | 180 | Sprites Format |
| 147 | 181 | |
| r6428 | r6429 | |
| 283 | 317 | if (debug_viewer(screen->machine, bitmap,cliprect)) |
| 284 | 318 | return 0; |
| 285 | 319 | |
| 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)); | |
| 288 | 321 | |
| 289 | if (layers_ctrl & 4) draw_sprites(screen->machine,bitmap,cliprect); | |
| 322 | if (video_disable) | |
| 323 | return 0; | |
| 290 | 324 | |
| 291 | if (layers_ctrl & | |
| 325 | if (layers_ctrl & 1) tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_OPAQUE, 0); | |
| 292 | 326 | |
| 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 | ||
| 293 | 331 | return 0; |
| 294 | 332 | } |
| 295 | 333 | |
| r6428 | r6429 | |
| 379 | 417 | { |
| 380 | 418 | decrypt_program_rom(machine, 0x11, 7, 6, 5, 4, 3, 2, 1, 0); |
| 381 | 419 | iqblocka_patch_rom(machine); |
| 382 | ||
| 383 | expand_sprites(machine); | |
| 384 | 420 | } |
| 385 | 421 | |
| 386 | 422 | // iqblockf |
| r6428 | r6429 | |
| 389 | 425 | { |
| 390 | 426 | decrypt_program_rom(machine, 0x11, 7, 6, 5, 4, 3, 2, 1, 0); |
| 391 | 427 | // iqblockf_patch_rom(machine); |
| 392 | ||
| 393 | expand_sprites(machine); | |
| 394 | 428 | } |
| 395 | 429 | |
| 396 | 430 | // tjsb |
| r6428 | r6429 | |
| 437 | 471 | tjsb_patch_rom(machine); |
| 438 | 472 | |
| 439 | 473 | tjsb_decrypt_sprites(machine); |
| 440 | expand_sprites(machine); | |
| 441 | 474 | } |
| 442 | 475 | |
| 476 | ||
| 443 | 477 | // mgcs |
| 444 | 478 | |
| 445 | 479 | static void mgcs_decrypt_program_rom(running_machine *machine) |
| r6428 | r6429 | |
| 550 | 584 | |
| 551 | 585 | mgcs_decrypt_tiles(machine); |
| 552 | 586 | mgcs_flip_sprites(machine); |
| 587 | } | |
| 553 | 588 | |
| 554 | expand_sprites(machine); | |
| 589 | ||
| 590 | // tarzan, tarzana | |
| 591 | ||
| 592 | // decryption is incomplete, the first part of code doesn't seem right. | |
| 593 | static 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 | } | |
| 555 | 617 | } |
| 618 | // by iq_132 | |
| 619 | static DRIVER_INIT( tarzana ) | |
| 620 | { | |
| 621 | UINT8 *ROM = memory_region(machine,"maincpu"); | |
| 622 | int i; | |
| 623 | int size = 0x80000; | |
| 556 | 624 | |
| 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 | } | |
| 557 | 636 | |
| 637 | ||
| 638 | // starzan | |
| 639 | ||
| 640 | // decryption is incomplete, the first part of code doesn't seem right. | |
| 641 | static 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 | ||
| 695 | static 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 | ||
| 752 | static 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 | ||
| 789 | static 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 | ||
| 879 | static 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 | ||
| 941 | static 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 | ||
| 558 | 1018 | /*************************************************************************** |
| 559 | 1019 | Memory Maps |
| 560 | 1020 | ***************************************************************************/ |
| r6428 | r6429 | |
| 582 | 1042 | logerror("PC %06X: irq_enable = %02x\n",cpu_get_pc(space->cpu),data); |
| 583 | 1043 | } |
| 584 | 1044 | |
| 585 | static UINT8 input_select; | |
| 1045 | static UINT8 input_select, hopper; | |
| 586 | 1046 | static WRITE8_HANDLER( input_select_w ) |
| 587 | 1047 | { |
| 588 | 1048 | input_select = data; |
| r6428 | r6429 | |
| 635 | 1095 | |
| 636 | 1096 | // AM_RANGE(0x200a, 0x200a) AM_WRITENOP |
| 637 | 1097 | |
| 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 ) | |
| 639 | 1100 | |
| 640 | 1101 | AM_RANGE( 0x2014, 0x2014 ) AM_WRITE( nmi_enable_w ) |
| 641 | 1102 | AM_RANGE( 0x2015, 0x2015 ) AM_WRITE( irq_enable_w ) |
| r6428 | r6429 | |
| 650 | 1111 | |
| 651 | 1112 | AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "BUTTONS" ) |
| 652 | 1113 | |
| 653 | AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE( "ym", ym2413_w ) | |
| 1114 | AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE( "ymsnd", ym2413_w ) | |
| 654 | 1115 | ADDRESS_MAP_END |
| 655 | 1116 | |
| 656 | 1117 | |
| r6428 | r6429 | |
| 674 | 1135 | input_select = data & 0xff; |
| 675 | 1136 | } |
| 676 | 1137 | |
| 677 | if ( input_select & ~0xf | |
| 1138 | if ( input_select & ~0xf8 ) | |
| 678 | 1139 | logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(space->cpu), input_select); |
| 679 | 1140 | break; |
| 680 | 1141 | |
| r6428 | r6429 | |
| 685 | 1146 | } |
| 686 | 1147 | break; |
| 687 | 1148 | |
| 1149 | // case 0x02: ? | |
| 1150 | // case 0x03: ? | |
| 1151 | ||
| 688 | 1152 | default: |
| 689 | 1153 | logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(space->cpu), igs_magic[0], data); |
| 690 | 1154 | } |
| r6428 | r6429 | |
| 751 | 1215 | palette_set_color_rgb(space->machine, offset/2, pal5bit(rgb >> 0), pal5bit(rgb >> 5), pal5bit(rgb >> 10)); |
| 752 | 1216 | } |
| 753 | 1217 | |
| 754 | static READ16_DEVICE_HANDLER ( mgcs_ppi8255_r ) { return ppi8255_r(device, offset); } | |
| 755 | static WRITE16_DEVICE_HANDLER( mgcs_ppi8255_w ) { if (ACCESSING_BITS_0_7) ppi8255_w(device, offset, data); } | |
| 756 | ||
| 757 | 1218 | static ADDRESS_MAP_START( mgcs, ADDRESS_SPACE_PROGRAM, 16 ) |
| 758 | 1219 | AM_RANGE( 0x000000, 0x07ffff ) AM_ROM |
| 759 | 1220 | AM_RANGE( 0x300000, 0x303fff ) AM_RAM |
| 760 | ||
| 761 | 1221 | AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE( mgcs_magic_w ) |
| 762 | 1222 | AM_RANGE( 0x49c002, 0x49c003 ) AM_READ ( mgcs_magic_r ) |
| 763 | ||
| 764 | 1223 | AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_BASE( (UINT16**)&spriteram ) |
| 765 | 1224 | 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 ) | |
| 769 | 1227 | AM_RANGE( 0xa04028, 0xa04029 ) AM_WRITE( irq2_enable_w ) |
| 770 | 1228 | AM_RANGE( 0xa0402a, 0xa0402b ) AM_WRITE( irq1_enable_w ) |
| 771 | ||
| 772 | 1229 | AM_RANGE( 0xa08000, 0xa0bfff ) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_BASE( (UINT16**)&fg_videoram ) |
| 773 | 1230 | AM_RANGE( 0xa0c000, 0xa0ffff ) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_BASE( (UINT16**)&bg_videoram ) |
| 774 | ||
| 775 | // oki banking? | |
| 776 | 1231 | AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0x00ff ) |
| 1232 | // oki banking through protection (code at $1a350)? | |
| 777 | 1233 | ADDRESS_MAP_END |
| 778 | 1234 | |
| 779 | 1235 | |
| 1236 | // sdmg2 | |
| 1237 | ||
| 1238 | static 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 | ||
| 1249 | static 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 | ||
| 1261 | static 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 | ||
| 1294 | static 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 | ||
| 1315 | static 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 ) | |
| 1329 | ADDRESS_MAP_END | |
| 1330 | ||
| 1331 | ||
| 1332 | // mgdh | |
| 1333 | ||
| 1334 | static 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 | ||
| 1348 | static 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 | ||
| 1394 | static 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 | ||
| 1418 | static 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 ) | |
| 1432 | ADDRESS_MAP_END | |
| 1433 | ||
| 1434 | ||
| 780 | 1435 | /*************************************************************************** |
| 781 | 1436 | Input Ports |
| 782 | 1437 | ***************************************************************************/ |
| 783 | 1438 | |
| 784 | 1439 | static INPUT_PORTS_START( iqblocka ) |
| 785 | 1440 | |
| 786 | PORT_START("DSW | |
| 1441 | PORT_START("DSW1") | |
| 787 | 1442 | PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) |
| 788 | 1443 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 789 | 1444 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r6428 | r6429 | |
| 808 | 1463 | PORT_DIPSETTING( 0x40, "20" ) |
| 809 | 1464 | PORT_DIPSETTING( 0x00, "50" ) |
| 810 | 1465 | |
| 811 | PORT_START("DSW | |
| 1466 | PORT_START("DSW2") | |
| 812 | 1467 | PORT_DIPNAME( 0x07, 0x07, "Key In" ) |
| 813 | 1468 | PORT_DIPSETTING( 0x07, "10" ) |
| 814 | 1469 | PORT_DIPSETTING( 0x06, "20" ) |
| r6428 | r6429 | |
| 833 | 1488 | PORT_DIPSETTING( 0x40, "300" ) |
| 834 | 1489 | PORT_DIPSETTING( 0x00, "400" ) |
| 835 | 1490 | |
| 836 | PORT_START("DSW | |
| 1491 | PORT_START("DSW3") | |
| 837 | 1492 | PORT_DIPNAME( 0x03, 0x03, "Win Up Pool" ) |
| 838 | 1493 | PORT_DIPSETTING( 0x03, "300" ) |
| 839 | 1494 | PORT_DIPSETTING( 0x02, "500" ) |
| r6428 | r6429 | |
| 949 | 1604 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 950 | 1605 | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 951 | 1606 | |
| 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) | |
| 953 | 1608 | |
| 954 | 1609 | PORT_START("COINS") |
| 955 | 1610 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ? (shown in service mode) |
| r6428 | r6429 | |
| 1013 | 1668 | |
| 1014 | 1669 | INPUT_PORTS_END |
| 1015 | 1670 | |
| 1671 | static INPUT_PORTS_START( sdmg2 ) | |
| 1016 | 1672 | |
| 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 | ||
| 1781 | INPUT_PORTS_END | |
| 1782 | ||
| 1783 | static 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 | ||
| 1894 | INPUT_PORTS_END | |
| 1895 | ||
| 1896 | ||
| 1017 | 1897 | /*************************************************************************** |
| 1018 | 1898 | Graphics Layout |
| 1019 | 1899 | ***************************************************************************/ |
| r6428 | r6429 | |
| 1029 | 1909 | 8*8*4 |
| 1030 | 1910 | }; |
| 1031 | 1911 | |
| 1912 | static 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 | ||
| 1032 | 1923 | static const gfx_layout layout_8x8x4_flipped = |
| 1033 | 1924 | { |
| 1034 | 1925 | 8,8, |
| r6428 | r6429 | |
| 1040 | 1931 | 8*8*4 |
| 1041 | 1932 | }; |
| 1042 | 1933 | |
| 1934 | static GFXDECODE_START( igs017 ) | |
| 1935 | GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4, 0, 16 ) | |
| 1936 | GFXDECODE_END | |
| 1937 | ||
| 1938 | static GFXDECODE_START( igs017_swapped ) | |
| 1939 | GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_swapped, 0, 16 ) | |
| 1940 | GFXDECODE_END | |
| 1941 | ||
| 1043 | 1942 | static GFXDECODE_START( igs017_flipped ) |
| 1044 | 1943 | GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_flipped, 0, 16 ) |
| 1045 | 1944 | GFXDECODE_END |
| 1046 | 1945 | |
| 1047 | static GFXDECODE_START( igs017 ) | |
| 1048 | GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4, 0, 16 ) | |
| 1049 | GFXDECODE_END | |
| 1050 | 1946 | |
| 1051 | ||
| 1052 | 1947 | /*************************************************************************** |
| 1053 | 1948 | Machine Drivers |
| 1054 | 1949 | ***************************************************************************/ |
| r6428 | r6429 | |
| 1070 | 1965 | // Dips are read through the 8255 |
| 1071 | 1966 | static const ppi8255_interface iqblocka_ppi8255_intf = |
| 1072 | 1967 | { |
| 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 | |
| 1076 | 1971 | |
| 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 | |
| 1080 | 1975 | }; |
| 1081 | 1976 | |
| 1082 | 1977 | static MACHINE_RESET( iqblocka ) |
| r6428 | r6429 | |
| 1087 | 1982 | } |
| 1088 | 1983 | |
| 1089 | 1984 | static MACHINE_DRIVER_START( iqblocka ) |
| 1090 | ||
| 1091 | /* basic machine hardware */ | |
| 1092 | 1985 | MDRV_CPU_ADD("maincpu", Z180, XTAL_16MHz / 2) |
| 1093 | 1986 | MDRV_CPU_PROGRAM_MAP(iqblocka_map) |
| 1094 | 1987 | MDRV_CPU_IO_MAP(iqblocka_io) |
| r6428 | r6429 | |
| 1111 | 2004 | |
| 1112 | 2005 | MDRV_VIDEO_START(igs017) |
| 1113 | 2006 | MDRV_VIDEO_UPDATE(igs017) |
| 2007 | MDRV_VIDEO_RESET(igs017) | |
| 1114 | 2008 | |
| 1115 | 2009 | /* sound hardware */ |
| 1116 | 2010 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1117 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 2011 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 1118 | 2012 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 1119 | 2013 | |
| 1120 | 2014 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz / 16) |
| r6428 | r6429 | |
| 1151 | 2045 | |
| 1152 | 2046 | static const ppi8255_interface mgcs_ppi8255_intf = |
| 1153 | 2047 | { |
| 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) | |
| 1157 | 2051 | |
| 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 | |
| 1161 | 2055 | }; |
| 1162 | 2056 | |
| 1163 | 2057 | static MACHINE_DRIVER_START( mgcs ) |
| r6428 | r6429 | |
| 1182 | 2076 | |
| 1183 | 2077 | MDRV_VIDEO_START(igs017) |
| 1184 | 2078 | MDRV_VIDEO_UPDATE(igs017) |
| 2079 | MDRV_VIDEO_RESET(igs017) | |
| 1185 | 2080 | |
| 1186 | 2081 | /* sound hardware */ |
| 1187 | 2082 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| r6428 | r6429 | |
| 1191 | 2086 | MACHINE_DRIVER_END |
| 1192 | 2087 | |
| 1193 | 2088 | |
| 2089 | ||
| 2090 | // sdmg2 | |
| 2091 | ||
| 2092 | static 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 | ||
| 2103 | static 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) | |
| 2132 | MACHINE_DRIVER_END | |
| 2133 | ||
| 2134 | ||
| 2135 | //mgdh | |
| 2136 | ||
| 2137 | static 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 | ||
| 2151 | static 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 | ||
| 2162 | static 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) | |
| 2191 | MACHINE_DRIVER_END | |
| 2192 | ||
| 2193 | ||
| 1194 | 2194 | /*************************************************************************** |
| 1195 | 2195 | ROMs Loading |
| 1196 | 2196 | ***************************************************************************/ |
| 1197 | 2197 | |
| 1198 | /* | |
| 2198 | /*************************************************************************** | |
| 1199 | 2199 | |
| 1200 | 2200 | IQ Block (alt hardware) |
| 1201 | 2201 | IGS, 1996 |
| r6428 | r6429 | |
| 1237 | 2237 | VSync - 60Hz |
| 1238 | 2238 | HSync - 15.31kHz |
| 1239 | 2239 | |
| 1240 | */ | |
| 2240 | ***************************************************************************/ | |
| 1241 | 2241 | |
| 1242 | 2242 | ROM_START( iqblocka ) |
| 1243 | 2243 | ROM_REGION( 0x40000, "maincpu", 0 ) |
| r6428 | r6429 | |
| 1267 | 2267 | ROM_LOAD( "sp.u17", 0x00000, 0x40000, CRC(71357845) SHA1(25f4f7aebdcc0706018f041d3696322df569b0a3) ) |
| 1268 | 2268 | ROM_END |
| 1269 | 2269 | |
| 1270 | /* | |
| 2270 | /*************************************************************************** | |
| 1271 | 2271 | |
| 1272 | 2272 | Mahjong Tian Jiang Shen Bing |
| 1273 | 2273 | IGS, 1997 |
| r6428 | r6429 | |
| 1313 | 2313 | VSync - 60Hz |
| 1314 | 2314 | HSync - 15.30kHz |
| 1315 | 2315 | |
| 1316 | */ | |
| 2316 | ***************************************************************************/ | |
| 1317 | 2317 | |
| 1318 | 2318 | ROM_START( tjsb ) |
| 1319 | 2319 | ROM_REGION( 0x40000, "maincpu", 0 ) |
| r6428 | r6429 | |
| 1323 | 2323 | ROM_LOAD( "a0701.u3", 0x000000, 0x200000, CRC(aa182140) SHA1(37c2053386c183ff726ba417d13f2063cf9a22df) ) // FIXED BITS (xxxxxxxx0xxxxxxx) |
| 1324 | 2324 | |
| 1325 | 2325 | ROM_REGION( 0x80000, "tilemaps", 0 ) |
| 1326 | ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) ) // BADADDR | |
| 2326 | ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) ) // BADADDR | |
| 1327 | 2327 | |
| 1328 | 2328 | ROM_REGION( 0x80000, "oki", 0 ) |
| 1329 | 2329 | ROM_LOAD( "s0703.u15", 0x00000, 0x80000, CRC(c6f94d29) SHA1(ec413580240711fc4977dd3c96c288501aa7ef6c) ) |
| 1330 | 2330 | ROM_END |
| 1331 | 2331 | |
| 1332 | /* | |
| 2332 | /*************************************************************************** | |
| 1333 | 2333 | |
| 1334 | 2334 | Mahjong Man Guan Cai Shen |
| 1335 | 2335 | IGS, 1998 |
| r6428 | r6429 | |
| 1371 | 2371 | VSync - 60Hz |
| 1372 | 2372 | HSync - 15.3kHz |
| 1373 | 2373 | |
| 1374 | */ | |
| 2374 | ***************************************************************************/ | |
| 1375 | 2375 | |
| 1376 | 2376 | ROM_START( mgcs ) |
| 1377 | 2377 | ROM_REGION( 0x80000, "maincpu", 0 ) |
| r6428 | r6429 | |
| 1387 | 2387 | ROM_LOAD( "s1502.u10", 0x00000, 0x80000, CRC(a8a6ba58) SHA1(59276a8ab4a31812600816c2a43b74bd71394419) ) |
| 1388 | 2388 | ROM_END |
| 1389 | 2389 | |
| 1390 | GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, iqblocka, ROT0, "IGS", "Shu Zi Le Yuan (V127M)", GAME_NOT_WORKING ) | |
| 1391 | GAME( 1996, iqblockf, iqblock, iqblocka, iqblocka, iqblockf, ROT0, "IGS", "Shu Zi Le Yuan (V113FR)", GAME_NOT_WORKING ) | |
| 1392 | GAME( 1997, tjsb, 0, iqblocka, iqblocka, tjsb, ROT0, "IGS", "Mahjong Tian Jiang Shen Bing", GAME_NOT_WORKING ) | |
| 1393 | GAME( 1998, mgcs, 0, mgcs, mgcs, mgcs, ROT0, "IGS", "Mahjong Man Guan Cai Shen (V103CS)", GAME_NOT_WORKING ) | |
| 2390 | /*************************************************************************** | |
| 2391 | ||
| 2392 | Mahjong Super Da Man Guan 2 | |
| 2393 | IGS, 1997 | |
| 2394 | ||
| 2395 | ||
| 2396 | PCB Layout | |
| 2397 | ---------- | |
| 2398 | ||
| 2399 | IGS 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 | |---------------------------------------| | |
| 2425 | Notes: | |
| 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 | ||
| 2434 | ROM_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) ) | |
| 2447 | ROM_END | |
| 2448 | ||
| 2449 | /*************************************************************************** | |
| 2450 | ||
| 2451 | Mahjong Long Hu Zheng Ba 2 | |
| 2452 | IGS, 1998 | |
| 2453 | ||
| 2454 | PCB Layout | |
| 2455 | ---------- | |
| 2456 | ||
| 2457 | IGS 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 | |---------------------------------------| | |
| 2483 | Notes: | |
| 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 | ||
| 2492 | ROM_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) ) | |
| 2507 | ROM_END | |
| 2508 | ||
| 2509 | /* alt hardware, no IGS022 (protection) chip */ | |
| 2510 | ||
| 2511 | ROM_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) ) | |
| 2523 | ROM_END | |
| 2524 | ||
| 2525 | /*************************************************************************** | |
| 2526 | ||
| 2527 | Mahjong Shuang Long Qiang Zhu 2 | |
| 2528 | IGS, 1998 | |
| 2529 | ||
| 2530 | PCB Layout | |
| 2531 | ---------- | |
| 2532 | ||
| 2533 | IGS 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 | |---------------------------------------| | |
| 2559 | Notes: | |
| 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 | ||
| 2567 | ROM_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 | |
| 2582 | ROM_END | |
| 2583 | ||
| 2584 | /*************************************************************************** | |
| 2585 | ||
| 2586 | Mahjong Man Guan Da Heng (V123T1) | |
| 2587 | IGS | |
| 2588 | ||
| 2589 | PCB Layout | |
| 2590 | ---------- | |
| 2591 | ||
| 2592 | IGS 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 | |----------------------------------| | |
| 2611 | Notes: | |
| 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 | ||
| 2624 | ROM_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) ) | |
| 2636 | ROM_END | |
| 2637 | ||
| 2638 | /*************************************************************************** | |
| 2639 | ||
| 2640 | Tarzan | |
| 2641 | ||
| 2642 | ***************************************************************************/ | |
| 2643 | ||
| 2644 | // IGS NO-0248-1? Mislabeled? | |
| 2645 | ROM_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 ) | |
| 2661 | ROM_END | |
| 2662 | ||
| 2663 | // IGS NO-0228? | |
| 2664 | ROM_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 ) | |
| 2680 | ROM_END | |
| 2681 | ||
| 2682 | /*************************************************************************** | |
| 2683 | ||
| 2684 | Super Tarzan (Italy, V100I) | |
| 2685 | IGS 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 | ||
| 2731 | ROM_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 ) | |
| 2748 | ROM_END | |
| 2749 | ||
| 2750 | ||
| 2751 | GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, iqblocka, ROT0, "IGS", "Shu Zi Le Yuan (V127M)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2752 | GAME( 1996, iqblockf, iqblock, iqblocka, iqblocka, iqblockf, ROT0, "IGS", "Shu Zi Le Yuan (V113FR)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2753 | GAME( 1997, tjsb, 0, iqblocka, iqblocka, tjsb, ROT0, "IGS", "Mahjong Tian Jiang Shen Bing", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2754 | GAME( 1997, sdmg2, 0, sdmg2, sdmg2, sdmg2, ROT0, "IGS", "Mahjong Super Da Man Guan II (China, V754C)", 0 ) | |
| 2755 | GAME( 1997, mgdh, 0, mgdh, mgdh , mgdh, ROT0, "IGS", "Mahjong Man Guan Da Heng (Taiwan, V123T1)", 0 ) | |
| 2756 | GAME( 1998, mgcs, 0, mgcs, mgcs, mgcs, ROT0, "IGS", "Mahjong Man Guan Cai Shen (V103CS)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2757 | GAME( 1998, lhzb2, 0, sdmg2, sdmg2, lhzb2, ROT0, "IGS", "Mahjong Long Hu Zheng Ba 2 (set 1)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2758 | GAME( 1998, lhzb2a, lhzb2, sdmg2, sdmg2, lhzb2a, ROT0, "IGS", "Mahjong Long Hu Zheng Ba 2 (set 2)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2759 | GAME( 1998, slqz2, 0, sdmg2, sdmg2, slqz2, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 2", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) | |
| 2760 | GAME( 1999?, tarzan, 0, iqblocka, iqblocka, tarzan, ROT0, "IGS", "Tarzan (V109C)", GAME_NOT_WORKING ) | |
| 2761 | GAME( 1999?, tarzana, tarzan, iqblocka, iqblocka, tarzana, ROT0, "IGS", "Tarzan (V107)", GAME_NOT_WORKING ) | |
| 2762 | GAME( 2000?, starzan, 0, iqblocka, iqblocka, starzan, ROT0, "IGS / G.F. Gioca", "Super Tarzan (Italy, V100I)", GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 103 | 103 | AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w) /* speech and output control */ |
| 104 | 104 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w) |
| 105 | 105 | 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. */ | |
| 107 | 107 | ADDRESS_MAP_END |
| 108 | 108 | |
| 109 | 109 | static ADDRESS_MAP_START( soundb_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 115 | 115 | AM_RANGE(0xc000, 0xdfff) AM_WRITE(hyprolyb_adpcm_w) /* speech and output control */ |
| 116 | 116 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w) |
| 117 | 117 | 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. */ | |
| 119 | 119 | ADDRESS_MAP_END |
| 120 | 120 | |
| 121 | 121 | static INPUT_PORTS_START( hyperspt ) |
| r6428 | r6429 | |
| 327 | 327 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 328 | 328 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 329 | 329 | |
| 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 */ | |
| 331 | 331 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 332 | 332 | |
| 333 | 333 | MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* verified on pcb */ |
| r6428 | r6429 | |
|---|---|---|
| 111 | 111 | |
| 112 | 112 | static ADDRESS_MAP_START( hnayayoi_io_map, ADDRESS_SPACE_IO, 8 ) |
| 113 | 113 | 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) | |
| 116 | 116 | AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW3") |
| 117 | 117 | AM_RANGE(0x06, 0x06) AM_DEVWRITE("msm", adpcm_data_w) |
| 118 | 118 | // AM_RANGE(0x08, 0x08) AM_WRITENOP // CRT Controller |
| r6428 | r6429 | |
| 133 | 133 | AM_RANGE(0x0000, 0x77ff) AM_ROM |
| 134 | 134 | AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) |
| 135 | 135 | 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) | |
| 138 | 138 | AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW3") |
| 139 | 139 | AM_RANGE(0xff06, 0xff06) AM_DEVWRITE("msm", adpcm_data_w) |
| 140 | 140 | // AM_RANGE(0xff08, 0xff08) AM_WRITENOP // CRT Controller |
| r6428 | r6429 | |
| 159 | 159 | |
| 160 | 160 | static ADDRESS_MAP_START( untoucha_io_map, ADDRESS_SPACE_IO, 8 ) |
| 161 | 161 | 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) | |
| 164 | 164 | // AM_RANGE(0x12, 0x12) AM_WRITENOP // CRT Controller |
| 165 | 165 | AM_RANGE(0x13, 0x13) AM_DEVWRITE("msm", adpcm_data_w) |
| 166 | 166 | AM_RANGE(0x14, 0x14) AM_READ_PORT("COIN") |
| r6428 | r6429 | |
| 173 | 173 | AM_RANGE(0x28, 0x28) AM_WRITE(dynax_blitter_rev1_start_w) |
| 174 | 174 | AM_RANGE(0x31, 0x31) AM_DEVWRITE("msm", adpcm_vclk_w) |
| 175 | 175 | 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) | |
| 178 | 178 | // AM_RANGE(0x52, 0x52) AM_WRITENOP // CRT Controller |
| 179 | 179 | ADDRESS_MAP_END |
| 180 | 180 | |
| r6428 | r6429 | |
| 570 | 570 | /* sound hardware */ |
| 571 | 571 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 572 | 572 | |
| 573 | MDRV_SOUND_ADD("ym", YM2203, 20000000/8) | |
| 573 | MDRV_SOUND_ADD("ymsnd", YM2203, 20000000/8) | |
| 574 | 574 | MDRV_SOUND_CONFIG(ym2203_config) |
| 575 | 575 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 576 | 576 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 431 | 431 | // AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) |
| 432 | 432 | // AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) |
| 433 | 433 | // 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) | |
| 435 | 435 | // AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_signed_w) |
| 436 | 436 | // AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac2", dac_signed_w) |
| 437 | 437 | |
| r6428 | r6429 | |
| 644 | 644 | /* sound hardware */ |
| 645 | 645 | // MDRV_SPEAKER_STANDARD_MONO("mono") |
| 646 | 646 | |
| 647 | // MDRV_SOUND_ADD("ym", YM3812, SND_CLOCK) | |
| 647 | // MDRV_SOUND_ADD("ymsnd", YM3812, SND_CLOCK) | |
| 648 | 648 | // MDRV_SOUND_CONFIG(ym3812_config) |
| 649 | 649 | // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 650 | 650 |
| r6428 | r6429 | |
|---|---|---|
| 136 | 136 | static ADDRESS_MAP_START( shanghai_portmap, ADDRESS_SPACE_IO, 16 ) |
| 137 | 137 | AM_RANGE(0x00, 0x01) AM_READWRITE(HD63484_status_r, HD63484_address_w) |
| 138 | 138 | 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) | |
| 140 | 140 | AM_RANGE(0x40, 0x41) AM_READ_PORT("P1") |
| 141 | 141 | AM_RANGE(0x44, 0x45) AM_READ_PORT("P2") |
| 142 | 142 | AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 150 | 150 | AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM") |
| 151 | 151 | AM_RANGE(0x30, 0x31) AM_READWRITE(HD63484_status_r, HD63484_address_w) |
| 152 | 152 | 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) | |
| 154 | 154 | AM_RANGE(0x50, 0x51) AM_WRITE(shanghai_coin_w) |
| 155 | 155 | ADDRESS_MAP_END |
| 156 | 156 | |
| r6428 | r6429 | |
| 445 | 445 | /* sound hardware */ |
| 446 | 446 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 447 | 447 | |
| 448 | MDRV_SOUND_ADD("ym", YM2203, 16000000/4) | |
| 448 | MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4) | |
| 449 | 449 | MDRV_SOUND_CONFIG(sh_ym2203_interface) |
| 450 | 450 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 451 | 451 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
| 477 | 477 | /* sound hardware */ |
| 478 | 478 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 479 | 479 | |
| 480 | MDRV_SOUND_ADD("ym", YM2203, 16000000/4) | |
| 480 | MDRV_SOUND_ADD("ymsnd", YM2203, 16000000/4) | |
| 481 | 481 | MDRV_SOUND_CONFIG(sh_ym2203_interface) |
| 482 | 482 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 483 | 483 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
|---|---|---|
| 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 | |
| 43 | 2 | |
| 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 | ||
| 44 | 49 | #include "driver.h" |
| 45 | 50 | #include "cpu/m6502/m6502.h" |
| 46 | 51 | #include "sound/ay8910.h" |
| 47 | 52 | |
| 48 | ||
| 49 | 53 | WRITE8_HANDLER(mole_videoram_w); |
| 50 | 54 | WRITE8_HANDLER(mole_tilebank_w); |
| 51 | 55 | WRITE8_HANDLER(mole_flipscreen_w); |
| r6428 | r6429 | |
| 57 | 61 | |
| 58 | 62 | static READ8_HANDLER( mole_protection_r ) |
| 59 | 63 | { |
| 60 | /* Following are all known examples of Mole Attack | |
| 64 | ||
| 65 | /* Following are all known examples of Mole Attack | |
| 61 | 66 | ** code reading from the protection circuitry: |
| 62 | 67 | ** |
| 63 | 68 | ** 5b0b: |
| r6428 | r6429 | |
| 94 | 99 | case 0xae: return 0x32; /* coinage */ |
| 95 | 100 | } |
| 96 | 101 | |
| 97 | ||
| 102 | /* The above are critical protection reads. | |
| 98 | 103 | ** It isn't clear what effect (if any) the |
| 99 | 104 | ** remaining reads have; for now we simply |
| 100 | 105 | ** return 0x00 |
| 101 | 106 | */ |
| 107 | ||
| 102 | 108 | return 0x00; |
| 103 | 109 | } |
| 104 | 110 | |
| r6428 | r6429 | |
| 111 | 117 | AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM |
| 112 | 118 | AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(mole_videoram_w) AM_BASE(&videoram) |
| 113 | 119 | 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) | |
| 115 | 121 | AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ??? |
| 116 | 122 | AM_RANGE(0x8c80, 0x8c80) AM_WRITENOP // ??? |
| 117 | 123 | AM_RANGE(0x8c81, 0x8c81) AM_WRITENOP // ??? |
| r6428 | r6429 | |
| 143 | 149 | PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 144 | 150 | |
| 145 | 151 | 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) | |
| 154 | 160 | |
| 155 | 161 | 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 | |
| 160 | 166 | 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 ) ) | |
| 163 | 169 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) |
| 164 | 170 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 ) |
| 165 | 171 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| 166 | 172 | |
| 167 | 173 | 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 | |
| 174 | 180 | PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 175 | 181 | INPUT_PORTS_END |
| 176 | 182 | |
| r6428 | r6429 | |
| 218 | 224 | // sound hardware |
| 219 | 225 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 220 | 226 | |
| 221 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 227 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 222 | 228 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 223 | 229 | MACHINE_DRIVER_END |
| 224 | 230 |
| r6428 | r6429 | |
|---|---|---|
| 181 | 181 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 182 | 182 | AM_RANGE(0x8000, 0x8fff) AM_RAM |
| 183 | 183 | 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) | |
| 185 | 185 | AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r) AM_WRITENOP // message for main cpu |
| 186 | 186 | 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 |
| 187 | 187 | AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w) |
| r6428 | r6429 | |
| 385 | 385 | // sound hardware |
| 386 | 386 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 387 | 387 | |
| 388 | MDRV_SOUND_ADD("ym", YM3526, MAIN_XTAL/8) | |
| 388 | MDRV_SOUND_ADD("ymsnd", YM3526, MAIN_XTAL/8) | |
| 389 | 389 | MDRV_SOUND_CONFIG(ym3526_config) |
| 390 | 390 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 391 | 391 |
| r6428 | r6429 | |
|---|---|---|
| 1 | /******************************************************************** | |
| 1 | /****************************************************************************************** | |
| 2 | 2 | |
| 3 | | |
| 3 | | |
| 4 | 4 | |
| 5 | 5 | |
| 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 | |
| 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 | |
| 10 | 10 | |
| 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) | |
| 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) | |
| 17 | 17 | |
| 18 | 18 | |
| 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 | |
| 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 | |
| 30 | 30 | |
| 31 | ToDo: | |
| 32 | - get rid of input port hack | |
| 31 | ToDo: | |
| 32 | - get rid of input port hack | |
| 33 | 33 | |
| 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) | |
| 40 | 40 | |
| 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). | |
| 43 | 43 | |
| 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. | |
| 46 | 46 | |
| 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. | |
| 53 | 53 | |
| 54 | 54 | |
| 55 | ********************************************************************/ | |
| 55 | ******************************************************************************************/ | |
| 56 | 56 | |
| 57 | 57 | #include "driver.h" |
| 58 | 58 | #include "cpu/z80/z80.h" |
| 59 | 59 | #include "cpu/m68000/m68000.h" |
| 60 | 60 | #include "deprecat.h" |
| 61 | 61 | #include "sound/2151intf.h" |
| 62 | #include "bionicc.h" | |
| 62 | 63 | |
| 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 | |
| 65 | 66 | |
| 66 | WRITE16_HANDLER( bionicc_fgvideoram_w ); | |
| 67 | WRITE16_HANDLER( bionicc_bgvideoram_w ); | |
| 68 | WRITE16_HANDLER( bionicc_txvideoram_w ); | |
| 69 | WRITE16_HANDLER( bionicc_paletteram_w ); | |
| 70 | WRITE16_HANDLER( bionicc_scroll_w ); | |
| 71 | WRITE16_HANDLER( bionicc_gfxctrl_w ); | |
| 72 | 67 | |
| 73 | extern UINT16 *bionicc_bgvideoram; | |
| 74 | extern UINT16 *bionicc_fgvideoram; | |
| 75 | extern UINT16 *bionicc_txvideoram; | |
| 68 | /************************************* | |
| 69 | * | |
| 70 | * Memory handlers | |
| 71 | * | |
| 72 | *************************************/ | |
| 76 | 73 | |
| 77 | VIDEO_START( bionicc ); | |
| 78 | VIDEO_UPDATE( bionicc ); | |
| 79 | VIDEO_EOF( bionicc ); | |
| 80 | ||
| 81 | ||
| 82 | ||
| 83 | static UINT16 bionicc_inp[3]; | |
| 84 | ||
| 85 | 74 | static WRITE16_HANDLER( hacked_controls_w ) |
| 86 | 75 | { |
| 87 | logerror("%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]); | |
| 89 | 80 | } |
| 90 | 81 | |
| 91 | 82 | static READ16_HANDLER( hacked_controls_r ) |
| 92 | 83 | { |
| 93 | logerror("%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]; | |
| 95 | 88 | } |
| 96 | 89 | |
| 97 | 90 | static WRITE16_HANDLER( bionicc_mpu_trigger_w ) |
| 98 | 91 | { |
| 92 | bionicc_state *state = (bionicc_state *)space->machine->driver_data; | |
| 93 | ||
| 99 | 94 | data = input_port_read(space->machine, "SYSTEM") >> 12; |
| 100 | | |
| 95 | state-> | |
| 101 | 96 | |
| 102 | 97 | data = input_port_read(space->machine, "P2"); |
| 103 | | |
| 98 | state-> | |
| 104 | 99 | |
| 105 | 100 | data = input_port_read(space->machine, "P1"); |
| 106 | | |
| 101 | state-> | |
| 107 | 102 | } |
| 108 | 103 | |
| 109 | 104 | |
| 110 | static UINT16 soundcommand; | |
| 111 | ||
| 112 | 105 | static WRITE16_HANDLER( hacked_soundcommand_w ) |
| 113 | 106 | { |
| 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); | |
| 116 | 111 | } |
| 117 | 112 | |
| 118 | 113 | static READ16_HANDLER( hacked_soundcommand_r ) |
| 119 | 114 | { |
| 120 | return soundcommand; | |
| 115 | bionicc_state *state = (bionicc_state *)space->machine->driver_data; | |
| 116 | ||
| 117 | return state->soundcommand; | |
| 121 | 118 | } |
| 122 | 119 | |
| 123 | 120 | |
| 124 | 121 | /******************************************************************** |
| 125 | 122 | |
| 126 | I | |
| 123 | Interrupt | |
| 127 | 124 | |
| 128 | 125 | The game runs on 2 interrupts. |
| 129 | 126 | |
| r6428 | r6429 | |
| 143 | 140 | cpu_set_input_line(device, 4, HOLD_LINE); |
| 144 | 141 | } |
| 145 | 142 | |
| 143 | /************************************* | |
| 144 | * | |
| 145 | * Address maps | |
| 146 | * | |
| 147 | *************************************/ | |
| 148 | ||
| 146 | 149 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 147 | 150 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 148 | 151 | AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */ |
| r6428 | r6429 | |
| 153 | 156 | AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("DSW") |
| 154 | 157 | AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(bionicc_scroll_w) |
| 155 | 158 | 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) | |
| 160 | 163 | AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */ |
| 161 | 164 | AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */ |
| 162 | 165 | AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */ |
| r6428 | r6429 | |
| 165 | 168 | |
| 166 | 169 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 167 | 170 | 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) | |
| 169 | 172 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 170 | 173 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 171 | 174 | ADDRESS_MAP_END |
| 172 | 175 | |
| 173 | 176 | |
| 177 | /************************************* | |
| 178 | * | |
| 179 | * Input ports | |
| 180 | * | |
| 181 | *************************************/ | |
| 174 | 182 | |
| 175 | 183 | static INPUT_PORTS_START( bionicc ) |
| 176 | 184 | PORT_START("SYSTEM") |
| r6428 | r6429 | |
| 247 | 255 | INPUT_PORTS_END |
| 248 | 256 | |
| 249 | 257 | |
| 258 | /************************************* | |
| 259 | * | |
| 260 | * Graphics definitions | |
| 261 | * | |
| 262 | *************************************/ | |
| 250 | 263 | |
| 251 | /******************************************************************** | |
| 252 | ||
| 253 | GRAPHICS | |
| 254 | ||
| 255 | ********************************************************************/ | |
| 256 | ||
| 257 | ||
| 258 | 264 | static const gfx_layout spritelayout_bionicc= |
| 259 | 265 | { |
| 260 | 266 | 16,16, /* 16*16 sprites */ |
| r6428 | r6429 | |
| 321 | 327 | GFXDECODE_END |
| 322 | 328 | |
| 323 | 329 | |
| 330 | /************************************* | |
| 331 | * | |
| 332 | * Machine driver | |
| 333 | * | |
| 334 | *************************************/ | |
| 335 | ||
| 336 | static 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 | ||
| 345 | static 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 | ||
| 324 | 359 | static MACHINE_DRIVER_START( bionicc ) |
| 325 | 360 | |
| 361 | /* driver data */ | |
| 362 | MDRV_DRIVER_DATA(bionicc_state) | |
| 363 | ||
| 326 | 364 | /* basic machine hardware */ |
| 327 | 365 | MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2) /* 12 MHz - verified in schematics */ |
| 328 | 366 | MDRV_CPU_PROGRAM_MAP(main_map) |
| r6428 | r6429 | |
| 336 | 374 | */ |
| 337 | 375 | MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) |
| 338 | 376 | |
| 377 | MDRV_MACHINE_START(bionicc) | |
| 378 | MDRV_MACHINE_RESET(bionicc) | |
| 379 | ||
| 339 | 380 | /* video hardware */ |
| 340 | 381 | MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) |
| 341 | 382 | |
| r6428 | r6429 | |
| 354 | 395 | |
| 355 | 396 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 356 | 397 | |
| 357 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 398 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 358 | 399 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 359 | 400 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| 360 | 401 | MACHINE_DRIVER_END |
| 361 | 402 | |
| 362 | 403 | |
| 363 | 404 | |
| 405 | /************************************* | |
| 406 | * | |
| 407 | * ROM definition(s) | |
| 408 | * | |
| 409 | *************************************/ | |
| 410 | ||
| 364 | 411 | ROM_START( bionicc ) /* "Not for use in Japan" */ |
| 365 | 412 | ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */ |
| 366 | 413 | ROM_LOAD16_BYTE( "tse_02.1a", 0x00000, 0x10000, CRC(e4aeefaa) SHA1(77b6a2d4337bf350239abb50013d030d7c5c8640) ) /* 68000 code */ |
| r6428 | r6429 | |
| 538 | 585 | ROM_END |
| 539 | 586 | |
| 540 | 587 | |
| 588 | /************************************* | |
| 589 | * | |
| 590 | * Game driver(s) | |
| 591 | * | |
| 592 | *************************************/ | |
| 541 | 593 | |
| 542 | GAME( 1987, bionicc, 0, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (Euro)", 0 ) | |
| 543 | GAME( 1987, bionicc1, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", 0 ) | |
| 544 | GAME( 1987, bionicc2, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", 0 ) | |
| 545 | GAME( 1987, topsecrt, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Top Secret (Japan)", 0 ) | |
| 594 | GAME( 1987, bionicc, 0, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (Euro)", GAME_SUPPORTS_SAVE ) | |
| 595 | GAME( 1987, bionicc1, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", GAME_SUPPORTS_SAVE ) | |
| 596 | GAME( 1987, bionicc2, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", GAME_SUPPORTS_SAVE ) | |
| 597 | GAME( 1987, topsecrt, bionicc, bionicc, bionicc, 0, ROT0, "Capcom", "Top Secret (Japan)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 53 | 53 | |
| 54 | 54 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 55 | 55 | 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) | |
| 59 | 59 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 60 | 60 | ADDRESS_MAP_END |
| 61 | 61 | |
| r6428 | r6429 | |
| 225 | 225 | /* sound hardware */ |
| 226 | 226 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 227 | 227 | |
| 228 | MDRV_SOUND_ADD("ay", AY8910, 1250000) | |
| 228 | MDRV_SOUND_ADD("aysnd", AY8910, 1250000) | |
| 229 | 229 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 230 | 230 | |
| 231 | MDRV_SOUND_ADD("ym", YM2203, 1250000) | |
| 231 | MDRV_SOUND_ADD("ymsnd", YM2203, 1250000) | |
| 232 | 232 | MDRV_SOUND_CONFIG(ym2203_config) |
| 233 | 233 | MDRV_SOUND_ROUTE(0, "mono", 0.40) |
| 234 | 234 | MDRV_SOUND_ROUTE(1, "mono", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 92 | 92 | AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r) |
| 93 | 93 | AM_RANGE(0x01, 0x01) AM_WRITE(soundlatch_clear_w) |
| 94 | 94 | 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) | |
| 96 | 96 | ADDRESS_MAP_END |
| 97 | 97 | |
| 98 | 98 | static INPUT_PORTS_START( dynadice ) |
| r6428 | r6429 | |
| 222 | 222 | |
| 223 | 223 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 224 | 224 | |
| 225 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 225 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 226 | 226 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 227 | 227 | MACHINE_DRIVER_END |
| 228 | 228 |
| r6428 | r6429 | |
|---|---|---|
| 607 | 607 | AM_RANGE(0x35, 0x35) AM_WRITE (ampoker2_port35_w) /* see write handlers */ |
| 608 | 608 | AM_RANGE(0x36, 0x36) AM_WRITE (ampoker2_port36_w) /* see write handlers */ |
| 609 | 609 | 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) | |
| 612 | 612 | ADDRESS_MAP_END |
| 613 | 613 | |
| 614 | 614 | /* |
| r6428 | r6429 | |
| 1084 | 1084 | |
| 1085 | 1085 | /* sound hardware */ |
| 1086 | 1086 | 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 */ | |
| 1088 | 1088 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1089 | 1089 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1090 | 1090 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 360 | 360 | |
| 361 | 361 | static ADDRESS_MAP_START( cpu0_io, ADDRESS_SPACE_IO, 8 ) |
| 362 | 362 | 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) | |
| 365 | 365 | AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag |
| 366 | 366 | AM_RANGE(0x10,0x10) AM_WRITE(output_w) |
| 367 | 367 | AM_RANGE(0x11,0x11) AM_WRITE(mux_w) |
| r6428 | r6429 | |
| 431 | 431 | |
| 432 | 432 | static ADDRESS_MAP_START( cntrygrl_cpu0_io, ADDRESS_SPACE_IO, 8 ) |
| 433 | 433 | 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) | |
| 436 | 436 | AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag |
| 437 | 437 | AM_RANGE(0x10,0x10) AM_WRITE(output_w) |
| 438 | 438 | AM_RANGE(0x11,0x11) AM_WRITE(mux_w) |
| r6428 | r6429 | |
| 788 | 788 | |
| 789 | 789 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 790 | 790 | |
| 791 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK / 16) | |
| 791 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK / 16) | |
| 792 | 792 | MDRV_SOUND_CONFIG(ay8910_config) |
| 793 | 793 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 794 | 794 |
| r6428 | r6429 | |
|---|---|---|
| 1408 | 1408 | static ADDRESS_MAP_START( am_sound_winrun, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1409 | 1409 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(6) /* banked */ |
| 1410 | 1410 | 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) | |
| 1412 | 1412 | AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w) |
| 1413 | 1413 | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM) |
| 1414 | 1414 | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */ |
| r6428 | r6429 | |
| 1582 | 1582 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1583 | 1583 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1584 | 1584 | |
| 1585 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1585 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1586 | 1586 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1587 | 1587 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1588 | 1588 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1597 | 1597 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1598 | 1598 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1599 | 1599 | |
| 1600 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1600 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1601 | 1601 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1602 | 1602 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1603 | 1603 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1652 | 1652 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1653 | 1653 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1654 | 1654 | |
| 1655 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1655 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1656 | 1656 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1657 | 1657 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1658 | 1658 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1710 | 1710 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1711 | 1711 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 1712 | 1712 | |
| 1713 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1713 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1714 | 1714 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 1715 | 1715 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1716 | 1716 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 261 | 261 | static ADDRESS_MAP_START( gameplan_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 262 | 262 | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */ |
| 263 | 263 | 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) | |
| 267 | 267 | AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_ROM |
| 268 | 268 | ADDRESS_MAP_END |
| 269 | 269 | |
| r6428 | r6429 | |
| 272 | 272 | static ADDRESS_MAP_START( leprechn_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 273 | 273 | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */ |
| 274 | 274 | 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) | |
| 278 | 278 | AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM |
| 279 | 279 | ADDRESS_MAP_END |
| 280 | 280 | |
| r6428 | r6429 | |
| 1028 | 1028 | /* audio hardware */ |
| 1029 | 1029 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1030 | 1030 | |
| 1031 | MDRV_SOUND_ADD("ay", AY8910, GAMEPLAN_AY8910_CLOCK) | |
| 1031 | MDRV_SOUND_ADD("aysnd", AY8910, GAMEPLAN_AY8910_CLOCK) | |
| 1032 | 1032 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1033 | 1033 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 1034 | 1034 |
| r6428 | r6429 | |
|---|---|---|
| 276 | 276 | |
| 277 | 277 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 278 | 278 | 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) | |
| 280 | 280 | AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* Not hooked up according to the schematics */ |
| 281 | 281 | AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("dac", dac_w) |
| 282 | 282 | AM_RANGE(0x7000, 0x7000) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 375 | 375 | /* sound hardware */ |
| 376 | 376 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 377 | 377 | |
| 378 | MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK/2) | |
| 378 | MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/2) | |
| 379 | 379 | MDRV_SOUND_CONFIG(ym2203_config) |
| 380 | 380 | MDRV_SOUND_ROUTE(0, "mono", 0.07) |
| 381 | 381 | MDRV_SOUND_ROUTE(1, "mono", 0.07) |
| r6428 | r6429 | |
|---|---|---|
| 146 | 146 | AM_RANGE(0x02, 0x02) AM_WRITE(eeprom_clock_w) |
| 147 | 147 | AM_RANGE(0x03, 0x03) AM_WRITE(eeprom_serial_w) |
| 148 | 148 | 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) | |
| 150 | 150 | AM_RANGE(0x08, 0x09) AM_WRITE(cbasebal_scrollx_w) |
| 151 | 151 | AM_RANGE(0x0a, 0x0b) AM_WRITE(cbasebal_scrolly_w) |
| 152 | 152 | AM_RANGE(0x10, 0x10) AM_READ_PORT("P1") |
| r6428 | r6429 | |
| 270 | 270 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified |
| 271 | 271 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 272 | 272 | |
| 273 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 273 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 274 | 274 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 275 | 275 | MACHINE_DRIVER_END |
| 276 | 276 |
| r6428 | r6429 | |
|---|---|---|
| 34 | 34 | AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w) |
| 35 | 35 | AM_RANGE(0xe000, 0xe7ff) AM_RAM |
| 36 | 36 | 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 */ | |
| 38 | 38 | AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w) |
| 39 | 39 | AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) |
| 40 | 40 | AM_RANGE(0xf000, 0xffff) AM_RAM /* work ram */ |
| r6428 | r6429 | |
| 456 | 456 | |
| 457 | 457 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 458 | 458 | |
| 459 | MDRV_SOUND_ADD("st", ST0016, 0) | |
| 459 | MDRV_SOUND_ADD("stsnd", ST0016, 0) | |
| 460 | 460 | MDRV_SOUND_CONFIG(st0016_config) |
| 461 | 461 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 462 | 462 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 106 | 106 | AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w) /* speech and output controll */ |
| 107 | 107 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w) |
| 108 | 108 | 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. */ | |
| 110 | 110 | ADDRESS_MAP_END |
| 111 | 111 | |
| 112 | 112 | |
| r6428 | r6429 | |
| 214 | 214 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 215 | 215 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 216 | 216 | |
| 217 | MDRV_SOUND_ADD("sn", SN76489, XTAL_14_31818MHz / 8) | |
| 217 | MDRV_SOUND_ADD("snsnd", SN76489, XTAL_14_31818MHz / 8) | |
| 218 | 218 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 219 | 219 | |
| 220 | 220 | MDRV_SOUND_ADD("vlm", VLM5030, XTAL_3_579545MHz) /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */ |
| r6428 | r6429 | |
|---|---|---|
| 160 | 160 | |
| 161 | 161 | static ADDRESS_MAP_START( skyarmy_io_map, ADDRESS_SPACE_IO, 8 ) |
| 162 | 162 | 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) | |
| 165 | 165 | ADDRESS_MAP_END |
| 166 | 166 | |
| 167 | 167 | static INPUT_PORTS_START( skyarmy ) |
| r6428 | r6429 | |
| 258 | 258 | |
| 259 | 259 | /* sound hardware */ |
| 260 | 260 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 261 | MDRV_SOUND_ADD("ay", AY8910, 2500000) | |
| 261 | MDRV_SOUND_ADD("aysnd", AY8910, 2500000) | |
| 262 | 262 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 263 | 263 | MACHINE_DRIVER_END |
| 264 | 264 |
| r6428 | r6429 | |
|---|---|---|
| 285 | 285 | AM_RANGE(0x05, 0x05) AM_READ(rom_bank_select_r) AM_WRITE(rom_bank_select_w) |
| 286 | 286 | AM_RANGE(0x06, 0x06) AM_READWRITE( suprgolf_vregs_r,suprgolf_vregs_w ) |
| 287 | 287 | // 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) | |
| 289 | 289 | AM_RANGE(0x0c, 0x0c) AM_WRITE(adpcm_data_w) |
| 290 | 290 | ADDRESS_MAP_END |
| 291 | 291 | |
| r6428 | r6429 | |
| 473 | 473 | /* sound hardware */ |
| 474 | 474 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 475 | 475 | |
| 476 | MDRV_SOUND_ADD("ym", YM2203, 3000000) /* guess */ | |
| 476 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* guess */ | |
| 477 | 477 | MDRV_SOUND_CONFIG(ym2203_config) |
| 478 | 478 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 479 | 479 |
| r6428 | r6429 | |
|---|---|---|
| 270 | 270 | }; |
| 271 | 271 | |
| 272 | 272 | static GFXDECODE_START( himesiki ) |
| 273 | GFXDECODE_ENTRY( "bg", | |
| 273 | GFXDECODE_ENTRY( "bgtiles", | |
| 274 | 274 | GFXDECODE_ENTRY( "sprites_1", 0, layout2, 0x200, 16 ) |
| 275 | 275 | GFXDECODE_ENTRY( "sprites_2", 0, layout3, 0x200, 16 ) |
| 276 | 276 | GFXDECODE_END |
| r6428 | r6429 | |
| 321 | 321 | ROM_REGION( 0x010000, "sub", 0 ) /* z80 */ |
| 322 | 322 | ROM_LOAD( "5.6n", 0x00000, 0x08000, CRC(b1214ac7) SHA1(ee5459c28d9c3c2eb3467261716b1259ec486534) ) |
| 323 | 323 | |
| 324 | ROM_REGION( 0x020000, "bg", 0 ) /* bg */ | |
| 324 | ROM_REGION( 0x020000, "bgtiles", 0 ) /* bg */ | |
| 325 | 325 | ROM_LOAD( "3.5f", 0x000000, 0x010000, CRC(73843e60) SHA1(0d8a397d8798e15f3fa7bf7a83e4c2ee44f6fa86) ) |
| 326 | 326 | ROM_LOAD( "4.5d", 0x010000, 0x010000, CRC(443a3164) SHA1(08aa002214251a870581a01d775f497dd390957c) ) |
| 327 | 327 |
| r6428 | r6429 | |
|---|---|---|
| 1 | /* | |
| 1 | /*************************************************************************** | |
| 2 | 2 | |
| 3 | ||
| 3 | ||
| 4 | 4 | |
| 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 | |
| 13 | 6 | |
| 14 | | |
| 7 | | |
| 15 | 8 | |
| 16 | TO 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. | |
| 17 | 17 | |
| 18 | - | |
| 18 | - Setti | |
| 19 | 19 | |
| 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 : | |
| 22 | 21 | |
| 23 | - colors match Tim's screen shots, but there's no guarantee RGB are in the | |
| 24 | correct order. | |
| 25 | */ | |
| 22 | - missing starfield | |
| 26 | 23 | |
| 27 | /* | |
| 24 | - game speed, its seems to be controlled by the IRQ's, how fast should it | |
| 25 | be? firing seems frustratingly inconsistant | |
| 28 | 26 | |
| 29 | Battle Cross (c)1982 Omori | |
| 27 | - colors match Tim's screen shots, but there's no guarantee RGB are in the | |
| 28 | correct order. | |
| 30 | 29 | |
| 31 | CPU: Z80A | |
| 32 | Sound: AY-3-8910 | |
| 33 | Other: 93419 (in socket marked 93219) | |
| 30 | **************************************************************************** | |
| 34 | 31 | |
| 35 | RAM: 4116(x12), 2114(x2), 2114(x6) | |
| 36 | PROMS: none | |
| 32 | Battle Cross (c)1982 Omori | |
| 37 | 33 | |
| 38 | XTAL: 10.0 MHz | |
| 34 | CPU: Z80A | |
| 35 | Sound: AY-3-8910 | |
| 36 | Other: 93419 (in socket marked 93219) | |
| 39 | 37 | |
| 40 | */ | |
| 38 | RAM: 4116(x12), 2114(x2), 2114(x6) | |
| 39 | PROMS: none | |
| 41 | 40 | |
| 41 | XTAL: 10.0 MHz | |
| 42 | 42 | |
| 43 | ***************************************************************************/ | |
| 44 | ||
| 45 | ||
| 43 | 46 | #include "driver.h" |
| 44 | 47 | #include "cpu/z80/z80.h" |
| 45 | 48 | #include "deprecat.h" |
| 46 | 49 | #include "sound/ay8910.h" |
| 50 | #include "battlex.h" | |
| 47 | 51 | |
| 48 | 52 | |
| 49 | extern WRITE8_HANDLER( battlex_palette_w ); | |
| 50 | extern WRITE8_HANDLER( battlex_videoram_w ); | |
| 51 | extern WRITE8_HANDLER( battlex_scroll_x_lsb_w ); | |
| 52 | extern WRITE8_HANDLER( battlex_scroll_x_msb_w ); | |
| 53 | extern WRITE8_HANDLER( battlex_flipscreen_w ); | |
| 53 | /************************************* | |
| 54 | * | |
| 55 | * Memory maps | |
| 56 | * | |
| 57 | *************************************/ | |
| 54 | 58 | |
| 55 | extern PALETTE_INIT( battlex ); | |
| 56 | extern VIDEO_START( battlex ); | |
| 57 | extern VIDEO_UPDATE( battlex ); | |
| 58 | ||
| 59 | ||
| 60 | /*** MEMORY & PORT READ / WRITE **********************************************/ | |
| 61 | ||
| 62 | 59 | static ADDRESS_MAP_START( battlex_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 63 | 60 | 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) | |
| 66 | 63 | AM_RANGE(0xa000, 0xa3ff) AM_RAM |
| 67 | 64 | AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(battlex_palette_w) |
| 68 | 65 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 77 | 74 | AM_RANGE(0x10, 0x10) AM_WRITE(battlex_flipscreen_w) |
| 78 | 75 | |
| 79 | 76 | /* 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) | |
| 81 | 78 | |
| 82 | 79 | /* 0x30 looks like scroll, but can't be ? changes (increases or decreases) |
| 83 | 80 | depending on the direction your ship is facing on lev 2. at least */ |
| r6428 | r6429 | |
| 87 | 84 | AM_RANGE(0x33, 0x33) AM_WRITE(battlex_scroll_x_msb_w) |
| 88 | 85 | ADDRESS_MAP_END |
| 89 | 86 | |
| 90 | /*** INPUT PORTS *************************************************************/ | |
| 87 | /************************************* | |
| 88 | * | |
| 89 | * Input ports | |
| 90 | * | |
| 91 | *************************************/ | |
| 91 | 92 | |
| 92 | 93 | static INPUT_PORTS_START( battlex ) |
| 93 | 94 | PORT_START("DSW1") /* IN0 */ |
| r6428 | r6429 | |
| 158 | 159 | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 159 | 160 | INPUT_PORTS_END |
| 160 | 161 | |
| 161 | /*** GFX DECODE **************************************************************/ | |
| 162 | 162 | |
| 163 | 163 | |
| 164 | /************************************* | |
| 165 | * | |
| 166 | * Graphics definitions | |
| 167 | * | |
| 168 | *************************************/ | |
| 169 | ||
| 164 | 170 | static const gfx_layout battlex_charlayout = |
| 165 | 171 | { |
| 166 | 172 | 8,8, |
| r6428 | r6429 | |
| 192 | 198 | GFXDECODE_ENTRY( "gfx2", 0, battlex_spritelayout, 16*8, 8 ) |
| 193 | 199 | GFXDECODE_END |
| 194 | 200 | |
| 195 | /*** MACHINE DRIVERS *********************************************************/ | |
| 196 | 201 | |
| 202 | /************************************* | |
| 203 | * | |
| 204 | * Machine driver | |
| 205 | * | |
| 206 | *************************************/ | |
| 207 | ||
| 208 | static 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 | ||
| 197 | 216 | static MACHINE_DRIVER_START( battlex ) |
| 198 | 217 | |
| 218 | /* driver data */ | |
| 219 | MDRV_DRIVER_DATA(battlex_state) | |
| 220 | ||
| 199 | 221 | /* basic machine hardware */ |
| 200 | 222 | MDRV_CPU_ADD("maincpu", Z80,10000000/2 ) /* 10 MHz, divided ? (Z80A CPU) */ |
| 201 | 223 | MDRV_CPU_PROGRAM_MAP(battlex_map) |
| 202 | 224 | MDRV_CPU_IO_MAP(io_map) |
| 203 | 225 | MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,8) /* controls game speed? */ |
| 204 | 226 | |
| 227 | MDRV_MACHINE_RESET(battlex) | |
| 228 | ||
| 205 | 229 | /* video hardware */ |
| 206 | 230 | MDRV_SCREEN_ADD("screen", RASTER) |
| 207 | 231 | MDRV_SCREEN_REFRESH_RATE(56) /* The video syncs at 15.8k H and 56 V (www.klov.com) */ |
| r6428 | r6429 | |
| 218 | 242 | |
| 219 | 243 | /* sound hardware */ |
| 220 | 244 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 221 | MDRV_SOUND_ADD("ay", AY8910, 10000000/8) | |
| 245 | MDRV_SOUND_ADD("aysnd", AY8910, 10000000/8) | |
| 222 | 246 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 223 | 247 | MACHINE_DRIVER_END |
| 224 | 248 | |
| 225 | 249 | |
| 226 | /*** ROM LOADING *************************************************************/ | |
| 250 | /************************************* | |
| 251 | * | |
| 252 | * ROM definition | |
| 253 | * | |
| 254 | *************************************/ | |
| 227 | 255 | |
| 228 | 256 | ROM_START( battlex ) |
| 229 | 257 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| r6428 | r6429 | |
| 250 | 278 | ROM_LOAD( "2732.e", 0x0000, 0x1000, CRC(126842b7) SHA1(2da4f64e077232c1dd0853d07d801f9781517850) ) |
| 251 | 279 | ROM_END |
| 252 | 280 | |
| 281 | ||
| 282 | /************************************* | |
| 283 | * | |
| 284 | * Driver initialization | |
| 285 | * | |
| 286 | *************************************/ | |
| 287 | ||
| 253 | 288 | static DRIVER_INIT( battlex ) |
| 254 | 289 | { |
| 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"); | |
| 258 | 293 | |
| 259 | 294 | int outcount; |
| 260 | 295 | |
| r6428 | r6429 | |
| 267 | 302 | int bitmask = 0x01; |
| 268 | 303 | int bitcount; |
| 269 | 304 | |
| 270 | for (bitcount = 0;bitcount < 8 ; bitcount ++) | |
| 305 | for (bitcount = 0; bitcount < 8 ; bitcount ++) | |
| 271 | 306 | { |
| 272 | 307 | int bit, col; |
| 273 | bit = (mskd[outcount*8+linecount] & bitmask) >> bitcount; | |
| 308 | bit = (mskd[outcount * 8 + linecount] & bitmask) >> bitcount; | |
| 274 | 309 | |
| 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); | |
| 277 | 314 | |
| 278 | dest[outcount*32 + linecount*4 + bitcount /2] |= (col >> (4*(bitcount & 1))); | |
| 315 | dest[outcount * 32 + linecount * 4 + bitcount /2] |= (col >> (4 * (bitcount & 1))); | |
| 279 | 316 | bitmask = bitmask << 1; |
| 280 | 317 | } |
| 281 | 318 | } |
| 282 | 319 | } |
| 283 | 320 | } |
| 284 | 321 | |
| 285 | /*** GAME DRIVERS ************************************************************/ | |
| 286 | 322 | |
| 287 | GAME( 1982, battlex, 0, battlex, battlex, battlex, ROT180, "Omori Electric", "Battle Cross", GAME_IMPERFECT_GRAPHICS ) | |
| 323 | /************************************* | |
| 324 | * | |
| 325 | * Game driver | |
| 326 | * | |
| 327 | *************************************/ | |
| 288 | 328 | |
| 329 | GAME( 1982, battlex, 0, battlex, battlex, battlex, ROT180, "Omori Electric", "Battle Cross", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 150 | 150 | #include "machine/microtch.h" |
| 151 | 151 | #include "machine/68681.h" |
| 152 | 152 | |
| 153 | static UINT8 register_active; | |
| 154 | static UINT8 mux_data; | |
| 155 | ||
| 156 | static struct | |
| 153 | typedef struct _adp_state adp_state; | |
| 154 | struct _adp_state | |
| 157 | 155 | { |
| 158 | const device_config *duart68681; | |
| 159 | } skattv_devices; | |
| 156 | /* misc */ | |
| 157 | UINT8 mux_data; | |
| 158 | UINT8 register_active; | |
| 160 | 159 | |
| 160 | /* devices */ | |
| 161 | const device_config *duart; | |
| 162 | }; | |
| 163 | ||
| 164 | ||
| 161 | 165 | /*************************************************************************** |
| 162 | 166 | |
| 163 | 167 | 68681 DUART <-> Microtouch touch screen controller communication |
| 164 | 168 | |
| 165 | 169 | ***************************************************************************/ |
| 166 | 170 | |
| 167 | static void duart_irq_handler(const device_config *device, UINT8 vector) | |
| 171 | static void duart_irq_handler( const device_config *device, UINT8 vector ) | |
| 168 | 172 | { |
| 169 | 173 | cputag_set_input_line_and_vector(device->machine, "maincpu", 4, HOLD_LINE, vector); |
| 170 | 174 | }; |
| 171 | 175 | |
| 172 | static void duart_tx(const device_config *device, int channel, UINT8 data) | |
| 176 | static void duart_tx( const device_config *device, int channel, UINT8 data ) | |
| 173 | 177 | { |
| 174 | if ( | |
| 178 | if ( | |
| 175 | 179 | { |
| 176 | 180 | microtouch_rx(1, &data); |
| 177 | 181 | } |
| 178 | 182 | }; |
| 179 | 183 | |
| 180 | static void microtouch_tx(running_machine *machine, UINT8 data) | |
| 184 | static void microtouch_tx( running_machine *machine, UINT8 data ) | |
| 181 | 185 | { |
| 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); | |
| 183 | 188 | } |
| 184 | 189 | |
| 185 | static UINT8 duart_input(const device_config *device) | |
| 190 | static UINT8 duart_input( const device_config *device ) | |
| 186 | 191 | { |
| 187 | 192 | return input_port_read(device->machine, "DSW1"); |
| 188 | 193 | } |
| 189 | 194 | |
| 190 | 195 | static MACHINE_START( skattv ) |
| 191 | 196 | { |
| 197 | adp_state *state = (adp_state *)machine->driver_data; | |
| 192 | 198 | 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); | |
| 193 | 204 | } |
| 194 | 205 | |
| 195 | 206 | static MACHINE_RESET( skattv ) |
| 196 | 207 | { |
| 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; | |
| 199 | 212 | } |
| 200 | 213 | |
| 201 | 214 | static const duart68681_config skattv_duart68681_config = |
| r6428 | r6429 | |
| 210 | 223 | { |
| 211 | 224 | int i; |
| 212 | 225 | |
| 213 | ||
| 214 | for (i = 0;i < machine->config->total_colors;i++) | |
| 226 | for (i = 0; i < machine->config->total_colors; i++) | |
| 215 | 227 | { |
| 216 | int bit0,bit1,bit2,r,g,b; | |
| 228 | int bit0, bit1, bit2, r, g, b; | |
| 217 | 229 | |
| 218 | 230 | |
| 219 | 231 | // red component |
| r6428 | r6429 | |
| 232 | 244 | bit2 = (i >> 2) & 0x01; |
| 233 | 245 | b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; |
| 234 | 246 | |
| 235 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); | |
| 247 | palette_set_color(machine, i, MAKE_RGB(r,g,b)); | |
| 236 | 248 | } |
| 237 | 249 | } |
| 238 | 250 | |
| r6428 | r6429 | |
| 250 | 262 | |
| 251 | 263 | static VIDEO_UPDATE(adp) |
| 252 | 264 | { |
| 253 | int x,y,b; | |
| 265 | int x, y, b; | |
| 254 | 266 | |
| 255 | 267 | b = ((HD63484_reg[0xcc/2] & 0x000f) << 16) + HD63484_reg[0xce/2]; |
| 256 | 268 | #if 0 |
| r6428 | r6429 | |
| 321 | 333 | return 0; |
| 322 | 334 | } |
| 323 | 335 | |
| 324 | static READ16_HANDLER(test_r) | |
| 336 | static READ16_HANDLER( test_r ) | |
| 325 | 337 | { |
| 338 | adp_state *state = (adp_state *)space->machine->driver_data; | |
| 326 | 339 | int value = 0xffff; |
| 327 | 340 | |
| 328 | switch(mux_data) | |
| 341 | switch (state->mux_data) | |
| 329 | 342 | { |
| 330 | 343 | 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; | |
| 332 | 345 | case 0x02: value = input_port_read(space->machine, "x2"); break; |
| 333 | 346 | case 0x03: value = input_port_read(space->machine, "1P_UP"); break; |
| 334 | 347 | case 0x04: value = input_port_read(space->machine, "1P_B1"); break; |
| r6428 | r6429 | |
| 344 | 357 | case 0x0e: value = input_port_read(space->machine, "x14"); break; |
| 345 | 358 | case 0x0f: value = input_port_read(space->machine, "x15"); break; |
| 346 | 359 | } |
| 347 | mux_data++; | |
| 348 | mux_data&=0xf; | |
| 349 | 360 | |
| 361 | state->mux_data++; | |
| 362 | state->mux_data &= 0xf; | |
| 363 | ||
| 350 | 364 | return value; |
| 351 | 365 | } |
| 352 | 366 | |
| 353 | 367 | /*???*/ |
| 354 | 368 | static WRITE16_HANDLER(wh2_w) |
| 355 | 369 | { |
| 356 | register_active = data; | |
| 370 | adp_state *state = (adp_state *)space->machine->driver_data; | |
| 371 | state->register_active = data; | |
| 357 | 372 | } |
| 358 | 373 | |
| 359 | 374 | static READ16_HANDLER(t2_r) |
| 360 | 375 | { |
| 361 | ||
| 376 | static UINT16 vblank = 0, hblank = 0; | |
| 362 | 377 | |
| 363 | vblank ^=0x40; | |
| 364 | hblank ^=0x20; | |
| 378 | vblank ^=0x40; | |
| 379 | hblank ^=0x20; | |
| 365 | 380 | |
| 366 | ||
| 381 | return mame_rand(space->machine) & 0x00f0; | |
| 367 | 382 | |
| 368 | 383 | // FIXME: this code is never executed |
| 369 | 384 | // popmessage("%08x",cpu_get_pc(space->cpu)); |
| 370 | 385 | // return 0x0000; |
| 371 | ||
| 386 | return 0xff9f | vblank | hblank; | |
| 372 | 387 | } |
| 373 | 388 | |
| 374 | 389 | static ADDRESS_MAP_START( skattv_mem, ADDRESS_SPACE_PROGRAM, 16 ) |
| r6428 | r6429 | |
| 377 | 392 | AM_RANGE(0x800082, 0x800083) AM_READWRITE(HD63484_data_r, HD63484_data_w) |
| 378 | 393 | AM_RANGE(0x800100, 0x800101) AM_READWRITE(test_r,wh2_w) //related to input |
| 379 | 394 | 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 | |
| 382 | 397 | AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8( "duart68681", duart68681_r, duart68681_w, 0xff ) |
| 383 | 398 | // AM_RANGE(0xffd246, 0xffd247) AM_READ(handler3_r) |
| 384 | 399 | // AM_RANGE(0xffd248, 0xffd249) AM_READ(handler3_r) |
| r6428 | r6429 | |
| 410 | 425 | AM_RANGE(0x800082, 0x800083) AM_READWRITE(HD63484_data_r, HD63484_data_w) |
| 411 | 426 | // AM_RANGE(0x800100, 0x8001ff) AM_READ(test_r) //18b too |
| 412 | 427 | 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 | |
| 415 | 430 | AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8( "duart68681", duart68681_r, duart68681_w, 0xff ) |
| 416 | 431 | AM_RANGE(0xfc0000, 0xffffff) AM_RAM |
| 417 | 432 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 440 | 455 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 441 | 456 | PORT_BIT( 0xfffb, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 442 | 457 | |
| 443 | PORT_START("x1") | |
| 458 | PORT_START("x1snd") | |
| 444 | 459 | PORT_DIPNAME( 0x0004,0x0004, "SW1" ) //another up button |
| 445 | 460 | PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) |
| 446 | 461 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| r6428 | r6429 | |
| 514 | 529 | } |
| 515 | 530 | */ |
| 516 | 531 | static MACHINE_DRIVER_START( quickjac ) |
| 532 | ||
| 533 | /* driver data */ | |
| 534 | MDRV_DRIVER_DATA(adp_state) | |
| 535 | ||
| 517 | 536 | MDRV_CPU_ADD("maincpu", M68000, 8000000) |
| 518 | 537 | MDRV_CPU_PROGRAM_MAP(quickjac_mem) |
| 519 | 538 | // MDRV_CPU_VBLANK_INT("screen", adp_int) |
| r6428 | r6429 | |
| 536 | 555 | MDRV_VIDEO_UPDATE(adp) |
| 537 | 556 | |
| 538 | 557 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 539 | MDRV_SOUND_ADD("ay", AY8910, 3686400/2) | |
| 558 | MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2) | |
| 540 | 559 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 541 | 560 | |
| 542 | 561 | MACHINE_DRIVER_END |
| 543 | 562 | |
| 544 | 563 | static MACHINE_DRIVER_START( skattv ) |
| 564 | ||
| 565 | /* driver data */ | |
| 566 | MDRV_DRIVER_DATA(adp_state) | |
| 567 | ||
| 545 | 568 | MDRV_CPU_ADD("maincpu", M68000, 8000000) |
| 546 | 569 | MDRV_CPU_PROGRAM_MAP(skattv_mem) |
| 547 | 570 | // MDRV_CPU_VBLANK_INT("screen", adp_int) |
| r6428 | r6429 | |
| 564 | 587 | MDRV_VIDEO_UPDATE(adp) |
| 565 | 588 | |
| 566 | 589 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 567 | MDRV_SOUND_ADD("ay", AY8910, 3686400/2) | |
| 590 | MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2) | |
| 568 | 591 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 569 | 592 | |
| 570 | 593 | MACHINE_DRIVER_END |
| 571 | 594 | |
| 572 | 595 | static MACHINE_DRIVER_START( backgamn ) |
| 596 | ||
| 597 | /* driver data */ | |
| 598 | MDRV_DRIVER_DATA(adp_state) | |
| 599 | ||
| 573 | 600 | MDRV_CPU_ADD("maincpu", M68000, 8000000) |
| 574 | 601 | MDRV_CPU_PROGRAM_MAP(backgamn_mem) |
| 575 | 602 | |
| r6428 | r6429 | |
| 586 | 613 | MDRV_VIDEO_UPDATE(adp) |
| 587 | 614 | |
| 588 | 615 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 589 | MDRV_SOUND_ADD("ay", AY8910, 3686400/2) | |
| 616 | MDRV_SOUND_ADD("aysnd", AY8910, 3686400/2) | |
| 590 | 617 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 591 | 618 | |
| 592 | 619 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 662 | 689 | ROM_LOAD16_BYTE( "flv_f1_ii.bin", 0x00001, 0x80000, CRC(2aa904e6) SHA1(864530b136dd488d619cc95f48e7dce8d93d88e0) ) |
| 663 | 690 | ROM_END |
| 664 | 691 | |
| 665 | GAME( 1990, backgamn, 0, backgamn, adp, 0, ROT0, "ADP", "Backgammon", GAME_NOT_WORKING ) | |
| 666 | GAME( 1993, quickjac, 0, quickjac, skattv, 0, ROT0, "ADP", "Quick Jack", GAME_NOT_WORKING ) | |
| 667 | GAME( 1994, skattv, 0, skattv, skattv, 0, ROT0, "ADP", "Skat TV", GAME_NOT_WORKING ) | |
| 668 | GAME( 1995, skattva, skattv, skattv, skattv, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING ) | |
| 669 | GAME( 1997, fashiong, 0, skattv, skattv, 0, ROT0, "ADP", "Fashion Gambler", GAME_NOT_WORKING ) | |
| 670 | GAME( 1999, funlddlx, 0, funland, skattv, 0, ROT0, "Stella", "Funny Land de Luxe", GAME_NOT_WORKING ) | |
| 671 | ||
| 692 | GAME( 1990, backgamn, 0, backgamn, adp, 0, ROT0, "ADP", "Backgammon", GAME_NOT_WORKING ) | |
| 693 | GAME( 1993, quickjac, 0, quickjac, skattv, 0, ROT0, "ADP", "Quick Jack", GAME_NOT_WORKING ) | |
| 694 | GAME( 1994, skattv, 0, skattv, skattv, 0, ROT0, "ADP", "Skat TV", GAME_NOT_WORKING ) | |
| 695 | GAME( 1995, skattva, skattv, skattv, skattv, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING ) | |
| 696 | GAME( 1997, fashiong, 0, skattv, skattv, 0, ROT0, "ADP", "Fashion Gambler", GAME_NOT_WORKING ) | |
| 697 | GAME( 1999, funlddlx, 0, funland, skattv, 0, ROT0, "Stella", "Funny Land de Luxe", GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 49 | 49 | #include "cpu/m68000/m68000.h" |
| 50 | 50 | #include "cpu/mips/psx.h" |
| 51 | 51 | #include "includes/psx.h" |
| 52 | #include " | |
| 52 | #include " | |
| 53 | 53 | #include "machine/eeprom.h" |
| 54 | 54 | #include "machine/am53cf96.h" |
| 55 | 55 | #include "harddisk.h" |
| r6428 | r6429 | |
| 330 | 330 | |
| 331 | 331 | static void scsi_irq(running_machine *machine) |
| 332 | 332 | { |
| 333 | psx_irq_set(machine, | |
| 333 | psx_irq_set(machine, 0x400 | |
| 334 | 334 | } |
| 335 | 335 | |
| 336 | 336 | static const SCSIConfigTable dev_table = |
| r6428 | r6429 | |
|---|---|---|
| 548 | 548 | DMA8237 Controller |
| 549 | 549 | ******************/ |
| 550 | 550 | |
| 551 | static int dma_channel; | |
| 551 | 552 | static UINT8 dma_offset[2][4]; |
| 552 | 553 | static UINT8 at_pages[0x10]; |
| 553 | 554 | |
| 554 | static | |
| 555 | static W | |
| 555 | 556 | { |
| 556 | 557 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 557 | 558 | |
| 558 | 559 | /* Assert HLDA */ |
| 559 | | |
| 560 | i | |
| 560 | 561 | } |
| 561 | 562 | |
| 562 | 563 | |
| 563 | static | |
| 564 | static READ8 | |
| 564 | 565 | { |
| 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) | |
| 567 | 567 | & 0xFF0000; |
| 568 | 568 | |
| 569 | 569 | return memory_read_byte(space, page_offset + offset); |
| 570 | 570 | } |
| 571 | 571 | |
| 572 | 572 | |
| 573 | static | |
| 573 | static | |
| 574 | 574 | { |
| 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) | |
| 577 | 576 | & 0xFF0000; |
| 578 | 577 | |
| 579 | 578 | memory_write_byte(space, page_offset + offset, data); |
| r6428 | r6429 | |
| 621 | 620 | } |
| 622 | 621 | } |
| 623 | 622 | |
| 624 | ||
| 625 | static const struct dma8237_interface dma8237_1_config = | |
| 623 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 626 | 624 | { |
| 627 | XTAL_14_31818MHz/3, | |
| 625 | if (!state) dma_channel = channel; | |
| 626 | } | |
| 628 | 627 | |
| 629 | pc_dma_hrq_changed, | |
| 630 | pc_dma_read_byte, | |
| 631 | pc_dma_write_byte, | |
| 628 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 629 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 630 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 631 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 632 | 632 | |
| 633 | { NULL, NULL, NULL, NULL }, | |
| 634 | { NULL, NULL, NULL, NULL }, | |
| 635 | NULL | |
| 633 | static 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) } | |
| 636 | 642 | }; |
| 637 | 643 | |
| 638 | 644 | /****************** |
| r6428 | r6429 | |
| 677 | 683 | |
| 678 | 684 | static ADDRESS_MAP_START( filetto_io, ADDRESS_SPACE_IO, 8 ) |
| 679 | 685 | ADDRESS_MAP_GLOBAL_MASK(0x3ff) |
| 680 | AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", | |
| 686 | AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", i | |
| 681 | 687 | AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control |
| 682 | 688 | AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_r, pit8253_w) //8253 PIT |
| 683 | 689 | AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) //PPI 8255 |
| r6428 | r6429 | |
| 706 | 712 | |
| 707 | 713 | static ADDRESS_MAP_START( tetriskr_io, ADDRESS_SPACE_IO, 8 ) |
| 708 | 714 | ADDRESS_MAP_GLOBAL_MASK(0x3ff) |
| 709 | AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", | |
| 715 | AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237_1", i | |
| 710 | 716 | AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control |
| 711 | 717 | AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_r, pit8253_w) //8253 PIT |
| 712 | 718 | AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) //PPI 8255 |
| r6428 | r6429 | |
| 927 | 933 | MDRV_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] ) |
| 928 | 934 | MDRV_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] ) |
| 929 | 935 | |
| 930 | MDRV_ | |
| 936 | MDRV_I | |
| 931 | 937 | |
| 932 | 938 | MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config ) |
| 933 | 939 | |
| r6428 | r6429 | |
| 972 | 978 | MDRV_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] ) |
| 973 | 979 | MDRV_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] ) |
| 974 | 980 | |
| 975 | MDRV_ | |
| 981 | MDRV_I | |
| 976 | 982 | |
| 977 | 983 | MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config ) |
| 978 | 984 |
| r6428 | r6429 | |
|---|---|---|
| 219 | 219 | AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM |
| 220 | 220 | AM_RANGE(0x4000, 0xbfff) AM_ROMBANK(1) // ROM |
| 221 | 221 | 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) | |
| 223 | 223 | AM_RANGE(0xf000, 0xf000) AM_WRITE(mcatadv_sound_bw_w) |
| 224 | 224 | ADDRESS_MAP_END |
| 225 | 225 | |
| r6428 | r6429 | |
| 237 | 237 | |
| 238 | 238 | static ADDRESS_MAP_START( nost_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 239 | 239 | 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) | |
| 242 | 242 | AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w) |
| 243 | 243 | AM_RANGE(0x80, 0x80) AM_READWRITE(soundlatch_r, soundlatch2_w) |
| 244 | 244 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 459 | 459 | /* sound hardware */ |
| 460 | 460 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 461 | 461 | |
| 462 | MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 462 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 463 | 463 | MDRV_SOUND_CONFIG(mcatadv_ym2610_interface) |
| 464 | 464 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.32) |
| 465 | 465 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.32) |
| r6428 | r6429 | |
| 509 | 509 | ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) ) |
| 510 | 510 | ROM_LOAD( "mca-u100", 0x200000, 0x080000, CRC(b273f1b0) SHA1(39318fe2aaf2792b85426ec6791b3360ac964de3) ) |
| 511 | 511 | |
| 512 | ROM_REGION( 0x80000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 512 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 513 | 513 | ROM_LOAD( "mca-u53.bin", 0x00000, 0x80000, CRC(64c76e05) SHA1(379cef5e0cba78d0e886c9cede41985850a3afb7) ) |
| 514 | 514 | ROM_END |
| 515 | 515 | |
| r6428 | r6429 | |
| 538 | 538 | ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) ) |
| 539 | 539 | ROM_LOAD( "u100.bin", 0x200000, 0x080000, CRC(e2c311da) SHA1(cc3217484524de94704869eaa9ce1b90393039d8) ) |
| 540 | 540 | |
| 541 | ROM_REGION( 0x80000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 541 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 542 | 542 | ROM_LOAD( "mca-u53.bin", 0x00000, 0x80000, CRC(64c76e05) SHA1(379cef5e0cba78d0e886c9cede41985850a3afb7) ) |
| 543 | 543 | ROM_END |
| 544 | 544 | |
| r6428 | r6429 | |
| 567 | 567 | ROM_LOAD( "mca-u61.bin", 0x100000, 0x100000, CRC(51af66c9) SHA1(1055cf78ea286f02003b0d1bf08c2d7829b36f90) ) |
| 568 | 568 | ROM_LOAD( "mca-u100", 0x200000, 0x080000, CRC(b273f1b0) SHA1(39318fe2aaf2792b85426ec6791b3360ac964de3) ) |
| 569 | 569 | |
| 570 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 570 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 571 | 571 | ROM_LOAD( "u53.bin", 0x00000, 0x100000, CRC(99f2a624) SHA1(799e8e40e8bdcc8fa4cd763a366cc32473038a49) ) |
| 572 | 572 | |
| 573 | 573 | ROM_REGION( 0x0400, "plds", 0 ) |
| r6428 | r6429 | |
| 600 | 600 | ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) ) |
| 601 | 601 | ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) ) |
| 602 | 602 | |
| 603 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 603 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 604 | 604 | ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) ) |
| 605 | 605 | ROM_END |
| 606 | 606 | |
| r6428 | r6429 | |
| 629 | 629 | ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) ) |
| 630 | 630 | ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) ) |
| 631 | 631 | |
| 632 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 632 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 633 | 633 | ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) ) |
| 634 | 634 | ROM_END |
| 635 | 635 | |
| r6428 | r6429 | |
| 658 | 658 | ROM_LOAD( "nos-b1-0.u60", 0x000000, 0x100000, CRC(ba6fd0c7) SHA1(516d6e0c4dc6fb12ec9f30877ea1c582e7440a19) ) |
| 659 | 659 | ROM_LOAD( "nos-b1-1.u61", 0x100000, 0x080000, CRC(dabd8009) SHA1(1862645b8d6216c3ec2b8dbf74816b8e29dea14f) ) |
| 660 | 660 | |
| 661 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 661 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples - ADPCM or Delta-T? */ | |
| 662 | 662 | ROM_LOAD( "nossn-00.u53", 0x00000, 0x100000, CRC(3bd1bcbc) SHA1(1bcad43792e985402db4eca122676c2c555f3313) ) |
| 663 | 663 | ROM_END |
| 664 | 664 |
| r6428 | r6429 | |
|---|---|---|
| 265 | 265 | |
| 266 | 266 | |
| 267 | 267 | /**************** 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 */ | |
| 270 | 270 | |
| 271 | 271 | #define CPU_2_NONE 0x00 |
| 272 | 272 | #define CPU_2_Z80 0x5a |
| r6428 | r6429 | |
| 277 | 277 | static UINT8 *toaplan2_shared_ram; |
| 278 | 278 | static UINT8 *raizing_shared_ram; /* Shared ram used in Shippumd and Mahoudai */ |
| 279 | 279 | static UINT16 *toaplan2_shared_ram16; /* Really 8bit RAM connected to Z180 */ |
| 280 | #ifndef USE_ENCRYPTED_V25S | |
| 280 | 281 | static UINT16 *V25_shared_ram; /* Really 8bit RAM connected to Z180 */ |
| 282 | #endif | |
| 281 | 283 | static UINT16 *fixeight_sec_cpu_mem; |
| 282 | 284 | |
| 283 | 285 | /********** Status related values **********/ |
| r6428 | r6429 | |
| 292 | 294 | static int bbakraid_unlimited_ver; |
| 293 | 295 | |
| 294 | 296 | static MACHINE_RESET(batsugun); |
| 295 | #if USE_V25 | |
| 296 | 297 | static READ16_HANDLER( batsugun_share_r ); |
| 298 | static WRITE16_HANDLER( batsugun_share_w ); | |
| 299 | #ifdef USE_ENCRYPTED_V25S | |
| 297 | 300 | static READ16_HANDLER( batsugun_share2_r ); |
| 298 | static WRITE16_HANDLER( batsugun_share_w ); | |
| 299 | 301 | static WRITE16_HANDLER( batsugun_share2_w ); |
| 300 | 302 | #endif |
| 301 | 303 | |
| r6428 | r6429 | |
| 400 | 402 | |
| 401 | 403 | static DRIVER_INIT( fixeight ) |
| 402 | 404 | { |
| 403 | #if USE_V25 | |
| 404 | 405 | 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 | |
| 409 | 406 | |
| 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 | ||
| 410 | 413 | toaplan2_sub_cpu = CPU_2_V25; |
| 411 | 414 | register_state_save(machine); |
| 412 | 415 | } |
| r6428 | r6429 | |
| 628 | 631 | { |
| 629 | 632 | toaplan2_coin_w(space, offset, data & 0x0f); |
| 630 | 633 | |
| 631 | #if USE_V25 | |
| 634 | #ifdef USE_ENCRYPTED_V25S | |
| 632 | 635 | /* only the ram-based V25 based games access the following bits */ |
| 633 | 636 | //cpu_set_input_line(sub_cpu, INPUT_LINE_RESET, (data & 0x0020) ? CLEAR_LINE : ASSERT_LINE ); |
| 634 | 637 | cpu_set_input_line(sub_cpu, INPUT_LINE_HALT, (data & 0x0010) ? CLEAR_LINE : ASSERT_LINE); |
| r6428 | r6429 | |
| 641 | 644 | } |
| 642 | 645 | } |
| 643 | 646 | |
| 647 | static WRITE16_HANDLER( toaplan2_v25_batsugun_coin_word_w ) | |
| 648 | { | |
| 649 | // logerror("toaplan2_v25_coin_word_w %04x\n",data); | |
| 644 | 650 | |
| 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 | ||
| 645 | 664 | static WRITE16_HANDLER( shippumd_coin_word_w ) |
| 646 | 665 | { |
| 647 | 666 | if (ACCESSING_BITS_0_7) |
| r6428 | r6429 | |
| 809 | 828 | } |
| 810 | 829 | } |
| 811 | 830 | |
| 831 | #ifndef USE_ENCRYPTED_V25S | |
| 812 | 832 | static READ16_HANDLER( shared_ram_r ) |
| 813 | 833 | { |
| 814 | 834 | /* Other games using a NEC V25+ secondary CPU, have shared memory between |
| r6428 | r6429 | |
| 869 | 889 | logerror("PC:%06x Writing command (%04x) to the NEC V25+ secondary CPU port\n",cpu_get_previouspc(space->cpu),mcu_data); |
| 870 | 890 | } |
| 871 | 891 | |
| 872 | static 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 | } | |
| 881 | 892 | |
| 882 | static 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 | ||
| 891 | 893 | static READ16_HANDLER( fixeight_sec_cpu_r ) |
| 892 | 894 | { |
| 893 | 895 | /*** Status port includes NEC V25+ CPU POST codes. ************ |
| r6428 | r6429 | |
| 934 | 936 | /* game keeping service mode. It writes/reads the settings to/from */ |
| 935 | 937 | /* these shared RAM locations. The secondary CPU reads/writes them */ |
| 936 | 938 | /* 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); | |
| 939 | 941 | memory_install_read_port_handler(space, 0x28f004, 0x28f005, 0, 0, "DSWA"); /* Dip Switch A - Wrong !!! */ |
| 940 | 942 | memory_install_read_port_handler(space, 0x28f006, 0x28f007, 0, 0, "DSWB"); /* Dip Switch B - Wrong !!! */ |
| 941 | 943 | memory_install_read_port_handler(space, 0x28f008, 0x28f009, 0, 0, "JMPR"); /* Territory Jumper block - Wrong !!! */ |
| r6428 | r6429 | |
| 981 | 983 | V25_shared_ram[offset] = data & 0xff; |
| 982 | 984 | } |
| 983 | 985 | } |
| 986 | #endif | |
| 984 | 987 | |
| 988 | static 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 | ||
| 998 | static 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 | ||
| 985 | 1008 | static WRITE16_DEVICE_HANDLER( oki_bankswitch_w ) |
| 986 | 1009 | { |
| 987 | 1010 | if (ACCESSING_BITS_0_7) |
| r6428 | r6429 | |
| 1363 | 1386 | AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") |
| 1364 | 1387 | AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") |
| 1365 | 1388 | AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) |
| 1366 | #if USE_V25 | |
| 1389 | #ifdef USE_ENCRYPTED_V25S | |
| 1367 | 1390 | // AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */ |
| 1368 | 1391 | // 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 */ |
| 1369 | 1392 | AM_RANGE(0x210000, 0x21efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w ) |
| r6428 | r6429 | |
| 1458 | 1481 | AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2") |
| 1459 | 1482 | AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS") |
| 1460 | 1483 | 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) | |
| 1462 | 1485 | AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w) /* Coin count/lock */ |
| 1463 | 1486 | ADDRESS_MAP_END |
| 1464 | 1487 | |
| r6428 | r6429 | |
| 1503 | 1526 | AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2") |
| 1504 | 1527 | ADDRESS_MAP_END |
| 1505 | 1528 | |
| 1506 | #if USE_V25 | |
| 1529 | #ifdef USE_ENCRYPTED_V25S | |
| 1507 | 1530 | // guess, could be wrong |
| 1508 | 1531 | WRITE16_HANDLER( fixeight_subcpu_ctrl ) |
| 1509 | 1532 | { |
| r6428 | r6429 | |
| 1521 | 1544 | AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3") |
| 1522 | 1545 | AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS") |
| 1523 | 1546 | AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w) /* Coin count/lock */ |
| 1524 | #if USE_V25 | |
| 1547 | #ifdef USE_ENCRYPTED_V25S | |
| 1525 | 1548 | // AM_RANGE(0x28e000, 0x28fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $28f000 status port */ |
| 1526 | 1549 | // 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 */ |
| 1527 | 1550 | AM_RANGE(0x280000, 0x28efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w ) |
| r6428 | r6429 | |
| 1583 | 1606 | AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") |
| 1584 | 1607 | AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") |
| 1585 | 1608 | AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) /* Coin count/lock */ |
| 1586 | #if USE_V25 | |
| 1609 | #ifdef USE_ENCRYPTED_V25S | |
| 1587 | 1610 | // AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */ |
| 1588 | 1611 | // 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 */ |
| 1589 | 1612 | AM_RANGE(0x210000, 0x21efff) AM_READWRITE( batsugun_share2_r, batsugun_share2_w ) |
| r6428 | r6429 | |
| 1605 | 1628 | ADDRESS_MAP_END |
| 1606 | 1629 | |
| 1607 | 1630 | |
| 1608 | #if USE_V25 | |
| 1609 | 1631 | static UINT8* batsugun_share; |
| 1632 | #ifdef USE_ENCRYPTED_V25S | |
| 1610 | 1633 | static UINT8* batsugun_share2; |
| 1634 | #endif | |
| 1611 | 1635 | |
| 1612 | 1636 | static READ16_HANDLER( batsugun_share_r ) |
| 1613 | 1637 | { |
| r6428 | r6429 | |
| 1629 | 1653 | } |
| 1630 | 1654 | } |
| 1631 | 1655 | |
| 1632 | ||
| 1656 | #ifdef USE_ENCRYPTED_V25S | |
| 1657 | /* To be removed... */ | |
| 1633 | 1658 | static READ16_HANDLER( batsugun_share2_r ) |
| 1634 | 1659 | { |
| 1635 | 1660 | return batsugun_share2[offset] | batsugun_share2[offset]<<8; |
| r6428 | r6429 | |
| 1657 | 1682 | AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1") |
| 1658 | 1683 | AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") |
| 1659 | 1684 | 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 | |
| 1669 | 1689 | AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, batsugun_snd_cpu_w) /* V25+ Command/Status port */ |
| 1670 | 1690 | AM_RANGE(0x21f004, 0x21f005) AM_READ_PORT("DSWA") |
| 1671 | 1691 | AM_RANGE(0x21f006, 0x21f007) AM_READ_PORT("DSWB") |
| 1672 | 1692 | 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 */ | |
| 1674 | 1693 | #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 | ||
| 1675 | 1697 | /***** The following in 0x30000x are for video controller 1 ******/ |
| 1676 | 1698 | AM_RANGE(0x300000, 0x300001) AM_WRITE(toaplan2_0_voffs_w) /* VideoRAM selector/offset */ |
| 1677 | 1699 | AM_RANGE(0x300004, 0x300007) AM_READWRITE(toaplan2_0_videoram16_r, toaplan2_0_videoram16_w) /* Tile/Sprite VideoRAM */ |
| r6428 | r6429 | |
| 1695 | 1717 | AM_RANGE(0x300008, 0x300009) AM_WRITE(toaplan2_0_scroll_reg_select_w) |
| 1696 | 1718 | AM_RANGE(0x30000c, 0x30000d) AM_READWRITE(toaplan2_inputport_0_word_r, toaplan2_0_scroll_reg_data_w) /* VBlank */ |
| 1697 | 1719 | 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) | |
| 1699 | 1721 | AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 1700 | 1722 | AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR") |
| 1701 | 1723 | AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") |
| r6428 | r6429 | |
| 1855 | 1877 | static ADDRESS_MAP_START( sound_z80_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1856 | 1878 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1857 | 1879 | 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) | |
| 1859 | 1881 | ADDRESS_MAP_END |
| 1860 | 1882 | |
| 1861 | 1883 | |
| 1862 | 1884 | static ADDRESS_MAP_START( raizing_sound_z80_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1863 | 1885 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 1864 | 1886 | 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) | |
| 1866 | 1888 | AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 1867 | 1889 | AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w) |
| 1868 | 1890 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1872 | 1894 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1873 | 1895 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| 1874 | 1896 | 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) | |
| 1876 | 1898 | AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 1877 | 1899 | AM_RANGE(0xe006, 0xe006) AM_WRITE(raizing_okim6295_bankselect_0) |
| 1878 | 1900 | AM_RANGE(0xe008, 0xe008) AM_WRITE(raizing_okim6295_bankselect_1) |
| r6428 | r6429 | |
| 1898 | 1920 | AM_RANGE(0x46, 0x46) AM_WRITE(raizing_clear_nmi_w) |
| 1899 | 1921 | AM_RANGE(0x48, 0x48) AM_READ(soundlatch_r) |
| 1900 | 1922 | 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) | |
| 1902 | 1924 | AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 1903 | 1925 | AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 1904 | 1926 | AM_RANGE(0x88, 0x88) AM_WRITE(batrider_bankswitch_w) |
| r6428 | r6429 | |
| 1930 | 1952 | |
| 1931 | 1953 | |
| 1932 | 1954 | |
| 1933 | #if USE_HD64x180 | |
| 1955 | #ifdef USE_HD64x180 | |
| 1934 | 1956 | static ADDRESS_MAP_START( hd647180_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1935 | 1957 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1936 | 1958 | AM_RANGE(0xfe00, 0xffff) AM_RAM /* Internal 512 bytes of RAM */ |
| r6428 | r6429 | |
| 1938 | 1960 | #endif |
| 1939 | 1961 | |
| 1940 | 1962 | |
| 1941 | #if USE_V25 | |
| 1942 | ||
| 1943 | 1963 | /* this seems to be the map for the ROM based game, Knuckle Bash */ |
| 1944 | static ADDRESS_MAP_START( V25_mem, ADDRESS_SPACE_PROGRAM, 8 ) | |
| 1945 | AM_RANGE(0x00000, 0x03fff) AM_ROM | |
| 1964 | static ADDRESS_MAP_START( V25_kbash_mem, ADDRESS_SPACE_PROGRAM, 8 ) | |
| 1965 | // AM_RANGE(0x00000, 0x03fff) AM_ROM | |
| 1946 | 1966 | // 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) | |
| 1948 | 1968 | AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 1949 | 1969 | // AM_RANGE(0x04004, 0x04004) AM_DEVWRITE("oki", oki_bankswitch_w) |
| 1950 | 1970 | AM_RANGE(0x04008, 0x04008) AM_READ_PORT("IN1") |
| r6428 | r6429 | |
| 1953 | 1973 | AM_RANGE(0x0400e, 0x0400e) AM_WRITE(toaplan2_coin_w) |
| 1954 | 1974 | AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 bytes of RAM */ |
| 1955 | 1975 | // 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) | |
| 1956 | 1979 | ADDRESS_MAP_END |
| 1957 | 1980 | |
| 1958 | ||
| 1959 | static ADDRESS_MAP_START( V25_port, ADDRESS_SPACE_IO, 8 ) | |
| 1981 | static ADDRESS_MAP_START( V25_kbash_port, ADDRESS_SPACE_IO, 8 ) | |
| 1960 | 1982 | AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSWA") /* Directly mapped I/O ports */ |
| 1961 | 1983 | AM_RANGE(0x0061, 0x0061) AM_READ_PORT("DSWA") /* Directly mapped I/O ports */ |
| 1962 | 1984 | AM_RANGE(0x0062, 0x0062) AM_READ_PORT("JMPR") /* Directly mapped I/O ports */ |
| r6428 | r6429 | |
| 1969 | 1991 | |
| 1970 | 1992 | Others are encrypted |
| 1971 | 1993 | */ |
| 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 | */ | |
| 1972 | 2001 | |
| 2002 | /* FIXME: These should be moved into the CPU core files, putted here for simplicity. */ | |
| 2003 | static 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 | } | |
| 1973 | 2012 | |
| 2013 | printf("(PC=%05x) V25S internal I/O read [%04x]\n",cpu_get_pc(space->cpu),offset+0xf00); | |
| 1974 | 2014 | |
| 2015 | return 0xff; | |
| 2016 | } | |
| 1975 | 2017 | |
| 1976 | static ADDRESS_MAP_START( V25_rambased_mem, ADDRESS_SPACE_PROGRAM, 8 ) | |
| 1977 | AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w) | |
| 2018 | static 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 | } | |
| 1978 | 2022 | |
| 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 */ | |
| 2024 | static READ8_HANDLER( kludge_r ) | |
| 2025 | { | |
| 2026 | return 0xff; | |
| 2027 | } | |
| 2028 | #endif | |
| 1980 | 2029 | |
| 1981 | AM_RANGE(0x40000, 0x477ff) AM_RAM AM_SHARE(7) | |
| 2030 | static 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) | |
| 1982 | 2033 | |
| 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 | |
| 1984 | 2040 | |
| 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) | |
| 1987 | 2043 | |
| 1988 | AM_RANGE(0xf | |
| 2044 | AM_RANGE(0xf | |
| 1989 | 2045 | ADDRESS_MAP_END |
| 1990 | 2046 | |
| 1991 | ||
| 1992 | ||
| 1993 | ||
| 1994 | ||
| 1995 | ||
| 1996 | #endif | |
| 1997 | ||
| 1998 | ||
| 1999 | ||
| 2000 | 2047 | /***************************************************************************** |
| 2001 | 2048 | Input Port definitions |
| 2002 | 2049 | Service input of the TOAPLAN2_SYSTEM_INPUTS is used as a Pause type input. |
| r6428 | r6429 | |
| 2652 | 2699 | PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) |
| 2653 | 2700 | |
| 2654 | 2701 | 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 | |
| 2655 | 2706 | PORT_DIPNAME( 0x000f, 0x0009, "Territory" ) |
| 2656 | 2707 | PORT_DIPSETTING( 0x0009, DEF_STR( Europe ) ) |
| 2657 | 2708 | PORT_DIPSETTING( 0x0008, "Europe (Taito Corp license)" ) |
| r6428 | r6429 | |
| 2670 | 2721 | PORT_DIPSETTING( 0x0005, "Taiwan" ) |
| 2671 | 2722 | PORT_DIPSETTING( 0x0004, "Taiwan (Taito Corp license)" ) |
| 2672 | 2723 | PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* bit 0x10 sound ready */ |
| 2724 | #endif | |
| 2673 | 2725 | INPUT_PORTS_END |
| 2674 | 2726 | |
| 2675 | 2727 | |
| r6428 | r6429 | |
| 3105 | 3157 | PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) |
| 3106 | 3158 | /* These Dips are showed only when Coin_A is set to Free_Play, but they work in normal play mode too. */ |
| 3107 | 3159 | 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 ) ) | |
| 3168 | INPUT_PORTS_END | |
| 3169 | ||
| 3170 | ||
| 3171 | static 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") | |
| 3108 | 3177 | PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) |
| 3109 | 3178 | PORT_DIPSETTING( 0x2000, DEF_STR( On ) ) |
| 3110 | 3179 | PORT_DIPNAME( 0x4000, 0x0000, "Player Select" ) PORT_DIPLOCATION("SW3:7") |
| r6428 | r6429 | |
| 3368 | 3437 | MDRV_CPU_PROGRAM_MAP(tekipaki_68k_mem) |
| 3369 | 3438 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3370 | 3439 | |
| 3371 | #if USE_HD64x180 | |
| 3440 | #ifdef USE_HD64x180 | |
| 3372 | 3441 | MDRV_CPU_ADD("mcu", Z180, XTAL_10MHz) /* HD647180 CPU actually */ |
| 3373 | 3442 | MDRV_CPU_PROGRAM_MAP(hd647180_mem) |
| 3374 | 3443 | #endif |
| r6428 | r6429 | |
| 3394 | 3463 | /* sound hardware */ |
| 3395 | 3464 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3396 | 3465 | |
| 3397 | MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8) | |
| 3466 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8) | |
| 3398 | 3467 | MDRV_SOUND_CONFIG(ym3812_config) |
| 3399 | 3468 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3400 | 3469 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3407 | 3476 | MDRV_CPU_PROGRAM_MAP(ghox_68k_mem) |
| 3408 | 3477 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3409 | 3478 | |
| 3410 | #if USE_HD64x180 | |
| 3479 | #ifdef USE_HD64x180 | |
| 3411 | 3480 | MDRV_CPU_ADD("mcu", Z180, XTAL_10MHz) /* HD647180 CPU actually */ |
| 3412 | 3481 | MDRV_CPU_PROGRAM_MAP(hd647180_mem) |
| 3413 | 3482 | #endif |
| r6428 | r6429 | |
| 3433 | 3502 | /* sound hardware */ |
| 3434 | 3503 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3435 | 3504 | |
| 3436 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3505 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3437 | 3506 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3438 | 3507 | MACHINE_DRIVER_END |
| 3439 | 3508 | |
| 3509 | /* x = modified to match batsugun 'unencrypted' code */ | |
| 3440 | 3510 | |
| 3511 | const 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 | ||
| 3533 | static const nec_config ts002mach_config ={ ts002mach_decryption_table, }; | |
| 3534 | ||
| 3441 | 3535 | static MACHINE_DRIVER_START( dogyuun ) |
| 3442 | 3536 | |
| 3443 | 3537 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 3445 | 3539 | MDRV_CPU_PROGRAM_MAP(dogyuun_68k_mem) |
| 3446 | 3540 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3447 | 3541 | |
| 3448 | #if USE_V25 | |
| 3449 | 3542 | MDRV_CPU_ADD("audiocpu", V25, XTAL_25MHz/2) /* NEC V25+ type Toaplan marked CPU ??? */ |
| 3450 | 3543 | MDRV_CPU_PROGRAM_MAP(V25_rambased_mem) |
| 3451 | //MDRV_CPU_IO_MAP(V25_port) | |
| 3452 | #endif | |
| 3544 | MDRV_CPU_CONFIG(ts002mach_config) | |
| 3453 | 3545 | |
| 3454 | 3546 | MDRV_MACHINE_RESET(dogyuun) |
| 3455 | 3547 | |
| r6428 | r6429 | |
| 3472 | 3564 | /* sound hardware */ |
| 3473 | 3565 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3474 | 3566 | |
| 3475 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3567 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3476 | 3568 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3477 | 3569 | |
| 3478 | 3570 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_25MHz/24) /* verified on pcb */ |
| r6428 | r6429 | |
| 3480 | 3572 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3481 | 3573 | MACHINE_DRIVER_END |
| 3482 | 3574 | |
| 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 | */ | |
| 3579 | const 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 | }; | |
| 3483 | 3610 | |
| 3611 | static const nec_config ts004dash_config ={ ts004dash_decryption_table, }; | |
| 3612 | ||
| 3613 | static 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 | ||
| 3484 | 3622 | static MACHINE_DRIVER_START( kbash ) |
| 3485 | 3623 | |
| 3486 | 3624 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 3489 | 3627 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3490 | 3628 | |
| 3491 | 3629 | /* ROM based v25 */ |
| 3492 | #if USE_V25 | |
| 3493 | 3630 | 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) | |
| 3497 | 3634 | |
| 3498 | MDRV_MACHINE_RESET(toaplan2) | |
| 3499 | 3635 | |
| 3636 | MDRV_MACHINE_RESET(kbash) | |
| 3637 | ||
| 3500 | 3638 | /* video hardware */ |
| 3501 | 3639 | MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
| 3502 | 3640 | |
| r6428 | r6429 | |
| 3516 | 3654 | /* sound hardware */ |
| 3517 | 3655 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3518 | 3656 | |
| 3519 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) | |
| 3657 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) | |
| 3520 | 3658 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3521 | 3659 | |
| 3522 | 3660 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32) |
| r6428 | r6429 | |
| 3590 | 3728 | /* sound hardware */ |
| 3591 | 3729 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3592 | 3730 | |
| 3593 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3731 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3594 | 3732 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3595 | 3733 | |
| 3596 | 3734 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz/4) /* verified on pcb */ |
| r6428 | r6429 | |
| 3632 | 3770 | /* sound hardware */ |
| 3633 | 3771 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3634 | 3772 | |
| 3635 | MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8) /* verified on pcb */ | |
| 3773 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8) /* verified on pcb */ | |
| 3636 | 3774 | MDRV_SOUND_CONFIG(ym3812_config) |
| 3637 | 3775 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3638 | 3776 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3672 | 3810 | /* sound hardware */ |
| 3673 | 3811 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3674 | 3812 | |
| 3675 | MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8) | |
| 3813 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8) | |
| 3676 | 3814 | MDRV_SOUND_CONFIG(ym3812_config) |
| 3677 | 3815 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3678 | 3816 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3711 | 3849 | /* sound hardware */ |
| 3712 | 3850 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3713 | 3851 | |
| 3714 | MDRV_SOUND_ADD("ym", YM3812, XTAL_27MHz/8) | |
| 3852 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8) | |
| 3715 | 3853 | MDRV_SOUND_CONFIG(ym3812_config) |
| 3716 | 3854 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3717 | 3855 | MACHINE_DRIVER_END |
| 3718 | 3856 | |
| 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 */ | |
| 3859 | const 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 | }; | |
| 3719 | 3880 | |
| 3881 | static const nec_config ts001turbo_config ={ ts001turbo_decryption_table, }; | |
| 3882 | ||
| 3883 | ||
| 3720 | 3884 | static MACHINE_DRIVER_START( fixeight ) |
| 3721 | 3885 | |
| 3722 | 3886 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 3724 | 3888 | MDRV_CPU_PROGRAM_MAP(fixeight_68k_mem) |
| 3725 | 3889 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3726 | 3890 | |
| 3727 | #if USE_V25 | |
| 3728 | 3891 | MDRV_CPU_ADD("audiocpu", V25, XTAL_16MHz) /* NEC V25+ type Toaplan marked CPU ??? */ |
| 3729 | 3892 | MDRV_CPU_PROGRAM_MAP(V25_rambased_mem) |
| 3893 | MDRV_CPU_CONFIG(ts001turbo_config) | |
| 3730 | 3894 | //MDRV_CPU_IO_MAP(V25_port) |
| 3731 | #endif | |
| 3732 | 3895 | |
| 3733 | 3896 | MDRV_MACHINE_RESET(batsugun) |
| 3734 | // MDRV_ | |
| 3897 | // MDRV_ | |
| 3735 | 3898 | |
| 3899 | // MDRV_NVRAM_HANDLER(fixeight) /* See 37B6 code */ | |
| 3900 | ||
| 3736 | 3901 | /* video hardware */ |
| 3737 | 3902 | MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
| 3738 | 3903 | |
| r6428 | r6429 | |
| 3752 | 3917 | /* sound hardware */ |
| 3753 | 3918 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3754 | 3919 | |
| 3755 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3920 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3756 | 3921 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3757 | 3922 | |
| 3758 | 3923 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16MHz/16) /* verified on pcb */ |
| r6428 | r6429 | |
| 3793 | 3958 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3794 | 3959 | MACHINE_DRIVER_END |
| 3795 | 3960 | |
| 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?? | |
| 3796 | 3964 | |
| 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 | */ | |
| 3968 | const 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 | ||
| 3990 | static const nec_config ts007spy_vfive_config ={ ts007spy_vfive_decryption_table, }; | |
| 3991 | ||
| 3992 | ||
| 3797 | 3993 | static MACHINE_DRIVER_START( vfive ) |
| 3798 | 3994 | |
| 3799 | 3995 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 3801 | 3997 | MDRV_CPU_PROGRAM_MAP(vfive_68k_mem) |
| 3802 | 3998 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3803 | 3999 | |
| 3804 | #if USE_V25 | |
| 3805 | 4000 | MDRV_CPU_ADD("audiocpu", V25, XTAL_20MHz/2) /* Verified on pcb, NEC V25+ type Toaplan mark scratched out */ |
| 3806 | 4001 | MDRV_CPU_PROGRAM_MAP(V25_rambased_mem) |
| 3807 | //MDRV_CPU_IO_MAP(V25_port) | |
| 3808 | #endif | |
| 4002 | MDRV_CPU_CONFIG(ts007spy_vfive_config) | |
| 3809 | 4003 | |
| 3810 | 4004 | MDRV_MACHINE_RESET(vfive) |
| 3811 | 4005 | |
| r6428 | r6429 | |
| 3828 | 4022 | /* sound hardware */ |
| 3829 | 4023 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3830 | 4024 | |
| 3831 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 4025 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */ | |
| 3832 | 4026 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3833 | 4027 | MACHINE_DRIVER_END |
| 3834 | 4028 | |
| 3835 | 4029 | static MACHINE_RESET(batsugun) |
| 3836 | 4030 | { |
| 3837 | #if USE_V25 | |
| 3838 | 4031 | cpu_set_input_line(sub_cpu, INPUT_LINE_HALT, ASSERT_LINE); |
| 3839 | #endif | |
| 3840 | 4032 | } |
| 3841 | 4033 | |
| 4034 | ||
| 4035 | ||
| 3842 | 4036 | static void batsugun_ym2151_irqhandler(const device_config *device, int linestate) |
| 3843 | 4037 | { |
| 3844 | 4038 | logerror("batsugun_ym2151_irqhandler %02x\n",linestate); |
| r6428 | r6429 | |
| 3850 | 4044 | batsugun_ym2151_irqhandler |
| 3851 | 4045 | }; |
| 3852 | 4046 | |
| 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 */ | |
| 4049 | const 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 | ||
| 4068 | static const nec_config ts007spy_config ={ ts007spy_decryption_table, }; | |
| 4069 | ||
| 3853 | 4070 | static MACHINE_DRIVER_START( batsugun ) |
| 3854 | 4071 | |
| 3855 | 4072 | /* basic machine hardware */ |
| r6428 | r6429 | |
| 3857 | 4074 | MDRV_CPU_PROGRAM_MAP(batsugun_68k_mem) |
| 3858 | 4075 | MDRV_CPU_VBLANK_INT("screen", toaplan2_vblank_irq4) |
| 3859 | 4076 | |
| 3860 | #if USE_V25 | |
| 3861 | 4077 | MDRV_CPU_ADD("audiocpu", V25, XTAL_32MHz/2) /* NEC V25+ type Toaplan marked CPU ??? */ |
| 3862 | 4078 | MDRV_CPU_PROGRAM_MAP(V25_rambased_mem) |
| 4079 | MDRV_CPU_CONFIG(ts007spy_config) | |
| 4080 | ||
| 3863 | 4081 | //MDRV_CPU_IO_MAP(V25_port) |
| 3864 | #endif | |
| 3865 | 4082 | |
| 3866 | 4083 | MDRV_MACHINE_RESET(batsugun) |
| 3867 | 4084 | |
| r6428 | r6429 | |
| 3884 | 4101 | /* sound hardware */ |
| 3885 | 4102 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3886 | 4103 | |
| 3887 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) | |
| 4104 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) | |
| 3888 | 4105 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3889 | 4106 | MDRV_SOUND_CONFIG(batsugun_ym2151_interface) |
| 3890 | 4107 | |
| r6428 | r6429 | |
| 3922 | 4139 | /* sound hardware */ |
| 3923 | 4140 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3924 | 4141 | |
| 3925 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) | |
| 4142 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) | |
| 3926 | 4143 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3927 | 4144 | |
| 3928 | 4145 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_27MHz/10) |
| r6428 | r6429 | |
| 3964 | 4181 | /* sound hardware */ |
| 3965 | 4182 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3966 | 4183 | |
| 3967 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) | |
| 4184 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) | |
| 3968 | 4185 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3969 | 4186 | |
| 3970 | 4187 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32) |
| r6428 | r6429 | |
| 4006 | 4223 | /* sound hardware */ |
| 4007 | 4224 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4008 | 4225 | |
| 4009 | MDRV_SOUND_ADD("ym", YM2151, XTAL_27MHz/8) | |
| 4226 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) | |
| 4010 | 4227 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono",1.0) |
| 4011 | 4228 | |
| 4012 | 4229 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/32) |
| r6428 | r6429 | |
| 4048 | 4265 | /* sound hardware */ |
| 4049 | 4266 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4050 | 4267 | |
| 4051 | MDRV_SOUND_ADD("ym", YM2151, XTAL_32MHz/8) | |
| 4268 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8) | |
| 4052 | 4269 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4053 | 4270 | |
| 4054 | 4271 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_32MHz/16) |
| r6428 | r6429 | |
| 4090 | 4307 | /* sound hardware */ |
| 4091 | 4308 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4092 | 4309 | |
| 4093 | MDRV_SOUND_ADD("ym", YM2151, XTAL_32MHz/8) | |
| 4310 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8) | |
| 4094 | 4311 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4095 | 4312 | |
| 4096 | 4313 | MDRV_SOUND_ADD("oki1", OKIM6295, XTAL_32MHz/10) |
| r6428 | r6429 | |
| 4157 | 4374 | ROM_LOAD16_BYTE( "tp020-1.bin", 0x000000, 0x010000, CRC(d8420bd5) SHA1(30c1ad9e053cd7e79adb42aa428ebee28e144755) ) |
| 4158 | 4375 | ROM_LOAD16_BYTE( "tp020-2.bin", 0x000001, 0x010000, CRC(7222de8e) SHA1(8352ae23efc24a2e20cc24b6d37cb8fc6b1a730c) ) |
| 4159 | 4376 | |
| 4160 | #if USE_HD64x180 | |
| 4161 | 4377 | ROM_REGION( 0x10000, "cpu1", 0 ) /* Sound HD647180 code */ |
| 4162 | 4378 | /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */ |
| 4163 | 4379 | ROM_LOAD( "hd647180.020", 0x00000, 0x08000, NO_DUMP ) |
| 4164 | #endif | |
| 4165 | 4380 | |
| 4166 | 4381 | ROM_REGION( 0x100000, "gfx1", 0 ) |
| 4167 | 4382 | ROM_LOAD( "tp020-4.bin", 0x000000, 0x080000, CRC(3ebbe41e) SHA1(cea196c5f83e1a23d5b538a0db9bbbffa7af5118) ) |
| r6428 | r6429 | |
| 4174 | 4389 | ROM_LOAD16_BYTE( "tp021-01.u10", 0x000000, 0x020000, CRC(9e56ac67) SHA1(daf241d9e55a6e60fc004ed61f787641595b1e62) ) |
| 4175 | 4390 | ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) ) |
| 4176 | 4391 | |
| 4177 | #if USE_HD64x180 | |
| 4178 | 4392 | ROM_REGION( 0x10000, "cpu1", 0 ) /* Sound HD647180 code */ |
| 4179 | 4393 | /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */ |
| 4180 | 4394 | ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP ) |
| 4181 | #endif | |
| 4182 | 4395 | |
| 4183 | 4396 | ROM_REGION( 0x100000, "gfx1", 0 ) |
| 4184 | 4397 | ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) ) |
| r6428 | r6429 | |
| 4191 | 4404 | ROM_LOAD16_BYTE( "tp021-01a.u10", 0x000000, 0x020000, CRC(c11b13c8) SHA1(da7defc1d3b6ddded910ba56c31fbbdb5ed57b09) ) |
| 4192 | 4405 | ROM_LOAD16_BYTE( "tp021-02a.u11", 0x000001, 0x020000, CRC(8d426767) SHA1(1ed4a8bcbf4352257e7d58cb5c2c91eb48c2f047) ) |
| 4193 | 4406 | |
| 4194 | #if USE_HD64x180 | |
| 4195 | 4407 | ROM_REGION( 0x10000, "cpu1", 0 ) /* Sound HD647180 code */ |
| 4196 | 4408 | /* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */ |
| 4197 | 4409 | ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP ) |
| 4198 | #endif | |
| 4199 | 4410 | |
| 4200 | 4411 | ROM_REGION( 0x100000, "gfx1", 0 ) |
| 4201 | 4412 | ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) ) |
| r6428 | r6429 | |
| 4208 | 4419 | ROM_LOAD16_WORD_SWAP( "tp022_01.r16", 0x000000, 0x080000, CRC(79eb2429) SHA1(088c5ed0ed77557ab71f52cafe35028e3648ae1e) ) |
| 4209 | 4420 | |
| 4210 | 4421 | /* 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) */ | |
| 4216 | 4423 | |
| 4217 | 4424 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 4218 | 4425 | ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) ) |
| r6428 | r6429 | |
| 4232 | 4439 | ROM_LOAD16_WORD_SWAP( "01.u64", 0x000000, 0x080000, CRC(fe5bd7f4) SHA1(9c725466112a514c9ed0fb074422d291c175c3f4) ) |
| 4233 | 4440 | |
| 4234 | 4441 | /* 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) */ | |
| 4240 | 4443 | |
| 4241 | 4444 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 4242 | 4445 | ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) ) |
| r6428 | r6429 | |
| 4257 | 4460 | |
| 4258 | 4461 | /* Secondary CPU is a Toaplan marked chip, (TS-004-Dash TOA PLAN) */ |
| 4259 | 4462 | /* 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) ) | |
| 4268 | 4465 | |
| 4269 | 4466 | ROM_REGION( 0x800000, "gfx1", 0 ) |
| 4270 | 4467 | ROM_LOAD( "kbash03.bin", 0x000000, 0x200000, CRC(32ad508b) SHA1(e473489beaf649d3e5236770eb043327e309850c) ) |
| r6428 | r6429 | |
| 4403 | 4600 | ROM_LOAD16_WORD_SWAP( "tp-026-1", 0x000000, 0x080000, CRC(f7b1746a) SHA1(0bbea6f111b818bc9b9b2060af4fe900f37cf7f9) ) |
| 4404 | 4601 | |
| 4405 | 4602 | /* 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) */ | |
| 4411 | 4604 | |
| 4412 | 4605 | ROM_REGION( 0x400000, "gfx1", 0 ) |
| 4413 | 4606 | ROM_LOAD( "tp-026-3", 0x000000, 0x200000, CRC(e5578d98) SHA1(280d2b716d955e767d311fc9596823852435b6d7) ) |
| r6428 | r6429 | |
| 4484 | 4677 | ROM_LOAD16_WORD_SWAP( "01.bin", 0x000000, 0x080000, CRC(4923f790) SHA1(1c2d66b432d190d0fb6ac7ca0ec0687aea3ccbf4) ) |
| 4485 | 4678 | |
| 4486 | 4679 | /* 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) */ | |
| 4492 | 4681 | |
| 4493 | 4682 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 4494 | 4683 | ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) ) |
| r6428 | r6429 | |
| 4501 | 4690 | ROM_LOAD16_WORD_SWAP( "tp027-01.rom", 0x000000, 0x080000, CRC(8d8c0392) SHA1(824dde274c8bef8a87c54d8ccdda7f0feb8d11e1) ) |
| 4502 | 4691 | |
| 4503 | 4692 | /* 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) */ | |
| 4509 | 4694 | |
| 4510 | 4695 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 4511 | 4696 | ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) ) |
| r6428 | r6429 | |
| 4518 | 4703 | ROM_LOAD16_WORD_SWAP( "tp027_01.bin", 0x000000, 0x080000, CRC(731d50f4) SHA1(794255d0a809cda9170f5bac473df9d7f0efdac8) ) |
| 4519 | 4704 | |
| 4520 | 4705 | /* 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) */ | |
| 4526 | 4707 | |
| 4527 | 4708 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 4528 | 4709 | ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) ) |
| r6428 | r6429 | |
| 4535 | 4716 | ROM_LOAD16_WORD_SWAP( "tp030_01.bin", 0x000000, 0x080000, CRC(3873d7dd) SHA1(baf6187d7d554cfcf4a86b63f07fc30df7ef84c9) ) |
| 4536 | 4717 | |
| 4537 | 4718 | /* 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) */ | |
| 4543 | 4720 | |
| 4544 | 4721 | ROM_REGION( 0x400000, "gfx1", 0 ) |
| 4545 | 4722 | ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) ) |
| r6428 | r6429 | |
| 4561 | 4738 | ROM_LOAD16_WORD_SWAP( "tp030_1a.bin", 0x000000, 0x080000, CRC(cb1d4554) SHA1(ef31f24d77e1c13bdf5558a04a6253e2e3e6a790) ) |
| 4562 | 4739 | |
| 4563 | 4740 | /* 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) */ | |
| 4569 | 4742 | |
| 4570 | 4743 | ROM_REGION( 0x400000, "gfx1", 0 ) |
| 4571 | 4744 | ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) ) |
| r6428 | r6429 | |
| 4587 | 4760 | ROM_LOAD16_WORD_SWAP( "tp030-sp.u69", 0x000000, 0x080000, CRC(8072a0cd) SHA1(3a0a9cdf894926a16800c4882a2b00383d981367) ) |
| 4588 | 4761 | |
| 4589 | 4762 | /* 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) */ | |
| 4595 | 4764 | |
| 4596 | 4765 | ROM_REGION( 0x400000, "gfx1", 0 ) |
| 4597 | 4766 | ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) ) |
| r6428 | r6429 | |
| 5279 | 5448 | GAME( 1998, batrid, 0, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) |
| 5280 | 5449 | GAME( 1998, batridu, batrid, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (U.S.A.) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) |
| 5281 | 5450 | GAME( 1998, batridc, batrid, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (China) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) |
| 5282 | GAME( 1998, batridj, batrid, batrider, batrid | |
| 5451 | GAME( 1998, batridj, batrid, batrider, batrid | |
| 5283 | 5452 | GAME( 1998, batridk, batrid, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) |
| 5284 | 5453 | // version A is older code |
| 5285 | GAME( 1998, batridja, batrid, batrider, batrid | |
| 5454 | GAME( 1998, batridja, batrid, batrider, batrid | |
| 5286 | 5455 | |
| 5287 | 5456 | // Battle Bakraid |
| 5288 | 5457 | // the 'unlimited' version is a newer revision of the code. |
| r6428 | r6429 | |
|---|---|---|
| 153 | 153 | AM_RANGE(0x2043, 0x2043) AM_WRITENOP /* ??? */ |
| 154 | 154 | AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) /* irq, nmi enable, screen flip */ |
| 155 | 155 | 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) | |
| 157 | 157 | AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") AM_WRITENOP /* mirror of the previous? */ |
| 158 | 158 | AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM") AM_WRITE(watchdog_reset_w) |
| 159 | 159 | AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1") |
| r6428 | r6429 | |
| 278 | 278 | /* sound hardware */ |
| 279 | 279 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 280 | 280 | |
| 281 | MDRV_SOUND_ADD("sn", SN76489, MASTER_CLOCK/12) | |
| 281 | MDRV_SOUND_ADD("snsnd", SN76489, MASTER_CLOCK/12) | |
| 282 | 282 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 283 | 283 | |
| 284 | 284 | MDRV_SOUND_ADD("vlm", VLM5030, VOICE_CLOCK) |
| r6428 | r6429 | |
|---|---|---|
| 161 | 161 | AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */ |
| 162 | 162 | AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) /* OKI6295 */ |
| 163 | 163 | // 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 */ | |
| 165 | 165 | AM_RANGE(0x0b00, 0x0b00) AM_READ(soundlatch_r) /* Sound latch */ |
| 166 | 166 | AM_RANGE(0x0c00, 0xffff) AM_ROM /* ROM */ |
| 167 | 167 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 236 | 236 | /* sound hardware */ |
| 237 | 237 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 238 | 238 | |
| 239 | MDRV_SOUND_ADD("ym", YM3812, 3580000) | |
| 239 | MDRV_SOUND_ADD("ymsnd", YM3812, 3580000) | |
| 240 | 240 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 241 | 241 | |
| 242 | 242 | MDRV_SOUND_ADD("oki", OKIM6295, 1056000) |
| r6428 | r6429 | |
|---|---|---|
| 700 | 700 | AM_RANGE(0x9006, 0x9006) AM_WRITENOP // ? |
| 701 | 701 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) // From main CPU |
| 702 | 702 | 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) | |
| 704 | 704 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", wecleman_K00723216_bank_w) // Samples banking |
| 705 | 705 | ADDRESS_MAP_END |
| 706 | 706 | |
| r6428 | r6429 | |
| 1116 | 1116 | /* sound hardware */ |
| 1117 | 1117 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1118 | 1118 | |
| 1119 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 1119 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1120 | 1120 | MDRV_SOUND_ROUTE(0, "mono", 0.85) |
| 1121 | 1121 | MDRV_SOUND_ROUTE(1, "mono", 0.85) |
| 1122 | 1122 |
| r6428 | r6429 | |
|---|---|---|
| 160 | 160 | static WRITE8_HANDLER( port_sound_w ) |
| 161 | 161 | { |
| 162 | 162 | 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"); | |
| 164 | 164 | |
| 165 | 165 | /* D0 - interrupt enable - also goes to PC3259 as /HTCTRL */ |
| 166 | 166 | cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), (data & 0x01) ? TRUE : FALSE); |
| r6428 | r6429 | |
|---|---|---|
| 115 | 115 | |
| 116 | 116 | static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) |
| 117 | 117 | 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) | |
| 120 | 120 | ADDRESS_MAP_END |
| 121 | 121 | |
| 122 | 122 | |
| r6428 | r6429 | |
| 314 | 314 | /* sound hardware */ |
| 315 | 315 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 316 | 316 | |
| 317 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 317 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 318 | 318 | MDRV_SOUND_CONFIG(ay8910_config) |
| 319 | 319 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 320 | 320 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 604 | 604 | |
| 605 | 605 | ROM_START( lastduelo ) |
| 606 | 606 | 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) ) | |
| 611 | 611 | |
| 612 | 612 | ROM_REGION( 0x10000 , "audiocpu", 0 ) /* audio CPU */ |
| 613 | 613 | ROM_LOAD( "ld_02.16h", 0x0000, 0x10000, CRC(91834d0c) SHA1(aaa63b8470fc19b82c25028ab27675a7837ab9a1) ) |
| r6428 | r6429 | |
| 632 | 632 | ROM_LOAD( "ld.3d", 0x0000, 0x0100, CRC(729a1ddc) SHA1(eb1d48785a0f187a4cb9c164e6c82481268b3174) ) /* priority (not used) BPROM type 63S141 or compatible like 82S129A */ |
| 633 | 633 | ROM_END |
| 634 | 634 | |
| 635 | ROM_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 */ | |
| 663 | ROM_END | |
| 664 | ||
| 635 | 665 | ROM_START( lastduelb ) |
| 636 | 666 | ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */ |
| 637 | 667 | ROM_LOAD16_BYTE( "ld_08.bin", 0x00000, 0x10000, CRC(43811a96) SHA1(79db50c941d8845f1642f2257c610768172923a3) ) |
| r6428 | r6429 | |
| 827 | 857 | |
| 828 | 858 | GAME( 1988, lastduel, 0, lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (US New Ver.)", 0 ) |
| 829 | 859 | GAME( 1988, lastduelo, lastduel, lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (US Old Ver.)", 0 ) |
| 860 | GAME( 1988, lastduelj, lastduel, lastduel, lastduel, 0, ROT270, "Capcom", "Last Duel (Japan)", 0 ) | |
| 830 | 861 | GAME( 1988, lastduelb, lastduel, lastduel, lastduel, 0, ROT270, "bootleg", "Last Duel (bootleg)", 0 ) |
| 831 | 862 | GAME( 1989, madgear, 0, madgear, madgear, 0, ROT270, "Capcom", "Mad Gear (US)", 0 ) |
| 832 | 863 | GAME( 1989, madgearj, madgear, madgear, madgear, 0, ROT270, "Capcom", "Mad Gear (Japan)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 294 | 294 | |
| 295 | 295 | /* sound hardware */ |
| 296 | 296 | // MDRV_SPEAKER_STANDARD_MONO("mono") |
| 297 | // MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 297 | // MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 298 | 298 | // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 299 | 299 | MACHINE_DRIVER_END |
| 300 | 300 |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Atari Boxer (prototype) driver | |
| 3 | Atari Boxer (prototype) driver | |
| 4 | 4 | |
| 5 | AKA Boxing, both game titles appear in the schematics | |
| 5 | AKA Boxing, both game titles appear in the schematics | |
| 6 | 6 | |
| 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. | |
| 8 | 8 | |
| 9 | 9 | ***************************************************************************/ |
| 10 | 10 | |
| 11 | 11 | #include "driver.h" |
| 12 | 12 | #include "cpu/m6502/m6502.h" |
| 13 | 13 | |
| 14 | ||
| 14 | 15 | #define MASTER_CLOCK XTAL_12_096MHz |
| 15 | 16 | |
| 16 | extern UINT8* boxer_tile_ram; | |
| 17 | extern UINT8* boxer_sprite_ram; | |
| 17 | /************************************* | |
| 18 | * | |
| 19 | * Driver data | |
| 20 | * | |
| 21 | *************************************/ | |
| 18 | 22 | |
| 19 | extern VIDEO_UPDATE( boxer ); | |
| 23 | typedef struct _boxer_state boxer_state; | |
| 24 | struct _boxer_state | |
| 25 | { | |
| 26 | /* memory pointers */ | |
| 27 | UINT8 * tile_ram; | |
| 28 | UINT8 * sprite_ram; | |
| 20 | 29 | |
| 21 | static UINT8 pot_state; | |
| 22 | static UINT8 pot_latch; | |
| 30 | /* misc */ | |
| 31 | UINT8 pot_state; | |
| 32 | UINT8 pot_latch; | |
| 33 | }; | |
| 23 | 34 | |
| 35 | /************************************* | |
| 36 | * | |
| 37 | * Interrupts / Timers | |
| 38 | * | |
| 39 | *************************************/ | |
| 24 | 40 | |
| 25 | 41 | static TIMER_CALLBACK( pot_interrupt ) |
| 26 | 42 | { |
| 43 | boxer_state *state = (boxer_state *)machine->driver_data; | |
| 27 | 44 | int mask = param; |
| 28 | 45 | |
| 29 | if (pot_latch & mask) | |
| 46 | if (state->pot_latch & mask) | |
| 30 | 47 | cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE); |
| 31 | 48 | |
| 32 | pot_state |= mask; | |
| 49 | state->pot_state |= mask; | |
| 33 | 50 | } |
| 34 | 51 | |
| 35 | 52 | |
| 36 | 53 | static TIMER_CALLBACK( periodic_callback ) |
| 37 | 54 | { |
| 55 | boxer_state *state = (boxer_state *)machine->driver_data; | |
| 38 | 56 | int scanline = param; |
| 39 | 57 | |
| 40 | 58 | cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE); |
| r6428 | r6429 | |
| 58 | 76 | if (mask[i] != 0) |
| 59 | 77 | timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, i, 0), NULL, mask[i], pot_interrupt); |
| 60 | 78 | |
| 61 | pot_state = 0; | |
| 79 | state->pot_state = 0; | |
| 62 | 80 | } |
| 63 | 81 | |
| 64 | 82 | scanline += 64; |
| r6428 | r6429 | |
| 70 | 88 | } |
| 71 | 89 | |
| 72 | 90 | |
| 91 | /************************************* | |
| 92 | * | |
| 93 | * Video system | |
| 94 | * | |
| 95 | *************************************/ | |
| 96 | ||
| 73 | 97 | static PALETTE_INIT( boxer ) |
| 74 | 98 | { |
| 75 | 99 | palette_set_color(machine,0, MAKE_RGB(0x00,0x00,0x00)); |
| r6428 | r6429 | |
| 79 | 103 | palette_set_color(machine,3, MAKE_RGB(0x00,0x00,0x00)); |
| 80 | 104 | } |
| 81 | 105 | |
| 106 | static 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; | |
| 82 | 110 | |
| 83 | static 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 | ||
| 154 | VIDEO_UPDATE( boxer ) | |
| 84 | 155 | { |
| 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; | |
| 86 | 158 | |
| 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; | |
| 88 | 179 | } |
| 89 | 180 | |
| 90 | 181 | |
| 182 | /************************************* | |
| 183 | * | |
| 184 | * Memory handlers | |
| 185 | * | |
| 186 | *************************************/ | |
| 187 | ||
| 91 | 188 | static READ8_HANDLER( boxer_input_r ) |
| 92 | 189 | { |
| 93 | 190 | UINT8 val = input_port_read(space->machine, "IN0"); |
| r6428 | r6429 | |
| 101 | 198 | |
| 102 | 199 | static READ8_HANDLER( boxer_misc_r ) |
| 103 | 200 | { |
| 201 | boxer_state *state = (boxer_state *)space->machine->driver_data; | |
| 104 | 202 | UINT8 val = 0; |
| 105 | 203 | |
| 106 | 204 | switch (offset & 3) |
| 107 | 205 | { |
| 108 | 206 | case 0: |
| 109 | val = pot_state & pot_latch; | |
| 207 | val = state->pot_state & state->pot_latch; | |
| 110 | 208 | break; |
| 111 | 209 | |
| 112 | 210 | case 1: |
| r6428 | r6429 | |
| 140 | 238 | |
| 141 | 239 | static WRITE8_HANDLER( boxer_pot_w ) |
| 142 | 240 | { |
| 241 | boxer_state *state = (boxer_state *)space->machine->driver_data; | |
| 143 | 242 | /* BIT0 => HPOT1 */ |
| 144 | 243 | /* BIT1 => VPOT1 */ |
| 145 | 244 | /* BIT2 => RPOT1 */ |
| r6428 | r6429 | |
| 147 | 246 | /* BIT4 => VPOT2 */ |
| 148 | 247 | /* BIT5 => RPOT2 */ |
| 149 | 248 | |
| 150 | pot_latch = data & 0x3f; | |
| 249 | state->pot_latch = data & 0x3f; | |
| 151 | 250 | |
| 152 | 251 | cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE); |
| 153 | 252 | } |
| r6428 | r6429 | |
| 177 | 276 | } |
| 178 | 277 | |
| 179 | 278 | |
| 279 | /************************************* | |
| 280 | * | |
| 281 | * Address maps | |
| 282 | * | |
| 283 | *************************************/ | |
| 180 | 284 | |
| 181 | ||
| 182 | 285 | static ADDRESS_MAP_START( boxer_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 183 | 286 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 184 | 287 | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 185 | AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE( | |
| 288 | AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE_MEMBER( | |
| 186 | 289 | AM_RANGE(0x0800, 0x08ff) AM_READ(boxer_input_r) |
| 187 | 290 | AM_RANGE(0x1000, 0x17ff) AM_READ(boxer_misc_r) |
| 188 | 291 | AM_RANGE(0x1800, 0x1800) AM_WRITE(boxer_pot_w) |
| r6428 | r6429 | |
| 191 | 294 | AM_RANGE(0x1b00, 0x1bff) AM_WRITE(boxer_crowd_w) |
| 192 | 295 | AM_RANGE(0x1c00, 0x1cff) AM_WRITE(boxer_irq_reset_w) |
| 193 | 296 | AM_RANGE(0x1d00, 0x1dff) AM_WRITE(boxer_bell_w) |
| 194 | AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_BASE( | |
| 297 | AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_BASE_MEMBER( | |
| 195 | 298 | AM_RANGE(0x1f00, 0x1fff) AM_WRITE(watchdog_reset_w) |
| 196 | 299 | AM_RANGE(0x3000, 0x3fff) AM_ROM |
| 197 | 300 | ADDRESS_MAP_END |
| 198 | 301 | |
| 199 | 302 | |
| 303 | /************************************* | |
| 304 | * | |
| 305 | * Input ports | |
| 306 | * | |
| 307 | *************************************/ | |
| 308 | ||
| 200 | 309 | static INPUT_PORTS_START( boxer ) |
| 201 | ||
| 202 | 310 | PORT_START("IN0") |
| 203 | 311 | PORT_BIT ( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 204 | 312 | PORT_BIT ( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) /* TIMER */ |
| r6428 | r6429 | |
| 242 | 350 | 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) |
| 243 | 351 | |
| 244 | 352 | 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" ) | |
| 250 | 357 | INPUT_PORTS_END |
| 251 | 358 | |
| 252 | 359 | |
| 360 | /************************************* | |
| 361 | * | |
| 362 | * Graphics definitions | |
| 363 | * | |
| 364 | *************************************/ | |
| 365 | ||
| 253 | 366 | static const gfx_layout tile_layout = |
| 254 | 367 | { |
| 255 | 368 | 8, 8, |
| r6428 | r6429 | |
| 289 | 402 | GFXDECODE_END |
| 290 | 403 | |
| 291 | 404 | |
| 405 | /************************************* | |
| 406 | * | |
| 407 | * Machine driver | |
| 408 | * | |
| 409 | *************************************/ | |
| 410 | ||
| 411 | static 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 | ||
| 419 | static 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 | ||
| 292 | 429 | static MACHINE_DRIVER_START(boxer) |
| 293 | 430 | |
| 431 | /* driver data */ | |
| 432 | MDRV_DRIVER_DATA(boxer_state) | |
| 433 | ||
| 294 | 434 | /* basic machine hardware */ |
| 295 | 435 | MDRV_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) |
| 296 | 436 | MDRV_CPU_PROGRAM_MAP(boxer_map) |
| 297 | 437 | |
| 298 | | |
| 438 | MDRV_MACHINE_START(box | |
| 299 | 439 | MDRV_MACHINE_RESET(boxer) |
| 300 | 440 | |
| 301 | ||
| 441 | /* video hardware */ | |
| 302 | 442 | MDRV_SCREEN_ADD("screen", RASTER) |
| 303 | 443 | MDRV_SCREEN_REFRESH_RATE(60) |
| 304 | 444 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| r6428 | r6429 | |
| 314 | 454 | MACHINE_DRIVER_END |
| 315 | 455 | |
| 316 | 456 | |
| 457 | /************************************* | |
| 458 | * | |
| 459 | * ROM definition | |
| 460 | * | |
| 461 | *************************************/ | |
| 462 | ||
| 317 | 463 | ROM_START( boxer ) |
| 318 | ||
| 319 | 464 | ROM_REGION( 0x4000, "maincpu", 0 ) |
| 320 | 465 | ROM_LOAD_NIB_LOW ( "3400l.e1", 0x3400, 0x0400, CRC(df85afa4) SHA1(5a74a08f1e0b0bbec02999d5e46513d8afd333ac) ) |
| 321 | 466 | ROM_LOAD_NIB_HIGH( "3400m.a1", 0x3400, 0x0400, CRC(23fe06aa) SHA1(03a4eedbf60f07d1dd8d7af576828df5f032146e) ) |
| r6428 | r6429 | |
| 344 | 489 | ROM_END |
| 345 | 490 | |
| 346 | 491 | |
| 492 | /************************************* | |
| 493 | * | |
| 494 | * Game driver | |
| 495 | * | |
| 496 | *************************************/ | |
| 497 | ||
| 347 | 498 | GAME( 1978, boxer, 0, boxer, boxer, 0, 0, "Atari", "Boxer (prototype)", GAME_NO_SOUND ) |
| r6428 | r6429 | |
|---|---|---|
| 175 | 175 | static ADDRESS_MAP_START( sound_cpu_io_map, ADDRESS_SPACE_IO, 8 ) |
| 176 | 176 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 177 | 177 | 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) | |
| 179 | 179 | ADDRESS_MAP_END |
| 180 | 180 | |
| 181 | 181 | static VIDEO_START(roul) |
| r6428 | r6429 | |
| 269 | 269 | MDRV_VIDEO_UPDATE(roul) |
| 270 | 270 | |
| 271 | 271 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 272 | MDRV_SOUND_ADD("ay", AY8910, 1000000) | |
| 272 | MDRV_SOUND_ADD("aysnd", AY8910, 1000000) | |
| 273 | 273 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 274 | 274 | MACHINE_DRIVER_END |
| 275 | 275 |
| r6428 | r6429 | |
|---|---|---|
| 702 | 702 | AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM |
| 703 | 703 | AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r, bigrun_soundbank_w) // From Main CPU |
| 704 | 704 | 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) | |
| 706 | 706 | AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) |
| 707 | 707 | AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) |
| 708 | 708 | AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM |
| r6428 | r6429 | |
| 724 | 724 | AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki2", cischeat_soundbank_w) // Sample Banking |
| 725 | 725 | AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w) // To Main CPU |
| 726 | 726 | 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) | |
| 728 | 728 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) |
| 729 | 729 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) |
| 730 | 730 | AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM |
| r6428 | r6429 | |
| 740 | 740 | AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w) // Sample Banking (cischeat: 40002) |
| 741 | 741 | AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w) // Sample Banking (cischeat: 40004) |
| 742 | 742 | 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) | |
| 744 | 744 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) |
| 745 | 745 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) |
| 746 | 746 | AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM (cischeat: f0000-fffff) |
| r6428 | r6429 | |
| 757 | 757 | AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w) // Sample Banking |
| 758 | 758 | AM_RANGE(0x04000e, 0x04000f) AM_WRITE(SMH_NOP) // ? 0 (f1gpstar: no) |
| 759 | 759 | 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) | |
| 761 | 761 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff) |
| 762 | 762 | AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff) |
| 763 | 763 | AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM |
| r6428 | r6429 | |
| 1600 | 1600 | /* sound hardware */ |
| 1601 | 1601 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1602 | 1602 | |
| 1603 | MDRV_SOUND_ADD("ym", YM2151, STD_FM_CLOCK) | |
| 1603 | MDRV_SOUND_ADD("ymsnd", YM2151, STD_FM_CLOCK) | |
| 1604 | 1604 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1605 | 1605 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1606 | 1606 |
| r6428 | r6429 | |
|---|---|---|
| 122 | 122 | AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w) |
| 123 | 123 | AM_RANGE(0xe000, 0xe7ff) AM_RAM |
| 124 | 124 | 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) | |
| 126 | 126 | AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w) |
| 127 | 127 | AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) |
| 128 | 128 | AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&shared) |
| r6428 | r6429 | |
| 350 | 350 | |
| 351 | 351 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 352 | 352 | |
| 353 | MDRV_SOUND_ADD("st", ST0016, 0) | |
| 353 | MDRV_SOUND_ADD("stsnd", ST0016, 0) | |
| 354 | 354 | MDRV_SOUND_CONFIG(st0016_config) |
| 355 | 355 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 356 | 356 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 848 | 848 | static ADDRESS_MAP_START( bullsdrt_port_map, ADDRESS_SPACE_IO, 8 ) |
| 849 | 849 | AM_RANGE(0x00, 0x00) AM_WRITE(bullsdrt_sprites_bank_w) |
| 850 | 850 | 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) | |
| 852 | 852 | ADDRESS_MAP_END |
| 853 | 853 | |
| 854 | 854 | |
| r6428 | r6429 | |
| 1741 | 1741 | /* sound hardware */ |
| 1742 | 1742 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1743 | 1743 | |
| 1744 | MDRV_SOUND_ADD("sn", SN76496, 12096000/8) | |
| 1744 | MDRV_SOUND_ADD("snsnd", SN76496, 12096000/8) | |
| 1745 | 1745 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1746 | 1746 | MACHINE_DRIVER_END |
| 1747 | 1747 |
| r6428 | r6429 | |
|---|---|---|
| 691 | 691 | AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10)) /* Fallthrough */ |
| 692 | 692 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 693 | 693 | 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) | |
| 695 | 695 | AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP,taitosound_slave_port_w) |
| 696 | 696 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w) |
| 697 | 697 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 986 | 986 | /* sound hardware */ |
| 987 | 987 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 988 | 988 | |
| 989 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 989 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 990 | 990 | MDRV_SOUND_CONFIG(ym2610_config) |
| 991 | 991 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 992 | 992 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1037 | 1037 | ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) ) |
| 1038 | 1038 | ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) ) |
| 1039 | 1039 | |
| 1040 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1040 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1041 | 1041 | ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) ) |
| 1042 | 1042 | |
| 1043 | 1043 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 1090 | 1090 | ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) ) |
| 1091 | 1091 | ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) ) |
| 1092 | 1092 | |
| 1093 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1093 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1094 | 1094 | ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) ) |
| 1095 | 1095 | |
| 1096 | 1096 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 1126 | 1126 | ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) ) |
| 1127 | 1127 | ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) ) |
| 1128 | 1128 | |
| 1129 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1129 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1130 | 1130 | ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) ) |
| 1131 | 1131 | |
| 1132 | 1132 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* delta-t samples */ |
| r6428 | r6429 | |
| 1162 | 1162 | ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) ) |
| 1163 | 1163 | ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) ) |
| 1164 | 1164 | |
| 1165 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1165 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1166 | 1166 | ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) ) |
| 1167 | 1167 | |
| 1168 | 1168 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* delta-t samples */ |
| r6428 | r6429 | |
| 1198 | 1198 | ROM_LOAD16_BYTE( "c32-07.69", 0x100000, 0x80000, CRC(743d46bd) SHA1(6b655b3fbfad8b52e38d7388aab564f5fa3e778c) ) |
| 1199 | 1199 | ROM_LOAD16_BYTE( "c32-08.68", 0x100001, 0x80000, CRC(faab63b0) SHA1(6e1aaf2642bee7d7bc9e21a7bf7f81d9ff766c50) ) |
| 1200 | 1200 | |
| 1201 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1201 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1202 | 1202 | ROM_LOAD( "c32-11.8", 0x00000, 0x80000, CRC(2b326ff0) SHA1(3c442e3c97234e4514a7bed31644212586869bd0) ) |
| 1203 | 1203 | |
| 1204 | 1204 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* delta-t samples */ |
| r6428 | r6429 | |
|---|---|---|
| 397 | 397 | static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 ) |
| 398 | 398 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 399 | 399 | 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) | |
| 401 | 401 | AM_RANGE(0x10, 0x10) AM_READ(soundlatch_r) |
| 402 | 402 | AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w) |
| 403 | 403 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 743 | 743 | /* sound hardware */ |
| 744 | 744 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 745 | 745 | |
| 746 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 746 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 747 | 747 | MDRV_SOUND_CONFIG(ym2610_config) |
| 748 | 748 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 749 | 749 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| r6428 | r6429 | |
| 783 | 783 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 784 | 784 | ROM_LOAD( "lh534j11.126", 0x00000, 0x80000, CRC(bf85fb0d) SHA1(358f91bbff2d3260f83b5a0422c0d985d1735cef) ) |
| 785 | 785 | |
| 786 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 786 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 787 | 787 | ROM_LOAD( "lh534j09.123", 0x00000, 0x80000, CRC(6c2ce9a5) SHA1(a4011ecfb505191c9934ba374933cd11b331d55a) ) |
| 788 | 788 | ROM_LOAD( "lh534j10.124", 0x80000, 0x80000, CRC(e3682221) SHA1(3e1cda07cf451955dc473eabe007854e5148ae27) ) |
| 789 | 789 | ROM_END |
| r6428 | r6429 | |
| 810 | 810 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 811 | 811 | ROM_LOAD( "lh534j11.126", 0x00000, 0x80000, CRC(bf85fb0d) SHA1(358f91bbff2d3260f83b5a0422c0d985d1735cef) ) |
| 812 | 812 | |
| 813 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 813 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 814 | 814 | ROM_LOAD( "lh534j09.123", 0x00000, 0x80000, CRC(6c2ce9a5) SHA1(a4011ecfb505191c9934ba374933cd11b331d55a) ) |
| 815 | 815 | ROM_LOAD( "lh534j10.124", 0x80000, 0x80000, CRC(e3682221) SHA1(3e1cda07cf451955dc473eabe007854e5148ae27) ) |
| 816 | 816 | ROM_END |
| r6428 | r6429 | |
| 839 | 839 | ROM_REGION( 0x040000, "ym.deltat", 0 ) /* sound samples */ |
| 840 | 840 | ROM_LOAD( "ic126.bin", 0x00000, 0x40000, CRC(7a92fbc9) SHA1(c13be1e84fc8e74c85d25d3357e078bc9e264682) ) |
| 841 | 841 | |
| 842 | ROM_REGION( 0x140000, "ym", 0 ) /* sound samples */ | |
| 842 | ROM_REGION( 0x140000, "ymsnd", 0 ) /* sound samples */ | |
| 843 | 843 | ROM_LOAD( "ic123.bin", 0x00000, 0x80000, CRC(ee4995cf) SHA1(1b47938ddc87709f8d118b86fe62602972c77ced) ) |
| 844 | 844 | ROM_LOAD( "ic124.bin", 0x80000, 0x40000, CRC(076f58c3) SHA1(bd78f39b85b2697e733896705355e21b8d2a141d) ) |
| 845 | 845 | ROM_END |
| r6428 | r6429 | |
|---|---|---|
| 399 | 399 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 400 | 400 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 401 | 401 | 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) | |
| 403 | 403 | AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w) |
| 404 | 404 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 405 | 405 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */ |
| r6428 | r6429 | |
| 631 | 631 | /* sound hardware */ |
| 632 | 632 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 633 | 633 | |
| 634 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 634 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 635 | 635 | MDRV_SOUND_CONFIG(airsys_ym2610_interface) |
| 636 | 636 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 637 | 637 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 673 | 673 | ROM_LOAD16_BYTE( "b62-31.29", 0x0c0000, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) |
| 674 | 674 | ROM_LOAD16_BYTE( "b62-32.30", 0x0c0001, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) |
| 675 | 675 | |
| 676 | ROM_REGION( 0xa0000, "ym", 0 ) /* ADPCM samples */ | |
| 676 | ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 677 | 677 | ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) ) |
| 678 | 678 | ROM_LOAD( "b62-16.4", 0x20000, 0x20000, CRC(203a5c27) SHA1(f6fc9322dea8d82bfec3be3fdc8616dc6adf666e) ) |
| 679 | 679 | ROM_LOAD( "b62-15.3", 0x40000, 0x20000, CRC(e35ffe81) SHA1(f35afdd7cfd4c09907fb062beb5ae46c2286a381) ) |
| r6428 | r6429 | |
| 720 | 720 | ROM_LOAD16_BYTE( "c45-14.31", 0x0c0000, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) ) |
| 721 | 721 | ROM_LOAD16_BYTE( "c45-18.43", 0x0c0001, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) ) |
| 722 | 722 | |
| 723 | ROM_REGION( 0xa0000, "ym", 0 ) /* ADPCM samples */ | |
| 723 | ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 724 | 724 | ROM_LOAD( "c45-01.5", 0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) ) |
| 725 | 725 | ROM_LOAD( "c45-02.4", 0x20000, 0x20000, CRC(2fc0a88e) SHA1(6a635671fa2518f74015429ce580d7b7f00299ad) ) |
| 726 | 726 | ROM_LOAD( "c45-03.3", 0x40000, 0x20000, CRC(0e1e5b5f) SHA1(a53d5ba01825f825e31a014cb4808f59ef86f0c9) ) |
| r6428 | r6429 | |
|---|---|---|
| 200 | 200 | AM_RANGE(0x0100, 0x01ff) AM_RAM |
| 201 | 201 | AM_RANGE(0x0200, 0x02ff) AM_RAM |
| 202 | 202 | 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) | |
| 204 | 204 | AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE(3) |
| 205 | 205 | AM_RANGE(0x3c01, 0x3c01) AM_WRITE(SMH_RAM) |
| 206 | 206 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 382 | 382 | /* basic machine hardware */ |
| 383 | 383 | MDRV_CPU_ADD("maincpu", M6809, 49152000/32) |
| 384 | 384 | MDRV_CPU_PROGRAM_MAP(m6809_map) |
| 385 | MDRV_CPU_VBLANK_INT("2d", m6809_vb_interrupt) | |
| 385 | MDRV_CPU_VBLANK_INT("2dscreen", m6809_vb_interrupt) | |
| 386 | 386 | |
| 387 | 387 | MDRV_CPU_ADD("audiocpu", M65C02, 49152000/24) |
| 388 | 388 | MDRV_CPU_PROGRAM_MAP(m6502_a_map) |
| r6428 | r6429 | |
| 392 | 392 | |
| 393 | 393 | MDRV_CPU_ADD("sub", M68000, 49152000/4) |
| 394 | 394 | MDRV_CPU_PROGRAM_MAP(m68k_map) |
| 395 | MDRV_CPU_VBLANK_INT("2d", m68k_vb_interrupt) | |
| 395 | MDRV_CPU_VBLANK_INT("2dscreen", m68k_vb_interrupt) | |
| 396 | 396 | |
| 397 | 397 | MDRV_CPU_ADD("mcu", HD63701, 49152000/8) /* or compatible 6808 with extra instructions */ |
| 398 | 398 | MDRV_CPU_PROGRAM_MAP(mcu_map) |
| 399 | 399 | 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) | |
| 401 | 401 | |
| 402 | 402 | MDRV_QUANTUM_TIME(HZ(6000)) |
| 403 | 403 | |
| r6428 | r6429 | |
| 411 | 411 | MDRV_PALETTE_LENGTH(4096) |
| 412 | 412 | MDRV_DEFAULT_LAYOUT(layout_horizont) |
| 413 | 413 | |
| 414 | MDRV_SCREEN_ADD("2d", RASTER) | |
| 414 | MDRV_SCREEN_ADD("2dscreen", RASTER) | |
| 415 | 415 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 416 | 416 | MDRV_SCREEN_REFRESH_RATE(60.606060) |
| 417 | 417 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| r6428 | r6429 | |
| 441 | 441 | /* sound hardware */ |
| 442 | 442 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 443 | 443 | |
| 444 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 444 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 445 | 445 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 446 | 446 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 447 | 447 |
| r6428 | r6429 | |
|---|---|---|
| 165 | 165 | |
| 166 | 166 | static ADDRESS_MAP_START( snd_portmap, ADDRESS_SPACE_IO, 8 ) |
| 167 | 167 | 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) | |
| 169 | 169 | AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", aquarium_oki_r, aquarium_oki_w) |
| 170 | 170 | AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r) |
| 171 | 171 | AM_RANGE(0x06, 0x06) AM_WRITE(aquarium_snd_ack_w) |
| r6428 | r6429 | |
| 377 | 377 | /* sound hardware */ |
| 378 | 378 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 379 | 379 | |
| 380 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 380 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 381 | 381 | MDRV_SOUND_CONFIG(ym2151_config) |
| 382 | 382 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 383 | 383 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 441 | 441 | { |
| 442 | 442 | if (!BIT(data,2)) |
| 443 | 443 | { |
| 444 | const device_config *ym = devtag_get_device(space->machine, "ym"); | |
| 444 | const device_config *ym = devtag_get_device(space->machine, "ymsnd"); | |
| 445 | 445 | ym2413_w(ym,BIT(data,1),porta); |
| 446 | 446 | } |
| 447 | 447 | portb = data; |
| r6428 | r6429 | |
| 480 | 480 | |
| 481 | 481 | if (BIT(portb,6) && !BIT(data,6)) /* clock 1->0 */ |
| 482 | 482 | { |
| 483 | const device_config *ym = devtag_get_device(space->machine, "ym"); | |
| 483 | const device_config *ym = devtag_get_device(space->machine, "ymsnd"); | |
| 484 | 484 | if (!BIT(data,2)) |
| 485 | 485 | { |
| 486 | 486 | /* write */ |
| r6428 | r6429 | |
| 1315 | 1315 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1316 | 1316 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1317 | 1317 | 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) | |
| 1319 | 1319 | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1320 | 1320 | AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM |
| 1321 | 1321 | AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) |
| r6428 | r6429 | |
| 1355 | 1355 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound bank |
| 1356 | 1356 | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) |
| 1357 | 1357 | 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) | |
| 1359 | 1359 | AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM |
| 1360 | 1360 | ADDRESS_MAP_END |
| 1361 | 1361 | |
| r6428 | r6429 | |
| 1421 | 1421 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1422 | 1422 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1423 | 1423 | 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) | |
| 1425 | 1425 | AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1426 | 1426 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w) // EEPROM |
| 1427 | 1427 | AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r,dokyusp_eeprom_bit_w) // EEPROM |
| r6428 | r6429 | |
| 1463 | 1463 | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) // Samples Bank? |
| 1464 | 1464 | AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 |
| 1465 | 1465 | 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) // | |
| 1467 | 1467 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound |
| 1468 | 1468 | ADDRESS_MAP_END |
| 1469 | 1469 | |
| r6428 | r6429 | |
| 1680 | 1680 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1681 | 1681 | AM_RANGE(0x00, 0x00) AM_WRITE(blzntrnd_sh_bankswitch_w) |
| 1682 | 1682 | 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) | |
| 1684 | 1684 | ADDRESS_MAP_END |
| 1685 | 1685 | |
| 1686 | 1686 | static ADDRESS_MAP_START( blzntrnd_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| r6428 | r6429 | |
| 1751 | 1751 | AM_RANGE(0x478888, 0x478889) AM_WRITENOP // ?? |
| 1752 | 1752 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers |
| 1753 | 1753 | 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) | |
| 1755 | 1755 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0xffff) |
| 1756 | 1756 | #if 0 |
| 1757 | 1757 | AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| r6428 | r6429 | |
| 1779 | 1779 | AM_RANGE( 0x470000, 0x47dfff ) AM_RAM |
| 1780 | 1780 | |
| 1781 | 1781 | 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 ) | |
| 1783 | 1783 | |
| 1784 | 1784 | AM_RANGE( 0x700000, 0x71ffff ) AM_READWRITE( SMH_RAM, metro_vram_0_w ) AM_BASE( &metro_vram_0 ) // Layer 0 |
| 1785 | 1785 | AM_RANGE( 0x720000, 0x73ffff ) AM_READWRITE( SMH_RAM, metro_vram_1_w ) AM_BASE( &metro_vram_1 ) // Layer 1 |
| r6428 | r6429 | |
| 3591 | 3591 | /* sound hardware */ |
| 3592 | 3592 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3593 | 3593 | |
| 3594 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 3594 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 3595 | 3595 | MDRV_SOUND_CONFIG(ym2151_config) |
| 3596 | 3596 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 3597 | 3597 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 3639 | 3639 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 3640 | 3640 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 3641 | 3641 | |
| 3642 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 3642 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 3643 | 3643 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3644 | 3644 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3645 | 3645 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3681 | 3681 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 3682 | 3682 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 3683 | 3683 | |
| 3684 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 3684 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 3685 | 3685 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3686 | 3686 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3687 | 3687 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3723 | 3723 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 3724 | 3724 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 3725 | 3725 | |
| 3726 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 3726 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 3727 | 3727 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3728 | 3728 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3729 | 3729 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3765 | 3765 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 3766 | 3766 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 3767 | 3767 | |
| 3768 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 3768 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 3769 | 3769 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3770 | 3770 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3771 | 3771 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3806 | 3806 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 3807 | 3807 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 3808 | 3808 | |
| 3809 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 3809 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 3810 | 3810 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3811 | 3811 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3812 | 3812 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3842 | 3842 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 3843 | 3843 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 3844 | 3844 | |
| 3845 | MDRV_SOUND_ADD("ym", YM2413, 8000000) | |
| 3845 | MDRV_SOUND_ADD("ymsnd", YM2413, 8000000) | |
| 3846 | 3846 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3847 | 3847 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3848 | 3848 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3893 | 3893 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 3894 | 3894 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 3895 | 3895 | |
| 3896 | MDRV_SOUND_ADD("ym", YM2413, 8000000) | |
| 3896 | MDRV_SOUND_ADD("ymsnd", YM2413, 8000000) | |
| 3897 | 3897 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3898 | 3898 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3899 | 3899 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3931 | 3931 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 3932 | 3932 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 3933 | 3933 | |
| 3934 | MDRV_SOUND_ADD("ym", YM2413, 8000000) | |
| 3934 | MDRV_SOUND_ADD("ymsnd", YM2413, 8000000) | |
| 3935 | 3935 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3936 | 3936 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3937 | 3937 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 3969 | 3969 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 3970 | 3970 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 3971 | 3971 | |
| 3972 | MDRV_SOUND_ADD("ym", YM2413, 8000000) | |
| 3972 | MDRV_SOUND_ADD("ymsnd", YM2413, 8000000) | |
| 3973 | 3973 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 3974 | 3974 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 3975 | 3975 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4011 | 4011 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 4012 | 4012 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 4013 | 4013 | |
| 4014 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4014 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4015 | 4015 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 4016 | 4016 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 4017 | 4017 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4053 | 4053 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 4054 | 4054 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 4055 | 4055 | |
| 4056 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4056 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4057 | 4057 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 4058 | 4058 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 4059 | 4059 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4090 | 4090 | /* sound hardware */ |
| 4091 | 4091 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4092 | 4092 | |
| 4093 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 4093 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 4094 | 4094 | MDRV_SOUND_CONFIG(ym2151_config) |
| 4095 | 4095 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 4096 | 4096 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 4138 | 4138 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 4139 | 4139 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 4140 | 4140 | |
| 4141 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4141 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4142 | 4142 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 4143 | 4143 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 4144 | 4144 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4180 | 4180 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) |
| 4181 | 4181 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) |
| 4182 | 4182 | |
| 4183 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4183 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4184 | 4184 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90) |
| 4185 | 4185 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) |
| 4186 | 4186 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4216 | 4216 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) |
| 4217 | 4217 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) |
| 4218 | 4218 | |
| 4219 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4219 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4220 | 4220 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) |
| 4221 | 4221 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) |
| 4222 | 4222 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4252 | 4252 | /* sound hardware */ |
| 4253 | 4253 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4254 | 4254 | |
| 4255 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 4255 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 4256 | 4256 | MDRV_SOUND_CONFIG(blzntrnd_ym2610_interface) |
| 4257 | 4257 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 4258 | 4258 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 4291 | 4291 | /* sound hardware */ |
| 4292 | 4292 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4293 | 4293 | |
| 4294 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 4294 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 4295 | 4295 | MDRV_SOUND_CONFIG(blzntrnd_ym2610_interface) |
| 4296 | 4296 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 4297 | 4297 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 4362 | 4362 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 4363 | 4363 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 4364 | 4364 | |
| 4365 | MDRV_SOUND_ADD("ym", YM2413, XTAL_20MHz/5) | |
| 4365 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_20MHz/5) | |
| 4366 | 4366 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.90) |
| 4367 | 4367 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.90) |
| 4368 | 4368 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4692 | 4692 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Samples */ |
| 4693 | 4693 | ROM_LOAD( "rom8.bin", 0x000000, 0x080000, CRC(565a4086) SHA1(bd5780acfa5affa8705acbfccb0af16bac8ed298) ) |
| 4694 | 4694 | |
| 4695 | ROM_REGION( 0x400000, "ym", 0 ) /* ? YRW801-M ? */ | |
| 4695 | ROM_REGION( 0x400000, "ymsnd", 0 ) /* ? YRW801-M ? */ | |
| 4696 | 4696 | ROM_LOAD( "rom6.bin", 0x000000, 0x200000, CRC(8b8819fc) SHA1(5fd9d2b5088cb676c11d32cac7ba8c5c18e31b64) ) |
| 4697 | 4697 | ROM_LOAD( "rom7.bin", 0x200000, 0x200000, CRC(0089a52b) SHA1(d643ac122d62557de27f06ba1413ef757a45a927) ) |
| 4698 | 4698 | ROM_END |
| r6428 | r6429 | |
| 4776 | 4776 | ROM_REGION( 0x200000, "ym.deltat", 0 ) /* Samples */ |
| 4777 | 4777 | ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) ) |
| 4778 | 4778 | |
| 4779 | ROM_REGION( 0x400000, "ym", 0 ) /* ? YRW801-M ? */ | |
| 4779 | ROM_REGION( 0x400000, "ymsnd", 0 ) /* ? YRW801-M ? */ | |
| 4780 | 4780 | ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) ) |
| 4781 | 4781 | /* ROM7.27 not populated? */ |
| 4782 | 4782 | ROM_END |
| r6428 | r6429 | |
| 4816 | 4816 | ROM_REGION( 0x200000, "ym.deltat", 0 ) /* Samples */ |
| 4817 | 4817 | ROM_LOAD( "sndpcm-b.22", 0x000000, 0x200000, BAD_DUMP CRC(a5d844d2) SHA1(18d644545f0844e66aa53775b67b0a29c7b7c31b) ) |
| 4818 | 4818 | |
| 4819 | ROM_REGION( 0x400000, "ym", 0 ) /* ? YRW801-M ? */ | |
| 4819 | ROM_REGION( 0x400000, "ymsnd", 0 ) /* ? YRW801-M ? */ | |
| 4820 | 4820 | ROM_LOAD( "sndpcm-a.23", 0x000000, 0x200000, BAD_DUMP CRC(e6d32373) SHA1(8a79d4ea8b27d785fffd80e38d5ae73b7cea7304) ) |
| 4821 | 4821 | /* ROM7.27 not populated? */ |
| 4822 | 4822 | ROM_END |
| r6428 | r6429 | |
|---|---|---|
| 130 | 130 | #include "cpu/z80/z80.h" |
| 131 | 131 | #include "machine/segacrpt.h" |
| 132 | 132 | #include "sound/2203intf.h" |
| 133 | #include "angelkds.h" | |
| 133 | 134 | |
| 134 | 135 | static READ8_HANDLER( angelkds_main_sound_r ); |
| 135 | 136 | static WRITE8_HANDLER( angelkds_main_sound_w ); |
| 136 | 137 | static READ8_HANDLER( angelkds_sub_sound_r ); |
| 137 | 138 | static WRITE8_HANDLER( angelkds_sub_sound_w ); |
| 138 | 139 | |
| 139 | extern UINT8 *angelkds_txvideoram, *angelkds_bgtopvideoram, *angelkds_bgbotvideoram; | |
| 140 | ||
| 141 | WRITE8_HANDLER( angelkds_bgtopvideoram_w ); | |
| 142 | WRITE8_HANDLER( angelkds_bgbotvideoram_w ); | |
| 143 | WRITE8_HANDLER( angelkds_txvideoram_w ); | |
| 144 | ||
| 145 | WRITE8_HANDLER( angelkds_bgtopbank_write ); | |
| 146 | WRITE8_HANDLER( angelkds_bgtopscroll_write ); | |
| 147 | WRITE8_HANDLER( angelkds_bgbotbank_write ); | |
| 148 | WRITE8_HANDLER( angelkds_bgbotscroll_write ); | |
| 149 | WRITE8_HANDLER( angelkds_txbank_write ); | |
| 150 | ||
| 151 | WRITE8_HANDLER( angelkds_paletteram_w ); | |
| 152 | WRITE8_HANDLER( angelkds_layer_ctrl_write ); | |
| 153 | ||
| 154 | VIDEO_START( angelkds ); | |
| 155 | VIDEO_UPDATE( angelkds ); | |
| 156 | ||
| 157 | 140 | /*** CPU Banking |
| 158 | 141 | |
| 159 | 142 | */ |
| r6428 | r6429 | |
| 164 | 147 | UINT8 *RAM = memory_region(space->machine, "user1"); |
| 165 | 148 | |
| 166 | 149 | bankaddress = data & 0x0f; |
| 167 | memory_set_bankptr(space->machine, 1,&RAM[bankaddress*0x4000]); | |
| 150 | memory_set_bankptr(space->machine, 1, &RAM[bankaddress * 0x4000]); | |
| 168 | 151 | } |
| 169 | 152 | |
| 170 | 153 | |
| r6428 | r6429 | |
| 214 | 197 | Interesting note, each Bank in the 0x8000 - 0xbfff appears to |
| 215 | 198 | contain a level. |
| 216 | 199 | |
| 217 | ||
| 218 | ||
| 219 | 200 | */ |
| 220 | 201 | |
| 221 | 202 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 222 | 203 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 223 | 204 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| 224 | 205 | 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) | |
| 230 | 211 | AM_RANGE(0xef00, 0xefff) AM_RAM |
| 231 | 212 | AM_RANGE(0xf000, 0xf000) AM_WRITE(angelkds_bgtopbank_write) |
| 232 | 213 | AM_RANGE(0xf001, 0xf001) AM_WRITE(angelkds_bgtopscroll_write) |
| r6428 | r6429 | |
| 512 | 493 | |
| 513 | 494 | */ |
| 514 | 495 | |
| 515 | static UINT8 angelkds_sound[4]; | |
| 516 | static UINT8 angelkds_sound2[4]; | |
| 517 | ||
| 518 | 496 | static WRITE8_HANDLER( angelkds_main_sound_w ) |
| 519 | 497 | { |
| 520 | angelkds_sound[offset]=data; | |
| 498 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 499 | state->sound[offset] = data; | |
| 521 | 500 | } |
| 522 | 501 | |
| 523 | 502 | static READ8_HANDLER( angelkds_main_sound_r ) |
| 524 | 503 | { |
| 525 | return angelkds_sound2[offset]; | |
| 504 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 505 | return state->sound2[offset]; | |
| 526 | 506 | } |
| 527 | 507 | |
| 528 | 508 | static WRITE8_HANDLER( angelkds_sub_sound_w ) |
| 529 | 509 | { |
| 530 | angelkds_sound2[offset]=data; | |
| 510 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 511 | state->sound2[offset] = data; | |
| 531 | 512 | } |
| 532 | 513 | |
| 533 | 514 | static READ8_HANDLER( angelkds_sub_sound_r ) |
| 534 | 515 | { |
| 535 | return angelkds_sound[offset]; | |
| 516 | angelkds_state *state = (angelkds_state *)space->machine->driver_data; | |
| 517 | return state->sound[offset]; | |
| 536 | 518 | } |
| 537 | 519 | |
| 538 | 520 | |
| r6428 | r6429 | |
| 598 | 580 | |
| 599 | 581 | static MACHINE_START( angelkds ) |
| 600 | 582 | { |
| 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); | |
| 603 | 591 | } |
| 604 | 592 | |
| 593 | static 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 | ||
| 605 | 610 | static MACHINE_DRIVER_START( angelkds ) |
| 611 | ||
| 612 | /* driver data */ | |
| 613 | MDRV_DRIVER_DATA(angelkds_state) | |
| 614 | ||
| 606 | 615 | MDRV_CPU_ADD("maincpu", Z80, 8000000) /* 8MHz? 6 seems too slow? */ |
| 607 | 616 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 608 | 617 | MDRV_CPU_IO_MAP(main_portmap) |
| r6428 | r6429 | |
| 612 | 621 | MDRV_CPU_PROGRAM_MAP(sub_map) |
| 613 | 622 | MDRV_CPU_IO_MAP(sub_portmap) |
| 614 | 623 | |
| 615 | MDRV_MACHINE_START(angelkds) | |
| 624 | MDRV_MACHINE_START(angelkds) | |
| 625 | MDRV_MACHINE_RESET(angelkds) | |
| 616 | 626 | |
| 617 | 627 | MDRV_QUANTUM_TIME(HZ(6000)) |
| 618 | 628 | |
| r6428 | r6429 | |
| 743 | 753 | ROM_END |
| 744 | 754 | |
| 745 | 755 | |
| 746 | static DRIVER_INIT( spcpostn ) { spcpostn_decode(machine, "maincpu"); } | |
| 756 | static DRIVER_INIT( spcpostn ) | |
| 757 | { | |
| 758 | spcpostn_decode(machine, "maincpu"); | |
| 759 | } | |
| 747 | 760 | |
| 748 | 761 | |
| 749 | GAME( 1988, angelkds, 0, angelkds, angelkds, 0, ROT90, "Sega / Nasco?", "Angel Kids (Japan)" , GAME_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */ | |
| 750 | GAME( 1986, spcpostn, 0, angelkds, spcpostn, spcpostn, ROT90, "Sega / Nasco", "Space Position (Japan)" , GAME_SUPPORTS_SAVE) /* encrypted */ | |
| 762 | GAME( 1988, angelkds, 0, angelkds, angelkds, 0, ROT90, "Sega / Nasco?", "Angel Kids (Japan)" , GAME_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */ | |
| 763 | GAME( 1986, spcpostn, 0, angelkds, spcpostn, spcpostn, ROT90, "Sega / Nasco", "Space Position (Japan)" , GAME_SUPPORTS_SAVE) /* encrypted */ |
| r6428 | r6429 | |
|---|---|---|
| 393 | 393 | |
| 394 | 394 | static ADDRESS_MAP_START( nightgal_io, ADDRESS_SPACE_IO, 8 ) |
| 395 | 395 | 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) | |
| 398 | 398 | // AM_RANGE(0x10,0x10) AM_WRITE(output_w) |
| 399 | 399 | AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC") |
| 400 | 400 | AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") |
| r6428 | r6429 | |
| 433 | 433 | |
| 434 | 434 | static ADDRESS_MAP_START( sexygal_io, ADDRESS_SPACE_IO, 8 ) |
| 435 | 435 | 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) | |
| 437 | 437 | // AM_RANGE(0x10,0x10) AM_WRITE(output_w) |
| 438 | 438 | AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC") |
| 439 | 439 | AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") |
| r6428 | r6429 | |
| 722 | 722 | /* sound hardware */ |
| 723 | 723 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 724 | 724 | |
| 725 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK / 8) | |
| 725 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK / 8) | |
| 726 | 726 | MDRV_SOUND_CONFIG(ay8910_config) |
| 727 | 727 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 728 | 728 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 739 | 739 | MDRV_CPU_PROGRAM_MAP(sexygal_nsc_map) |
| 740 | 740 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 741 | 741 | |
| 742 | MDRV_DEVICE_REMOVE("ay") | |
| 742 | MDRV_DEVICE_REMOVE("aysnd") | |
| 743 | 743 | |
| 744 | MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK / 8) | |
| 744 | MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK / 8) | |
| 745 | 745 | MDRV_SOUND_CONFIG(ay8910_config) |
| 746 | 746 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 747 | 747 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 645 | 645 | AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) |
| 646 | 646 | AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000) |
| 647 | 647 | 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 ) | |
| 649 | 649 | AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd) |
| 650 | 650 | AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl) |
| 651 | 651 | AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w) |
| r6428 | r6429 | |
| 1025 | 1025 | |
| 1026 | 1026 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1027 | 1027 | |
| 1028 | MDRV_SOUND_ADD("ym",YM2413, MASTER_CLOCK / 4) | |
| 1028 | MDRV_SOUND_ADD("ymsnd",YM2413, MASTER_CLOCK / 4) | |
| 1029 | 1029 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8) |
| 1030 | 1030 | |
| 1031 | 1031 | MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK) |
| r6428 | r6429 | |
|---|---|---|
| 97 | 97 | AM_RANGE(0x5fa0, 0x5faf) AM_READWRITE(K053244_r, K053244_w) |
| 98 | 98 | AM_RANGE(0x5fb0, 0x5fbf) AM_WRITE(K053251_w) |
| 99 | 99 | 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) | |
| 101 | 101 | AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w) |
| 102 | 102 | AM_RANGE(0x4000, 0x7fff) AM_READWRITE(K052109_r, K052109_w) |
| 103 | 103 | AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ |
| r6428 | r6429 | |
| 202 | 202 | /* sound hardware */ |
| 203 | 203 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 204 | 204 | |
| 205 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 205 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 206 | 206 | MDRV_SOUND_CONFIG(ym2151_config) |
| 207 | 207 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 208 | 208 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 101 | 101 | |
| 102 | 102 | static ADDRESS_MAP_START( sound_cpu_io_map, ADDRESS_SPACE_IO, 8 ) |
| 103 | 103 | 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) | |
| 105 | 105 | AM_RANGE(0x40, 0x40) AM_WRITENOP |
| 106 | 106 | AM_RANGE(0x80, 0x80) AM_WRITENOP |
| 107 | 107 | AM_RANGE(0x82, 0x82) AM_WRITENOP |
| r6428 | r6429 | |
| 257 | 257 | /* sound hardware */ |
| 258 | 258 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 259 | 259 | |
| 260 | MDRV_SOUND_ADD("ym", YM3812, 3600000) | |
| 260 | MDRV_SOUND_ADD("ymsnd", YM3812, 3600000) | |
| 261 | 261 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 262 | 262 | MACHINE_DRIVER_END |
| 263 | 263 |
| r6428 | r6429 | |
|---|---|---|
| 204 | 204 | static ADDRESS_MAP_START( jongkyo_portmap, ADDRESS_SPACE_IO, 8 ) |
| 205 | 205 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 206 | 206 | // 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) | |
| 209 | 209 | |
| 210 | 210 | AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE(jongkyo_coin_counter_w) |
| 211 | 211 | AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE(mux_w) |
| r6428 | r6429 | |
| 437 | 437 | MDRV_VIDEO_UPDATE(jongkyo) |
| 438 | 438 | |
| 439 | 439 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 440 | MDRV_SOUND_ADD("ay", AY8910, JONGKYO_CLOCK/8) | |
| 440 | MDRV_SOUND_ADD("aysnd", AY8910, JONGKYO_CLOCK/8) | |
| 441 | 441 | MDRV_SOUND_CONFIG(ay8910_config) |
| 442 | 442 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 443 | 443 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 631 | 631 | |
| 632 | 632 | /* a large number of signals are reset when this happens */ |
| 633 | 633 | atarigen_sound_io_reset(cputag_get_cpu(space->machine, "soundcpu")); |
| 634 | devtag_reset(space->machine, "ym"); | |
| 634 | devtag_reset(space->machine, "ymsnd"); | |
| 635 | 635 | mixer_w(space, 0, 0); |
| 636 | 636 | tms5220_data = 0; |
| 637 | 637 | tms5220_data_strobe = 0; |
| r6428 | r6429 | |
| 755 | 755 | AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r) |
| 756 | 756 | AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w) |
| 757 | 757 | 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) | |
| 759 | 759 | AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r) |
| 760 | 760 | AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w) |
| 761 | 761 | AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w) |
| r6428 | r6429 | |
| 1170 | 1170 | |
| 1171 | 1171 | /* sound hardware */ |
| 1172 | 1172 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1173 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4) | |
| 1173 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) | |
| 1174 | 1174 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1175 | 1175 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 1176 | 1176 |
| r6428 | r6429 | |
|---|---|---|
| 160 | 160 | static ADDRESS_MAP_START( mjsister_io_map, ADDRESS_SPACE_IO, 8 ) |
| 161 | 161 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 162 | 162 | 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) | |
| 166 | 166 | AM_RANGE(0x20, 0x20) AM_READ(mjsister_keys_r) |
| 167 | 167 | AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0") |
| 168 | 168 | AM_RANGE(0x30, 0x30) AM_WRITE(mjsister_banksel1_w) |
| r6428 | r6429 | |
| 327 | 327 | /* sound hardware */ |
| 328 | 328 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 329 | 329 | |
| 330 | MDRV_SOUND_ADD("ay", AY8910, MCLK/8) | |
| 330 | MDRV_SOUND_ADD("aysnd", AY8910, MCLK/8) | |
| 331 | 331 | MDRV_SOUND_CONFIG(ay8910_config) |
| 332 | 332 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 333 | 333 |
| r6428 | r6429 | |
|---|---|---|
| 158 | 158 | AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(2),SMH_ROM ) // Banked ROM |
| 159 | 159 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", yunsung8_sound_bankswitch_w ) // ROM Bank |
| 160 | 160 | 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 ) | |
| 162 | 162 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 163 | 163 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r ) // From Main CPU |
| 164 | 164 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 534 | 534 | /* sound hardware */ |
| 535 | 535 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 536 | 536 | |
| 537 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 537 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 538 | 538 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 539 | 539 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 540 | 540 |
| r6428 | r6429 | |
|---|---|---|
| 44 | 44 | |
| 45 | 45 | #include "driver.h" |
| 46 | 46 | #include "iremipt.h" |
| 47 | #include "m52.h" | |
| 48 | #include "audio/irem.h" | |
| 47 | #include "includes/iremz80.h" | |
| 49 | 48 | #include "cpu/z80/z80.h" |
| 50 | 49 | |
| 51 | 50 | |
| r6428 | r6429 | |
| 60 | 59 | |
| 61 | 60 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 62 | 61 | 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) | |
| 65 | 64 | 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( | |
| 65 | AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size) | |
| 67 | 66 | AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_WRITE(irem_sound_cmd_w) |
| 68 | 67 | AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */ |
| 69 | 68 | AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") |
| r6428 | r6429 | |
| 77 | 76 | |
| 78 | 77 | static ADDRESS_MAP_START( alpha1v_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 79 | 78 | 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? | |
| 83 | 82 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_WRITE(irem_sound_cmd_w) |
| 84 | 83 | AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w) |
| 85 | 84 | AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") |
| r6428 | r6429 | |
| 380 | 379 | * |
| 381 | 380 | *************************************/ |
| 382 | 381 | |
| 382 | static 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 | ||
| 383 | 393 | static MACHINE_DRIVER_START( m52 ) |
| 384 | 394 | |
| 395 | /* driver data */ | |
| 396 | MDRV_DRIVER_DATA(irem_z80_state) | |
| 397 | ||
| 385 | 398 | /* basic machine hardware */ |
| 386 | 399 | MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) |
| 387 | 400 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 388 | 401 | MDRV_CPU_IO_MAP(main_portmap) |
| 389 | 402 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 390 | 403 | |
| 404 | MDRV_MACHINE_RESET(m52) | |
| 405 | ||
| 391 | 406 | /* video hardware */ |
| 392 | 407 | MDRV_GFXDECODE(m52) |
| 393 | 408 | MDRV_PALETTE_LENGTH(128*4+16*4+3*4) |
| r6428 | r6429 | |
| 540 | 555 | |
| 541 | 556 | GAME( 1982, mpatrol, 0, m52, mpatrol, 0, ROT0, "Irem", "Moon Patrol", GAME_SUPPORTS_SAVE ) |
| 542 | 557 | GAME( 1982, mpatrolw, mpatrol, m52, mpatrolw, 0, ROT0, "Irem (Williams license)", "Moon Patrol (Williams)", GAME_SUPPORTS_SAVE ) |
| 543 | GAME( 1988, alpha1v, 0, alpha1v, alpha1v, 0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics / Kyle Hodgetts)", GAME_NOT_WORKING|GAME_NO_SOUND ) | |
| 558 | GAME( 1988, alpha1v, 0, alpha1v, alpha1v, 0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics / Kyle Hodgetts)", GAME_NOT_WORKING|GAME_NO_SOUND|GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 136 | 136 | |
| 137 | 137 | static ADDRESS_MAP_START( sound_cpu_io, ADDRESS_SPACE_IO, 8 ) |
| 138 | 138 | 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) | |
| 141 | 141 | AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 142 | 142 | AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_w) |
| 143 | 143 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 304 | 304 | /* sound hardware */ |
| 305 | 305 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 306 | 306 | |
| 307 | MDRV_SOUND_ADD("ym", YM3812, MASTER_CLOCK) | |
| 307 | MDRV_SOUND_ADD("ymsnd", YM3812, MASTER_CLOCK) | |
| 308 | 308 | MDRV_SOUND_CONFIG(ym3812_config) |
| 309 | 309 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 310 | 310 |
| r6428 | r6429 | |
|---|---|---|
| 445 | 445 | AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) |
| 446 | 446 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 447 | 447 | 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) | |
| 449 | 449 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 450 | 450 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 451 | 451 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 464 | 464 | AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) |
| 465 | 465 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 466 | 466 | 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) | |
| 468 | 468 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 469 | 469 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 470 | 470 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 485 | 485 | AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) |
| 486 | 486 | // AM_RANGE(0x50, 0x50) AM_WRITE(nb1413m3_nmi_clock_w) |
| 487 | 487 | 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) | |
| 490 | 490 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) AM_WRITENOP |
| 491 | 491 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 492 | 492 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 505 | 505 | AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) |
| 506 | 506 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 507 | 507 | 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) | |
| 509 | 509 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 510 | 510 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 511 | 511 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 524 | 524 | AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) |
| 525 | 525 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 526 | 526 | 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) | |
| 528 | 528 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 529 | 529 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 530 | 530 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 543 | 543 | AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w) |
| 544 | 544 | AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) |
| 545 | 545 | 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) | |
| 547 | 547 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 548 | 548 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 549 | 549 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 562 | 562 | AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) |
| 563 | 563 | AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) |
| 564 | 564 | 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) | |
| 567 | 567 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 568 | 568 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 569 | 569 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 583 | 583 | AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w) |
| 584 | 584 | AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) |
| 585 | 585 | 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) | |
| 587 | 587 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 588 | 588 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 589 | 589 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 602 | 602 | AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) |
| 603 | 603 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 604 | 604 | 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) | |
| 606 | 606 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP |
| 607 | 607 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 608 | 608 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 621 | 621 | AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) |
| 622 | 622 | AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) |
| 623 | 623 | 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) | |
| 625 | 625 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 626 | 626 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 627 | 627 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 635 | 635 | static ADDRESS_MAP_START( taiwanmb_io_map, ADDRESS_SPACE_IO, 8 ) |
| 636 | 636 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 637 | 637 | 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) | |
| 640 | 640 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP // ? |
| 641 | 641 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 642 | 642 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 2632 | 2632 | /* sound hardware */ |
| 2633 | 2633 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2634 | 2634 | |
| 2635 | MDRV_SOUND_ADD("fm", YM3812, 2500000) | |
| 2635 | MDRV_SOUND_ADD("fmsnd", YM3812, 2500000) | |
| 2636 | 2636 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2637 | 2637 | |
| 2638 | 2638 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
| 2663 | 2663 | MDRV_NVRAM_HANDLER(nb1413m3) |
| 2664 | 2664 | |
| 2665 | 2665 | /* sound hardware */ |
| 2666 | MDRV_SOUND_REPLACE("fm", AY8910, 1250000) | |
| 2666 | MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000) | |
| 2667 | 2667 | MDRV_SOUND_CONFIG(ay8910_config) |
| 2668 | 2668 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 2669 | 2669 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2874 | 2874 | MDRV_VIDEO_START(nbmj8891_1layer) |
| 2875 | 2875 | |
| 2876 | 2876 | /* sound hardware */ |
| 2877 | MDRV_SOUND_REPLACE("fm", AY8910, 1250000) | |
| 2877 | MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000) | |
| 2878 | 2878 | MDRV_SOUND_CONFIG(ay8910_config) |
| 2879 | 2879 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 2880 | 2880 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2897 | 2897 | MDRV_VIDEO_START(nbmj8891_1layer) |
| 2898 | 2898 | |
| 2899 | 2899 | /* sound hardware */ |
| 2900 | MDRV_SOUND_REPLACE("fm", AY8910, 1250000) | |
| 2900 | MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000) | |
| 2901 | 2901 | MDRV_SOUND_CONFIG(ay8910_config) |
| 2902 | 2902 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 2903 | 2903 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 193 | 193 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(3) |
| 194 | 194 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", adpcm_control_w) |
| 195 | 195 | 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) | |
| 197 | 197 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 198 | 198 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r) |
| 199 | 199 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 408 | 408 | /* sound hardware */ |
| 409 | 409 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 410 | 410 | |
| 411 | MDRV_SOUND_ADD("ym", YM2203, YM2203_CLOCK) | |
| 411 | MDRV_SOUND_ADD("ymsnd", YM2203, YM2203_CLOCK) | |
| 412 | 412 | MDRV_SOUND_CONFIG(ym2203_config) |
| 413 | 413 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 414 | 414 |
| r6428 | r6429 | |
|---|---|---|
| 1601 | 1601 | |
| 1602 | 1602 | static ADDRESS_MAP_START( downtown_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1603 | 1603 | 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 | |
| 1605 | 1605 | AM_RANGE(0x200000, 0x200001) AM_NOP // watchdog? (twineagl) |
| 1606 | 1606 | AM_RANGE(0x300000, 0x300001) AM_WRITENOP // IRQ enable/acknowledge? |
| 1607 | 1607 | AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w) // special tile banking to animate water in twineagl |
| r6428 | r6429 | |
| 1765 | 1765 | static ADDRESS_MAP_START( atehate_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 1766 | 1766 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 1767 | 1767 | 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 | |
| 1769 | 1769 | AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? watchdog ? |
| 1770 | 1770 | AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 (irq ack lev 2?) |
| 1771 | 1771 | AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? (end of lev 1: bit 4 goes 1,0,1) |
| r6428 | r6429 | |
| 1806 | 1806 | AM_RANGE(0xb04000, 0xb0ffff) AM_RAM // (jjsquawk) |
| 1807 | 1807 | AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2) // VRAM 2&3 |
| 1808 | 1808 | 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 | |
| 1810 | 1810 | AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? |
| 1811 | 1811 | AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack |
| 1812 | 1812 | AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack |
| r6428 | r6429 | |
| 1840 | 1840 | /**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16) // Sprites Y |
| 1841 | 1841 | /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 1842 | 1842 | 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 | |
| 1844 | 1844 | AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? |
| 1845 | 1845 | AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack |
| 1846 | 1846 | AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack |
| r6428 | r6429 | |
| 1918 | 1918 | /**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16) // Sprites Y |
| 1919 | 1919 | /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 1920 | 1920 | 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 | |
| 1922 | 1922 | #if __uPD71054_TIMER |
| 1923 | 1923 | AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? |
| 1924 | 1924 | #else |
| r6428 | r6429 | |
| 1950 | 1950 | AM_RANGE(0xa0a000, 0xa0a607) AM_RAM AM_BASE(&spriteram16) // RZ: Sprites Y |
| 1951 | 1951 | // AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 1952 | 1952 | 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 | |
| 1954 | 1954 | #if __uPD71054_TIMER |
| 1955 | 1955 | AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? |
| 1956 | 1956 | #else |
| r6428 | r6429 | |
| 1977 | 1977 | //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1 |
| 1978 | 1978 | AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM |
| 1979 | 1979 | 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 | |
| 1981 | 1981 | AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette |
| 1982 | 1982 | AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 1983 | 1983 | /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 |
| r6428 | r6429 | |
| 2059 | 2059 | AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM |
| 2060 | 2060 | AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? |
| 2061 | 2061 | 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 | |
| 2063 | 2063 | AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette |
| 2064 | 2064 | AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 2065 | 2065 | /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 |
| r6428 | r6429 | |
| 2089 | 2089 | AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 |
| 2090 | 2090 | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 |
| 2091 | 2091 | 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 | |
| 2093 | 2093 | AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette |
| 2094 | 2094 | AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 2095 | 2095 | /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 |
| r6428 | r6429 | |
| 2123 | 2123 | AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 2124 | 2124 | AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2 ) // Sprites Code + X + Attr |
| 2125 | 2125 | 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 | |
| 2127 | 2127 | AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // |
| 2128 | 2128 | ADDRESS_MAP_END |
| 2129 | 2129 | |
| r6428 | r6429 | |
| 2136 | 2136 | AM_RANGE(0x000000, 0x0bffff) AM_ROM // ROM |
| 2137 | 2137 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM (qzkklogy) |
| 2138 | 2138 | 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 | |
| 2140 | 2140 | AM_RANGE(0x200000, 0x200001) AM_WRITENOP // Watchdog |
| 2141 | 2141 | AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? IRQ Ack |
| 2142 | 2142 | AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs) // Coin Lockout + Video Registers |
| r6428 | r6429 | |
| 2265 | 2265 | /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 2266 | 2266 | AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 2267 | 2267 | 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 | |
| 2269 | 2269 | ADDRESS_MAP_END |
| 2270 | 2270 | |
| 2271 | 2271 | |
| r6428 | r6429 | |
| 2301 | 2301 | #else |
| 2302 | 2302 | AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP // ? |
| 2303 | 2303 | #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 | |
| 2305 | 2305 | ADDRESS_MAP_END |
| 2306 | 2306 | |
| 2307 | 2307 | /* almost identical to kamenrid */ |
| r6428 | r6429 | |
| 2329 | 2329 | #else |
| 2330 | 2330 | AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP // ? |
| 2331 | 2331 | #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 | |
| 2333 | 2333 | ADDRESS_MAP_END |
| 2334 | 2334 | |
| 2335 | 2335 | |
| r6428 | r6429 | |
| 2374 | 2374 | AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r) // P1 |
| 2375 | 2375 | AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM |
| 2376 | 2376 | 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 | |
| 2378 | 2378 | AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette |
| 2379 | 2379 | AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 2380 | 2380 | /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 |
| r6428 | r6429 | |
| 2418 | 2418 | AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2) // VRAM 2&3 |
| 2419 | 2419 | AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&seta_vctrl_0) // VRAM 0&1 Ctrl |
| 2420 | 2420 | 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 | |
| 2422 | 2422 | #if __uPD71054_TIMER |
| 2423 | 2423 | AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? |
| 2424 | 2424 | #else |
| r6428 | r6429 | |
| 2442 | 2442 | AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins |
| 2443 | 2443 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack |
| 2444 | 2444 | 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 | |
| 2446 | 2446 | AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0) // VRAM 0&1 |
| 2447 | 2447 | AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2) // VRAM 2&3 |
| 2448 | 2448 | /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0) // VRAM 0&1 Ctrl |
| r6428 | r6429 | |
| 2529 | 2529 | /**/AM_RANGE(0x900000, 0x900001) AM_RAM // ? 0x4000 |
| 2530 | 2530 | /**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16) // Sprites Y |
| 2531 | 2531 | 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 | |
| 2533 | 2533 | AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r) // mahjong panel |
| 2534 | 2534 | AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r) // DSW |
| 2535 | 2535 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 2554 | 2554 | static ADDRESS_MAP_START( thunderl_map, ADDRESS_SPACE_PROGRAM, 16 ) |
| 2555 | 2555 | AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM |
| 2556 | 2556 | 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 | |
| 2558 | 2558 | AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? |
| 2559 | 2559 | AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? |
| 2560 | 2560 | AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) |
| r6428 | r6429 | |
| 2640 | 2640 | AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16) // Sprites Y |
| 2641 | 2641 | /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 |
| 2642 | 2642 | 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 | |
| 2644 | 2644 | ADDRESS_MAP_END |
| 2645 | 2645 | |
| 2646 | 2646 | |
| r6428 | r6429 | |
| 2709 | 2709 | AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 |
| 2710 | 2710 | AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins |
| 2711 | 2711 | 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 | |
| 2713 | 2713 | AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette |
| 2714 | 2714 | AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2) // Sprites Code + X + Attr |
| 2715 | 2715 | AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 |
| r6428 | r6429 | |
| 2732 | 2732 | AM_RANGE(0x620000, 0x620003) AM_WRITENOP // protection |
| 2733 | 2733 | AM_RANGE(0x630000, 0x630003) AM_READ(seta_dsw_r) |
| 2734 | 2734 | 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) | |
| 2736 | 2736 | AM_RANGE(0x658000, 0x658001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff) |
| 2737 | 2737 | AM_RANGE(0x670000, 0x670001) AM_READNOP // watchdog? |
| 2738 | 2738 | AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2) // VRAM 2 |
| r6428 | r6429 | |
| 2798 | 2798 | |
| 2799 | 2799 | AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC |
| 2800 | 2800 | |
| 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 | |
| 2802 | 2802 | |
| 2803 | 2803 | AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0 ) // VRAM 0&1 Ctrl |
| 2804 | 2804 | AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(SMH_RAM,seta_vram_0_w) AM_BASE(&seta_vram_0 ) // VRAM 0&1 |
| r6428 | r6429 | |
| 2860 | 2860 | |
| 2861 | 2861 | AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC |
| 2862 | 2862 | |
| 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 | |
| 2864 | 2864 | |
| 2865 | 2865 | AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_BASE(&seta_vctrl_0) // VRAM 0&1 Ctrl |
| 2866 | 2866 | AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0) // VRAM 0&1 |
| r6428 | r6429 | |
| 2997 | 2997 | } |
| 2998 | 2998 | |
| 2999 | 2999 | static 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 | |
| 3001 | 3001 | AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r) // From Main CPU |
| 3002 | 3002 | AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w) // Bankswitching |
| 3003 | 3003 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) // Banked ROM |
| r6428 | r6429 | |
| 3033 | 3033 | static ADDRESS_MAP_START( utoukond_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 3034 | 3034 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 3035 | 3035 | 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) | |
| 3037 | 3037 | ADDRESS_MAP_END |
| 3038 | 3038 | |
| 3039 | 3039 | static ADDRESS_MAP_START( utoukond_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 3040 | 3040 | 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) | |
| 3042 | 3042 | AM_RANGE(0x80, 0x80) AM_WRITENOP //? |
| 3043 | 3043 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| 3044 | 3044 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 5090 | 5090 | |
| 5091 | 5091 | static INPUT_PORTS_START( stg ) |
| 5092 | 5092 | PORT_START("P1") //Player 1 - $b00001.b |
| 5093 | JOY_TYPE1_ | |
| 5093 | JOY_TYPE1_3BUTTONS(1) | |
| 5094 | 5094 | |
| 5095 | 5095 | PORT_START("P2") //Player 2 - $b00003.b |
| 5096 | JOY_TYPE1_ | |
| 5096 | JOY_TYPE1_3BUTTONS(2) | |
| 5097 | 5097 | |
| 5098 | 5098 | PORT_START("COINS") //Coins - $b00005.b |
| 5099 | 5099 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) |
| r6428 | r6429 | |
| 6872 | 6872 | /* sound hardware */ |
| 6873 | 6873 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 6874 | 6874 | |
| 6875 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 6875 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 6876 | 6876 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 6877 | 6877 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 6878 | 6878 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 6912 | 6912 | |
| 6913 | 6913 | /* sound hardware */ |
| 6914 | 6914 | 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 */ | |
| 6916 | 6916 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 6917 | 6917 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 6918 | 6918 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 6973 | 6973 | /* sound hardware */ |
| 6974 | 6974 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 6975 | 6975 | |
| 6976 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 6976 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 6977 | 6977 | MDRV_SOUND_CONFIG(seta_sound_intf2) |
| 6978 | 6978 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 6979 | 6979 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7019 | 7019 | |
| 7020 | 7020 | /* sound hardware */ |
| 7021 | 7021 | 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 */ | |
| 7023 | 7023 | MDRV_SOUND_CONFIG(seta_sound_intf2) |
| 7024 | 7024 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 7025 | 7025 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 7059 | 7059 | /* sound hardware */ |
| 7060 | 7060 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7061 | 7061 | |
| 7062 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7062 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7063 | 7063 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7064 | 7064 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7065 | 7065 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7094 | 7094 | /* sound hardware */ |
| 7095 | 7095 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7096 | 7096 | |
| 7097 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7097 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7098 | 7098 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7099 | 7099 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7100 | 7100 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7137 | 7137 | /* sound hardware */ |
| 7138 | 7138 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7139 | 7139 | |
| 7140 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7140 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7141 | 7141 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7142 | 7142 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7143 | 7143 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7169 | 7169 | /* sound hardware */ |
| 7170 | 7170 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7171 | 7171 | |
| 7172 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7172 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7173 | 7173 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7174 | 7174 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7175 | 7175 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7204 | 7204 | /* sound hardware */ |
| 7205 | 7205 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7206 | 7206 | |
| 7207 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7207 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7208 | 7208 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7209 | 7209 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7210 | 7210 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7239 | 7239 | /* sound hardware */ |
| 7240 | 7240 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7241 | 7241 | |
| 7242 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7242 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7243 | 7243 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7244 | 7244 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7245 | 7245 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7280 | 7280 | /* sound hardware */ |
| 7281 | 7281 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7282 | 7282 | |
| 7283 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7283 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7284 | 7284 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7285 | 7285 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7286 | 7286 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7314 | 7314 | /* sound hardware */ |
| 7315 | 7315 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7316 | 7316 | |
| 7317 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7317 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7318 | 7318 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7319 | 7319 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7320 | 7320 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7361 | 7361 | /* sound hardware */ |
| 7362 | 7362 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7363 | 7363 | |
| 7364 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7364 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7365 | 7365 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7366 | 7366 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7367 | 7367 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7396 | 7396 | /* sound hardware */ |
| 7397 | 7397 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7398 | 7398 | |
| 7399 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7399 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7400 | 7400 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7401 | 7401 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7402 | 7402 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7437 | 7437 | /* sound hardware */ |
| 7438 | 7438 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7439 | 7439 | |
| 7440 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7440 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7441 | 7441 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7442 | 7442 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7443 | 7443 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7498 | 7498 | /* sound hardware */ |
| 7499 | 7499 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7500 | 7500 | |
| 7501 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7501 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7502 | 7502 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7503 | 7503 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7504 | 7504 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7538 | 7538 | /* sound hardware */ |
| 7539 | 7539 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7540 | 7540 | |
| 7541 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7541 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7542 | 7542 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7543 | 7543 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7544 | 7544 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7569 | 7569 | /* sound hardware */ |
| 7570 | 7570 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7571 | 7571 | |
| 7572 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7572 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7573 | 7573 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7574 | 7574 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7575 | 7575 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7608 | 7608 | /* sound hardware */ |
| 7609 | 7609 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7610 | 7610 | |
| 7611 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7611 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7612 | 7612 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7613 | 7613 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7614 | 7614 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7644 | 7644 | /* sound hardware */ |
| 7645 | 7645 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7646 | 7646 | |
| 7647 | MDRV_SOUND_ADD("x1", X1_010, 14318180) /* 14.318180 MHz */ | |
| 7647 | MDRV_SOUND_ADD("x1snd", X1_010, 14318180) /* 14.318180 MHz */ | |
| 7648 | 7648 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7649 | 7649 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7650 | 7650 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7681 | 7681 | /* sound hardware */ |
| 7682 | 7682 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7683 | 7683 | |
| 7684 | MDRV_SOUND_ADD("x1", X1_010, 14318180) /* 14.318180 MHz */ | |
| 7684 | MDRV_SOUND_ADD("x1snd", X1_010, 14318180) /* 14.318180 MHz */ | |
| 7685 | 7685 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7686 | 7686 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7687 | 7687 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7716 | 7716 | /* sound hardware */ |
| 7717 | 7717 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7718 | 7718 | |
| 7719 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7719 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7720 | 7720 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7721 | 7721 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7722 | 7722 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7758 | 7758 | /* sound hardware */ |
| 7759 | 7759 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7760 | 7760 | |
| 7761 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7761 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7762 | 7762 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7763 | 7763 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7764 | 7764 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7803 | 7803 | /* sound hardware */ |
| 7804 | 7804 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7805 | 7805 | |
| 7806 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7806 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7807 | 7807 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7808 | 7808 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7809 | 7809 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7839 | 7839 | /* sound hardware */ |
| 7840 | 7840 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7841 | 7841 | |
| 7842 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7842 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7843 | 7843 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7844 | 7844 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7845 | 7845 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7910 | 7910 | /* sound hardware */ |
| 7911 | 7911 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7912 | 7912 | |
| 7913 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7913 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7914 | 7914 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7915 | 7915 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7916 | 7916 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7948 | 7948 | /* sound hardware */ |
| 7949 | 7949 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7950 | 7950 | |
| 7951 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7951 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7952 | 7952 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7953 | 7953 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7954 | 7954 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 7986 | 7986 | /* sound hardware */ |
| 7987 | 7987 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 7988 | 7988 | |
| 7989 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 7989 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 7990 | 7990 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 7991 | 7991 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 7992 | 7992 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8050 | 8050 | /* sound hardware */ |
| 8051 | 8051 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8052 | 8052 | |
| 8053 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 8053 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 8054 | 8054 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8055 | 8055 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8056 | 8056 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8085 | 8085 | /* sound hardware */ |
| 8086 | 8086 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8087 | 8087 | |
| 8088 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 8088 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 8089 | 8089 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8090 | 8090 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8091 | 8091 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8124 | 8124 | /* sound hardware */ |
| 8125 | 8125 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8126 | 8126 | |
| 8127 | MDRV_SOUND_ADD("x1", X1_010, 16000000) | |
| 8127 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) | |
| 8128 | 8128 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8129 | 8129 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8130 | 8130 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 8131 | 8131 | |
| 8132 | MDRV_SOUND_ADD("ym", YM3438, 16000000/4) /* 4 MHz */ | |
| 8132 | MDRV_SOUND_ADD("ymsnd", YM3438, 16000000/4) /* 4 MHz */ | |
| 8133 | 8133 | MDRV_SOUND_CONFIG(utoukond_ym3438_intf) |
| 8134 | 8134 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 8135 | 8135 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| r6428 | r6429 | |
| 8172 | 8172 | /* sound hardware */ |
| 8173 | 8173 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8174 | 8174 | |
| 8175 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 8175 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 8176 | 8176 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8177 | 8177 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8178 | 8178 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8215 | 8215 | /* sound hardware */ |
| 8216 | 8216 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8217 | 8217 | |
| 8218 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 8218 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 8219 | 8219 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8220 | 8220 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8221 | 8221 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8249 | 8249 | /* sound hardware */ |
| 8250 | 8250 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8251 | 8251 | |
| 8252 | MDRV_SOUND_ADD("x1", X1_010, 16000000) /* 16 MHz */ | |
| 8252 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ | |
| 8253 | 8253 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8254 | 8254 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8255 | 8255 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8294 | 8294 | /* sound hardware */ |
| 8295 | 8295 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 8296 | 8296 | |
| 8297 | MDRV_SOUND_ADD("ym", YM3812, 16000000/4) /* 4 MHz */ | |
| 8297 | MDRV_SOUND_ADD("ymsnd", YM3812, 16000000/4) /* 4 MHz */ | |
| 8298 | 8298 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 8299 | 8299 | |
| 8300 | 8300 | MDRV_SOUND_ADD("oki", OKIM6295, 1000000) // clock? |
| r6428 | r6429 | |
| 8388 | 8388 | /* sound hardware */ |
| 8389 | 8389 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 8390 | 8390 | |
| 8391 | MDRV_SOUND_ADD("x1", X1_010, 16000000) | |
| 8391 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) | |
| 8392 | 8392 | MDRV_SOUND_CONFIG(seta_sound_intf) |
| 8393 | 8393 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 8394 | 8394 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 8478 | 8478 | ROM_LOAD( "ua2-7", 0x100000, 0x080000, CRC(fce56907) SHA1(5d0d2d6dfdbadb21f1d61d84b8992ec0e527e18d) ) |
| 8479 | 8479 | ROM_LOAD( "ua2-9", 0x180000, 0x080000, CRC(a451eae9) SHA1(c236c92d9ecf56f8d8f4a5ee493e3791be0d3db4) ) |
| 8480 | 8480 | |
| 8481 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8481 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8482 | 8482 | ROM_LOAD( "ua2-11", 0x000000, 0x080000, CRC(624e6057) SHA1(0e8e4d4b6bc5febf5ca83eea92e3ed06f16e7df0) ) |
| 8483 | 8483 | ROM_LOAD( "ua2-12", 0x080000, 0x080000, CRC(3068ff64) SHA1(7c06a48a99ebb9e7f3709f25bd0caa4c9d7a2688) ) |
| 8484 | 8484 | ROM_END |
| r6428 | r6429 | |
| 8504 | 8504 | ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) |
| 8505 | 8505 | ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) |
| 8506 | 8506 | |
| 8507 | ROM_REGION( 0x080000, "x1", 0 ) /* Samples */ | |
| 8507 | ROM_REGION( 0x080000, "x1snd", 0 ) /* Samples */ | |
| 8508 | 8508 | ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) |
| 8509 | 8509 | ROM_END |
| 8510 | 8510 | |
| r6428 | r6429 | |
| 8529 | 8529 | ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) |
| 8530 | 8530 | ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) |
| 8531 | 8531 | |
| 8532 | ROM_REGION( 0x080000, "x1", 0 ) /* Samples */ | |
| 8532 | ROM_REGION( 0x080000, "x1snd", 0 ) /* Samples */ | |
| 8533 | 8533 | ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) |
| 8534 | 8534 | ROM_END |
| 8535 | 8535 | |
| r6428 | r6429 | |
| 8554 | 8554 | ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) |
| 8555 | 8555 | ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) |
| 8556 | 8556 | |
| 8557 | ROM_REGION( 0x080000, "x1", 0 ) /* Samples */ | |
| 8557 | ROM_REGION( 0x080000, "x1snd", 0 ) /* Samples */ | |
| 8558 | 8558 | ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) |
| 8559 | 8559 | ROM_END |
| 8560 | 8560 | |
| r6428 | r6429 | |
| 8579 | 8579 | ROM_LOAD( "ud2009.t05", 0x000000, 0x080000, CRC(aee6c581) SHA1(5b2150a308ca12eea8148d0bbff663b3baf0c831) ) |
| 8580 | 8580 | ROM_LOAD( "ud2010.t06", 0x080000, 0x080000, CRC(3d399d54) SHA1(7d9036e73fbf0e9c3b976336e3e4786b17b2f4fc) ) |
| 8581 | 8581 | |
| 8582 | ROM_REGION( 0x080000, "x1", 0 ) /* Samples */ | |
| 8582 | ROM_REGION( 0x080000, "x1snd", 0 ) /* Samples */ | |
| 8583 | 8583 | ROM_LOAD( "ud2011.t07", 0x000000, 0x080000, CRC(9c9ff69f) SHA1(3840b654f4f709bc4c03dfe4ee79369d5c70dd62) ) |
| 8584 | 8584 | ROM_END |
| 8585 | 8585 | |
| r6428 | r6429 | |
| 8620 | 8620 | ROM_LOAD16_BYTE( "ue1-022.prm", 0x000, 0x200, CRC(1a23129e) SHA1(110eb54ab83ecb8375164a5c96f522b2737c379c) ) |
| 8621 | 8621 | ROM_LOAD16_BYTE( "ue1-023.prm", 0x001, 0x200, CRC(a13192a4) SHA1(86e312e0f7400b7fa08fbe8fced1eb95a32502ca) ) |
| 8622 | 8622 | |
| 8623 | ROM_REGION( 0x080000, "x1", 0 ) /* Samples */ | |
| 8623 | ROM_REGION( 0x080000, "x1snd", 0 ) /* Samples */ | |
| 8624 | 8624 | ROM_LOAD( "ue001005.132", 0x000000, 0x080000, CRC(c5fea37c) SHA1(af4f09dd36af06e50262f607ff14eedc33beffd2) ) |
| 8625 | 8625 | ROM_END |
| 8626 | 8626 | |
| r6428 | r6429 | |
| 8645 | 8645 | ROM_LOAD( "uh001010.u3x", 0x000000, 0x080000, CRC(f986577a) SHA1(8f6c2fca271fed21a1c04e93c3f50dc41348ae30) ) |
| 8646 | 8646 | ROM_LOAD( "uh001011.u50", 0x080000, 0x080000, CRC(08620052) SHA1(e2ab49dbabc139e6b276401340085ccab1ae3892) ) |
| 8647 | 8647 | |
| 8648 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8648 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8649 | 8649 | ROM_LOAD( "uh001013.u60", 0x000000, 0x080000, CRC(09ec0df6) SHA1(57c68d05074ea4a1e133be2ce6e25c594f04a712) ) |
| 8650 | 8650 | ROM_LOAD( "uh001012.u46", 0x080000, 0x080000, CRC(bb996547) SHA1(0c8f570ef4454b10a023e0c463001c22a8cf99cd) ) |
| 8651 | 8651 | ROM_END |
| r6428 | r6429 | |
| 8674 | 8674 | ROM_LOAD( "uk001.12", 0x100000, 0x080000, CRC(818a4085) SHA1(fd8b5658fc7f5fa6d3daebb4be17aeabd60c9028) ) |
| 8675 | 8675 | ROM_LOAD( "uk001.13", 0x180000, 0x080000, CRC(771fa164) SHA1(a91214318808f991846a828f0e309c0ff430245e) ) |
| 8676 | 8676 | |
| 8677 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8677 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8678 | 8678 | ROM_LOAD( "uk001.15", 0x000000, 0x080000, CRC(ce9df5dd) SHA1(91d879b774b5b367adb5bd511fda827bc0bae0a9) ) |
| 8679 | 8679 | ROM_LOAD( "uk001.14", 0x080000, 0x080000, CRC(016b844a) SHA1(1fe091233746ced358292014393896af730f5940) ) |
| 8680 | 8680 | ROM_END |
| r6428 | r6429 | |
| 8705 | 8705 | ROM_LOAD( "up001012", 0x100000, 0x080000, CRC(fed2c5f9) SHA1(81f0f19a500b665c937f5431000ebde7abd97c30) ) |
| 8706 | 8706 | ROM_LOAD( "up001013", 0x180000, 0x080000, CRC(adabf9ea) SHA1(db28e4e565e567a97a6b05a4803a55a403e24a0e) ) |
| 8707 | 8707 | |
| 8708 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8708 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8709 | 8709 | ROM_LOAD( "up001015", 0x000000, 0x080000, CRC(2e20e39f) SHA1(6f8bd4a76ed5c2150015698e7a98044d060157be) ) |
| 8710 | 8710 | ROM_LOAD( "up001014", 0x080000, 0x080000, CRC(fca6315e) SHA1(cef2385ec43f8b7a2d655b42c18ef44e46ff7364) ) |
| 8711 | 8711 | ROM_END |
| r6428 | r6429 | |
| 8736 | 8736 | ROM_LOAD( "scr-3e.bin", 0x0c0000, 0x020000, CRC(1592b8c2) SHA1(d337de280c5ea3704dec9baa04c45e1c837924a9) ) |
| 8737 | 8737 | ROM_LOAD( "scr-4e.bin", 0x0e0000, 0x020000, CRC(8201681c) SHA1(7784a68828d728107b0228bb3568129c543cbf40) ) |
| 8738 | 8738 | |
| 8739 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8739 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8740 | 8740 | ROM_LOAD( "snd-1.bin", 0x000000, 0x020000, CRC(8f47bd0d) SHA1(c55e22ac4294931cfb72ac88a2128891d9f8ee93) ) |
| 8741 | 8741 | ROM_LOAD( "snd-2.bin", 0x020000, 0x020000, CRC(65c40ef5) SHA1(726b46144e2216d17b0828abad2f5e7c2305c174) ) |
| 8742 | 8742 | ROM_LOAD( "snd-3.bin", 0x040000, 0x020000, CRC(71fbd54e) SHA1(bdaf7ecf1c79c6c8fc82d959186ca2f3304729c8) ) |
| r6428 | r6429 | |
| 8758 | 8758 | ROM_LOAD16_BYTE( "un001006.4l", 0x040000, 0x020000, CRC(98a980d4) SHA1(ab2c1ed83bccffabfacc8a185d1fbc3e8aaf210d) ) |
| 8759 | 8759 | ROM_LOAD16_BYTE( "un001005.2l", 0x040001, 0x020000, CRC(6f2ce3c0) SHA1(8086b44c7025bc0bffff75cc6c6c7846cc56e8d0) ) |
| 8760 | 8760 | |
| 8761 | ROM_REGION( 0x40000, "x1", 0 ) /* Samples */ | |
| 8761 | ROM_REGION( 0x40000, "x1snd", 0 ) /* Samples */ | |
| 8762 | 8762 | ROM_LOAD( "un001004.12a", 0x000000, 0x020000, CRC(a15ff938) SHA1(fdfdf73e85d89a39cfc5b3c3048a64178200f942) ) |
| 8763 | 8763 | ROM_LOAD( "un001003.10a", 0x020000, 0x020000, CRC(3f4b9e55) SHA1(3cecf89ae6a056622affcddec9e10be08761e56d) ) |
| 8764 | 8764 | ROM_END |
| r6428 | r6429 | |
| 8774 | 8774 | ROM_LOAD16_BYTE( "t15", 0x040000, 0x020000, CRC(b97a7b56) SHA1(c08d3586d489947af21f3493356e3a88d79746e8) ) |
| 8775 | 8775 | ROM_LOAD16_BYTE( "t14", 0x040001, 0x020000, CRC(79c707be) SHA1(f67fa40c8f6ab0fbce44997fdfbf699fea1f0df6) ) |
| 8776 | 8776 | |
| 8777 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8777 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8778 | 8778 | ROM_LOAD( "r28", 0x000000, 0x080000, CRC(a043615d) SHA1(e483fa9fd8e922578a9d7b6ced0750643089ca78) ) |
| 8779 | 8779 | ROM_LOAD( "r27", 0x080000, 0x080000, CRC(cb8425a3) SHA1(655afa295fbe99acc79c4004f03ed832560cff5b) ) |
| 8780 | 8780 | ROM_END |
| r6428 | r6429 | |
| 8818 | 8818 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 8819 | 8819 | ROM_LOAD( "us001008.u68", 0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF |
| 8820 | 8820 | |
| 8821 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8821 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8822 | 8822 | ROM_LOAD16_WORD_SWAP( "us001009.u70", 0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) ) |
| 8823 | 8823 | ROM_END |
| 8824 | 8824 | |
| r6428 | r6429 | |
| 8843 | 8843 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 8844 | 8844 | ROM_LOAD( "us001008.u68", 0x000000, 0x080000, CRC(0ab73910) SHA1(78e2c0570c5c6f5e1cdb2fbeae73376923127024) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF |
| 8845 | 8845 | |
| 8846 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8846 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8847 | 8847 | ROM_LOAD16_WORD_SWAP( "us001009.u70", 0x000000, 0x100000, CRC(0d7d2e2b) SHA1(cfba19314ecb0a49ed9ff8df32cd6a3fe37ff526) ) |
| 8848 | 8848 | ROM_END |
| 8849 | 8849 | |
| r6428 | r6429 | |
| 8862 | 8862 | ROM_LOAD( "att01008.u39", 0x000000, 0x080000, CRC(20c47457) SHA1(53ddf8c076aa35fb87edc739bc9e9612a5a1526b) ) // FIRST AND SECOND HALF IDENTICAL |
| 8863 | 8863 | ROM_LOAD( "att01007.u42", 0x080000, 0x080000, CRC(ac975544) SHA1(5cdd2c7aada7179d4bdaf8578134c0ef672a2704) ) // FIRST AND SECOND HALF IDENTICAL |
| 8864 | 8864 | |
| 8865 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8865 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8866 | 8866 | ROM_LOAD( "att01009.u47", 0x000000, 0x080000, CRC(4276b58d) SHA1(a2e77dc3295791520c6cb25dea4e910b5a7bc137) ) |
| 8867 | 8867 | ROM_LOAD( "att01010.u55", 0x080000, 0x080000, CRC(fffb2f53) SHA1(0aacb24437e9a6874850313163922d834da27611) ) |
| 8868 | 8868 | ROM_END |
| r6428 | r6429 | |
| 8888 | 8888 | ROM_LOAD( "ux001012.068", 0x040000, 0x080000, CRC(f29959f6) SHA1(edccea3d0bf972a07edd6339e18792d089033bff) ) |
| 8889 | 8889 | |
| 8890 | 8890 | /* The c0000-fffff region is bankswitched */ |
| 8891 | ROM_REGION( 0x240000, "x1", 0 ) /* Samples */ | |
| 8891 | ROM_REGION( 0x240000, "x1snd", 0 ) /* Samples */ | |
| 8892 | 8892 | ROM_LOAD( "ux001013.069", 0x000000, 0x0c0000, CRC(5cd273cd) SHA1(602e1f10454e2b1c941f2e6983872bb9ca77a542) ) |
| 8893 | 8893 | // skip c0000-fffff (banked region) |
| 8894 | 8894 | ROM_CONTINUE( 0x100000, 0x040000 ) |
| r6428 | r6429 | |
| 8929 | 8929 | ROM_LOAD( "v2-3.bin", 0x0a0000, 0x020000, CRC(80ad0c3b) SHA1(00fcbcf7805784d7298b92136e7f256d65029c44) ) |
| 8930 | 8930 | |
| 8931 | 8931 | /* The c0000-fffff region is bankswitched */ |
| 8932 | ROM_REGION( 0x240000, "x1", 0 ) /* Samples */ | |
| 8932 | ROM_REGION( 0x240000, "x1snd", 0 ) /* Samples */ | |
| 8933 | 8933 | ROM_LOAD( "s-0.bin", 0x000000, 0x020000, CRC(a5fde408) SHA1(89efcd37ef6c5b313169d74a962a7c074a09b12a) ) |
| 8934 | 8934 | ROM_CONTINUE( 0x140000, 0x020000 ) |
| 8935 | 8935 | ROM_LOAD( "s-1.bin", 0x020000, 0x020000, CRC(3083f9c4) SHA1(f5d2297c3d680eb1f128fa42a3a7f61badb9853a) ) |
| r6428 | r6429 | |
| 8957 | 8957 | ROM_LOAD( "bl-chr-0.j3", 0x000000, 0x080000, CRC(a33300ca) SHA1(b0a7ccb77c3e8e33c12b83e254924f30209a4c2c) ) |
| 8958 | 8958 | ROM_LOAD( "bl-chr-1.l3", 0x080000, 0x080000, CRC(563de808) SHA1(40b2f9f4a4cb1a019f6419572ee21d66dda7d4af) ) |
| 8959 | 8959 | |
| 8960 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8960 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8961 | 8961 | ROM_LOAD( "bl-snd-0.a13", 0x000000, 0x080000, CRC(a92dabaf) SHA1(610c1dc0467753dfddaa4b27bc40cb118b0bc7a3) ) |
| 8962 | 8962 | ROM_RELOAD( 0x080000, 0x080000 ) |
| 8963 | 8963 | ROM_END |
| r6428 | r6429 | |
| 8977 | 8977 | ROM_LOAD( "t2709u42.u39", 0x000000, 0x080000, CRC(194d5704) SHA1(ab2833f7427d0608850c158b813bc49935ac7d6d) ) |
| 8978 | 8978 | ROM_LOAD( "t2709u39.u42", 0x080000, 0x080000, CRC(6f95a76d) SHA1(925f5880fb5153c1215d1f5ee1eff5b53a84abea) ) |
| 8979 | 8979 | |
| 8980 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8980 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8981 | 8981 | ROM_LOAD( "t2709u47.u47", 0x000000, 0x080000, CRC(0ebdad40) SHA1(6558eeaac76d98d91b0be6faa78f531f1e3b9f84) ) |
| 8982 | 8982 | ROM_LOAD( "t2709u55.u55", 0x080000, 0x080000, CRC(43960c68) SHA1(9a1901b65f989aa57ab8736ef0be3bac492c081c) ) |
| 8983 | 8983 | ROM_END |
| r6428 | r6429 | |
| 8991 | 8991 | ROM_LOAD( "bp-u-002.u2", 0x000000, 0x080000, CRC(936cbaaa) SHA1(f7932ee310eb792b2776ae8a9d29e1a492761b11) ) |
| 8992 | 8992 | ROM_LOAD( "bp-u-001.u1", 0x080000, 0x080000, CRC(87813c48) SHA1(7ec9b08fe0490d277c531e2b6394862df4d5678d) ) |
| 8993 | 8993 | |
| 8994 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 8994 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 8995 | 8995 | ROM_LOAD( "uw003.u13", 0x000000, 0x100000, CRC(e2f718eb) SHA1(fd085b68f76c8778816a1b7d47783b9dc20bff12) ) |
| 8996 | 8996 | ROM_END |
| 8997 | 8997 | |
| r6428 | r6429 | |
| 9011 | 9011 | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */ |
| 9012 | 9012 | ROM_LOAD( "uy001010.68", 0x000000, 0x100000, CRC(bdbcdf03) SHA1(857f541697f76086ac6c761a3505678a3d3499df) ) // FIRST AND SECOND HALF IDENTICAL |
| 9013 | 9013 | |
| 9014 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9014 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9015 | 9015 | ROM_LOAD( "uy001011.70", 0x000000, 0x100000, CRC(bd845f55) SHA1(345b79cfcd8c924d6ba365814286e518438f10bc) ) // uy001017 + uy001018 |
| 9016 | 9016 | ROM_END |
| 9017 | 9017 | |
| r6428 | r6429 | |
| 9023 | 9023 | ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites */ |
| 9024 | 9024 | ROM_LOAD( "fs001003.gfx", 0x000000, 0x200000, CRC(8b17e431) SHA1(643fc62d5bad9941630ab621ecb3c69ded9d4536) ) |
| 9025 | 9025 | |
| 9026 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9026 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9027 | 9027 | ROM_LOAD( "fs001004.pcm", 0x000000, 0x100000, CRC(f9344ce5) SHA1(cffbc235f3a8e9a5004e671d924affd321ec9eed) ) |
| 9028 | 9028 | ROM_END |
| 9029 | 9029 | |
| r6428 | r6429 | |
| 9042 | 9042 | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */ |
| 9043 | 9043 | ROM_LOAD( "fg1-006", 0x000000, 0x200000, CRC(2052c39a) SHA1(83a444a76e68aa711b0e25a5aa963ca876a6357e) ) |
| 9044 | 9044 | |
| 9045 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9045 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9046 | 9046 | ROM_LOAD( "fg1-007", 0x000000, 0x100000, CRC(4a2fe9e0) SHA1(e55b6f301f842ff5d3c7a0041856695ac1d8a78f) ) |
| 9047 | 9047 | ROM_END |
| 9048 | 9048 | |
| r6428 | r6429 | |
| 9061 | 9061 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 9062 | 9062 | ROM_LOAD( "fa001005.u24", 0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) ) |
| 9063 | 9063 | |
| 9064 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9064 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9065 | 9065 | ROM_LOAD( "fa001004.u26", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) ) |
| 9066 | 9066 | ROM_END |
| 9067 | 9067 | |
| r6428 | r6429 | |
| 9080 | 9080 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 9081 | 9081 | ROM_LOAD( "fa001005.u24", 0x000000, 0x080000, CRC(8cd7ff86) SHA1(ce7eb90776e21239f8f52e822c636143506c6f9b) ) |
| 9082 | 9082 | |
| 9083 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9083 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9084 | 9084 | ROM_LOAD( "fa001004.u26", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) ) |
| 9085 | 9085 | ROM_END |
| 9086 | 9086 | |
| r6428 | r6429 | |
| 9103 | 9103 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 9104 | 9104 | ROM_LOAD( "ss1u25.v10", 0x000000, 0x080000, CRC(56840728) SHA1(db61539fd84f0de35ee2077238ba3646c4960cc6) ) |
| 9105 | 9105 | |
| 9106 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9106 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9107 | 9107 | ROM_LOAD( "ss1u26.v10", 0x000000, 0x080000, CRC(d452336b) SHA1(d3bf3cb383c40911758a60546f121c48087868e3) ) |
| 9108 | 9108 | ROM_LOAD( "ss1u27.v10", 0x080000, 0x080000, CRC(17fe921d) SHA1(7fc176b8eefad4f2b8532bfe62e7852d2be185ca) ) |
| 9109 | 9109 | ROM_END |
| r6428 | r6429 | |
| 9146 | 9146 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1 */ |
| 9147 | 9147 | ROM_LOAD( "fn001005.104", 0x000000, 0x200000, CRC(95726a63) SHA1(e53ffc2815c4858bbfb5ff452c581bccb41854c9) ) |
| 9148 | 9148 | |
| 9149 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9149 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9150 | 9150 | ROM_LOAD( "fn001006.105", 0x000000, 0x100000, CRC(83f201e6) SHA1(536e74788ad0e07451300a1ad3b127bc9d2d9063) ) |
| 9151 | 9151 | ROM_END |
| 9152 | 9152 | |
| r6428 | r6429 | |
| 9165 | 9165 | ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2 */ |
| 9166 | 9166 | ROM_LOAD( "u68.bin", 0x000000, 0x080000, CRC(25c0c483) SHA1(2e705e7f0c66c3bc73e78ffb526606ab8be61d99) ) |
| 9167 | 9167 | |
| 9168 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9168 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9169 | 9169 | ROM_LOAD( "u69.bin", 0x000000, 0x080000, CRC(957ecd41) SHA1(3b37ba44b8b8f0f0de41c8c26c3dfdb391ba572c) ) |
| 9170 | 9170 | ROM_LOAD( "u70.bin", 0x080000, 0x080000, CRC(8d756fdf) SHA1(d66712a6aa19252f2c915ac66fc27df031fa9512) ) |
| 9171 | 9171 | ROM_END |
| r6428 | r6429 | |
| 9193 | 9193 | ROM_LOAD ( "jj-rom13", 0x080000, 0x080000, CRC(51e29871) SHA1(9d33283bd9a3f57602a55cfc9fafa49edd0be8c5) ) |
| 9194 | 9194 | ROM_LOAD16_BYTE( "jj-rom4.040", 0x100000, 0x080000, CRC(a235488e) SHA1(a45d02a4451defbef7fbdab15671955fab8ed76b) ) |
| 9195 | 9195 | |
| 9196 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9196 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9197 | 9197 | ROM_LOAD( "jj-rom5.040", 0x000000, 0x080000, CRC(d99f2879) SHA1(66e83a6bc9093d19c72bd8ef1ec0523cfe218250) ) |
| 9198 | 9198 | ROM_LOAD( "jj-rom6.040", 0x080000, 0x080000, CRC(9df1e478) SHA1(f41b55821187b417ad09e4a1f439c01a107d2674) ) |
| 9199 | 9199 | ROM_END |
| r6428 | r6429 | |
| 9221 | 9221 | ROM_COPY( "gfxtemp", 0x300000, 0x100000, 0x100000 ) |
| 9222 | 9222 | |
| 9223 | 9223 | |
| 9224 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9224 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9225 | 9225 | ROM_LOAD( "1", 0x000000, 0x100000, CRC(181a55b8) SHA1(6fa404f85bad93cc15e80feb61d19bed84602b82) ) /* jj-rom5.040 + jj-rom6.040 from jjsquawk */ |
| 9226 | 9226 | ROM_END |
| 9227 | 9227 | |
| r6428 | r6429 | |
| 9242 | 9242 | ROM_REGION( 0x40000, "gfx3", 0 ) /* Layer 2 */ |
| 9243 | 9243 | ROM_COPY( "user1", 0x040000, 0x000000, 0x040000 ) |
| 9244 | 9244 | |
| 9245 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9245 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9246 | 9246 | ROM_LOAD( "fj001008.26", 0x000000, 0x100000, CRC(45e2b329) SHA1(8526afae1aa9178570c906eb96438f174d174f4d) ) |
| 9247 | 9247 | ROM_END |
| 9248 | 9248 | |
| r6428 | r6429 | |
| 9261 | 9261 | ROM_REGION( 0x100000, "gfx3", 0 ) /* Layer 2 */ |
| 9262 | 9262 | ROM_LOAD( "u68.bin", 0x000000, 0x100000, CRC(c17aad22) SHA1(eabbae2142cad3eef6a94d542ea03221c8228e94) ) |
| 9263 | 9263 | |
| 9264 | ROM_REGION( 0x240000, "x1", 0 ) /* Samples */ | |
| 9264 | ROM_REGION( 0x240000, "x1snd", 0 ) /* Samples */ | |
| 9265 | 9265 | ROM_LOAD( "u70.bin", 0x000000, 0x0c0000, CRC(dfdb67a3) SHA1(0fed6fb498dcfc1276facd0ecd2dfde45ff671f2) ) |
| 9266 | 9266 | // skip c0000-fffff (banked region) |
| 9267 | 9267 | ROM_CONTINUE( 0x100000, 0x040000 ) |
| r6428 | r6429 | |
| 9276 | 9276 | ROM_REGION( 0x080000, "gfx1", 0 ) /* Sprites */ |
| 9277 | 9277 | ROM_LOAD( "fp001003.bin", 0x000000, 0x080000, CRC(0f904421) SHA1(de5810746cfab1a4a7d1b055b1a97bc7fbc173dd) ) |
| 9278 | 9278 | |
| 9279 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9279 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9280 | 9280 | ROM_LOAD( "fp001006.bin", 0x000000, 0x080000, CRC(96cf395d) SHA1(877b291598e3a42e5003b2f50a16d162348ce72d) ) |
| 9281 | 9281 | ROM_LOAD( "fp001005.bin", 0x080000, 0x080000, CRC(65b5fe9a) SHA1(35605be00c7c455551d18386fcb5ad013aa2907e) ) |
| 9282 | 9282 | ROM_END |
| r6428 | r6429 | |
| 9290 | 9290 | ROM_LOAD( "fv001.003", 0x000000, 0x080000, CRC(7de22749) SHA1(933a11f2d45667348b136d72806fc2e2f6f8d944) ) |
| 9291 | 9291 | ROM_LOAD( "fv001.004", 0x080000, 0x080000, CRC(c7d2fe32) SHA1(37291fa78c28be274e1240e081ea253ebe487e5c) ) |
| 9292 | 9292 | |
| 9293 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9293 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9294 | 9294 | ROM_LOAD( "fv001.005", 0x000000, 0x080000, CRC(5e206062) SHA1(e47cfb6947df178f3547dfe61907571bcb84e4ac) ) |
| 9295 | 9295 | ROM_LOAD( "fv001.006", 0x080000, 0x080000, CRC(572a15e7) SHA1(b6a3e99e14a473b78ff48d1a46b20a0862d128e9) ) |
| 9296 | 9296 | ROM_END |
| r6428 | r6429 | |
| 9308 | 9308 | ROM_LOAD( "orbs.u12", 0x100000, 0x080000, CRC(b8c352c2) SHA1(7d6fd1425d9d5cf6a14a1ddceba0ad10e472dfa5) ) |
| 9309 | 9309 | ROM_LOAD( "orbs.u11", 0x180000, 0x080000, CRC(58cb38ba) SHA1(1c6c5f7ccb9c81b71bc1cbad080799b97962f262) ) |
| 9310 | 9310 | |
| 9311 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9311 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9312 | 9312 | ROM_LOAD( "orbs.u15", 0x000000, 0x080000, CRC(bc0e9fe3) SHA1(758a44d07d59af8bbc87602df25dfcdc6cb8d9b3) ) |
| 9313 | 9313 | ROM_LOAD( "orbs.u16", 0x080000, 0x080000, CRC(aecd8373) SHA1(5620bcb281a9ea4920cfe81d163827013289c5bf) ) |
| 9314 | 9314 | ROM_END |
| r6428 | r6429 | |
| 9324 | 9324 | ROM_LOAD( "ft-001-005.u12", 0x100000, 0x080000, CRC(de6432a8) SHA1(afee9b29e0b3db4815fc29456044532aee03597e) ) |
| 9325 | 9325 | ROM_LOAD( "ft-001-006.u11", 0x180000, 0x080000, CRC(9c500eae) SHA1(3448adef04c9ad2e0b39a283e4eb9c9bac7d4967) ) |
| 9326 | 9326 | |
| 9327 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9327 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9328 | 9328 | ROM_LOAD( "ft-001-007.u15", 0x000000, 0x080000, CRC(c98dacf0) SHA1(b508433e2383af1e8bd5fda253c9925c48443490) ) |
| 9329 | 9329 | ROM_LOAD( "ft-001-008.u16", 0x080000, 0x080000, CRC(b9c4b637) SHA1(82977d10de1048f71525bab5431b031cca510114) ) |
| 9330 | 9330 | ROM_END |
| r6428 | r6429 | |
| 9344 | 9344 | ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */ |
| 9345 | 9345 | ROM_LOAD( "fw001006.152", 0x000000, 0x200000, CRC(d00e8ddd) SHA1(e13692034afec1a0e86d19abfb9efa518b374147) ) // FIRST AND SECOND HALF IDENTICAL |
| 9346 | 9346 | |
| 9347 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9347 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9348 | 9348 | ROM_LOAD( "fw001007.026", 0x080000, 0x080000, CRC(16d84d7a) SHA1(fdc13776ba1ec9c48a33a9f2dfe8a0e55c54d89e) ) // swapped halves |
| 9349 | 9349 | ROM_CONTINUE( 0x000000, 0x080000 ) |
| 9350 | 9350 | ROM_END |
| r6428 | r6429 | |
| 9370 | 9370 | ROM_LOAD ( "bpgh-012.u68", 0x000000, 0x200000, CRC(edfda595) SHA1(5942181430d59c0c303cd1cbe753910c26c109a2) ) |
| 9371 | 9371 | ROM_LOAD16_BYTE( "bpgh-011.u67", 0x200000, 0x100000, CRC(49aff270) SHA1(de25209e520cd8747042078440ee20866097d0cb) ) |
| 9372 | 9372 | |
| 9373 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9373 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9374 | 9374 | ROM_LOAD( "bpgh-013.u70", 0x080000, 0x080000, CRC(0fa5d503) SHA1(fd7a80cd25c23e737cc2c3d11de2291e22313b58) ) // swapped halves |
| 9375 | 9375 | ROM_CONTINUE( 0x000000, 0x080000 ) |
| 9376 | 9376 | ROM_END |
| r6428 | r6429 | |
| 9390 | 9390 | ROM_REGION( 0x100, "gfx3", ROMREGION_ERASE ) /* Layer 2 */ |
| 9391 | 9391 | /* Unused */ |
| 9392 | 9392 | |
| 9393 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9393 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9394 | 9394 | ROM_LOAD( "001-006.bin", 0x080000, 0x080000, CRC(ecfac767) SHA1(3d05bdb2c2a8c7eb5fa77b0c4482f98d3947c6d6) ) |
| 9395 | 9395 | ROM_CONTINUE( 0x000000, 0x080000 ) |
| 9396 | 9396 | ROM_END |
| r6428 | r6429 | |
| 9413 | 9413 | ROM_LOAD ( "fy001010.68", 0x000000, 0x200000, CRC(8b40ed7a) SHA1(05fcd7947a8419cab5ed2305fba9a671911e4850) ) |
| 9414 | 9414 | ROM_LOAD16_BYTE( "fy001009.67", 0x200000, 0x100000, CRC(6bcca641) SHA1(49c9106e6f23e25e5b5917af11fc48d34457c61a) ) |
| 9415 | 9415 | |
| 9416 | ROM_REGION( 0x480000, "x1", 0 ) /* Samples */ | |
| 9416 | ROM_REGION( 0x480000, "x1snd", 0 ) /* Samples */ | |
| 9417 | 9417 | ROM_LOAD( "fy001012.b", 0x000000, 0x080000, CRC(fd30e102) SHA1(ae02f94f69aa301b0c37921ca1117e3ad20467b5) ) |
| 9418 | 9418 | // skip 80000-fffff (banked region) |
| 9419 | 9419 | ROM_CONTINUE( 0x100000, 0x180000 ) |
| r6428 | r6429 | |
| 9441 | 9441 | ROM_COPY( "user1", 0x100000, 0x000000, 0x100000 ) |
| 9442 | 9442 | ROM_COPY( "user1", 0x300000, 0x100000, 0x100000 ) |
| 9443 | 9443 | |
| 9444 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9444 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9445 | 9445 | ROM_LOAD( "fq001007.26", 0x000000, 0x100000, CRC(e4b33c13) SHA1(c4f9532de7a09c80f5a74c3a386e99a0f546846f) ) |
| 9446 | 9446 | ROM_END |
| 9447 | 9447 | |
| r6428 | r6429 | |
| 9466 | 9466 | ROM_LOAD( "93uta07.68", 0x000000, 0x100000, CRC(67bdd036) SHA1(527b6a67e7a62263bee738dc82d6ff289ab54853) ) |
| 9467 | 9467 | ROM_LOAD( "93uta06.67", 0x100000, 0x100000, CRC(294c26e4) SHA1(459ec7f8c8db4f1e3906d5db240298405bda991c) ) |
| 9468 | 9468 | |
| 9469 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9469 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9470 | 9470 | ROM_LOAD( "93uta08.69", 0x000000, 0x100000, CRC(3d50bbcd) SHA1(e9b78d08466e1f9b42f11999bb53b6deceb81a12) ) |
| 9471 | 9471 | ROM_END |
| 9472 | 9472 | |
| r6428 | r6429 | |
| 9479 | 9479 | ROM_LOAD( "bp923003.u15", 0x00000, 0x80000, CRC(91ca98a1) SHA1(b02b362e3a6118f52d9e1a262ca11aecef887b00) ) |
| 9480 | 9480 | ROM_LOAD( "bp923004.u9", 0x80000, 0x80000, CRC(15c678e3) SHA1(8c0fa41a1f4e7b4e1c90faaeec7f6c910cc3ad0b) ) |
| 9481 | 9481 | |
| 9482 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9482 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9483 | 9483 | ROM_LOAD( "bp923005.u4", 0x000000, 0x100000, CRC(7c0e37be) SHA1(5d5779de948f986971a82db2a5a4302044c3257a) ) |
| 9484 | 9484 | ROM_END |
| 9485 | 9485 | |
| r6428 | r6429 | |
| 9492 | 9492 | ROM_LOAD( "ut2-001-004.5j", 0x000000, 0x080000, CRC(fdc47b26) SHA1(0de51bcf67b909ac9578f0d1b14af8a4c758aacf) ) |
| 9493 | 9493 | ROM_LOAD( "ut2-001-005.5l", 0x080000, 0x080000, CRC(076f94a2) SHA1(94b4b41a497dea1b6db5396bd7cd81ebcb217735) ) |
| 9494 | 9494 | |
| 9495 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9495 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9496 | 9496 | ROM_LOAD( "ut2-001-003.12a", 0x000000, 0x080000, CRC(900219a9) SHA1(3260a900df25beba597bf947a9fbb6f7392827d7) ) |
| 9497 | 9497 | ROM_RELOAD( 0x080000, 0x080000 ) |
| 9498 | 9498 | ROM_END |
| r6428 | r6429 | |
| 9552 | 9552 | ROM_LOAD16_BYTE( "ya-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) ) |
| 9553 | 9553 | ROM_LOAD16_BYTE( "ya-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) ) |
| 9554 | 9554 | |
| 9555 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9555 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9556 | 9556 | ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) ) |
| 9557 | 9557 | ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) ) |
| 9558 | 9558 | ROM_END |
| r6428 | r6429 | |
| 9589 | 9589 | ROM_LOAD16_BYTE( "ya-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) ) |
| 9590 | 9590 | ROM_LOAD16_BYTE( "ya-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) ) |
| 9591 | 9591 | |
| 9592 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9592 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9593 | 9593 | ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) ) |
| 9594 | 9594 | ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) ) |
| 9595 | 9595 | ROM_END |
| r6428 | r6429 | |
| 9627 | 9627 | ROM_LOAD16_BYTE( "ya-010.prom", 0x000, 0x200, CRC(778094b3) SHA1(270329a0d544dc7a8240d6dab08ccd54ea87ab70) ) |
| 9628 | 9628 | ROM_LOAD16_BYTE( "ya-011.prom", 0x001, 0x200, CRC(bd4fe2f6) SHA1(83d9f9db3fbfa2d172f5227c397ea4d5a9687015) ) |
| 9629 | 9629 | |
| 9630 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9630 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9631 | 9631 | ROM_LOAD( "ya_011_013.u71", 0x00000, 0x80000, CRC(2bccaf47) SHA1(1658643444d575410f11b648e0d7ae6c43fcf1ea) ) |
| 9632 | 9632 | ROM_LOAD( "ya_011_012.u64", 0x80000, 0x80000, CRC(a8015ce6) SHA1(bb0b589856ec82e1fd42be9af89b07ba1d17e595) ) |
| 9633 | 9633 | ROM_END |
| r6428 | r6429 | |
| 9669 | 9669 | ROM_LOAD( "uf0015.u40", 0x300000, 0x080000, CRC(11dc19fa) SHA1(e7084f61d075a61249d924a523c32e7993d9ae46) ) |
| 9670 | 9670 | ROM_LOAD( "uf0016.u48", 0x380000, 0x080000, CRC(10f99fa8) SHA1(7ef9a3f71dd071483cf3513ef57e2fcfe8702994) ) |
| 9671 | 9671 | |
| 9672 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 9672 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 9673 | 9673 | ROM_LOAD( "uf1004.u52", 0x000000, 0x020000, CRC(d63ea334) SHA1(93aaf58c90c4f704caae19b63785e471b2c1281a) ) |
| 9674 | 9674 | |
| 9675 | 9675 | ROM_REGION( 0x400, "proms", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 708 | 708 | /* sound hardware */ |
| 709 | 709 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 710 | 710 | |
| 711 | MDRV_SOUND_ADD("sn", SN76477, 0) // output not connected | |
| 711 | MDRV_SOUND_ADD("snsnd", SN76477, 0) // output not connected | |
| 712 | 712 | MDRV_SOUND_CONFIG(laserbat_sn76477_interface) |
| 713 | 713 | |
| 714 | 714 | MDRV_SOUND_ADD("tms1", TMS3615, 4000000/8/2) // 250 kHz, from second chip's clock out |
| r6428 | r6429 | |
|---|---|---|
| 232 | 232 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 233 | 233 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 234 | 234 | 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) | |
| 236 | 236 | AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 237 | 237 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r) |
| 238 | 238 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 441 | 441 | /* sound hardware */ |
| 442 | 442 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 443 | 443 | |
| 444 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 444 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 445 | 445 | MDRV_SOUND_CONFIG(ym2151_config) |
| 446 | 446 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 447 | 447 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 5408 | 5408 | GAME( 2006, kurucham, naomigd, naomigd, naomi, naomi, ROT0, "Able", "Kurukuru Chameleon (GDL-0034)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) |
| 5409 | 5409 | GAME( 2005, undefeat, naomigd, naomigd, naomi, naomi, ROT270, "G-Rev", "Under Defeat (GDL-0035)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) |
| 5410 | 5410 | //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 ) | |
| 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 ) | |
| 5413 | 5413 | //GDL-0038 Senko No Ronde Special |
| 5414 | 5414 | //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 ) |
| 5415 | 5415 | //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 | ||
| 5416 | ||
| 5417 | 5417 | //GDL-0041 Guilty Gear XX Accent Core |
| 5418 | 5418 | //GAME( 2006, takoron, naomigd, naomigd, naomi, naomi, ROT0, "Compile", "Noukone Puzzle Takoron (GDL-0042)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) |
| 5419 | 5419 |
| r6428 | r6429 | |
|---|---|---|
| 3768 | 3768 | ROM_LOAD16_WORD_SWAP( "ic36", 0x1200000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // OK |
| 3769 | 3769 | ROM_END |
| 3770 | 3770 | |
| 3771 | ROM_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 | |
| 3781 | ROM_END | |
| 3782 | ||
| 3783 | ROM_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 | |
| 3793 | ROM_END | |
| 3794 | ||
| 3771 | 3795 | /* |
| 3772 | 3796 | country codes: |
| 3773 | 3797 | J = Japan |
| r6428 | r6429 | |
| 3866 | 3890 | /* Unemulated printer device */ |
| 3867 | 3891 | GAME( 1998, stress, stvbios, stv, stv, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3868 | 3892 | GAME( 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 ) |
| 3893 | GAME( 1997, pclub2, stvbios, stv, stv, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", GAME_NOT_WORKING ) | |
| 3894 | GAME( 1999, pclub2v3, pclub2, stv, stv, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", GAME_NOT_WORKING ) | |
| 3869 | 3895 | |
| 3870 | 3896 | /* Doing something.. but not enough yet */ |
| 3871 | 3897 | GAME( 1995, vfremix, stvbios, stv, stv, vfremix, ROT0, "Sega", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| r6428 | r6429 | |
| 3893 | 3919 | Aroma Club |
| 3894 | 3920 | Movie Club |
| 3895 | 3921 | Name Club (other versions) |
| 3896 | Print Club 2 | |
| 3922 | Print Club 2 (other versions) | |
| 3897 | 3923 | Youen Denshi Mahjong Yuugi Gal Jan |
| 3898 | 3924 | Danchi de Quiz: Okusan 4taku Desu yo! |
| 3899 | 3925 | NBA Action (?) |
| r6428 | r6429 | |
|---|---|---|
| 272 | 272 | cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE); |
| 273 | 273 | cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE); |
| 274 | 274 | cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE); |
| 275 | devtag_reset(machine, "ym"); | |
| 275 | devtag_reset(machine, "ymsnd"); | |
| 276 | 276 | |
| 277 | 277 | sprintf(tempname, "game%d", gameno); |
| 278 | 278 | game_region = memory_region(machine, tempname); |
| r6428 | r6429 | |
|---|---|---|
| 195 | 195 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 196 | 196 | AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) |
| 197 | 197 | 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) | |
| 199 | 199 | AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_BASE(&tnzs_vdcram) |
| 200 | 200 | AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE(&tnzs_scrollram) /* scrolling info */ |
| 201 | 201 | AM_RANGE(0xe300, 0xe303) AM_MIRROR(0xfc) AM_WRITE(champbwl_objctrl_w) AM_BASE(&tnzs_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */ |
| r6428 | r6429 | |
| 356 | 356 | /* sound hardware */ |
| 357 | 357 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 358 | 358 | |
| 359 | MDRV_SOUND_ADD("x1", X1_010, 16000000) | |
| 359 | MDRV_SOUND_ADD("x1snd", X1_010, 16000000) | |
| 360 | 360 | MDRV_SOUND_CONFIG(champbwl_sound_intf) |
| 361 | 361 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 362 | 362 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 376 | 376 | ROM_LOAD( "ab001008.u26", 0x0000, 0x0200, CRC(30ac8d48) SHA1(af034de3f3b8548534effdf4e3717fe3838b7754) ) |
| 377 | 377 | ROM_LOAD( "ab001009.u27", 0x0200, 0x0200, CRC(3bbd4bcd) SHA1(8c87ccc42ece2432b8ad25f8679cdf886e12a43c) ) |
| 378 | 378 | |
| 379 | ROM_REGION( 0x100000, "x1", 0 ) /* Samples */ | |
| 379 | ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */ | |
| 380 | 380 | ROM_LOAD( "ab003003.3-3", 0x00000, 0x40000, CRC(ad40ad10) SHA1(db0e5744ea3fcda87345b545031f82fcb3fec175) ) |
| 381 | 381 | ROM_LOAD( "ab003002.3-2", 0x40000, 0x40000, CRC(7ede8f28) SHA1(b5519c09b4f0019dc76cadca725da1d581912540) ) |
| 382 | 382 | ROM_LOAD( "ab002003.2-3", 0x80000, 0x40000, CRC(3051b8c3) SHA1(5f53596d7af1c79db1dde4bdca3878e07c67b5d1) ) |
| r6428 | r6429 | |
|---|---|---|
| 224 | 224 | |
| 225 | 225 | static ADDRESS_MAP_START( vamphalf_io, ADDRESS_SPACE_IO, 16 ) |
| 226 | 226 | 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) | |
| 229 | 229 | AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r) |
| 230 | 230 | AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w) |
| 231 | 231 | AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 247 | 247 | AM_RANGE(0x304, 0x307) AM_READ_PORT("P1_P2") |
| 248 | 248 | AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w) |
| 249 | 249 | 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) | |
| 252 | 252 | AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r) |
| 253 | 253 | ADDRESS_MAP_END |
| 254 | 254 | |
| r6428 | r6429 | |
| 257 | 257 | AM_RANGE(0x040, 0x043) AM_READ_PORT("P1_P2") |
| 258 | 258 | AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM") |
| 259 | 259 | 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) | |
| 262 | 262 | AM_RANGE(0x100, 0x103) AM_READ(eeprom_r) |
| 263 | 263 | ADDRESS_MAP_END |
| 264 | 264 | |
| r6428 | r6429 | |
| 276 | 276 | AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r) |
| 277 | 277 | AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w) |
| 278 | 278 | 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) | |
| 280 | 280 | AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2") |
| 281 | 281 | AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x0000ff00) |
| 282 | 282 | AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 297 | 297 | AM_RANGE(0x2c0, 0x2c3) AM_READ(eeprom_r) |
| 298 | 298 | AM_RANGE(0x440, 0x443) AM_DEVREADWRITE("oki", oki_r, oki_w) |
| 299 | 299 | 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) | |
| 302 | 302 | ADDRESS_MAP_END |
| 303 | 303 | |
| 304 | 304 | |
| r6428 | r6429 | |
| 315 | 315 | AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w) |
| 316 | 316 | AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki_2", okim6295_r, okim6295_w, 0x0000ff00) |
| 317 | 317 | 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) | |
| 319 | 319 | AM_RANGE(0x0680, 0x0683) AM_DEVWRITE("oki_2", aoh_oki_bank_w) |
| 320 | 320 | ADDRESS_MAP_END |
| 321 | 321 | |
| r6428 | r6429 | |
| 691 | 691 | static MACHINE_DRIVER_START( sound_ym_oki ) |
| 692 | 692 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 693 | 693 | |
| 694 | MDRV_SOUND_ADD("ym", YM2151, 28000000/8) | |
| 694 | MDRV_SOUND_ADD("ymsnd", YM2151, 28000000/8) | |
| 695 | 695 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 696 | 696 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 697 | 697 | |
| r6428 | r6429 | |
| 704 | 704 | static MACHINE_DRIVER_START( sound_suplup ) |
| 705 | 705 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 706 | 706 | |
| 707 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 707 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 708 | 708 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 709 | 709 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 710 | 710 | |
| r6428 | r6429 | |
| 805 | 805 | /* sound hardware */ |
| 806 | 806 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 807 | 807 | |
| 808 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 808 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 809 | 809 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 810 | 810 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 811 | 811 | |
| r6428 | r6429 | |
| 1207 | 1207 | */ |
| 1208 | 1208 | |
| 1209 | 1209 | ROM_START( wyvernwg ) |
| 1210 | ROM_REGION32_BE( 0x100000, "user1", 0 ) /* Hyperstone CPU Code */ | |
| 1210 | ROM_REGION32_BE( 0x100000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */ | |
| 1211 | 1211 | ROM_LOAD( "rom1.bin", 0x000000, 0x080000, CRC(66bf3a5c) SHA1(037d5e7a6ef6f5b4ac08a9c811498c668a9d2522) ) |
| 1212 | 1212 | ROM_LOAD( "rom2.bin", 0x080000, 0x080000, CRC(fd9b5911) SHA1(a01e8c6e5a9009024af385268ba3ba90e1ebec50) ) |
| 1213 | 1213 | |
| r6428 | r6429 | |
| 1346 | 1346 | */ |
| 1347 | 1347 | |
| 1348 | 1348 | ROM_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 */ | |
| 1350 | 1350 | /* rom0 empty */ |
| 1351 | 1351 | ROM_LOAD( "rom1", 0x080000, 0x080000, CRC(45815931) SHA1(80ba7a366994e40a1f520ea18fad82e6b068b279) ) |
| 1352 | 1352 |
| r6428 | r6429 | |
|---|---|---|
| 57 | 57 | at the sound CPU. |
| 58 | 58 | |
| 59 | 59 | |
| 60 | SAVE STATE (lee@lmservers.com): | |
| 61 | 1942 uses the Z80 and AY8910 which both support save state. | |
| 62 | ||
| 63 | The global variables in drivers/1942.c are extern and defined in video/1942.c | |
| 64 | The rationale for saving/not saving are as follows: | |
| 65 | UINT8 *c1942_fgvideoram; Saved via reference to AM_BASE | |
| 66 | UINT8 *c1942_bgvideoram; Saved via reference to AM_BASE | |
| 67 | ||
| 68 | static int c1942_palette_bank; Explicitly saved | |
| 69 | static tilemap *fg_tilemap, *bg_tilemap; Saved due to tilemap supporting save | |
| 70 | ||
| 71 | There are no static local variables. | |
| 72 | ||
| 73 | 60 | ***************************************************************************/ |
| 74 | 61 | |
| 75 | 62 | #define MAIN_CPU_CLOCK (XTAL_12MHz/3) /* 12MHz is the only OSC on the PCB */ |
| r6428 | r6429 | |
| 80 | 67 | #include "cpu/z80/z80.h" |
| 81 | 68 | #include "deprecat.h" |
| 82 | 69 | #include "sound/ay8910.h" |
| 70 | #include "1942.h" | |
| 83 | 71 | |
| 84 | 72 | |
| 85 | extern UINT8 *c1942_fgvideoram; | |
| 86 | extern UINT8 *c1942_bgvideoram; | |
| 87 | ||
| 88 | ||
| 89 | extern WRITE8_HANDLER( c1942_fgvideoram_w ); | |
| 90 | extern WRITE8_HANDLER( c1942_bgvideoram_w ); | |
| 91 | extern WRITE8_HANDLER( c1942_scroll_w ); | |
| 92 | extern WRITE8_HANDLER( c1942_c804_w ); | |
| 93 | extern WRITE8_HANDLER( c1942_palette_bank_w ); | |
| 94 | ||
| 95 | extern PALETTE_INIT( 1942 ); | |
| 96 | extern VIDEO_START( 1942 ); | |
| 97 | extern VIDEO_UPDATE( 1942 ); | |
| 98 | ||
| 99 | ||
| 100 | ||
| 101 | 73 | static WRITE8_HANDLER( c1942_bankswitch_w ) |
| 102 | 74 | { |
| 103 | 75 | memory_set_bank(space->machine, 1, data & 0x03); |
| 104 | 76 | } |
| 105 | 77 | |
| 106 | ||
| 107 | ||
| 108 | 78 | static INTERRUPT_GEN( c1942_interrupt ) |
| 109 | 79 | { |
| 110 | 80 | 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 */ | |
| 112 | 82 | else |
| 113 | 83 | cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xd7); /* RST 10h - vblank */ |
| 114 | 84 | } |
| 115 | 85 | |
| 116 | 86 | |
| 117 | ||
| 118 | 87 | static ADDRESS_MAP_START( c1942_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 119 | 88 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 120 | 89 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| r6428 | r6429 | |
| 128 | 97 | AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w) |
| 129 | 98 | AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w) |
| 130 | 99 | 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) | |
| 134 | 103 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 135 | 104 | ADDRESS_MAP_END |
| 136 | 105 | |
| r6428 | r6429 | |
| 265 | 234 | GFXDECODE_END |
| 266 | 235 | |
| 267 | 236 | |
| 237 | static MACHINE_RESET( 1942 ) | |
| 238 | { | |
| 239 | _1942_state *state = (_1942_state *)machine->driver_data; | |
| 268 | 240 | |
| 241 | state->palette_bank = 0; | |
| 242 | state->scroll[0] = 0; | |
| 243 | state->scroll[1] = 0; | |
| 244 | } | |
| 245 | ||
| 269 | 246 | static MACHINE_DRIVER_START( 1942 ) |
| 270 | 247 | |
| 248 | MDRV_DRIVER_DATA(_1942_state) | |
| 249 | ||
| 271 | 250 | /* basic machine hardware */ |
| 272 | 251 | MDRV_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */ |
| 273 | 252 | MDRV_CPU_PROGRAM_MAP(c1942_map) |
| r6428 | r6429 | |
| 277 | 256 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 278 | 257 | MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) |
| 279 | 258 | |
| 259 | MDRV_MACHINE_RESET(1942) | |
| 260 | ||
| 280 | 261 | /* video hardware */ |
| 281 | 262 | MDRV_GFXDECODE(1942) |
| 282 | 263 | MDRV_PALETTE_LENGTH(64*4+4*32*8+16*16) |
| r6428 | r6429 | |
|---|---|---|
| 88 | 88 | AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w) |
| 89 | 89 | AM_RANGE(0xc1, 0xc2) AM_READ(key_matrix_r) // 0xc0-c3 8255ppi |
| 90 | 90 | 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) | |
| 92 | 92 | ADDRESS_MAP_END |
| 93 | 93 | |
| 94 | 94 | /****************************************************************************/ |
| r6428 | r6429 | |
| 296 | 296 | /* sound hardware */ |
| 297 | 297 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 298 | 298 | |
| 299 | MDRV_SOUND_ADD("ym", YM2203, MCLK/4) | |
| 299 | MDRV_SOUND_ADD("ymsnd", YM2203, MCLK/4) | |
| 300 | 300 | MDRV_SOUND_CONFIG(ym2203_config) |
| 301 | 301 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 302 | 302 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
|---|---|---|
| 389 | 389 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 390 | 390 | AM_RANGE(0x00, 0x00) AM_READWRITE(soundlatch_r, SMH_NOP) // snd cmd (1P) / ? |
| 391 | 391 | 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) | |
| 393 | 393 | AM_RANGE(0x0c, 0x0c) AM_READ(fromanc2_sndcpu_nmi_clr) |
| 394 | 394 | ADDRESS_MAP_END |
| 395 | 395 | |
| r6428 | r6429 | |
| 610 | 610 | /* sound hardware */ |
| 611 | 611 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 612 | 612 | |
| 613 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 613 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 614 | 614 | MDRV_SOUND_CONFIG(ym2610_config) |
| 615 | 615 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 616 | 616 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| r6428 | r6429 | |
| 661 | 661 | /* sound hardware */ |
| 662 | 662 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 663 | 663 | |
| 664 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 664 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 665 | 665 | MDRV_SOUND_CONFIG(ym2610_config) |
| 666 | 666 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 667 | 667 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| r6428 | r6429 | |
| 709 | 709 | /* sound hardware */ |
| 710 | 710 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 711 | 711 | |
| 712 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 712 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 713 | 713 | MDRV_SOUND_CONFIG(ym2610_config) |
| 714 | 714 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 715 | 715 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| r6428 | r6429 | |
| 747 | 747 | ROM_REGION( 0x0100000, "gfx4", 0 ) // LAYER1 DATA |
| 748 | 748 | ROM_LOAD( "40-52.bin", 0x000000, 0x100000, CRC(dbb5062d) SHA1(d1be4d675b36ea6ebd602d5c990adcf3c029485e) ) |
| 749 | 749 | |
| 750 | ROM_REGION( 0x0400000, "ym", 0 ) // SOUND DATA | |
| 750 | ROM_REGION( 0x0400000, "ymsnd", 0 ) // SOUND DATA | |
| 751 | 751 | ROM_LOAD( "ic96.bin", 0x000000, 0x200000, CRC(2f1b394c) SHA1(d95dd8231d7873328f2253eaa27374c79d87e21b) ) |
| 752 | 752 | ROM_LOAD( "ic97.bin", 0x200000, 0x200000, CRC(1d1377fc) SHA1(0dae5dfcbcf4ed6662522e9404fcac0236dce04d) ) |
| 753 | 753 | ROM_END |
| r6428 | r6429 | |
| 780 | 780 | ROM_REGION( 0x0200000, "gfx3", 0 ) // TEXT DATA |
| 781 | 781 | ROM_LOAD( "ic28-29.bin", 0x0000000, 0x200000, CRC(f5e262aa) SHA1(35464d059f4814832bf5cb3bede4b8a600bc8a84) ) |
| 782 | 782 | |
| 783 | ROM_REGION( 0x0400000, "ym", 0 ) // SOUND DATA | |
| 783 | ROM_REGION( 0x0400000, "ymsnd", 0 ) // SOUND DATA | |
| 784 | 784 | ROM_LOAD( "ic81.bin", 0x0000000, 0x200000, CRC(8ab6e343) SHA1(5ae28e6944edb0a4b8d0071ce48e348b6e927ca9) ) |
| 785 | 785 | ROM_LOAD( "ic82.bin", 0x0200000, 0x200000, CRC(f57daaf8) SHA1(720eadf771c89d8749317b632bbc5e8ff1f6f520) ) |
| 786 | 786 | ROM_END |
| r6428 | r6429 | |
| 816 | 816 | ROM_REGION( 0x0400000, "gfx3", 0 ) // TEXT DATA |
| 817 | 817 | ROM_LOAD16_WORD_SWAP( "em33-a00.37", 0x0000000, 0x400000, CRC(a3bd4a34) SHA1(78bd5298e83f89c738c18105c8bc809fa6a35206) ) |
| 818 | 818 | |
| 819 | ROM_REGION( 0x0800000, "ym", 0 ) // SOUND DATA | |
| 819 | ROM_REGION( 0x0800000, "ymsnd", 0 ) // SOUND DATA | |
| 820 | 820 | ROM_LOAD16_WORD_SWAP( "em33-p00.88", 0x0000000, 0x400000, CRC(1c6418d2) SHA1(c66d6b35f342fcbeca5414dbb2ac038d8a2ec2c4) ) |
| 821 | 821 | ROM_LOAD16_WORD_SWAP( "em33-p01.89", 0x0400000, 0x400000, CRC(615b4e6e) SHA1(a031773ed27de2263e32422a3d11118bdcb2c197) ) |
| 822 | 822 | ROM_END |
| r6428 | r6429 | |
|---|---|---|
| 172 | 172 | /*realbrk specific memory map*/ |
| 173 | 173 | static ADDRESS_MAP_START( realbrk_mem, ADDRESS_SPACE_PROGRAM, 16 ) |
| 174 | 174 | 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) // | |
| 176 | 176 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs) |
| 177 | 177 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins |
| 178 | 178 | AM_RANGE(0xc00004, 0xc00005) AM_READWRITE(realbrk_dsw_r,SMH_RAM) AM_BASE(&realbrk_dsw_select) // DSW select |
| r6428 | r6429 | |
| 182 | 182 | |
| 183 | 183 | /*pkgnsh specific memory map*/ |
| 184 | 184 | static 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 | |
| 186 | 186 | AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnsh_input_r ) // P1 & P2 (Inputs) |
| 187 | 187 | AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_r,backup_ram_w) AM_BASE(&backup_ram) // RAM |
| 188 | 188 | AM_IMPORT_FROM(base_mem) |
| r6428 | r6429 | |
| 190 | 190 | |
| 191 | 191 | /*pkgnshdx specific memory map*/ |
| 192 | 192 | static 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) // | |
| 194 | 194 | AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnshdx_input_r ) // P1 & P2 (Inputs) |
| 195 | 195 | AM_RANGE(0xc00004, 0xc00005) AM_WRITE(SMH_RAM) AM_BASE(&realbrk_dsw_select) // DSW select |
| 196 | 196 | AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_dx_r,backup_ram_w) AM_BASE(&backup_ram) // RAM |
| r6428 | r6429 | |
| 201 | 201 | static ADDRESS_MAP_START( dai2kaku_mem, ADDRESS_SPACE_PROGRAM, 16 ) |
| 202 | 202 | AM_RANGE(0x605000, 0x6053ff) AM_READWRITE(SMH_RAM,SMH_RAM) AM_BASE(&realbrk_vram_0ras) // rasterinfo (0) |
| 203 | 203 | 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) // | |
| 205 | 205 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs) |
| 206 | 206 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins |
| 207 | 207 | AM_RANGE(0xc00004, 0xc00005) AM_READWRITE(realbrk_dsw_r,SMH_RAM) AM_BASE(&realbrk_dsw_select) // DSW select |
| r6428 | r6429 | |
| 703 | 703 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 704 | 704 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 705 | 705 | |
| 706 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 706 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 707 | 707 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 708 | 708 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 709 | 709 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 1 | /* | |
| 2 | Car Jamboree | |
| 3 | Omori Electric CAD (OEC) 1981 | |
| 1 | /*************************************************************************** | |
| 4 | 2 | |
| 5 | c14 c.d19 | |
| 6 | c13 c.d18 c10 | |
| 7 | c12 c9 | |
| 8 | c11 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 | |
| 18 | 5101 c2 | |
| 19 | 5101 c1 | |
| 20 | 6116 | |
| 21 | 18.432MHz | |
| 22 | 6116 | |
| 23 | Z80A c15 | |
| 24 | Z80A | |
| 25 | 8910 SW | |
| 26 | 8910 | |
| 3 | Car Jamboree | |
| 4 | Omori Electric CAD (OEC) 1981 | |
| 27 | 5 | |
| 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 | ||
| 28 | 29 | Notes: |
| 29 | 30 | |
| 30 | 31 | - sound cpu speed chosen from coin error countdown, 1.536 MHz is too fast |
| r6428 | r6429 | |
| 38 | 39 | - colours are wrong, sprites and characters only using one of the proms |
| 39 | 40 | |
| 40 | 41 | - background colour calculation is a guess |
| 41 | */ | |
| 42 | 42 | |
| 43 | ***************************************************************************/ | |
| 44 | ||
| 43 | 45 | #include "driver.h" |
| 44 | 46 | #include "cpu/z80/z80.h" |
| 45 | 47 | #include "sound/ay8910.h" |
| 48 | #include "carjmbre.h" | |
| 46 | 49 | |
| 47 | WRITE8_HANDLER( carjmbre_flipscreen_w ); | |
| 48 | WRITE8_HANDLER( carjmbre_bgcolor_w ); | |
| 49 | WRITE8_HANDLER( carjmbre_videoram_w ); | |
| 50 | /************************************* | |
| 51 | * | |
| 52 | * Memory maps | |
| 53 | * | |
| 54 | *************************************/ | |
| 50 | 55 | |
| 51 | PALETTE_INIT( carjmbre ); | |
| 52 | VIDEO_START( carjmbre ); | |
| 53 | VIDEO_UPDATE( carjmbre ); | |
| 54 | ||
| 55 | ||
| 56 | 56 | static ADDRESS_MAP_START( carjmbre_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 57 | 57 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 58 | 58 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| r6428 | r6429 | |
| 62 | 62 | AM_RANGE(0x8807, 0x8807) AM_WRITE(carjmbre_flipscreen_w) |
| 63 | 63 | AM_RANGE(0x8fc1, 0x8fc1) AM_WRITENOP //overrun during initial screen clear |
| 64 | 64 | 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) | |
| 67 | 67 | AM_RANGE(0x9880, 0x98df) AM_WRITE(SMH_RAM) //spriteram mirror |
| 68 | 68 | AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") |
| 69 | 69 | AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 92 | 92 | AM_RANGE(0x32, 0x32) AM_WRITENOP //?? written before and after 0x31 with same value |
| 93 | 93 | ADDRESS_MAP_END |
| 94 | 94 | |
| 95 | /************************************* | |
| 96 | * | |
| 97 | * Input ports | |
| 98 | * | |
| 99 | *************************************/ | |
| 100 | ||
| 95 | 101 | static INPUT_PORTS_START( carjmbre ) |
| 96 | 102 | PORT_START("P1") |
| 97 | 103 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) //coin error if held high for 1s |
| r6428 | r6429 | |
| 138 | 144 | PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) |
| 139 | 145 | INPUT_PORTS_END |
| 140 | 146 | |
| 147 | /************************************* | |
| 148 | * | |
| 149 | * Graphics definitions | |
| 150 | * | |
| 151 | *************************************/ | |
| 152 | ||
| 141 | 153 | static const gfx_layout carjmbre_charlayout = |
| 142 | 154 | { |
| 143 | 155 | 8,8, |
| r6428 | r6429 | |
| 165 | 177 | GFXDECODE_ENTRY( "gfx2", 0, carjmbre_spritelayout, 0, 16 ) |
| 166 | 178 | GFXDECODE_END |
| 167 | 179 | |
| 180 | ||
| 181 | /************************************* | |
| 182 | * | |
| 183 | * Machine driver | |
| 184 | * | |
| 185 | *************************************/ | |
| 186 | ||
| 187 | static MACHINE_RESET( carjmbre ) | |
| 188 | { | |
| 189 | carjmbre_state *state = (carjmbre_state *)machine->driver_data; | |
| 190 | ||
| 191 | state->flipscreen = 0; | |
| 192 | state->bgcolor = 0; | |
| 193 | } | |
| 194 | ||
| 168 | 195 | static MACHINE_DRIVER_START( carjmbre ) |
| 169 | 196 | |
| 197 | /* driver data */ | |
| 198 | MDRV_DRIVER_DATA(carjmbre_state) | |
| 199 | ||
| 170 | 200 | /* basic machine hardware */ |
| 171 | 201 | MDRV_CPU_ADD("maincpu", Z80,18432000/6) |
| 172 | 202 | MDRV_CPU_PROGRAM_MAP(carjmbre_map) |
| 173 | 203 | MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) |
| 174 | 204 | |
| 205 | MDRV_MACHINE_RESET(carjmbre) | |
| 206 | ||
| 175 | 207 | MDRV_CPU_ADD("audiocpu", Z80, 1500000) |
| 176 | 208 | MDRV_CPU_PROGRAM_MAP(carjmbre_sound_map) |
| 177 | 209 | MDRV_CPU_IO_MAP(carjmbre_sound_io_map) |
| r6428 | r6429 | |
| 180 | 212 | /* video hardware */ |
| 181 | 213 | MDRV_SCREEN_ADD("screen", RASTER) |
| 182 | 214 | 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 */ | |
| 184 | 216 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 185 | 217 | MDRV_SCREEN_SIZE(32*8, 32*8) |
| 186 | 218 | MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| r6428 | r6429 | |
| 202 | 234 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) |
| 203 | 235 | MACHINE_DRIVER_END |
| 204 | 236 | |
| 237 | /************************************* | |
| 238 | * | |
| 239 | * ROM definition | |
| 240 | * | |
| 241 | *************************************/ | |
| 242 | ||
| 205 | 243 | ROM_START( carjmbre ) |
| 206 | 244 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 207 | 245 | ROM_LOAD( "c1", 0x0000, 0x1000, CRC(62b21739) SHA1(710e5c52f27603aa8f864f6f28d7272f21271d60) ) |
| r6428 | r6429 | |
| 231 | 269 | ROM_LOAD( "c.d18", 0x0020, 0x0020, CRC(7b9ed1b0) SHA1(ec5e1f56e5a2fc726083866c08ac0e1de0ed6ace) ) |
| 232 | 270 | ROM_END |
| 233 | 271 | |
| 234 | GAME( 1983, carjmbre, 0, carjmbre, carjmbre, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", GAME_IMPERFECT_COLORS ) | |
| 272 | /************************************* | |
| 273 | * | |
| 274 | * Game driver | |
| 275 | * | |
| 276 | *************************************/ | |
| 235 | 277 | |
| 278 | GAME( 1983, carjmbre, 0, carjmbre, carjmbre, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 228 | 228 | AM_RANGE(0x178800, 0x1796ff) AM_RAM AM_BASE(&vmetal_videoregs) |
| 229 | 229 | AM_RANGE(0x179700, 0x179713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs ) // Video Registers |
| 230 | 230 | |
| 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) | |
| 232 | 232 | AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") |
| 233 | 233 | |
| 234 | 234 | /* 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 ??? */ |
| r6428 | r6429 | |
| 252 | 252 | |
| 253 | 253 | AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff ) |
| 254 | 254 | 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) | |
| 256 | 256 | |
| 257 | 257 | AM_RANGE(0xff0000, 0xffffff) AM_RAM |
| 258 | 258 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 450 | 450 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) |
| 451 | 451 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) |
| 452 | 452 | |
| 453 | MDRV_SOUND_ADD("es", ES8712, 12000) | |
| 453 | MDRV_SOUND_ADD("essnd", ES8712, 12000) | |
| 454 | 454 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 455 | 455 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| 456 | 456 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 471 | 471 | /* Second half is junk */ |
| 472 | 472 | ROM_LOAD( "8.u9", 0x00000, 0x80000, CRC(c14c001c) SHA1(bad96b5cd40d1c34ef8b702262168ecab8192fb6) ) |
| 473 | 473 | |
| 474 | ROM_REGION( 0x200000, "es", 0 ) /* Samples */ | |
| 474 | ROM_REGION( 0x200000, "essnd", 0 ) /* Samples */ | |
| 475 | 475 | ROM_LOAD( "7.u12", 0x00000, 0x200000, CRC(a88c52f1) SHA1(d74a5a11f84ba6b1042b33a2c156a1071b6fbfe1) ) |
| 476 | 476 | ROM_END |
| 477 | 477 | |
| r6428 | r6429 | |
| 490 | 490 | /* Second half is junk */ |
| 491 | 491 | ROM_LOAD( "8.u9", 0x00000, 0x80000, CRC(c14c001c) SHA1(bad96b5cd40d1c34ef8b702262168ecab8192fb6) ) |
| 492 | 492 | |
| 493 | ROM_REGION( 0x200000, "es", 0 ) /* Samples */ | |
| 493 | ROM_REGION( 0x200000, "essnd", 0 ) /* Samples */ | |
| 494 | 494 | ROM_LOAD( "7.u12", 0x00000, 0x200000, CRC(a88c52f1) SHA1(d74a5a11f84ba6b1042b33a2c156a1071b6fbfe1) ) |
| 495 | 495 | ROM_END |
| 496 | 496 | |
| 497 | GAME( 1995, vmetal, 0, varia, varia, 0, ROT270, "Excellent Systems", "Varia Metal", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) | |
| 498 | GAME( 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 ) | |
| 497 | GAME( 1995, vmetal, 0, varia, varia, 0, ROT270, "Excellent System", "Varia Metal", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) | |
| 498 | GAME( 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 ) |
| r6428 | r6429 | |
|---|---|---|
| 121 | 121 | |
| 122 | 122 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 123 | 123 | 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) | |
| 125 | 125 | AM_RANGE(0x080000, 0x080001) AM_WRITE(battlera_adpcm_data_w) |
| 126 | 126 | AM_RANGE(0x1fe800, 0x1fe80f) AM_DEVWRITE("c6280", c6280_w) |
| 127 | 127 | AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(7) /* Main ram */ |
| r6428 | r6429 | |
| 268 | 268 | /* sound hardware */ |
| 269 | 269 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 270 | 270 | |
| 271 | MDRV_SOUND_ADD("ym", YM2203, 12000000 / 8) | |
| 271 | MDRV_SOUND_ADD("ymsnd", YM2203, 12000000 / 8) | |
| 272 | 272 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) |
| 273 | 273 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) |
| 274 | 274 |
| r6428 | r6429 | |
|---|---|---|
| 464 | 464 | |
| 465 | 465 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 466 | 466 | 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) | |
| 469 | 469 | AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) AM_BASE(&namco_wavedata) /* PSG ( Shared ) */ |
| 470 | 470 | AM_RANGE(0x7000, 0x77ff) AM_RAMBANK(18) /* TRIRAM (shared) */ |
| 471 | 471 | AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ |
| r6428 | r6429 | |
| 1123 | 1123 | /* sound hardware */ |
| 1124 | 1124 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1125 | 1125 | |
| 1126 | MDRV_SOUND_ADD("ym", YM2151, 3579580) | |
| 1126 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579580) | |
| 1127 | 1127 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1128 | 1128 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1129 | 1129 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 4082 | 4082 | ROM_LOAD( "prom_6331.10f", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) /* Compatible with 82s123 prom */ |
| 4083 | 4083 | ROM_END |
| 4084 | 4084 | |
| 4085 | ROM_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) ) | |
| 4104 | ROM_END | |
| 4105 | ||
| 4085 | 4106 | ROM_START( mooncrgx ) |
| 4086 | 4107 | ROM_REGION( 0x8000, "maincpu", 0 ) |
| 4087 | 4108 | ROM_LOAD( "1", 0x0000, 0x0800, CRC(84cf420b) SHA1(82c979467c51df699337d5878340d05bee606480) ) |
| r6428 | r6429 | |
| 5668 | 5689 | // The boards were marked 'Space Dragon' although this doesn't appear in the games. |
| 5669 | 5690 | GAME( 1980, spcdrag, mooncrst, mooncrst, smooncrs, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 1)", GAME_SUPPORTS_SAVE ) |
| 5670 | 5691 | GAME( 1980, spcdraga, mooncrst, mooncrst, smooncrs, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 2)", GAME_SUPPORTS_SAVE ) |
| 5692 | GAME( 1980, stera, mooncrst, mooncrst, smooncrs, mooncrsu, ROT90, "bootleg", "Steraranger (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE ) | |
| 5671 | 5693 | GAME( 1980, mooncrgx, mooncrst, galaxian, mooncrgx, mooncrgx, ROT270, "bootleg", "Moon Cresta (Galaxian hardware)", GAME_SUPPORTS_SAVE ) |
| 5672 | 5694 | GAME( 1980, moonqsr, 0, mooncrst, moonqsr, moonqsr, ROT90, "Nichibutsu", "Moon Quasar", GAME_SUPPORTS_SAVE ) |
| 5673 | 5695 | GAME( 1980, moonal2, galaxian, mooncrst, moonal2, galaxian, ROT90, "Nichibutsu", "Moon Alien Part 2", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 176 | 176 | |
| 177 | 177 | static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 ) |
| 178 | 178 | 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) | |
| 180 | 180 | ADDRESS_MAP_END |
| 181 | 181 | |
| 182 | 182 | |
| r6428 | r6429 | |
| 484 | 484 | /* sound hardware */ |
| 485 | 485 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 486 | 486 | |
| 487 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 487 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 488 | 488 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 489 | 489 | MACHINE_DRIVER_END |
| 490 | 490 |
| r6428 | r6429 | |
|---|---|---|
| 205 | 205 | AM_RANGE(0x8000, 0x83ff) AM_RAM |
| 206 | 206 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 207 | 207 | 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) | |
| 209 | 209 | AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w) |
| 210 | 210 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", dv_sh_bankswitch_w) |
| 211 | 211 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 441 | 441 | /* sound hardware */ |
| 442 | 442 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 443 | 443 | |
| 444 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 444 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 445 | 445 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 446 | 446 | MDRV_SOUND_ROUTE(1, "mono", 0.30) |
| 447 | 447 |
| r6428 | r6429 | |
|---|---|---|
| 150 | 150 | AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM) |
| 151 | 151 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", toki_adpcm_control_w) /* MSM5205 + ROM bank */ |
| 152 | 152 | 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) | |
| 154 | 154 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 155 | 155 | AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r) |
| 156 | 156 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 489 | 489 | /* sound hardware */ |
| 490 | 490 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 491 | 491 | |
| 492 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 492 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 493 | 493 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 494 | 494 | |
| 495 | 495 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
|---|---|---|
| 365 | 365 | |
| 366 | 366 | static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) |
| 367 | 367 | 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) | |
| 370 | 370 | |
| 371 | 371 | AM_RANGE(0x20, 0x20) AM_READWRITE(i8275_preg_r, i8275_preg_w) |
| 372 | 372 | AM_RANGE(0x21, 0x21) AM_READWRITE(i8275_sreg_r, i8275_creg_w) |
| r6428 | r6429 | |
| 715 | 715 | MDRV_VIDEO_UPDATE(dwarfd) |
| 716 | 716 | |
| 717 | 717 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 718 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 718 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 719 | 719 | MDRV_SOUND_CONFIG(ay8910_config) |
| 720 | 720 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 721 | 721 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 559 | 559 | AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r) |
| 560 | 560 | AM_RANGE(0x1800, 0x1800) AM_WRITENOP // this gets written the same values as 0x2000 |
| 561 | 561 | 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) | |
| 563 | 563 | AM_RANGE(0x3000, 0x3000) AM_WRITENOP /* adpcm related? stereo pan? */ |
| 564 | 564 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 565 | 565 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 807 | 807 | /* sound hardware */ |
| 808 | 808 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 809 | 809 | |
| 810 | MDRV_SOUND_ADD("ym", YM3526, 12000000/4) | |
| 810 | MDRV_SOUND_ADD("ymsnd", YM3526, 12000000/4) | |
| 811 | 811 | MDRV_SOUND_CONFIG(ym3526_config) |
| 812 | 812 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 813 | 813 |
| r6428 | r6429 | |
|---|---|---|
| 203 | 203 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 204 | 204 | AM_RANGE(0x2000, 0x23ff) AM_RAM |
| 205 | 205 | 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) | |
| 209 | 209 | AM_RANGE(0x5000, 0x5000) AM_WRITE(soundlatch2_w) |
| 210 | 210 | AM_RANGE(0x6000, 0x6000) AM_WRITE(junofrst_i8039_irq_w) |
| 211 | 211 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 304 | 304 | /* sound hardware */ |
| 305 | 305 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 306 | 306 | |
| 307 | MDRV_SOUND_ADD("ay", AY8910, 14318000/8) | |
| 307 | MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8) | |
| 308 | 308 | MDRV_SOUND_CONFIG(ay8910_config) |
| 309 | 309 | MDRV_SOUND_ROUTE(0, "filter.0.0", 0.30) |
| 310 | 310 | MDRV_SOUND_ROUTE(1, "filter.0.1", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 142 | 142 | |
| 143 | 143 | static ADDRESS_MAP_START( vvillage_io, ADDRESS_SPACE_IO, 8 ) |
| 144 | 144 | 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) | |
| 147 | 147 | AM_RANGE(0x10,0x10) AM_READ_PORT("IN0") |
| 148 | 148 | AM_RANGE(0x11,0x11) AM_READ_PORT("IN1") |
| 149 | 149 | AM_RANGE(0x10,0x10) AM_WRITE(vvillage_scroll_w) |
| r6428 | r6429 | |
| 300 | 300 | |
| 301 | 301 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 302 | 302 | |
| 303 | MDRV_SOUND_ADD("ay", AY8910, 4000000 / 4) | |
| 303 | MDRV_SOUND_ADD("aysnd", AY8910, 4000000 / 4) | |
| 304 | 304 | MDRV_SOUND_CONFIG(ay8910_config) |
| 305 | 305 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 306 | 306 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 226 | 226 | AM_RANGE(0xbe53, 0xbe53) AM_READ(eeprom_r) |
| 227 | 227 | AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_address_w) |
| 228 | 228 | 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) | |
| 230 | 230 | AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well |
| 231 | 231 | // AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r) |
| 232 | 232 | AM_RANGE(0xc000, 0xdfff) AM_READWRITE(hitpoker_cram_r,hitpoker_cram_w) |
| r6428 | r6429 | |
| 483 | 483 | |
| 484 | 484 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 485 | 485 | |
| 486 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 486 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 487 | 487 | MDRV_SOUND_CONFIG(ay8910_config) |
| 488 | 488 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 489 | 489 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 303 | 303 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 304 | 304 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 305 | 305 | 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) | |
| 307 | 307 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 308 | 308 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 309 | 309 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */ |
| r6428 | r6429 | |
| 576 | 576 | /* sound hardware */ |
| 577 | 577 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 578 | 578 | |
| 579 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 579 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 580 | 580 | MDRV_SOUND_CONFIG(ym2610_config) |
| 581 | 581 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 582 | 582 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 616 | 616 | /* sound hardware */ |
| 617 | 617 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 618 | 618 | |
| 619 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 619 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 620 | 620 | MDRV_SOUND_CONFIG(ym2610_config) |
| 621 | 621 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 622 | 622 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 656 | 656 | /* sound hardware */ |
| 657 | 657 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 658 | 658 | |
| 659 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 659 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 660 | 660 | MDRV_SOUND_CONFIG(ym2610_config) |
| 661 | 661 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 662 | 662 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 702 | 702 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* samples */ |
| 703 | 703 | ROM_LOAD( "b51-18.bin", 0x00000, 0x80000, CRC(8b23ac83) SHA1(340b9e7f09c1809a332b41d3fb579f5f8cd6367f) ) |
| 704 | 704 | |
| 705 | ROM_REGION( 0x80000, "ym", 0 ) /* samples */ | |
| 705 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* samples */ | |
| 706 | 706 | ROM_LOAD( "b51-17.bin", 0x00000, 0x80000, CRC(d85096aa) SHA1(dac39ed182e9eda06575f1667c4c1ff9a4a56599) ) |
| 707 | 707 | ROM_END |
| 708 | 708 | |
| r6428 | r6429 | |
| 730 | 730 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* samples */ |
| 731 | 731 | ROM_LOAD( "b56-09.bin", 0x00000, 0x80000, CRC(7fd9ee68) SHA1(edc4455b3f6a6f30f418d03c6e53af875542a325) ) |
| 732 | 732 | |
| 733 | ROM_REGION( 0x80000, "ym", 0 ) /* samples */ | |
| 733 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* samples */ | |
| 734 | 734 | ROM_LOAD( "b56-10.bin", 0x00000, 0x80000, CRC(de1bce59) SHA1(aa3aea30d6f53e60d9a0d4ec767e1b261d5efc8a) ) |
| 735 | 735 | |
| 736 | 736 | ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */ |
| r6428 | r6429 | |
| 761 | 761 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* samples */ |
| 762 | 762 | ROM_LOAD( "b56-09.bin", 0x00000, 0x80000, CRC(7fd9ee68) SHA1(edc4455b3f6a6f30f418d03c6e53af875542a325) ) |
| 763 | 763 | |
| 764 | ROM_REGION( 0x80000, "ym", 0 ) /* samples */ | |
| 764 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* samples */ | |
| 765 | 765 | ROM_LOAD( "b56-10.bin", 0x00000, 0x80000, CRC(de1bce59) SHA1(aa3aea30d6f53e60d9a0d4ec767e1b261d5efc8a) ) |
| 766 | 766 | |
| 767 | 767 | ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */ |
| r6428 | r6429 | |
| 796 | 796 | ROM_REGION( 0x02000, "user1", 0 ) /* zoom table / mixing? */ |
| 797 | 797 | ROM_LOAD( "c02-18.22", 0x00000, 0x02000, CRC(c88f0bbe) SHA1(18c87c744fbeca35d13033e50f62e5383eb4ec2c) ) |
| 798 | 798 | |
| 799 | ROM_REGION( 0x80000, "ym", 0 ) /* samples */ | |
| 799 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* samples */ | |
| 800 | 800 | ROM_LOAD( "c02-01.31", 0x00000, 0x80000, CRC(d5a3d1aa) SHA1(544f807015b5d854a4d8cb73e4dbae4b953fd440) ) |
| 801 | 801 | ROM_END |
| 802 | 802 |
| r6428 | r6429 | |
|---|---|---|
| 166 | 166 | AM_RANGE(0x0802, 0x0802) AM_WRITE(MC6840_write_port_0_w) /* Takahiro Nogi. 1999/09/27 */ |
| 167 | 167 | AM_RANGE(0x0803, 0x0803) AM_WRITE(MC6840_write_port_1_w) /* Takahiro Nogi. 1999/09/27 */ |
| 168 | 168 | 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) | |
| 171 | 171 | AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM) |
| 172 | 172 | ADDRESS_MAP_END |
| 173 | 173 | |
| r6428 | r6429 | |
| 351 | 351 | /* sound hardware */ |
| 352 | 352 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 353 | 353 | |
| 354 | MDRV_SOUND_ADD("ay", AY8910, 3579545 / 2) | |
| 354 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545 / 2) | |
| 355 | 355 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 356 | 356 | |
| 357 | MDRV_SOUND_ADD("ym", Y8950, 3579545) | |
| 357 | MDRV_SOUND_ADD("ymsnd", Y8950, 3579545) | |
| 358 | 358 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 359 | 359 | MACHINE_DRIVER_END |
| 360 | 360 | |
| r6428 | r6429 | |
| 395 | 395 | ROM_REGION( 0x08000, "gfx5", 0 ) /* background tilemaps */ |
| 396 | 396 | ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) ) |
| 397 | 397 | |
| 398 | ROM_REGION( 0x20000, "ym", 0 ) /* samples */ | |
| 398 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* samples */ | |
| 399 | 399 | ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) ) |
| 400 | 400 | ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) ) |
| 401 | 401 | |
| r6428 | r6429 | |
| 430 | 430 | ROM_REGION( 0x08000, "gfx5", 0 ) /* background tilemaps */ |
| 431 | 431 | ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) ) |
| 432 | 432 | |
| 433 | ROM_REGION( 0x20000, "ym", 0 ) /* samples */ | |
| 433 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* samples */ | |
| 434 | 434 | ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) ) |
| 435 | 435 | ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) ) |
| 436 | 436 | ROM_END |
| r6428 | r6429 | |
|---|---|---|
| 94 | 94 | static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 ) |
| 95 | 95 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 96 | 96 | 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) | |
| 98 | 98 | #if 0 |
| 99 | AM_RANGE(0x18, 0x1b) AM_DEVREAD("ym", ym2608_r) | |
| 99 | AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_r) | |
| 100 | 100 | #endif |
| 101 | 101 | ADDRESS_MAP_END |
| 102 | 102 | |
| r6428 | r6429 | |
| 263 | 263 | /* sound hardware */ |
| 264 | 264 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 265 | 265 | |
| 266 | MDRV_SOUND_ADD("ym", YM2608, XTAL_8MHz) /* verified on pcb */ | |
| 266 | MDRV_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */ | |
| 267 | 267 | MDRV_SOUND_CONFIG(ym2608_config) |
| 268 | 268 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 269 | 269 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 304 | 304 | ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 ) /* gfx data for the 051316 */ |
| 305 | 305 | /* RAM, not ROM - handled at run time */ |
| 306 | 306 | |
| 307 | ROM_REGION( 0x20000, "ym", 0 ) /* sound samples */ | |
| 307 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* sound samples */ | |
| 308 | 308 | ROM_LOAD( "osb", 0x00000, 0x20000, CRC(d49ab2f5) SHA1(92f7f6c8f35ac39910879dd88d2cfb6db7c848c9) ) |
| 309 | 309 | ROM_END |
| 310 | 310 | |
| r6428 | r6429 | |
| 339 | 339 | ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 ) /* gfx data for the 051316 */ |
| 340 | 340 | /* RAM, not ROM - handled at run time */ |
| 341 | 341 | |
| 342 | ROM_REGION( 0x20000, "ym", 0 ) /* sound samples */ | |
| 342 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* sound samples */ | |
| 343 | 343 | ROM_LOAD( "osb", 0x00000, 0x20000, CRC(d49ab2f5) SHA1(92f7f6c8f35ac39910879dd88d2cfb6db7c848c9) ) |
| 344 | 344 | ROM_END |
| 345 | 345 |
| r6428 | r6429 | |
|---|---|---|
| 315 | 315 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 316 | 316 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 317 | 317 | 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) | |
| 319 | 319 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 320 | 320 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w) |
| 321 | 321 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 545 | 545 | /* sound hardware */ |
| 546 | 546 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 547 | 547 | |
| 548 | MDRV_SOUND_ADD("ym", YM2610B, 16000000/2) | |
| 548 | MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2) | |
| 549 | 549 | MDRV_SOUND_CONFIG(ym2610_config) |
| 550 | 550 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 551 | 551 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 585 | 585 | /* sound hardware */ |
| 586 | 586 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 587 | 587 | |
| 588 | MDRV_SOUND_ADD("ym", YM2610B, 16000000/2) | |
| 588 | MDRV_SOUND_ADD("ymsnd", YM2610B, 16000000/2) | |
| 589 | 589 | MDRV_SOUND_CONFIG(ym2610_config) |
| 590 | 590 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 591 | 591 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 618 | 618 | ROM_LOAD ( "d71-03.25", 0x300000, 0x100000, CRC(dccef9ec) SHA1(ee7a49727b822cf4c1d7acff994b77ea6191c423) ) |
| 619 | 619 | ROM_FILL ( 0x200000, 0x100000, 0 ) |
| 620 | 620 | |
| 621 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 621 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 622 | 622 | ROM_LOAD( "d71-06.37", 0x00000, 0x80000, CRC(f3324188) SHA1(70dd724441eae8614218bc7f0f51860bd2462f0c) ) |
| 623 | 623 | |
| 624 | 624 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 653 | 653 | ROM_LOAD ( "d74_04.25", 0x600000, 0x200000, CRC(2f385638) SHA1(1ba2ec7d9b1c491e1cc6d7e646e09ef2bc063f25) ) |
| 654 | 654 | ROM_FILL ( 0x400000, 0x200000, 0 ) |
| 655 | 655 | |
| 656 | ROM_REGION( 0x200000, "ym", 0 ) /* ADPCM samples */ | |
| 656 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 657 | 657 | ROM_LOAD( "d74_01.37", 0x000000, 0x200000, CRC(115313e0) SHA1(51a69e7a26960b1328ccefeaec0fb26bdccc39f2) ) |
| 658 | 658 | |
| 659 | 659 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 680 | 680 | ROM_LOAD ( "d74_04.25", 0x600000, 0x200000, CRC(2f385638) SHA1(1ba2ec7d9b1c491e1cc6d7e646e09ef2bc063f25) ) |
| 681 | 681 | ROM_FILL ( 0x400000, 0x200000, 0 ) |
| 682 | 682 | |
| 683 | ROM_REGION( 0x200000, "ym", 0 ) /* ADPCM samples */ | |
| 683 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 684 | 684 | ROM_LOAD( "d74_01.37", 0x000000, 0x200000, CRC(115313e0) SHA1(51a69e7a26960b1328ccefeaec0fb26bdccc39f2) ) |
| 685 | 685 | |
| 686 | 686 | /* no Delta-T samples */ |
| r6428 | r6429 | |
|---|---|---|
| 589 | 589 | AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w) |
| 590 | 590 | AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w) |
| 591 | 591 | 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) | |
| 594 | 594 | AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w) |
| 595 | 595 | ADDRESS_MAP_END |
| 596 | 596 | |
| r6428 | r6429 | |
| 608 | 608 | AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w) |
| 609 | 609 | AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w) |
| 610 | 610 | 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) | |
| 613 | 613 | AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w) |
| 614 | 614 | ADDRESS_MAP_END |
| 615 | 615 | |
| r6428 | r6429 | |
| 635 | 635 | AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w) |
| 636 | 636 | AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w) |
| 637 | 637 | 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) | |
| 640 | 640 | AM_RANGE(0xff, 0xff) AM_WRITE(meritm_bank_w) |
| 641 | 641 | ADDRESS_MAP_END |
| 642 | 642 | |
| r6428 | r6429 | |
| 937 | 937 | static MACHINE_START(meritm_crt260) |
| 938 | 938 | { |
| 939 | 939 | meritm_ram = auto_alloc_array(machine, UINT8, 0x8000 ); |
| 940 | memset( | |
| 940 | memset( | |
| 941 | 941 | memory_configure_bank(machine, 1, 0, 128, memory_region(machine, "maincpu"), 0x8000); |
| 942 | 942 | memory_configure_bank(machine, 2, 0, 128, memory_region(machine, "maincpu"), 0x8000); |
| 943 | 943 | memory_configure_bank(machine, 3, 0, 4, meritm_ram, 0x2000); |
| r6428 | r6429 | |
| 1006 | 1006 | |
| 1007 | 1007 | /* sound hardware */ |
| 1008 | 1008 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1009 | MDRV_SOUND_ADD("ay", AY8910, SYSTEM_CLK/12) | |
| 1009 | MDRV_SOUND_ADD("aysnd", AY8910, SYSTEM_CLK/12) | |
| 1010 | 1010 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1011 | 1011 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1012 | 1012 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 235 | 235 | |
| 236 | 236 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 237 | 237 | 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) | |
| 239 | 239 | ADDRESS_MAP_END |
| 240 | 240 | |
| 241 | 241 | |
| r6428 | r6429 | |
| 475 | 475 | /* sound hardware */ |
| 476 | 476 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 477 | 477 | |
| 478 | MDRV_SOUND_ADD("ym", YM3812, 24000000/7) | |
| 478 | MDRV_SOUND_ADD("ymsnd", YM3812, 24000000/7) | |
| 479 | 479 | MDRV_SOUND_CONFIG(ym3812_config) |
| 480 | 480 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 481 | 481 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 278 | 278 | static ADDRESS_MAP_START( sound_map_mutantf, ADDRESS_SPACE_PROGRAM, 8 ) |
| 279 | 279 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 280 | 280 | 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) | |
| 282 | 282 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 283 | 283 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 284 | 284 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 290 | 290 | static ADDRESS_MAP_START( stoneage_s_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 291 | 291 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 292 | 292 | 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) | |
| 294 | 294 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 295 | 295 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 296 | 296 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 767 | 767 | /* sound hardware */ |
| 768 | 768 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 769 | 769 | |
| 770 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 770 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 771 | 771 | MDRV_SOUND_CONFIG(ym2151_interface2) |
| 772 | 772 | MDRV_SOUND_ROUTE(0, "mono", 0.45) |
| 773 | 773 | MDRV_SOUND_ROUTE(1, "mono", 0.45) |
| r6428 | r6429 | |
| 908 | 908 | /* sound hardware */ |
| 909 | 909 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 910 | 910 | |
| 911 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 911 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 912 | 912 | MDRV_SOUND_CONFIG(ym2151_config) |
| 913 | 913 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 914 | 914 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 831 | 831 | AM_RANGE(0xf100, 0xf100) AM_DEVWRITE("sn1", sn76496_w) /* SN76489 #1 */ |
| 832 | 832 | AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports 2 & 4 */ |
| 833 | 833 | 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 */ | |
| 835 | 835 | 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) */ | |
| 837 | 837 | AM_RANGE(0xf700, 0xf701) AM_READWRITE(usart_8251_r, usart_8251_w) /* USART 8251 port */ |
| 838 | 838 | AM_RANGE(0xf800, 0xf803) AM_READWRITE(copro_sm7831_r, copro_sm7831_w) /* SM7831 Co-Processor */ |
| 839 | 839 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1284 | 1284 | MDRV_SOUND_ADD("sn3", SN76489, C_06B49P_CLKOUT_03) /* 3 MHz. */ |
| 1285 | 1285 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 1286 | 1286 | |
| 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. */ | |
| 1288 | 1288 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1289 | 1289 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.00) /* not routed to audio hardware */ |
| 1290 | 1290 |
| r6428 | r6429 | |
|---|---|---|
| 156 | 156 | |
| 157 | 157 | static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 158 | 158 | 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 */ | |
| 160 | 160 | AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_data_w) /* Speech data */ |
| 161 | 161 | AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ |
| 162 | 162 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 295 | 295 | /* sound hardware */ |
| 296 | 296 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 297 | 297 | |
| 298 | MDRV_SOUND_ADD("ym", YM2203, XTAL_3_579545MHz) /* verified on pcb */ | |
| 298 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_3_579545MHz) /* verified on pcb */ | |
| 299 | 299 | MDRV_SOUND_CONFIG(ym2203_config) |
| 300 | 300 | MDRV_SOUND_ROUTE(0, "filter1", 0.25) |
| 301 | 301 | MDRV_SOUND_ROUTE(1, "filter2", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 181 | 181 | |
| 182 | 182 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 183 | 183 | 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) | |
| 186 | 186 | ADDRESS_MAP_END |
| 187 | 187 | |
| 188 | 188 | |
| r6428 | r6429 | |
| 865 | 865 | /* sound hardware */ |
| 866 | 866 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 867 | 867 | |
| 868 | MDRV_SOUND_ADD("ay", AY8910, 18000000/12) | |
| 868 | MDRV_SOUND_ADD("aysnd", AY8910, 18000000/12) | |
| 869 | 869 | MDRV_SOUND_CONFIG(ay8910_config) |
| 870 | 870 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 871 | 871 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 119 | 119 | |
| 120 | 120 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 121 | 121 | 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) | |
| 123 | 123 | AM_RANGE(0x80, 0x81) AM_READWRITE(soundlatch_r, vigilant_sample_addr_w) /* STL / STH */ |
| 124 | 124 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w) /* COUNT UP */ |
| 125 | 125 | AM_RANGE(0x83, 0x83) AM_WRITE(m72_sound_irq_ack_w) /* IRQ clear */ |
| r6428 | r6429 | |
| 556 | 556 | /* sound hardware */ |
| 557 | 557 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 558 | 558 | |
| 559 | MDRV_SOUND_ADD("ym", YM2151, 3579645) | |
| 559 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579645) | |
| 560 | 560 | MDRV_SOUND_CONFIG(ym2151_config) |
| 561 | 561 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.55) |
| 562 | 562 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.55) |
| r6428 | r6429 | |
| 658 | 658 | /* sound hardware */ |
| 659 | 659 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 660 | 660 | |
| 661 | MDRV_SOUND_ADD("ym", YM2151, 3579645) | |
| 661 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579645) | |
| 662 | 662 | MDRV_SOUND_CONFIG(ym2151_config) |
| 663 | 663 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.55) |
| 664 | 664 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.55) |
| r6428 | r6429 | |
|---|---|---|
| 254 | 254 | static ADDRESS_MAP_START( galkoku_io_map, ADDRESS_SPACE_IO, 8 ) |
| 255 | 255 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 256 | 256 | 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) | |
| 258 | 258 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 259 | 259 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 260 | 260 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 268 | 268 | static ADDRESS_MAP_START( hyouban_io_map, ADDRESS_SPACE_IO, 8 ) |
| 269 | 269 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 270 | 270 | 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) | |
| 273 | 273 | AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) |
| 274 | 274 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w) |
| 275 | 275 | AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w) |
| r6428 | r6429 | |
| 320 | 320 | AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", DAC_WRITE) |
| 321 | 321 | AM_RANGE(0x04, 0x04) AM_WRITE(nbmj8991_soundbank_w) |
| 322 | 322 | 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) | |
| 324 | 324 | ADDRESS_MAP_END |
| 325 | 325 | |
| 326 | 326 | |
| r6428 | r6429 | |
| 1498 | 1498 | |
| 1499 | 1499 | /* sound hardware */ |
| 1500 | 1500 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1501 | MDRV_SOUND_ADD("fm", YM3812, 25000000/10) | |
| 1501 | MDRV_SOUND_ADD("fmsnd", YM3812, 25000000/10) | |
| 1502 | 1502 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 1503 | 1503 | |
| 1504 | 1504 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
| 1537 | 1537 | /* sound hardware */ |
| 1538 | 1538 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1539 | 1539 | |
| 1540 | MDRV_SOUND_ADD("fm", YM3812, 25000000/6.25) | |
| 1540 | MDRV_SOUND_ADD("fmsnd", YM3812, 25000000/6.25) | |
| 1541 | 1541 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 1542 | 1542 | |
| 1543 | 1543 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 1554 | 1554 | MDRV_IMPORT_FROM(nbmjdrv1) |
| 1555 | 1555 | |
| 1556 | 1556 | /* sound hardware */ |
| 1557 | MDRV_SOUND_REPLACE("fm", AY8910, 1250000) | |
| 1557 | MDRV_SOUND_REPLACE("fmsnd", AY8910, 1250000) | |
| 1558 | 1558 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1559 | 1559 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 1560 | 1560 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 162 | 162 | |
| 163 | 163 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 164 | 164 | 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) | |
| 166 | 166 | AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_w) |
| 167 | 167 | AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_w) |
| 168 | 168 | /* AM_RANGE(0x04, 0x04) AM_READNOP value read and *discarded* */ |
| r6428 | r6429 | |
| 467 | 467 | /* sound hardware */ |
| 468 | 468 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 469 | 469 | |
| 470 | MDRV_SOUND_ADD("ym", YM3526, 8000000/2) | |
| 470 | MDRV_SOUND_ADD("ymsnd", YM3526, 8000000/2) | |
| 471 | 471 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 472 | 472 | |
| 473 | 473 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 509 | 509 | |
| 510 | 510 | /* sound hardware */ |
| 511 | 511 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 512 | MDRV_SOUND_ADD("ym", YM3526, 8000000/2) | |
| 512 | MDRV_SOUND_ADD("ymsnd", YM3526, 8000000/2) | |
| 513 | 513 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 514 | 514 | |
| 515 | 515 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 138 | 138 | AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w) /* ADPCM data for the MSM5205 chip */ |
| 139 | 139 | // AM_RANGE(0xe000, 0xe000) AM_WRITENOP /* ??? */ |
| 140 | 140 | 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 */ | |
| 142 | 142 | AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM */ |
| 143 | 143 | ADDRESS_MAP_END |
| 144 | 144 | |
| r6428 | r6429 | |
| 182 | 182 | |
| 183 | 183 | static ADDRESS_MAP_START( roldfrog_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 184 | 184 | 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) | |
| 186 | 186 | AM_RANGE(0x40, 0x40) AM_NOP /* NMI ack */ |
| 187 | 187 | AM_RANGE(0x70, 0x70) AM_READ(soundlatch_r) |
| 188 | 188 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 421 | 421 | /* sound hardware */ |
| 422 | 422 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 423 | 423 | |
| 424 | MDRV_SOUND_ADD("ym", YM3812, 3000000) | |
| 424 | MDRV_SOUND_ADD("ymsnd", YM3812, 3000000) | |
| 425 | 425 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 426 | 426 | |
| 427 | 427 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
| 475 | 475 | |
| 476 | 476 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 477 | 477 | |
| 478 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 478 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 479 | 479 | MDRV_SOUND_CONFIG(ym2203_config) |
| 480 | 480 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 481 | 481 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 514 | 514 | /* sound hardware */ |
| 515 | 515 | // MDRV_SPEAKER_STANDARD_MONO("mono") |
| 516 | 516 | |
| 517 | // MDRV_SOUND_ADD("ym", YM3812, 3000000) | |
| 517 | // MDRV_SOUND_ADD("ymsnd", YM3812, 3000000) | |
| 518 | 518 | // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 519 | 519 | |
| 520 | 520 | // MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
|---|---|---|
| 91 | 91 | |
| 92 | 92 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 93 | 93 | |
| 94 | MDRV_SOUND_ADD("ay", AY8910, 1500000/2) | |
| 94 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000/2) | |
| 95 | 95 | // MDRV_SOUND_CONFIG(ay8910_config) |
| 96 | 96 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 97 | 97 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 574 | 574 | AY8910_DEFAULT_LOADS, |
| 575 | 575 | DEVCB_NULL, |
| 576 | 576 | 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?) */ | |
| 578 | 578 | DEVCB_NULL |
| 579 | 579 | }; |
| 580 | 580 | |
| r6428 | r6429 | |
| 662 | 662 | MDRV_SOUND_CONFIG(stratvox_ay8910_interface) |
| 663 | 663 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 664 | 664 | |
| 665 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 665 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 666 | 666 | MDRV_SOUND_CONFIG(sn76477_intf) |
| 667 | 667 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 668 | 668 |
| r6428 | r6429 | |
|---|---|---|
| 121 | 121 | #include "sound/ay8910.h" |
| 122 | 122 | #include "sound/samples.h" |
| 123 | 123 | |
| 124 | SAMPLES_START( fghtbskt_sh_start ); | |
| 125 | WRITE8_HANDLER( fghtbskt_samples_w ); | |
| 124 | typedef struct _m63_state m63_state; | |
| 125 | struct _m63_state | |
| 126 | { | |
| 127 | UINT8 * videoram; | |
| 128 | UINT8 * colorram; | |
| 129 | UINT8 * spriteram; | |
| 130 | UINT8 * videoram2; | |
| 131 | UINT8 * scrollram; | |
| 126 | 132 | |
| 127 | static UINT8 *m63_videoram2, *m63_scrollram; | |
| 128 | static int pal_bank, fg_flag, sy_offset; | |
| 129 | static tilemap *bg_tilemap, *fg_tilemap; | |
| 130 | static UINT8 sound_irq; | |
| 131 | static int sound_status; | |
| 132 | static int p1,p2; | |
| 133 | /* video-related */ | |
| 134 | tilemap *bg_tilemap, *fg_tilemap; | |
| 135 | int pal_bank, fg_flag, sy_offset; | |
| 133 | 136 | |
| 137 | /* sound-related */ | |
| 138 | UINT8 sound_irq; | |
| 139 | int sound_status; | |
| 140 | int p1, p2; | |
| 141 | INT16 *samplebuf; | |
| 134 | 142 | |
| 143 | /* sound devices */ | |
| 144 | const device_config *ay1; | |
| 145 | const device_config *ay2; | |
| 146 | const device_config *samples; | |
| 147 | }; | |
| 148 | ||
| 149 | ||
| 135 | 150 | static PALETTE_INIT( m63 ) |
| 136 | 151 | { |
| 137 | 152 | int i; |
| 138 | 153 | |
| 139 | for (i = 0;i < 256;i++) | |
| 154 | for (i = 0; i < 256; i++) | |
| 140 | 155 | { |
| 141 | int bit0,bit1,bit2,bit3,r,g,b; | |
| 156 | int bit0, bit1, bit2, bit3, r, g, b; | |
| 142 | 157 | |
| 143 | 158 | /* red component */ |
| 144 | 159 | bit0 = (color_prom[i] >> 0) & 0x01; |
| r6428 | r6429 | |
| 162 | 177 | palette_set_color(machine,i,MAKE_RGB(r,g,b)); |
| 163 | 178 | } |
| 164 | 179 | |
| 165 | color_prom += 3*256; | |
| 180 | color_prom += 3 * 256; | |
| 166 | 181 | |
| 167 | for (i = 0;i < 4;i++) | |
| 182 | for (i = 0; i < 4; i++) | |
| 168 | 183 | { |
| 169 | int bit0,bit1,bit2,r,g,b; | |
| 184 | int bit0, bit1, bit2, r, g, b; | |
| 170 | 185 | |
| 171 | 186 | /* red component */ |
| 172 | 187 | bit0 = (color_prom[i] >> 0) & 0x01; |
| r6428 | r6429 | |
| 189 | 204 | |
| 190 | 205 | static WRITE8_HANDLER( m63_videoram_w ) |
| 191 | 206 | { |
| 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); | |
| 194 | 211 | } |
| 195 | 212 | |
| 196 | 213 | static WRITE8_HANDLER( m63_colorram_w ) |
| 197 | 214 | { |
| 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); | |
| 200 | 219 | } |
| 201 | 220 | |
| 202 | 221 | static WRITE8_HANDLER( m63_videoram2_w ) |
| 203 | 222 | { |
| 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); | |
| 206 | 227 | } |
| 207 | 228 | |
| 208 | 229 | static WRITE8_HANDLER( m63_palbank_w ) |
| 209 | 230 | { |
| 210 | if (pal_bank != (data & 0x01)) | |
| 231 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 232 | ||
| 233 | if (state->pal_bank != (data & 0x01)) | |
| 211 | 234 | { |
| 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); | |
| 214 | 237 | } |
| 215 | 238 | } |
| 216 | 239 | |
| r6428 | r6429 | |
| 225 | 248 | |
| 226 | 249 | static WRITE8_HANDLER( fghtbskt_flipscreen_w ) |
| 227 | 250 | { |
| 251 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 252 | ||
| 228 | 253 | 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; | |
| 230 | 255 | } |
| 231 | 256 | |
| 232 | 257 | |
| 233 | 258 | static TILE_GET_INFO( get_bg_tile_info ) |
| 234 | 259 | { |
| 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; | |
| 238 | 261 | |
| 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 | ||
| 239 | 266 | SET_TILE_INFO(1, code, color, 0); |
| 240 | 267 | } |
| 241 | 268 | |
| 242 | 269 | static TILE_GET_INFO( get_fg_tile_info ) |
| 243 | 270 | { |
| 244 | | |
| 271 | m63_state *state = (m63_st | |
| 245 | 272 | |
| 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); | |
| 247 | 276 | } |
| 248 | 277 | |
| 249 | 278 | static VIDEO_START( m63 ) |
| 250 | 279 | { |
| 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; | |
| 253 | 281 | |
| 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); | |
| 256 | 284 | |
| 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); | |
| 261 | 287 | } |
| 262 | 288 | |
| 263 | 289 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) |
| 264 | 290 | { |
| 291 | m63_state *state = (m63_state *)machine->driver_data; | |
| 265 | 292 | int offs; |
| 266 | 293 | |
| 267 | for (offs = 0;offs < spriteram_size;offs += 4) | |
| 294 | for (offs = 0; offs < spriteram_size; offs += 4) | |
| 268 | 295 | { |
| 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; | |
| 272 | 299 | 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]; | |
| 275 | 302 | |
| 276 | 303 | if (flip_screen_get(machine)) |
| 277 | 304 | { |
| 278 | 305 | sx = 240 - sx; |
| 279 | sy = sy_offset - sy; | |
| 306 | sy = state->sy_offset - sy; | |
| 280 | 307 | flipx = !flipx; |
| 281 | 308 | flipy = !flipy; |
| 282 | 309 | } |
| r6428 | r6429 | |
| 294 | 321 | machine->gfx[2], |
| 295 | 322 | code, color, |
| 296 | 323 | flipx, flipy, |
| 297 | sx-0x100, sy, 0); | |
| 324 | sx - 0x100, sy, 0); | |
| 298 | 325 | } |
| 299 | 326 | |
| 300 | 327 | } |
| r6428 | r6429 | |
| 302 | 329 | |
| 303 | 330 | static VIDEO_UPDATE( m63 ) |
| 304 | 331 | { |
| 332 | m63_state *state = (m63_state *)screen->machine->driver_data; | |
| 333 | ||
| 305 | 334 | int col; |
| 306 | 335 | |
| 307 | 336 | for (col = 0; col < 32; col++) |
| 308 | tilemap_set_scrolly(bg_tilemap, col, | |
| 337 | tilemap_set_scrolly(state->bg_tilemap, col, state->scrollram[col * 8]); | |
| 309 | 338 | |
| 310 | tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); | |
| 339 | tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); | |
| 311 | 340 | 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); | |
| 313 | 342 | return 0; |
| 314 | 343 | } |
| 315 | 344 | |
| r6428 | r6429 | |
| 327 | 356 | |
| 328 | 357 | static WRITE8_HANDLER( snddata_w ) |
| 329 | 358 | { |
| 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; | |
| 332 | 360 | |
| 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; | |
| 343 | 371 | } |
| 344 | 372 | |
| 345 | 373 | static WRITE8_HANDLER( p1_w ) |
| 346 | 374 | { |
| 347 | p1 = data; | |
| 375 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 376 | state->p1 = data; | |
| 348 | 377 | } |
| 349 | 378 | |
| 350 | 379 | static WRITE8_HANDLER( p2_w ) |
| 351 | 380 | { |
| 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) | |
| 354 | 385 | { |
| 355 | 386 | cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE); |
| 356 | 387 | } |
| r6428 | r6429 | |
| 358 | 389 | |
| 359 | 390 | static READ8_HANDLER( snd_status_r ) |
| 360 | 391 | { |
| 361 | return sound_status; | |
| 392 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 393 | return state->sound_status; | |
| 362 | 394 | } |
| 363 | 395 | |
| 364 | 396 | static READ8_HANDLER( irq_r ) |
| 365 | 397 | { |
| 366 | if (sound_irq) | |
| 398 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 399 | ||
| 400 | if (state->sound_irq) | |
| 367 | 401 | { |
| 368 | sound_irq = 0; | |
| 402 | state->sound_irq = 0; | |
| 369 | 403 | return 1; |
| 370 | 404 | } |
| 371 | 405 | return 0; |
| r6428 | r6429 | |
| 373 | 407 | |
| 374 | 408 | static READ8_HANDLER( snddata_r ) |
| 375 | 409 | { |
| 376 | switch(p2 & 0xf0) | |
| 410 | m63_state *state = (m63_state *)space->machine->driver_data; | |
| 411 | switch (state->p2 & 0xf0) | |
| 377 | 412 | { |
| 378 | 413 | 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]; | |
| 380 | 415 | } |
| 381 | 416 | return 0xff; |
| 382 | 417 | } |
| 383 | 418 | |
| 419 | static 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 | ||
| 384 | 427 | static ADDRESS_MAP_START( m63_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 385 | 428 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 386 | 429 | AM_RANGE(0xd000, 0xdfff) AM_RAM |
| 387 | 430 | 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) | |
| 393 | 436 | AM_RANGE(0xf000, 0xf000) AM_WRITE(interrupt_enable_w) /* NMI enable */ |
| 394 | 437 | AM_RANGE(0xf002, 0xf002) AM_WRITE(m63_flipscreen_w) |
| 395 | 438 | AM_RANGE(0xf003, 0xf003) AM_WRITE(m63_palbank_w) |
| r6428 | r6429 | |
| 406 | 449 | AM_RANGE(0x8000, 0xbfff) AM_ROM |
| 407 | 450 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 408 | 451 | 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) | |
| 414 | 457 | AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r) |
| 415 | 458 | AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1") |
| 416 | 459 | AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 622 | 665 | GFXDECODE_END |
| 623 | 666 | |
| 624 | 667 | |
| 668 | static 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 | ||
| 625 | 682 | static const samples_interface fghtbskt_samples_interface = |
| 626 | 683 | { |
| 627 | 684 | 1, |
| r6428 | r6429 | |
| 631 | 688 | |
| 632 | 689 | static INTERRUPT_GEN( snd_irq ) |
| 633 | 690 | { |
| 634 | sound_irq = 1; | |
| 691 | m63_state *state = (m63_state *)device->machine->driver_data; | |
| 692 | state->sound_irq = 1; | |
| 635 | 693 | } |
| 636 | 694 | |
| 695 | static 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 | ||
| 714 | static 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 | ||
| 637 | 726 | static MACHINE_DRIVER_START( m63 ) |
| 638 | 727 | |
| 728 | /* driver data */ | |
| 729 | MDRV_DRIVER_DATA(m63_state) | |
| 730 | ||
| 639 | 731 | /* basic machine hardware */ |
| 640 | 732 | MDRV_CPU_ADD("maincpu",Z80,XTAL_12MHz/4) /* 3 MHz */ |
| 641 | 733 | MDRV_CPU_PROGRAM_MAP(m63_map) |
| r6428 | r6429 | |
| 646 | 738 | MDRV_CPU_IO_MAP(i8039_port_map) |
| 647 | 739 | MDRV_CPU_PERIODIC_INT(snd_irq, 60) |
| 648 | 740 | |
| 741 | MDRV_MACHINE_START(m63) | |
| 742 | MDRV_MACHINE_RESET(m63) | |
| 649 | 743 | |
| 650 | 744 | /* video hardware */ |
| 651 | 745 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
| 680 | 774 | |
| 681 | 775 | static MACHINE_DRIVER_START( fghtbskt ) |
| 682 | 776 | |
| 777 | /* driver data */ | |
| 778 | MDRV_DRIVER_DATA(m63_state) | |
| 779 | ||
| 683 | 780 | /* basic machine hardware */ |
| 684 | 781 | MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 3 MHz */ |
| 685 | 782 | MDRV_CPU_PROGRAM_MAP(fghtbskt_map) |
| r6428 | r6429 | |
| 690 | 787 | MDRV_CPU_IO_MAP(i8039_port_map) |
| 691 | 788 | MDRV_CPU_PERIODIC_INT(snd_irq, 60/2) |
| 692 | 789 | |
| 790 | MDRV_MACHINE_START(m63) | |
| 791 | MDRV_MACHINE_RESET(m63) | |
| 792 | ||
| 693 | 793 | /* video hardware */ |
| 694 | 794 | MDRV_SCREEN_ADD("screen", RASTER) |
| 695 | 795 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 888 | 988 | ROM_LOAD( "fb_r.9e", 0x0000, 0x0100, CRC(c5cdc8ba) SHA1(3fcef3ebe0dda72dfa35e042ff611758c345d749) ) |
| 889 | 989 | ROM_LOAD( "fb_g.10e", 0x0100, 0x0100, CRC(1460c936) SHA1(f99a544c83931de098a6cfac391f63ae43f5cdd0) ) |
| 890 | 990 | ROM_LOAD( "fb_b.11e", 0x0200, 0x0100, CRC(fca5bf0e) SHA1(5846f43aa2906cac58e300fdab197b99f896e3ef) ) |
| 891 | ||
| 892 | ||
| 893 | 991 | ROM_END |
| 894 | 992 | |
| 895 | 993 | static DRIVER_INIT( wilytowr ) |
| 896 | 994 | { |
| 897 | sy_offset = 238; | |
| 995 | m63_state *state = (m63_state *)machine->driver_data; | |
| 996 | state->sy_offset = 238; | |
| 898 | 997 | } |
| 899 | 998 | |
| 900 | 999 | static DRIVER_INIT( fghtbskt ) |
| 901 | 1000 | { |
| 902 | sy_offset = 240; | |
| 1001 | m63_state *state = (m63_state *)machine->driver_data; | |
| 1002 | state->sy_offset = 240; | |
| 903 | 1003 | } |
| 904 | 1004 | |
| 905 | GAME( 1984, wilytowr, 0, m63, wilytowr, wilytowr, ROT180, "Irem", "Wily Tower", 0 ) | |
| 906 | GAME( 1985, atomboy, wilytowr, atomboy, wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision B)", 0 ) | |
| 907 | GAME( 1985, atomboya, wilytowr, atomboy, wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision A)", 0 ) | |
| 908 | GAME( 1984, fghtbskt, 0, fghtbskt, fghtbskt, fghtbskt, ROT0, "Paradise Co. Ltd.", "Fighting Basketball", 0 ) | |
| 1005 | GAME( 1984, wilytowr, 0, m63, wilytowr, wilytowr, ROT180, "Irem", "Wily Tower", GAME_SUPPORTS_SAVE ) | |
| 1006 | GAME( 1985, atomboy, wilytowr, atomboy, wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision B)", GAME_SUPPORTS_SAVE ) | |
| 1007 | GAME( 1985, atomboya, wilytowr, atomboy, wilytowr, wilytowr, ROT180, "Irem (Memetron license)", "Atomic Boy (revision A)", GAME_SUPPORTS_SAVE ) | |
| 1008 | GAME( 1984, fghtbskt, 0, fghtbskt, fghtbskt, fghtbskt, ROT0, "Paradise Co. Ltd.", "Fighting Basketball", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 222 | 222 | AM_RANGE(0x00000, 0x01fff) AM_RAM |
| 223 | 223 | AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ? |
| 224 | 224 | 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) | |
| 226 | 226 | AM_RANGE(0x0a000, 0x0a000) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w) |
| 227 | 227 | AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select |
| 228 | 228 | AM_RANGE(0xf0000, 0xfffff) AM_ROM |
| r6428 | r6429 | |
| 266 | 266 | static ADDRESS_MAP_START( roundup5_z80_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 267 | 267 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 268 | 268 | 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) | |
| 270 | 270 | AM_RANGE(0xfff4, 0xfff4) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w) |
| 271 | 271 | AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0") |
| 272 | 272 | AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1") |
| r6428 | r6429 | |
| 323 | 323 | static ADDRESS_MAP_START( cyclwarr_z80_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 324 | 324 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 325 | 325 | 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) | |
| 327 | 327 | AM_RANGE(0xfff4, 0xfff4) AM_DEVREADWRITE("oki", tatsumi_hack_oki_r, okim6295_w) |
| 328 | 328 | AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_r) |
| 329 | 329 | AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP |
| r6428 | r6429 | |
| 891 | 891 | /* sound hardware */ |
| 892 | 892 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 893 | 893 | |
| 894 | MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4) | |
| 894 | MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 895 | 895 | MDRV_SOUND_CONFIG(ym2151_config) |
| 896 | 896 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 897 | 897 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
| 934 | 934 | /* sound hardware */ |
| 935 | 935 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 936 | 936 | |
| 937 | MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4) | |
| 937 | MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 938 | 938 | MDRV_SOUND_CONFIG(ym2151_config) |
| 939 | 939 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 940 | 940 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
| 978 | 978 | /* sound hardware */ |
| 979 | 979 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 980 | 980 | |
| 981 | MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4) | |
| 981 | MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 982 | 982 | MDRV_SOUND_CONFIG(ym2151_config) |
| 983 | 983 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 984 | 984 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
| 1022 | 1022 | /* sound hardware */ |
| 1023 | 1023 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1024 | 1024 | |
| 1025 | MDRV_SOUND_ADD("ym", YM2151, CLOCK_1 / 4) | |
| 1025 | MDRV_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4) | |
| 1026 | 1026 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1027 | 1027 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1028 | 1028 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 98 | 98 | ADDRESS_MAP_GLOBAL_MASK(0x1fffff) |
| 99 | 99 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 100 | 100 | 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) | |
| 102 | 102 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 103 | 103 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 104 | 104 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 348 | 348 | /* sound hardware */ |
| 349 | 349 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 350 | 350 | |
| 351 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 351 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 352 | 352 | MDRV_SOUND_CONFIG(ym2151_config) |
| 353 | 353 | MDRV_SOUND_ROUTE(0, "mono", 0.45) |
| 354 | 354 | MDRV_SOUND_ROUTE(1, "mono", 0.45) |
| r6428 | r6429 | |
| 388 | 388 | /* sound hardware */ |
| 389 | 389 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 390 | 390 | |
| 391 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 391 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 392 | 392 | MDRV_SOUND_CONFIG(ym2151_config) |
| 393 | 393 | MDRV_SOUND_ROUTE(0, "mono", 0.45) |
| 394 | 394 | MDRV_SOUND_ROUTE(1, "mono", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 1643 | 1643 | /* INIT THE PORTS *********************************************************************************************/ |
| 1644 | 1644 | |
| 1645 | 1645 | 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"); | |
| 1647 | 1647 | |
| 1648 | 1648 | memory_install_readwrite8_handler(io, 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w); |
| 1649 | 1649 | |
| r6428 | r6429 | |
| 1749 | 1749 | /* sound hardware */ |
| 1750 | 1750 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1751 | 1751 | |
| 1752 | MDRV_SOUND_ADD("sn", SN76496, 3579540) | |
| 1752 | MDRV_SOUND_ADD("snsnd", SN76496, 3579540) | |
| 1753 | 1753 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1754 | 1754 | MACHINE_DRIVER_END |
| 1755 | 1755 |
| r6428 | r6429 | |
|---|---|---|
| 147 | 147 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 148 | 148 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 149 | 149 | 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 */ | |
| 152 | 152 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", gbusters_snd_bankswitch_w) /* 007232 bankswitch? */ |
| 153 | 153 | ADDRESS_MAP_END |
| 154 | 154 | |
| r6428 | r6429 | |
| 253 | 253 | /* sound hardware */ |
| 254 | 254 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 255 | 255 | |
| 256 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 256 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 257 | 257 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 258 | 258 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| 259 | 259 |
| r6428 | r6429 | |
|---|---|---|
| 1027 | 1027 | |
| 1028 | 1028 | static ADDRESS_MAP_START( rtype_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1029 | 1029 | 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) | |
| 1031 | 1031 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r) |
| 1032 | 1032 | AM_RANGE(0x06, 0x06) AM_WRITE(m72_sound_irq_ack_w) |
| 1033 | 1033 | AM_RANGE(0x84, 0x84) AM_READ(m72_sample_r) |
| r6428 | r6429 | |
| 1035 | 1035 | |
| 1036 | 1036 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1037 | 1037 | 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) | |
| 1039 | 1039 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r) |
| 1040 | 1040 | AM_RANGE(0x06, 0x06) AM_WRITE(m72_sound_irq_ack_w) |
| 1041 | 1041 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w) |
| r6428 | r6429 | |
| 1044 | 1044 | |
| 1045 | 1045 | static ADDRESS_MAP_START( rtype2_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1046 | 1046 | 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) | |
| 1048 | 1048 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r) |
| 1049 | 1049 | AM_RANGE(0x80, 0x81) AM_WRITE(rtype2_sample_addr_w) |
| 1050 | 1050 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w) |
| r6428 | r6429 | |
| 1055 | 1055 | static ADDRESS_MAP_START( poundfor_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1056 | 1056 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1057 | 1057 | 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) | |
| 1059 | 1059 | AM_RANGE(0x42, 0x42) AM_READ(soundlatch_r) |
| 1060 | 1060 | AM_RANGE(0x42, 0x42) AM_WRITE(m72_sound_irq_ack_w) |
| 1061 | 1061 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1810 | 1810 | /* sound hardware */ |
| 1811 | 1811 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1812 | 1812 | |
| 1813 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 1813 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1814 | 1814 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1815 | 1815 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1816 | 1816 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1844 | 1844 | /* sound hardware */ |
| 1845 | 1845 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1846 | 1846 | |
| 1847 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 1847 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1848 | 1848 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1849 | 1849 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1850 | 1850 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1904 | 1904 | /* sound hardware */ |
| 1905 | 1905 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1906 | 1906 | |
| 1907 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 1907 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1908 | 1908 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1909 | 1909 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1910 | 1910 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1945 | 1945 | /* sound hardware */ |
| 1946 | 1946 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1947 | 1947 | |
| 1948 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 1948 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1949 | 1949 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1950 | 1950 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1951 | 1951 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1986 | 1986 | /* sound hardware */ |
| 1987 | 1987 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1988 | 1988 | |
| 1989 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 1989 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 1990 | 1990 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1991 | 1991 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1992 | 1992 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2026 | 2026 | /* sound hardware */ |
| 2027 | 2027 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2028 | 2028 | |
| 2029 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2029 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2030 | 2030 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2031 | 2031 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2032 | 2032 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2067 | 2067 | /* sound hardware */ |
| 2068 | 2068 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2069 | 2069 | |
| 2070 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2070 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2071 | 2071 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2072 | 2072 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2073 | 2073 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2107 | 2107 | /* sound hardware */ |
| 2108 | 2108 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2109 | 2109 | |
| 2110 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2110 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2111 | 2111 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2112 | 2112 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2113 | 2113 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2147 | 2147 | /* sound hardware */ |
| 2148 | 2148 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2149 | 2149 | |
| 2150 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2150 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2151 | 2151 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2152 | 2152 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2153 | 2153 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2188 | 2188 | /* sound hardware */ |
| 2189 | 2189 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2190 | 2190 | |
| 2191 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2191 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2192 | 2192 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2193 | 2193 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2194 | 2194 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2229 | 2229 | /* sound hardware */ |
| 2230 | 2230 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2231 | 2231 | |
| 2232 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2232 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2233 | 2233 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2234 | 2234 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2235 | 2235 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2269 | 2269 | /* sound hardware */ |
| 2270 | 2270 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2271 | 2271 | |
| 2272 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK) | |
| 2272 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) | |
| 2273 | 2273 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2274 | 2274 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2275 | 2275 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 3030 | 3030 | |
| 3031 | 3031 | ROM_START( rtype2 ) |
| 3032 | 3032 | 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 ) | |
| 3039 | 3039 | |
| 3040 | 3040 | ROM_REGION( 0x10000, "soundcpu", 0 ) |
| 3041 | 3041 | ROM_LOAD( "ic17.4f", 0x0000, 0x10000, CRC(73ffecb4) SHA1(4795bf0d6263060c3d3759b659bdb189a4087600) ) |
| r6428 | r6429 | |
| 3092 | 3092 | ROM_LOAD( "ic14.4c", 0x00000, 0x20000, CRC(637172d5) SHA1(9dd0dc409306287238826bf301e2a7a12d6cd9ce) ) |
| 3093 | 3093 | ROM_END |
| 3094 | 3094 | |
| 3095 | ROM_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) ) | |
| 3125 | ROM_END | |
| 3126 | ||
| 3127 | ||
| 3095 | 3128 | ROM_START( majtitle ) |
| 3096 | 3129 | ROM_REGION( 0x100000, "maincpu", 0 ) |
| 3097 | 3130 | ROM_LOAD16_BYTE( "mt_h0-a.bin", 0x00001, 0x20000, CRC(36aadb67) SHA1(11cb9f190431ef7b68bcad691191c810b00452be) ) |
| r6428 | r6429 | |
| 3491 | 3524 | GAME( 1987, mrheli, bchopper, m72, bchopper, mrheli, ROT0, "Irem", "Mr. HELI no Dai-Bouken", GAME_NO_COCKTAIL ) |
| 3492 | 3525 | GAME( 1988, nspirit, 0, m72, nspirit, nspirit, ROT0, "Irem", "Ninja Spirit", GAME_NO_COCKTAIL ) |
| 3493 | 3526 | GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL ) /* some corruption on warning screen (layer enable?) */ |
| 3494 | GAME( 1988, imgfight, 0, m72, imgfight, imgfight, ROT270, "Irem", "Image Fight (revision A | |
| 3527 | GAME( 1988, imgfight, 0, m72, imgfight, imgfight, ROT270, "Irem", "Image Fight (Japan, revision A | |
| 3495 | 3528 | GAME( 1988, imgfighto, imgfight, m72, imgfight, imgfight, ROT270, "Irem", "Image Fight (Japan)", 0 ) |
| 3496 | 3529 | GAME( 1989, loht, 0, m72, loht, loht, ROT0, "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL ) |
| 3497 | 3530 | GAME( 1989, lohtj, loht, m72, loht, loht, ROT0, "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL ) |
| 3498 | 3531 | GAME( 1989, lohtb, loht, m72, loht, 0, ROT0, "Irem", "Legend of Hero Tonma (bootleg, set 1)", GAME_NOT_WORKING| GAME_NO_COCKTAIL ) |
| 3499 | 3532 | GAME( 1989, lohtb2, loht, m72_8751, loht, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (bootleg, set 2)", GAME_NO_COCKTAIL ) |
| 3500 | 3533 | GAME( 1989, xmultipl, 0, xmultipl, xmultipl, xmultipl, ROT0, "Irem", "X Multiply (Japan)", GAME_NO_COCKTAIL ) |
| 3501 | GAME( 1989, dbreed, 0, dbreed, dbreed, 0, ROT0, "Irem", "Dragon Breed (M81 pcb version)", GAME_NO_COCKTAIL ) | |
| 3502 | GAME( 1989, dbreedm72, dbreed, dbreed72, dbreed, dbreed72, ROT0, "Irem", "Dragon Breed (M72 pcb version)", GAME_NO_COCKTAIL ) | |
| 3534 | GAME( 1989, dbreed, 0, dbreed, dbreed, 0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL ) | |
| 3535 | GAME( 1989, dbreedm72, dbreed, dbreed72, dbreed, dbreed72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL ) | |
| 3503 | 3536 | GAME( 1989, rtype2, 0, rtype2, rtype2, 0, ROT0, "Irem", "R-Type II", GAME_NO_COCKTAIL ) |
| 3504 | 3537 | GAME( 1989, rtype2j, rtype2, rtype2, rtype2, 0, ROT0, "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL ) |
| 3538 | GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL ) | |
| 3505 | 3539 | GAME( 1990, majtitle, 0, majtitle, rtype2, 0, ROT0, "Irem", "Major Title (World)", GAME_NO_COCKTAIL ) |
| 3506 | 3540 | GAME( 1990, majtitlej, majtitle, majtitle, rtype2, 0, ROT0, "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL ) |
| 3507 | 3541 | GAME( 1990, hharry, 0, hharry, hharry, 0, ROT0, "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL ) |
| r6428 | r6429 | |
|---|---|---|
| 258 | 258 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 259 | 259 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 260 | 260 | 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) | |
| 262 | 262 | AM_RANGE(0xc002, 0xc002) AM_WRITENOP |
| 263 | 263 | AM_RANGE(0xe000, 0xe000) AM_READWRITE(switch_input_r, switch_input_select_w) |
| 264 | 264 | AM_RANGE(0xe001, 0xe001) AM_READWRITE(analog_input_r, unknown_w) |
| r6428 | r6429 | |
| 382 | 382 | |
| 383 | 383 | /* sound hardware */ |
| 384 | 384 | 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) | |
| 386 | 386 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 387 | 387 | MACHINE_DRIVER_END |
| 388 | 388 |
| r6428 | r6429 | |
|---|---|---|
| 186 | 186 | AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) |
| 187 | 187 | AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ?? |
| 188 | 188 | 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) | |
| 191 | 191 | AM_RANGE(0x8040, 0x8040) AM_DEVWRITE("msm", adpcm_w) |
| 192 | 192 | AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w) |
| 193 | 193 | AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ?? |
| r6428 | r6429 | |
| 209 | 209 | AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) |
| 210 | 210 | AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP) // ?? |
| 211 | 211 | 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) | |
| 214 | 214 | AM_RANGE(0x8040, 0x8040) AM_DEVWRITE("msm", adpcm_w) |
| 215 | 215 | AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w) |
| 216 | 216 | AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ?? |
| r6428 | r6429 | |
| 461 | 461 | /* sound hardware */ |
| 462 | 462 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 463 | 463 | |
| 464 | MDRV_SOUND_ADD("ay", AY8910, 20000000/16) | |
| 464 | MDRV_SOUND_ADD("aysnd", AY8910, 20000000/16) | |
| 465 | 465 | MDRV_SOUND_CONFIG(ay8910_config) |
| 466 | 466 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 467 | 467 |
| r6428 | r6429 | |
|---|---|---|
| 486 | 486 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 487 | 487 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 488 | 488 | 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) | |
| 490 | 490 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 491 | 491 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 492 | 492 | AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("msm", topspeed_msm5205_address_w) |
| r6428 | r6429 | |
| 704 | 704 | /* sound hardware */ |
| 705 | 705 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 706 | 706 | |
| 707 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 707 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 708 | 708 | MDRV_SOUND_CONFIG(ym2151_config) |
| 709 | 709 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 710 | 710 | MDRV_SOUND_ROUTE(1, "mono", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 95 | 95 | AM_RANGE(0xa800, 0xa800) AM_READ(amspdwy_wheel_0_r) // Player 1 |
| 96 | 96 | AM_RANGE(0xac00, 0xac00) AM_READ(amspdwy_wheel_1_r) // Player 2 |
| 97 | 97 | 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 | |
| 99 | 99 | AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)// Sprites |
| 100 | 100 | AM_RANGE(0xe000, 0xe7ff) AM_RAM // Work RAM |
| 101 | 101 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 125 | 125 | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 126 | 126 | // AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? Written with 0 at the start |
| 127 | 127 | 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) // | |
| 129 | 129 | AM_RANGE(0xc000, 0xdfff) AM_RAM // Work RAM |
| 130 | 130 | AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ? |
| 131 | 131 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 295 | 295 | /* sound hardware */ |
| 296 | 296 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 297 | 297 | |
| 298 | MDRV_SOUND_ADD("ym", YM2151, 3000000) | |
| 298 | MDRV_SOUND_ADD("ymsnd", YM2151, 3000000) | |
| 299 | 299 | MDRV_SOUND_CONFIG(amspdwy_ym2151_interface) |
| 300 | 300 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 301 | 301 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 282 | 282 | |
| 283 | 283 | static ADDRESS_MAP_START( fantland_sound_iomap, ADDRESS_SPACE_IO, 8 ) |
| 284 | 284 | 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 ) | |
| 286 | 286 | AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE( "dac", dac_w ) |
| 287 | 287 | ADDRESS_MAP_END |
| 288 | 288 | |
| 289 | 289 | static ADDRESS_MAP_START( galaxygn_sound_iomap, ADDRESS_SPACE_IO, 8 ) |
| 290 | 290 | 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 ) | |
| 292 | 292 | ADDRESS_MAP_END |
| 293 | 293 | |
| 294 | 294 | |
| r6428 | r6429 | |
| 399 | 399 | static ADDRESS_MAP_START( wheelrun_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 400 | 400 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 401 | 401 | 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 ) | |
| 403 | 403 | |
| 404 | 404 | AM_RANGE(0xb000, 0xb000) AM_WRITE( SMH_NOP ) // on a car crash / hit |
| 405 | 405 | AM_RANGE(0xc000, 0xc000) AM_WRITE( SMH_NOP ) // "" |
| r6428 | r6429 | |
| 853 | 853 | /* sound hardware */ |
| 854 | 854 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 855 | 855 | |
| 856 | MDRV_SOUND_ADD("ym", YM2151, 3000000) | |
| 856 | MDRV_SOUND_ADD("ymsnd", YM2151, 3000000) | |
| 857 | 857 | MDRV_SOUND_ROUTE(0, "mono", 0.35) |
| 858 | 858 | MDRV_SOUND_ROUTE(1, "mono", 0.35) |
| 859 | 859 | |
| r6428 | r6429 | |
| 901 | 901 | /* sound hardware */ |
| 902 | 902 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 903 | 903 | |
| 904 | MDRV_SOUND_ADD("ym", YM2151, 3000000) | |
| 904 | MDRV_SOUND_ADD("ymsnd", YM2151, 3000000) | |
| 905 | 905 | MDRV_SOUND_CONFIG(galaxygn_ym2151_interface) |
| 906 | 906 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 907 | 907 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 1013 | 1013 | /* sound hardware */ |
| 1014 | 1014 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1015 | 1015 | |
| 1016 | MDRV_SOUND_ADD("ym", YM3526, XTAL_14MHz/4) | |
| 1016 | MDRV_SOUND_ADD("ymsnd", YM3526, XTAL_14MHz/4) | |
| 1017 | 1017 | MDRV_SOUND_CONFIG(wheelrun_ym3526_interface) |
| 1018 | 1018 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1019 | 1019 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 14 | 14 | #include "cpu/z80/z80.h" |
| 15 | 15 | #include "sound/ay8910.h" |
| 16 | 16 | |
| 17 | /* video */ | |
| 17 | typedef struct _albazc_state albazc_state; | |
| 18 | struct _albazc_state | |
| 19 | { | |
| 20 | /* video-related */ | |
| 21 | UINT8 * spriteram1; | |
| 22 | UINT8 * spriteram2; | |
| 23 | UINT8 * spriteram3; | |
| 24 | }; | |
| 18 | 25 | |
| 19 | static UINT8 *hanaroku_spriteram1; | |
| 20 | static UINT8 *hanaroku_spriteram2; | |
| 21 | static UINT8 *hanaroku_spriteram3; | |
| 22 | 26 | |
| 23 | 27 | |
| 28 | /* video */ | |
| 29 | ||
| 24 | 30 | static PALETTE_INIT( hanaroku ) |
| 25 | 31 | { |
| 26 | 32 | int i; |
| 27 | int r,g,b; | |
| 33 | int r, g, b; | |
| 28 | 34 | |
| 29 | 35 | for (i = 0; i < 0x200; i++) |
| 30 | 36 | { |
| 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; | |
| 34 | 40 | |
| 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)); | |
| 36 | 42 | } |
| 37 | 43 | } |
| 38 | 44 | |
| 39 | 45 | |
| 40 | static VIDEO_START(hanaroku) | |
| 46 | static VIDEO_START( hanaroku ) | |
| 41 | 47 | { |
| 42 | 48 | } |
| 43 | 49 | |
| 44 | static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) | |
| 50 | static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) | |
| 45 | 51 | { |
| 52 | albazc_state *state = (albazc_state *)machine->driver_data; | |
| 46 | 53 | int i; |
| 47 | 54 | |
| 48 | 55 | for (i = 511; i >= 0; i--) |
| 49 | 56 | { |
| 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; | |
| 52 | 59 | int flipx = 0; |
| 53 | 60 | 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]; | |
| 56 | 63 | |
| 57 | 64 | if (flip_screen_get(machine)) |
| 58 | 65 | { |
| r6428 | r6429 | |
| 120 | 127 | |
| 121 | 128 | static ADDRESS_MAP_START( hanaroku_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 122 | 129 | 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) | |
| 126 | 133 | AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP // ??? written once during P.O.S.T. |
| 127 | 134 | AM_RANGE(0xa300, 0xa304) AM_WRITENOP // ??? |
| 128 | 135 | AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? always 0x40 |
| 129 | 136 | AM_RANGE(0xc000, 0xc3ff) AM_RAM // main ram |
| 130 | 137 | 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) | |
| 133 | 140 | AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w) |
| 134 | 141 | AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1") |
| 135 | 142 | AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w) |
| r6428 | r6429 | |
| 227 | 234 | |
| 228 | 235 | |
| 229 | 236 | static MACHINE_DRIVER_START( hanaroku ) |
| 237 | ||
| 238 | /* driver data */ | |
| 239 | MDRV_DRIVER_DATA(albazc_state) | |
| 240 | ||
| 230 | 241 | MDRV_CPU_ADD("maincpu", Z80,6000000) /* ? MHz */ |
| 231 | 242 | MDRV_CPU_PROGRAM_MAP(hanaroku_map) |
| 232 | 243 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| r6428 | r6429 | |
| 249 | 260 | /* sound hardware */ |
| 250 | 261 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 251 | 262 | |
| 252 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 263 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 253 | 264 | MDRV_SOUND_CONFIG(ay8910_config) |
| 254 | 265 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 255 | 266 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 271 | 282 | ROM_END |
| 272 | 283 | |
| 273 | 284 | |
| 274 | GAME( 1988, hanaroku, 0, hanaroku, hanaroku, 0, ROT0, "Alba", "Hanaroku", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS ) | |
| 285 | GAME( 1988, hanaroku, 0, hanaroku, hanaroku, 0, ROT0, "Alba", "Hanaroku", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 416 | 416 | AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ |
| 417 | 417 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 418 | 418 | 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 */ | |
| 420 | 420 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", scontra_snd_bankswitch_w) /* 007232 bank select */ |
| 421 | 421 | ADDRESS_MAP_END |
| 422 | 422 | |
| r6428 | r6429 | |
| 424 | 424 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 425 | 425 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 426 | 426 | 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) | |
| 428 | 428 | ADDRESS_MAP_END |
| 429 | 429 | |
| 430 | 430 | /*************************************************************************** |
| r6428 | r6429 | |
| 604 | 604 | /* sound hardware */ |
| 605 | 605 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 606 | 606 | |
| 607 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 607 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 608 | 608 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 609 | 609 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| 610 | 610 | |
| r6428 | r6429 | |
| 645 | 645 | /* sound hardware */ |
| 646 | 646 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 647 | 647 | |
| 648 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 648 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 649 | 649 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 650 | 650 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| 651 | 651 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 125 | 125 | AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r) |
| 126 | 126 | AM_RANGE( 0x40, 0x4f) AM_WRITE(soundlatch_w) |
| 127 | 127 | 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) | |
| 129 | 129 | /* not sure, but the A1 line is ignored, code @ $8b8 */ |
| 130 | 130 | AM_RANGE( 0x70, 0x70) AM_WRITE( v9938_0_vram_w ) AM_READ( v9938_0_vram_r ) |
| 131 | 131 | AM_RANGE( 0x71, 0x71) AM_WRITE( v9938_0_command_w ) AM_READ( v9938_0_status_r ) |
| r6428 | r6429 | |
| 377 | 377 | |
| 378 | 378 | /* sound hardware */ |
| 379 | 379 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 380 | MDRV_SOUND_ADD("ym", YM2203, YM_CLOCK) | |
| 380 | MDRV_SOUND_ADD("ymsnd", YM2203, YM_CLOCK) | |
| 381 | 381 | MDRV_SOUND_CONFIG(ym2203_config) |
| 382 | 382 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 383 | 383 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 691 | 691 | #else |
| 692 | 692 | AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM) |
| 693 | 693 | #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) | |
| 695 | 695 | AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 696 | 696 | AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16) |
| 697 | 697 | AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* sprites */ |
| r6428 | r6429 | |
| 806 | 806 | static ADDRESS_MAP_START( semicom_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 807 | 807 | AM_RANGE(0x0000, 0xcfff) AM_ROM |
| 808 | 808 | 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) | |
| 810 | 810 | AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 811 | 811 | // AM_RANGE(0xf006, 0xf006) ?? |
| 812 | 812 | AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 841 | 841 | |
| 842 | 842 | static ADDRESS_MAP_START( jumppop_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 843 | 843 | 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) | |
| 845 | 845 | AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 846 | 846 | AM_RANGE(0x03, 0x03) AM_READ(jumppop_z80latch_r) |
| 847 | 847 | AM_RANGE(0x04, 0x04) AM_NOP |
| r6428 | r6429 | |
| 2107 | 2107 | /* sound hardware */ |
| 2108 | 2108 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2109 | 2109 | |
| 2110 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 2110 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 2111 | 2111 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 2112 | 2112 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 2113 | 2113 | |
| r6428 | r6429 | |
| 2170 | 2170 | /* sound hardware - same as hyperpac */ |
| 2171 | 2171 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2172 | 2172 | |
| 2173 | MDRV_SOUND_ADD("ym", YM2151, 3427190) | |
| 2173 | MDRV_SOUND_ADD("ymsnd", YM2151, 3427190) | |
| 2174 | 2174 | MDRV_SOUND_CONFIG(semicom_ym2151_interface) |
| 2175 | 2175 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2176 | 2176 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| r6428 | r6429 | |
| 2190 | 2190 | MDRV_IMPORT_FROM(htchctch) |
| 2191 | 2191 | MDRV_VIDEO_UPDATE( bcstory ) |
| 2192 | 2192 | |
| 2193 | MDRV_SOUND_REPLACE("ym", YM2151, 3427190) | |
| 2193 | MDRV_SOUND_REPLACE("ymsnd", YM2151, 3427190) | |
| 2194 | 2194 | MDRV_SOUND_CONFIG(semicom_ym2151_interface) |
| 2195 | 2195 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2196 | 2196 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| r6428 | r6429 | |
| 2211 | 2211 | static MACHINE_DRIVER_START( metlsavr ) |
| 2212 | 2212 | MDRV_IMPORT_FROM(cookbib) |
| 2213 | 2213 | |
| 2214 | MDRV_SOUND_REPLACE("ym", YM2151, 3427190) | |
| 2214 | MDRV_SOUND_REPLACE("ymsnd", YM2151, 3427190) | |
| 2215 | 2215 | MDRV_SOUND_CONFIG(semicom_ym2151_interface) |
| 2216 | 2216 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.10) |
| 2217 | 2217 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| r6428 | r6429 | |
| 2244 | 2244 | |
| 2245 | 2245 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2246 | 2246 | |
| 2247 | MDRV_SOUND_ADD("ym", YM3812, 3500000) | |
| 2247 | MDRV_SOUND_ADD("ymsnd", YM3812, 3500000) | |
| 2248 | 2248 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.70) |
| 2249 | 2249 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.70) |
| 2250 | 2250 |
| r6428 | r6429 | |
|---|---|---|
| 151 | 151 | AM_RANGE( 0x00a2, 0x00a2 ) AM_READ_PORT("DSW2") /* DSW2 */ |
| 152 | 152 | AM_RANGE( 0x00b0, 0x00b0 ) AM_READ_PORT("DSW3") /* DSW3 */ |
| 153 | 153 | |
| 154 | AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE( "ym", ym2413_w ) | |
| 154 | AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE( "ymsnd", ym2413_w ) | |
| 155 | 155 | |
| 156 | 156 | AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE( fg_tile_w ) AM_BASE( &fg_tile_ram ) |
| 157 | 157 | AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE( fg_color_w ) AM_BASE( &fg_color_ram ) |
| r6428 | r6429 | |
| 328 | 328 | |
| 329 | 329 | /* sound hardware */ |
| 330 | 330 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 331 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 331 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 332 | 332 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 333 | 333 | MACHINE_DRIVER_END |
| 334 | 334 |
| r6428 | r6429 | |
|---|---|---|
| 401 | 401 | static MACHINE_DRIVER_START( kchampvs ) |
| 402 | 402 | |
| 403 | 403 | /* basic machine hardware */ |
| 404 | ||
| 404 | MDRV_CPU_ADD("maincpu", Z80, XTAL_ | |
| 405 | 405 | MDRV_CPU_PROGRAM_MAP(kchampvs_map) |
| 406 | 406 | MDRV_CPU_IO_MAP(kchampvs_io_map) |
| 407 | 407 | MDRV_CPU_VBLANK_INT("screen", kc_interrupt) |
| 408 | 408 | |
| 409 | ||
| 409 | MDRV_CPU_ADD("audiocpu", Z80, XTAL_ | |
| 410 | 410 | MDRV_CPU_PROGRAM_MAP(kchampvs_sound_map) |
| 411 | 411 | MDRV_CPU_IO_MAP(kchampvs_sound_io_map) /* irq's triggered from main cpu */ |
| 412 | 412 | /* nmi's from msm5205 */ |
| 413 | 413 | |
| 414 | 414 | /* video hardware */ |
| 415 | 415 | MDRV_SCREEN_ADD("screen", RASTER) |
| 416 | ||
| 416 | MDRV_SCREEN_REFRESH_RATE(59.10) /* verified on pcb */ | |
| 417 | 417 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 418 | 418 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 419 | 419 | MDRV_SCREEN_SIZE(32*8, 32*8) |
| r6428 | r6429 | |
| 429 | 429 | /* sound hardware */ |
| 430 | 430 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 431 | 431 | |
| 432 | ||
| 432 | MDRV_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8) /* verified on pcb */ | |
| 433 | 433 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 434 | 434 | |
| 435 | ||
| 435 | MDRV_SOUND_ADD("ay2", AY8910, XTAL_12MHz/8) /* verified on pcb */ | |
| 436 | 436 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 437 | 437 | |
| 438 | ||
| 438 | MDRV_SOUND_ADD("msm", MSM5205, 375000) /* verified on pcb, discrete circuit clock */ | |
| 439 | 439 | MDRV_SOUND_CONFIG(msm_interface) |
| 440 | 440 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 441 | 441 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 239 | 239 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 240 | 240 | AM_RANGE(0x6000, 0x63ff) AM_RAM |
| 241 | 241 | 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) | |
| 243 | 243 | AM_RANGE(0x7004, 0x7004) AM_WRITENOP //sound filter? |
| 244 | 244 | AM_RANGE(0x7006, 0x7006) AM_WRITENOP //irq ack? |
| 245 | 245 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 424 | 424 | /* sound hardware */ |
| 425 | 425 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 426 | 426 | |
| 427 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 427 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 428 | 428 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 429 | 429 | MACHINE_DRIVER_END |
| 430 | 430 |
| r6428 | r6429 | |
|---|---|---|
| 198 | 198 | |
| 199 | 199 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 200 | 200 | 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) | |
| 202 | 202 | AM_RANGE(0x10a0, 0x10a1) AM_WRITE(tugboat_hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */ |
| 203 | 203 | AM_RANGE(0x10c0, 0x10c1) AM_WRITE(tugboat_hd46505_1_w) |
| 204 | 204 | AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE("pia0", pia6821_r, pia6821_w) |
| r6428 | r6429 | |
| 338 | 338 | /* sound hardware */ |
| 339 | 339 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 340 | 340 | |
| 341 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 341 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 342 | 342 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 343 | 343 | MACHINE_DRIVER_END |
| 344 | 344 |
| r6428 | r6429 | |
|---|---|---|
| 149 | 149 | |
| 150 | 150 | static ADDRESS_MAP_START( m90_sound_cpu_io_map, ADDRESS_SPACE_IO, 8 ) |
| 151 | 151 | 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) | |
| 153 | 153 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r) |
| 154 | 154 | AM_RANGE(0x80, 0x81) AM_WRITE(rtype2_sample_addr_w) |
| 155 | 155 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w) |
| r6428 | r6429 | |
| 159 | 159 | |
| 160 | 160 | static ADDRESS_MAP_START( bbmanw_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 161 | 161 | 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) | |
| 163 | 163 | AM_RANGE(0x42, 0x42) AM_READWRITE(soundlatch_r, m72_sound_irq_ack_w) |
| 164 | 164 | // AM_RANGE(0x40, 0x41) AM_WRITE(rtype2_sample_addr_w) |
| 165 | 165 | // AM_RANGE(0x41, 0x41) AM_READ(m72_sample_r) |
| r6428 | r6429 | |
| 729 | 729 | /* sound hardware */ |
| 730 | 730 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 731 | 731 | |
| 732 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 732 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 733 | 733 | MDRV_SOUND_CONFIG(ym2151_config) |
| 734 | 734 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 735 | 735 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
| 809 | 809 | /* sound hardware */ |
| 810 | 810 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 811 | 811 | |
| 812 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 812 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 813 | 813 | MDRV_SOUND_CONFIG(ym2151_config) |
| 814 | 814 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 815 | 815 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
| 853 | 853 | /* sound hardware */ |
| 854 | 854 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 855 | 855 | |
| 856 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 856 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 857 | 857 | MDRV_SOUND_CONFIG(ym2151_config) |
| 858 | 858 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 859 | 859 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
| 922 | 922 | /* sound hardware */ |
| 923 | 923 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 924 | 924 | |
| 925 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 925 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 926 | 926 | MDRV_SOUND_CONFIG(ym2151_config) |
| 927 | 927 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 928 | 928 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
|---|---|---|
| 375 | 375 | |
| 376 | 376 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 377 | 377 | 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) | |
| 380 | 380 | ADDRESS_MAP_END |
| 381 | 381 | |
| 382 | 382 | /************************************* |
| r6428 | r6429 | |
| 720 | 720 | |
| 721 | 721 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 722 | 722 | |
| 723 | MDRV_SOUND_ADD("ay", AY8910, CLK_1/8) /* guess */ | |
| 723 | MDRV_SOUND_ADD("aysnd", AY8910, CLK_1/8) /* guess */ | |
| 724 | 724 | MDRV_SOUND_CONFIG(ay8910_config) |
| 725 | 725 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 726 | 726 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 64 | 64 | AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK(1), phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */ |
| 65 | 65 | AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w) |
| 66 | 66 | 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) | |
| 69 | 69 | AM_RANGE(0x7000, 0x73ff) AM_READ(survival_input_port_0_r) /* IN0 or IN1 */ |
| 70 | 70 | AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */ |
| 71 | 71 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 550 | 550 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 551 | 551 | |
| 552 | 552 | /* FIXME: check clock */ |
| 553 | MDRV_SOUND_ADD("ay", AY8910, 11000000/4) | |
| 553 | MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4) | |
| 554 | 554 | MDRV_SOUND_CONFIG(survival_ay8910_interface) |
| 555 | 555 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 556 | 556 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 584 | 584 | |
| 585 | 585 | static ADDRESS_MAP_START( pbillian_port_map, ADDRESS_SPACE_IO, 8 ) |
| 586 | 586 | 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) | |
| 589 | 589 | AM_RANGE(0x0408, 0x0408) AM_READ(pbillian_from_mcu_r) |
| 590 | 590 | AM_RANGE(0x0408, 0x0408) AM_WRITE(pbillian_z80_mcu_w) |
| 591 | 591 | AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w) |
| r6428 | r6429 | |
| 597 | 597 | |
| 598 | 598 | static ADDRESS_MAP_START( hotsmash_port_map, ADDRESS_SPACE_IO, 8 ) |
| 599 | 599 | 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) | |
| 602 | 602 | AM_RANGE(0x0408, 0x0408) AM_READ(hotsmash_from_mcu_r) |
| 603 | 603 | AM_RANGE(0x0408, 0x0408) AM_WRITE(hotsmash_z80_mcu_w) |
| 604 | 604 | AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w) |
| r6428 | r6429 | |
| 1052 | 1052 | |
| 1053 | 1053 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1054 | 1054 | |
| 1055 | MDRV_SOUND_ADD("ay", AY8910, 12000000/8) | |
| 1055 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8) | |
| 1056 | 1056 | MDRV_SOUND_CONFIG(pbillian_ay8910_interface) |
| 1057 | 1057 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1058 | 1058 | |
| r6428 | r6429 | |
| 1088 | 1088 | |
| 1089 | 1089 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1090 | 1090 | |
| 1091 | MDRV_SOUND_ADD("ay", AY8910, 12000000/8) | |
| 1091 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8) | |
| 1092 | 1092 | MDRV_SOUND_CONFIG(hotsmash_ay8910_interface) |
| 1093 | 1093 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1094 | 1094 |
| r6428 | r6429 | |
|---|---|---|
| 187 | 187 | |
| 188 | 188 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 189 | 189 | 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) | |
| 191 | 191 | AM_RANGE(0x2800, 0x2801) AM_WRITE(cyberbal_sound_68k_6502_w) |
| 192 | 192 | AM_RANGE(0x2802, 0x2803) AM_READWRITE(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w) |
| 193 | 193 | AM_RANGE(0x2804, 0x2805) AM_WRITE(atarigen_6502_sound_w) |
| r6428 | r6429 | |
| 453 | 453 | /* sound hardware */ |
| 454 | 454 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 455 | 455 | |
| 456 | MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4) | |
| 456 | MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 457 | 457 | MDRV_SOUND_CONFIG(ym2151_config) |
| 458 | 458 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 459 | 459 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 207 | 207 | |
| 208 | 208 | static ADDRESS_MAP_START( sound_io, ADDRESS_SPACE_IO, 8 ) |
| 209 | 209 | 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) | |
| 211 | 211 | AM_RANGE(0x02, 0x02) AM_NOP |
| 212 | 212 | ADDRESS_MAP_END |
| 213 | 213 | |
| r6428 | r6429 | |
| 491 | 491 | |
| 492 | 492 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 493 | 493 | |
| 494 | MDRV_SOUND_ADD("ym", YM2203, XTAL_16MHz / 4) | |
| 494 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4) | |
| 495 | 495 | MDRV_SOUND_CONFIG(ym2203_config) |
| 496 | 496 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 497 | 497 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 1 | #include "driver.h" | |
| 2 | #include "cpu/z80/z80.h" | |
| 3 | #include "sound/dac.h" | |
| 4 | #include "sound/sn76496.h" | |
| 1 | /************************************************************************************** | |
| 5 | 2 | |
| 6 | ||
| 7 | /* | |
| 8 | 3 | Space Guerrilla PCB Layout |
| 9 | 4 | -------------------------- |
| 10 | 5 | |
| r6428 | r6429 | |
| 164 | 159 | DIP24- Unpopulated position for DIP24 IC |
| 165 | 160 | All ROMs type 2708 (DIP24) |
| 166 | 161 | |
| 167 | */ | |
| 162 | **************************************************************************************/ | |
| 168 | 163 | |
| 164 | #include "driver.h" | |
| 165 | #include "cpu/z80/z80.h" | |
| 166 | #include "sound/dac.h" | |
| 167 | #include "sound/sn76496.h" | |
| 169 | 168 | |
| 170 | 169 | |
| 170 | /************************************* | |
| 171 | * | |
| 172 | * Driver data | |
| 173 | * | |
| 174 | *************************************/ | |
| 171 | 175 | |
| 172 | static UINT8 *unkram; | |
| 176 | typedef struct _spaceg_state spaceg_state; | |
| 177 | struct _spaceg_state | |
| 178 | { | |
| 179 | UINT8 * videoram; | |
| 180 | UINT8 * unkram; | |
| 181 | UINT8 * io9400; | |
| 182 | UINT8 * io9401; | |
| 183 | }; | |
| 173 | 184 | |
| 174 | static UINT8 *io9400; | |
| 175 | static UINT8 *io9401; | |
| 185 | /************************************* | |
| 186 | * | |
| 187 | * Video emulation | |
| 188 | * | |
| 189 | *************************************/ | |
| 176 | 190 | |
| 177 | 191 | static PALETTE_INIT( spaceg ) |
| 178 | 192 | { |
| 179 | 193 | int i; |
| 180 | 194 | |
| 181 | for (i=0; i<128; i++) | |
| 195 | for (i = 0; i < 128; i++) | |
| 182 | 196 | palette_set_color (machine, i, MAKE_RGB(0x00,0x00,0x00)); |
| 183 | 197 | |
| 184 | 198 | |
| 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 | |
| 193 | 207 | |
| 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));//??? | |
| 202 | 216 | |
| 203 | 217 | } |
| 204 | 218 | |
| 205 | 219 | static WRITE8_HANDLER( zvideoram_w ) |
| 206 | 220 | { |
| 221 | spaceg_state *state = (spaceg_state *)space->machine->driver_data; | |
| 207 | 222 | int col; |
| 208 | 223 | |
| 209 | col = unkram[0x400]; | |
| 224 | col = state->unkram[0x400]; | |
| 210 | 225 | |
| 211 | if (col>0x0f) popmessage("color>0x0f =%2d",col); | |
| 226 | if (col > 0x0f) | |
| 227 | popmessage("color > 0x0f = %2d", col); | |
| 212 | 228 | |
| 213 | col &=0x0f; | |
| 229 | col &= 0x0f; | |
| 214 | 230 | |
| 215 | switch(*io9401) | |
| 231 | switch (*state->io9401) | |
| 216 | 232 | { |
| 217 | 233 | case 0x0d: /* 1101 */ |
| 218 | videoram[offset] &= ~data; | |
| 219 | data = videoram[offset]; | |
| 234 | state->videoram[offset] &= ~data; | |
| 235 | data = state->videoram[offset]; | |
| 220 | 236 | break; |
| 221 | 237 | |
| 222 | 238 | case 0x01: /* 0001 */ |
| 223 | 239 | case 0x00: /* 0000 */ |
| 224 | videoram[offset] = data; | |
| 240 | state->videoram[offset] = data; | |
| 225 | 241 | break; |
| 226 | 242 | |
| 227 | 243 | 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)); | |
| 230 | 246 | return; |
| 231 | 247 | } |
| 232 | 248 | |
| 233 | 249 | |
| 234 | unkram | |
| 250 | state->unkram | |
| 235 | 251 | } |
| 236 | 252 | |
| 237 | 253 | |
| 238 | 254 | static READ8_HANDLER(spaceg_colorram_r) |
| 239 | 255 | { |
| 256 | spaceg_state *state = (spaceg_state *)space->machine->driver_data; | |
| 257 | int rgbcolor; | |
| 240 | 258 | |
| 241 | int rgbcolor; | |
| 242 | ||
| 243 | if (offset<0x400) | |
| 259 | if (offset < 0x400) | |
| 244 | 260 | { |
| 245 | rgbcolor = (unkram[offset]<<1) | ((offset &0x100)>>8); | |
| 261 | rgbcolor = (state->unkram[offset] << 1) | ((offset &0x100) >> 8); | |
| 246 | 262 | |
| 247 | if ((offset>=0x200) && (offset<0x220)) /* 0xa200- 0xa21f */ | |
| 263 | if ((offset >= 0x200) && (offset < 0x220)) /* 0xa200- 0xa21f */ | |
| 248 | 264 | { |
| 249 | 265 | /* palette 1 */ |
| 250 | 266 | int col_ind = offset & 0x1f; |
| 251 | 267 | palette_set_color_rgb(space->machine, 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3)); |
| 252 | 268 | } |
| 253 | else | |
| 254 | if ((offset>=0x300) && (offset<0x320)) /* 0xa300- 0xa31f */ | |
| 269 | else if ((offset >= 0x300) && (offset < 0x320)) /* 0xa300- 0xa31f */ | |
| 255 | 270 | { |
| 256 | 271 | /* palette 2 */ |
| 257 | 272 | int col_ind = offset & 0x1f; |
| r6428 | r6429 | |
| 261 | 276 | logerror("palette? read from unkram offset = %04x\n",offset); |
| 262 | 277 | } |
| 263 | 278 | |
| 264 | if (*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); | |
| 266 | 281 | |
| 267 | ||
| 268 | return unkram[offset]; | |
| 282 | return state->unkram[offset]; | |
| 269 | 283 | } |
| 270 | 284 | |
| 271 | 285 | |
| 272 | 286 | static VIDEO_UPDATE( spaceg ) |
| 273 | 287 | { |
| 288 | spaceg_state *state = (spaceg_state *)screen->machine->driver_data; | |
| 274 | 289 | offs_t offs; |
| 275 | 290 | |
| 276 | 291 | for (offs = 0; offs < 0x2000; offs++) |
| 277 | 292 | { |
| 278 | 293 | int i; |
| 279 | UINT8 data = videoram[offs]; | |
| 294 | UINT8 data = state->videoram[offs]; | |
| 280 | 295 | |
| 281 | 296 | int y = offs & 0xff; |
| 282 | UINT8 x = ((offs >> 8) << 3) - ((*io9400 & 0xe0) >> 5); | |
| 297 | UINT8 x = ((offs >> 8) << 3) - ((*state->io9400 & 0xe0) >> 5); | |
| 283 | 298 | |
| 284 | 299 | for (i = 0; i < 8; i++) |
| 285 | 300 | { |
| 286 | *BITMAP_ADDR16(bitmap, y, x) = (data & 0x80) ? unkram[offs] : 0; | |
| 301 | *BITMAP_ADDR16(bitmap, y, x) = (data & 0x80) ? state->unkram[offs] : 0; | |
| 287 | 302 | |
| 288 | 303 | x++; |
| 289 | 304 | data <<= 1; |
| r6428 | r6429 | |
| 294 | 309 | } |
| 295 | 310 | |
| 296 | 311 | |
| 312 | /************************************* | |
| 313 | * | |
| 314 | * Memory maps | |
| 315 | * | |
| 316 | *************************************/ | |
| 317 | ||
| 297 | 318 | static ADDRESS_MAP_START( spaceg_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 298 | 319 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 299 | 320 | AM_RANGE(0x3000, 0x3fff) AM_ROM |
| 300 | 321 | AM_RANGE(0x7000, 0x77ff) AM_RAM |
| 301 | 322 | |
| 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) | |
| 304 | 325 | |
| 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 */ | |
| 307 | 328 | /* 9402 - |
| 308 | 329 | bits 0 and 1 probably control the lamps under the player 1 and player 2 start buttons |
| 309 | 330 | bit 2 - unknown - |
| r6428 | r6429 | |
| 321 | 342 | |
| 322 | 343 | |
| 323 | 344 | |
| 345 | /************************************* | |
| 346 | * | |
| 347 | * Input ports | |
| 348 | * | |
| 349 | *************************************/ | |
| 350 | ||
| 324 | 351 | static INPUT_PORTS_START( spaceg ) |
| 325 | 352 | PORT_START("9800") |
| 326 | 353 | PORT_DIPUNUSED( 0x01, IP_ACTIVE_HIGH ) /* was related to coinage */ |
| r6428 | r6429 | |
| 360 | 387 | INPUT_PORTS_END |
| 361 | 388 | |
| 362 | 389 | |
| 390 | /************************************* | |
| 391 | * | |
| 392 | * Machine driver | |
| 393 | * | |
| 394 | *************************************/ | |
| 395 | ||
| 363 | 396 | static MACHINE_DRIVER_START( spaceg ) |
| 364 | 397 | |
| 398 | /* driver data */ | |
| 399 | MDRV_DRIVER_DATA(spaceg_state) | |
| 400 | ||
| 365 | 401 | /* basic machine hardware */ |
| 366 | 402 | MDRV_CPU_ADD("maincpu", Z80,2500000) /* 2.5 MHz */ |
| 367 | 403 | MDRV_CPU_PROGRAM_MAP(spaceg_map) |
| r6428 | r6429 | |
| 396 | 432 | MACHINE_DRIVER_END |
| 397 | 433 | |
| 398 | 434 | |
| 399 | /*************************************************************************** | |
| 435 | /************************************* | |
| 436 | * | |
| 437 | * ROM definition | |
| 438 | * | |
| 439 | *************************************/ | |
| 400 | 440 | |
| 401 | Game driver(s) | |
| 402 | ||
| 403 | ***************************************************************************/ | |
| 404 | ||
| 405 | 441 | ROM_START( spaceg ) |
| 406 | 442 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 407 | 443 | ROM_LOAD( "1.9a", 0x0000, 0x0400, CRC(d6f80b0e) SHA1(503e832c065bb302ec60ed239c4d99a605cb931a) ) |
| r6428 | r6429 | |
| 419 | 455 | ROM_END |
| 420 | 456 | |
| 421 | 457 | |
| 422 | GAME( 1979, spaceg, 0, spaceg, spaceg, 0, ROT270, "Omori", "Space Guerrilla", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND ) | |
| 458 | /************************************* | |
| 459 | * | |
| 460 | * Game driver | |
| 461 | * | |
| 462 | *************************************/ | |
| 463 | ||
| 464 | GAME( 1979, spaceg, 0, spaceg, spaceg, 0, ROT270, "Omori", "Space Guerrilla", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 10 | ROM board has a part # UVM10B 1984 | |
| 11 | Main board has a part # UV-1B Rev 5 1982-83-84 | |
| 12 | ||
| 13 | Processor: Z80 | |
| 14 | Support Chips:(2) 8255s | |
| 15 | RAM: 6117on ROM board and (24) MCM4517s on main board | |
| 16 | ||
| 17 | When games are first run a RAM error will occur because the nvram needs initialising. | |
| 18 | When ERROR appears, press F2, then F3 to reset, then F2 again and the game will start | |
| 19 | ||
| 20 | Trivia games "No Coins" mode: if DSW "No Coins" is on, coin inputs are | |
| 21 | replaced by a 6th button to start games. This is a feature of the PCB for private use. | |
| 22 | ||
| 23 | Selection/Poker payout button: if pressed, all coins/credits are gone and added to the | |
| 24 | payout bookkeeping, shown in the service mode under the coin in total. Last Winner shows | |
| 25 | the last payout. Payout hardware is unknown. | |
| 26 | ||
| 27 | Video Trivia sets (as stated from Greyhound Electronics, Inc. manual): | |
| 28 | ||
| 29 | Series 1: (128K) Series 2: (128K) Series 3: (128K) | |
| 30 | ---------------- ---------------- ---------------- | |
| 31 | Science T.V. Mash Beatlemania | |
| 32 | General I General II General III | |
| 33 | Sports I Sports II Sports III | |
| 34 | Music Comics Country-Western | |
| 35 | Movies-T.V. Entertainment T.V. Soaps | |
| 36 | ||
| 37 | ||
| 38 | Series 4: (128K) Series 5: (128K) Series 6: (128K) | |
| 39 | ---------------- ---------------- ---------------- | |
| 40 | History-Geography The States Science II | |
| 41 | Star Trek James Bond General IV | |
| 42 | Baseball Hockey Commercials-Ads | |
| 43 | Hollywood Elvismania Honeymooners | |
| 44 | Television I The Wild West Television II | |
| 45 | ||
| 46 | ||
| 47 | Series 7: (128K) Series 8: (256K) * Starting with Series 8 | |
| 48 | ---------------- ---------------- "Announcement": | |
| 49 | T.V. Dallas Science 3 Times as many | |
| 50 | General V General questions in this | |
| 51 | Kids Korner Sports series! | |
| 52 | Good Guys T.V./Entertainment | |
| 53 | Biblical Adult Sex | |
| 54 | or alt: Potpourri | |
| 55 | ||
| 56 | ||
| 57 | Series 9: (256K) Series 10: (256K) Series 11: (256K) | |
| 58 | ---------------- ----------------- ----------------- | |
| 59 | Facts New Science Rich and Famous | |
| 60 | Rock-N-Roll New General Fast Women and Cars | |
| 61 | Television New T.V. Mash Aerospace | |
| 62 | Artists-Athletes New Entertainment TV/Music Alternative | |
| 63 | U.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 | ||
| 74 | static UINT8 drawctrl[3]; | |
| 75 | static UINT8 color[8]; | |
| 76 | ||
| 77 | static 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 | ||
| 88 | static 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 | ||
| 108 | static 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 | ||
| 118 | static 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 | ||
| 134 | static 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 | ||
| 152 | static 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 | ||
| 169 | static 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 | ||
| 175 | static 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 | ||
| 186 | static 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 | ||
| 196 | static READ8_DEVICE_HANDLER( portC_r ) | |
| 197 | { | |
| 198 | return 4; | |
| 199 | } | |
| 200 | ||
| 201 | static WRITE8_HANDLER( banksel_main_w ) | |
| 202 | { | |
| 203 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x8000); | |
| 204 | } | |
| 205 | static WRITE8_HANDLER( banksel_1_w ) | |
| 206 | { | |
| 207 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x10000); | |
| 208 | } | |
| 209 | static WRITE8_HANDLER( banksel_2_w ) | |
| 210 | { | |
| 211 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x18000); | |
| 212 | } | |
| 213 | static WRITE8_HANDLER( banksel_3_w ) | |
| 214 | { | |
| 215 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x20000); | |
| 216 | } | |
| 217 | static WRITE8_HANDLER( banksel_4_w ) | |
| 218 | { | |
| 219 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x28000); | |
| 220 | } | |
| 221 | static WRITE8_HANDLER( banksel_5_w ) | |
| 222 | { | |
| 223 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x30000); | |
| 224 | } | |
| 225 | ||
| 226 | static WRITE8_HANDLER( banksel_1_1_w ) | |
| 227 | { | |
| 228 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x10000); | |
| 229 | } | |
| 230 | static WRITE8_HANDLER( banksel_2_1_w ) | |
| 231 | { | |
| 232 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x14000); | |
| 233 | } | |
| 234 | static WRITE8_HANDLER( banksel_3_1_w ) | |
| 235 | { | |
| 236 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x18000); | |
| 237 | } | |
| 238 | static WRITE8_HANDLER( banksel_4_1_w ) | |
| 239 | { | |
| 240 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1c000); | |
| 241 | } | |
| 242 | static WRITE8_HANDLER( banksel_5_1_w ) | |
| 243 | { | |
| 244 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x20000); | |
| 245 | } | |
| 246 | static WRITE8_HANDLER( banksel_1_2_w ) | |
| 247 | { | |
| 248 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x12000); | |
| 249 | } | |
| 250 | static WRITE8_HANDLER( banksel_2_2_w ) | |
| 251 | { | |
| 252 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x16000); | |
| 253 | } | |
| 254 | static WRITE8_HANDLER( banksel_3_2_w ) | |
| 255 | { | |
| 256 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1a000); | |
| 257 | } | |
| 258 | static WRITE8_HANDLER( banksel_4_2_w ) | |
| 259 | { | |
| 260 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x1e000); | |
| 261 | } | |
| 262 | static WRITE8_HANDLER( banksel_5_2_w ) | |
| 263 | { | |
| 264 | memory_set_bankptr(space->machine, 1,memory_region(space->machine, "cpu") + 0x22000); | |
| 265 | } | |
| 266 | ||
| 267 | static 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? */ | |
| 296 | static int signature_answer,signature_pos; | |
| 297 | ||
| 298 | static READ8_HANDLER( signature_r ) | |
| 299 | { | |
| 300 | return signature_answer; | |
| 301 | } | |
| 302 | ||
| 303 | static 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 | ||
| 316 | static 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 | ||
| 329 | static 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) | |
| 349 | ADDRESS_MAP_END | |
| 350 | ||
| 351 | static 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) | |
| 363 | ADDRESS_MAP_END | |
| 364 | ||
| 365 | // TODO: where are mapped the lower 0x2000 bytes of the banks? | |
| 366 | static 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) | |
| 380 | ADDRESS_MAP_END | |
| 381 | ||
| 382 | static 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) | |
| 397 | ADDRESS_MAP_END | |
| 398 | ||
| 399 | static 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) | |
| 414 | ADDRESS_MAP_END | |
| 415 | ||
| 416 | static 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) | |
| 435 | ADDRESS_MAP_END | |
| 436 | ||
| 437 | ||
| 438 | static 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) | |
| 449 | ADDRESS_MAP_END | |
| 450 | ||
| 451 | static 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) | |
| 462 | ADDRESS_MAP_END | |
| 463 | ||
| 464 | static 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) | |
| 476 | ADDRESS_MAP_END | |
| 477 | ||
| 478 | static 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 ) | |
| 498 | INPUT_PORTS_END | |
| 499 | ||
| 500 | static 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 ) | |
| 520 | INPUT_PORTS_END | |
| 521 | ||
| 522 | static 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 ) | |
| 571 | INPUT_PORTS_END | |
| 572 | ||
| 573 | static 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 */ | |
| 579 | INPUT_PORTS_END | |
| 580 | ||
| 581 | static 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 | ||
| 629 | INPUT_PORTS_END | |
| 630 | ||
| 631 | static 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 */ | |
| 636 | INPUT_PORTS_END | |
| 637 | ||
| 638 | static 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" ) | |
| 666 | INPUT_PORTS_END | |
| 667 | ||
| 668 | static 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) | |
| 696 | INPUT_PORTS_END | |
| 697 | ||
| 698 | static 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) | |
| 726 | INPUT_PORTS_END | |
| 727 | ||
| 728 | static 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) | |
| 756 | INPUT_PORTS_END | |
| 757 | ||
| 758 | static 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 ) | |
| 805 | INPUT_PORTS_END | |
| 806 | ||
| 807 | static 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 */ | |
| 818 | INPUT_PORTS_END | |
| 819 | ||
| 820 | static 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) | |
| 852 | INPUT_PORTS_END | |
| 853 | ||
| 854 | static 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 ) ) | |
| 887 | INPUT_PORTS_END | |
| 888 | ||
| 889 | static 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 | ||
| 933 | INPUT_PORTS_END | |
| 934 | ||
| 935 | static 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 | ||
| 955 | static 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 | ||
| 975 | static 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 | ||
| 995 | static MACHINE_RESET( getrivia ) | |
| 996 | { | |
| 997 | ticket_dispenser_init(machine, 100, 1, 1); | |
| 998 | } | |
| 999 | ||
| 1000 | static MACHINE_RESET( gselect ) | |
| 1001 | { | |
| 1002 | } | |
| 1003 | ||
| 1004 | static 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) | |
| 1034 | MACHINE_DRIVER_END | |
| 1035 | ||
| 1036 | static 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] ) | |
| 1044 | MACHINE_DRIVER_END | |
| 1045 | ||
| 1046 | static 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] ) | |
| 1058 | MACHINE_DRIVER_END | |
| 1059 | ||
| 1060 | static 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] ) | |
| 1070 | MACHINE_DRIVER_END | |
| 1071 | ||
| 1072 | static 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) | |
| 1079 | MACHINE_DRIVER_END | |
| 1080 | ||
| 1081 | static 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) | |
| 1088 | MACHINE_DRIVER_END | |
| 1089 | ||
| 1090 | static MACHINE_DRIVER_START( amuse1 ) | |
| 1091 | ||
| 1092 | MDRV_IMPORT_FROM(getrivia) | |
| 1093 | ||
| 1094 | MDRV_CPU_MODIFY("cpu") | |
| 1095 | MDRV_CPU_PROGRAM_MAP(amuse1_map) | |
| 1096 | MACHINE_DRIVER_END | |
| 1097 | ||
| 1098 | static MACHINE_DRIVER_START( suprpokr ) | |
| 1099 | ||
| 1100 | MDRV_IMPORT_FROM(getrivia) | |
| 1101 | ||
| 1102 | MDRV_CPU_MODIFY("cpu") | |
| 1103 | MDRV_CPU_PROGRAM_MAP(suprpokr_map) | |
| 1104 | MACHINE_DRIVER_END | |
| 1105 | ||
| 1106 | static MACHINE_DRIVER_START( geimulti ) | |
| 1107 | ||
| 1108 | MDRV_IMPORT_FROM(getrivia) | |
| 1109 | ||
| 1110 | MDRV_CPU_MODIFY("cpu") | |
| 1111 | MDRV_CPU_PROGRAM_MAP(geimulti_map) | |
| 1112 | MACHINE_DRIVER_END | |
| 1113 | ||
| 1114 | static MACHINE_DRIVER_START( sprtauth ) | |
| 1115 | ||
| 1116 | MDRV_IMPORT_FROM(getrivia) | |
| 1117 | ||
| 1118 | MDRV_CPU_MODIFY("cpu") | |
| 1119 | MDRV_CPU_PROGRAM_MAP(sprtauth_map) | |
| 1120 | MACHINE_DRIVER_END | |
| 1121 | ||
| 1122 | /*************************************************** | |
| 1123 | Rom board is UVM-1A | |
| 1124 | ||
| 1125 | Contains: | |
| 1126 | 3 2732 eproms (Program Code, 1 empty socket) | |
| 1127 | 2 X2212P (Ram chips, no battery backup) | |
| 1128 | DM7408N | |
| 1129 | ||
| 1130 | PCB labeled M075 | |
| 1131 | ||
| 1132 | ****************************************************/ | |
| 1133 | ||
| 1134 | ROM_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) ) | |
| 1139 | ROM_END | |
| 1140 | ||
| 1141 | ROM_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) ) | |
| 1145 | ROM_END | |
| 1146 | ||
| 1147 | /* | |
| 1148 | Joker Poker BI Version 16.04BI 10-19-88 | |
| 1149 | ||
| 1150 | Standard GEI mainboard | |
| 1151 | ||
| 1152 | UVM 7S REV A romboard | |
| 1153 | */ | |
| 1154 | ||
| 1155 | ROM_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) ) | |
| 1159 | ROM_END | |
| 1160 | ||
| 1161 | /* | |
| 1162 | Joker Poker BI Version 16.03BI 5-10-85 | |
| 1163 | ||
| 1164 | Standard GEI mainboard | |
| 1165 | ||
| 1166 | UVM7-C romboard | |
| 1167 | */ | |
| 1168 | ||
| 1169 | ROM_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) ) | |
| 1173 | ROM_END | |
| 1174 | ||
| 1175 | /*************************************************** | |
| 1176 | Rom board is UVM-1B | |
| 1177 | ||
| 1178 | Contains: | |
| 1179 | 4 2732 eproms (Program Code) | |
| 1180 | Battery (3.5V litium battery) backed up NEC 8444XF301 | |
| 1181 | DM7408N | |
| 1182 | ||
| 1183 | ****************************************************/ | |
| 1184 | ||
| 1185 | ROM_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) ) | |
| 1191 | ROM_END | |
| 1192 | ||
| 1193 | /*************************************************** | |
| 1194 | Rom board is UVM 10 B | |
| 1195 | ||
| 1196 | Contains: | |
| 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 | ||
| 1204 | Sets 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 | |
| 1207 | Missing sets will be filled as dumped, as question roms | |
| 1208 | are interchangable, operators did thier own swaps | |
| 1209 | ||
| 1210 | Note: Question roms that contain "#1" (or 2 ect) | |
| 1211 | are corrected roms (spelling and / or answers) | |
| 1212 | ||
| 1213 | ****************************************************/ | |
| 1214 | ||
| 1215 | ROM_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) ) | |
| 1225 | ROM_END | |
| 1226 | ||
| 1227 | ROM_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" */ | |
| 1237 | ROM_END | |
| 1238 | ||
| 1239 | ROM_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) ) | |
| 1249 | ROM_END | |
| 1250 | ||
| 1251 | ROM_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" */ | |
| 1261 | ROM_END | |
| 1262 | ||
| 1263 | ROM_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" */ | |
| 1273 | ROM_END | |
| 1274 | ||
| 1275 | ROM_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" */ | |
| 1285 | ROM_END | |
| 1286 | ||
| 1287 | ROM_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 */ | |
| 1297 | ROM_END | |
| 1298 | ||
| 1299 | ROM_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 */ | |
| 1309 | ROM_END | |
| 1310 | ||
| 1311 | ROM_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) ) | |
| 1320 | ROM_END | |
| 1321 | ||
| 1322 | ROM_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) ) | |
| 1330 | ROM_END | |
| 1331 | ||
| 1332 | /*************************************************** | |
| 1333 | Rom board is UVM-4B | |
| 1334 | ||
| 1335 | Contains 5 2764 eproms, MMI PAL16R4CN | |
| 1336 | ||
| 1337 | Battery (3V litium battery) backed up HM6117P-4 | |
| 1338 | ||
| 1339 | Roms labeled as: | |
| 1340 | ||
| 1341 | 4/1 at spot 1 | |
| 1342 | BLJK at spot 2 | |
| 1343 | POKR at spot 3 | |
| 1344 | SPRD at spot 4 | |
| 1345 | SLOT at spot 3 | |
| 1346 | ||
| 1347 | Alt set included BONE in place of SPRD & a newer SLOT | |
| 1348 | ||
| 1349 | These board sets may also be known as the V116 (or V16) | |
| 1350 | sets as the alt set also included that name on the labels | |
| 1351 | ||
| 1352 | ****************************************************/ | |
| 1353 | ||
| 1354 | ROM_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) ) | |
| 1362 | ROM_END | |
| 1363 | ||
| 1364 | ROM_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) ) | |
| 1372 | ROM_END | |
| 1373 | ||
| 1374 | /* | |
| 1375 | Greyhound Poker board... | |
| 1376 | ||
| 1377 | Standard Greyhound Electronics Inc UV-1B mainboard. | |
| 1378 | ||
| 1379 | Rom board UVM 10 B or UMV 10 C | |
| 1380 | ||
| 1381 | Battery backed up NEC D449C ram | |
| 1382 | PAL16R4 | |
| 1383 | 74L374 | |
| 1384 | ||
| 1385 | Roms in this order on the UMV 10 C board: | |
| 1386 | ||
| 1387 | Label Normaly in the slot | |
| 1388 | -------------------------------- | |
| 1389 | High | |
| 1390 | Control | |
| 1391 | rom1 Joker Poker | |
| 1392 | rom2 Black jack | |
| 1393 | rom3 Rolling Bones | |
| 1394 | rom4 Casino Slots | |
| 1395 | rom5 Horse Race | |
| 1396 | ||
| 1397 | For UMV 10 B: 1C, 2C, 1, 2, 3, 4, & 5 | |
| 1398 | ||
| 1399 | There looks to be several types and combos for these, some are "ICB" or "IAM" | |
| 1400 | It also looks like operators mixed & matched to upgrade (some times incorrectly) | |
| 1401 | their boards. Sets will be filled in as found and dumped. | |
| 1402 | ||
| 1403 | There are some versions, like, the ICB sets that use 2764 roms for all roms. While the IAM set uses | |
| 1404 | 27128 roms for all roms. These roms are the correct size, but it's currently not known if the rom | |
| 1405 | board (UVM 10 B/C) "sees" them as 27128 or the standard size of 2764. | |
| 1406 | ||
| 1407 | Dumped, but not known to be supported by any High/Control combo: | |
| 1408 | ROM_LOAD( "rollingbones_am_3-16-84", 0x16000, 0x4000, CRC(41879e9b) SHA1(5106d5772bf43b28817e27efd16c785359cd929e) ) // Might work with IAM control, once it gets figured out | |
| 1409 | ||
| 1410 | The ICB set is known as the M105 set as some label sets included that name. | |
| 1411 | ||
| 1412 | */ | |
| 1413 | ||
| 1414 | ROM_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) ) | |
| 1424 | ROM_END | |
| 1425 | ||
| 1426 | ROM_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? */ | |
| 1436 | ROM_END | |
| 1437 | ||
| 1438 | ROM_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) ) | |
| 1445 | ROM_END | |
| 1446 | ||
| 1447 | ROM_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) ) | |
| 1457 | ROM_END | |
| 1458 | ||
| 1459 | /* | |
| 1460 | ||
| 1461 | UVM-8B romboard | |
| 1462 | ||
| 1463 | */ | |
| 1464 | ||
| 1465 | ROM_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) ) | |
| 1473 | ROM_END | |
| 1474 | ||
| 1475 | ||
| 1476 | ROM_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 */ | |
| 1480 | ROM_END | |
| 1481 | ||
| 1482 | ROM_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) ) | |
| 1491 | ROM_END | |
| 1492 | ||
| 1493 | ROM_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 */ | |
| 1505 | ROM_END | |
| 1506 | ||
| 1507 | ROM_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) ) | |
| 1516 | ROM_END | |
| 1517 | ||
| 1518 | ROM_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) ) | |
| 1526 | ROM_END | |
| 1527 | ||
| 1528 | ROM_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" */ | |
| 1537 | ROM_END | |
| 1538 | ||
| 1539 | ROM_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" */ | |
| 1548 | ROM_END | |
| 1549 | ||
| 1550 | ROM_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" */ | |
| 1559 | ROM_END | |
| 1560 | ||
| 1561 | ROM_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" */ | |
| 1570 | ROM_END | |
| 1571 | ||
| 1572 | ROM_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) ) | |
| 1580 | ROM_END | |
| 1581 | ||
| 1582 | ROM_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) ) | |
| 1589 | ROM_END | |
| 1590 | ||
| 1591 | ROM_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) ) | |
| 1598 | ROM_END | |
| 1599 | ||
| 1600 | ROM_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) ) | |
| 1608 | ROM_END | |
| 1609 | ||
| 1610 | ROM_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) ) | |
| 1618 | ROM_END | |
| 1619 | ||
| 1620 | ROM_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) ) | |
| 1631 | ROM_END | |
| 1632 | ||
| 1633 | ROM_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) ) | |
| 1654 | ROM_END | |
| 1655 | ||
| 1656 | /* | |
| 1657 | GEI Multi Game System | |
| 1658 | (c) 1992 | |
| 1659 | ||
| 1660 | Much newer satellite board for the Greyhound UV-1B mainboard system | |
| 1661 | ||
| 1662 | Contains: | |
| 1663 | Power LED | |
| 1664 | 3 Pals | |
| 1665 | 2 74LS374N | |
| 1666 | ||
| 1667 | ST MK48Z02B-20 Zeropower RAM | |
| 1668 | ||
| 1669 | Control, graphics & 13 banked roms (as labeled): | |
| 1670 | ||
| 1671 | Cont: R.5 Cont 92 | |
| 1672 | GRPH: R.5 K.B. 93 | |
| 1673 | ||
| 1674 | Bank 1: pokr 4/3 92 | |
| 1675 | Bank 2: bljk 4/3 92 | |
| 1676 | Bank 3: bone 4/3 92 | |
| 1677 | Bank 4: slot 4/3 92 | |
| 1678 | Bank 5: sprd 4/3 92 | |
| 1679 | Bank 6: hrse 7/8 92 | |
| 1680 | Bank 7: dogs 7/8 92 | |
| 1681 | Bank 8: memo test | |
| 1682 | Bank 9: reel fun | |
| 1683 | Bank 10: fact #1 | |
| 1684 | Bank 11: adlt sex #1 | |
| 1685 | Bank 12: nfl #1 | |
| 1686 | Bank 13: entr #1 | |
| 1687 | ||
| 1688 | All roms are 27C256 type eproms | |
| 1689 | */ | |
| 1690 | ||
| 1691 | ROM_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 | ||
| 1711 | ROM_END | |
| 1712 | ||
| 1713 | ROM_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 | ||
| 1729 | ROM_END | |
| 1730 | ||
| 1731 | static DRIVER_INIT( setbank ) | |
| 1732 | { | |
| 1733 | memory_set_bankptr(machine, 1,memory_region(machine, "cpu") + 0x2000); | |
| 1734 | } | |
| 1735 | ||
| 1736 | static DRIVER_INIT( geimulti ) | |
| 1737 | { | |
| 1738 | memory_set_bankptr(machine, 1,memory_region(machine, "bank") + 0x0000); | |
| 1739 | } | |
| 1740 | ||
| 1741 | GAME( 1982, jokpoker, 0, gselect, gselect, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1742 | GAME( 1983, jokpokera,jokpoker, jokpokera,gselect, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1743 | GAME( 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 ) | |
| 1744 | GAME( 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 ) | |
| 1745 | GAME( 1982, superbwl, 0, gselect, gselect, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1746 | ||
| 1747 | GAME( 1982, gs4002, 0, gselect, gselect, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1748 | GAME( 1982, gs4002a, gs4002, gselect, gselect, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1749 | ||
| 1750 | GAME( 1982, amuse, 0, amuse, gepoker, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1751 | GAME( 1982, amuse1, 0, amuse1, gepoker, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1752 | ||
| 1753 | GAME( 1984, gepoker, 0, gepoker, gepoker, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1754 | GAME( 1984, gepoker1, gepoker, gepoker, gepoker, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1755 | GAME( 1984, gepoker2, gepoker, gepoker, gepoker, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1756 | ||
| 1757 | GAME( 1984, gtsers1, 0, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1758 | GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1759 | GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1760 | GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1761 | GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1762 | GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1763 | GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1764 | GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1765 | GAME( 1984, gtsers8, 0, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1766 | GAME( 1984, gtsers9, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1767 | GAME( 1984, gtsers10, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1768 | GAME( 1984, gtsers11, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1769 | GAME( 1984, gt103a1, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1770 | GAME( 1984, gt103a2, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1771 | GAME( 1984, gt103a3, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a) (alt 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1772 | GAME( 1984, gt103aa, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1773 | GAME( 1984, gt103asx, gtsers8, findout, gt103a, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1774 | ||
| 1775 | GAME( 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 ) | |
| 1776 | GAME( 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 | ||
| 1778 | GAME( 1986, gt507uk, 0, findout, gt507uk, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1779 | GAME( 1986, gt5, 0, findout, gt103, 0, ROT0, "Grayhound Electronics", "Trivia (Version 5.06)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1780 | ||
| 1781 | GAME( 1986, quiz, 0, findout, quiz, 0, ROT0, "Italian bootleg", "Quiz (Revision 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1782 | ||
| 1783 | GAME( 1986, reelfun, 0, findout, reelfun, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1784 | GAME( 1987, findout, 0, findout, findout, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1785 | ||
| 1786 | GAME( 1987, suprpokr, 0, suprpokr, suprpokr, 0, ROT0, "Grayhound Electronics", "Super Poker", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1787 | ||
| 1788 | GAME( 1991, quiz211, 0, findout, quiz, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1789 | ||
| 1790 | GAME( 1992, geimulti, 0, geimulti, geimulti, geimulti,ROT0, "Grayhound Electronics", "GEI Multi Game", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) | |
| 1791 | GAME( 1992, sprtauth, 0, sprtauth, sprtauth, geimulti,ROT0, "Classic Games", "Sports Authority", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| r6428 | r6429 | |
|---|---|---|
| 1259 | 1259 | static ADDRESS_MAP_START( system32_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1260 | 1260 | AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x100000) |
| 1261 | 1261 | 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) | |
| 1264 | 1264 | AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE(&z80_shared_ram) |
| 1265 | 1265 | ADDRESS_MAP_END |
| 1266 | 1266 | |
| r6428 | r6429 | |
| 1287 | 1287 | static ADDRESS_MAP_START( multi32_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1288 | 1288 | ADDRESS_MAP_UNMAP_HIGH |
| 1289 | 1289 | 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) | |
| 1291 | 1291 | AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w) |
| 1292 | 1292 | AM_RANGE(0xb0, 0xbf) AM_DEVWRITE("sega", multipcm_bank_w) |
| 1293 | 1293 | AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w) |
| r6428 | r6429 | |
| 2215 | 2215 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 2216 | 2216 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.40) |
| 2217 | 2217 | |
| 2218 | MDRV_SOUND_ADD("rf", RF5C68, RFC_CLOCK/4) | |
| 2218 | MDRV_SOUND_ADD("rfsnd", RF5C68, RFC_CLOCK/4) | |
| 2219 | 2219 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.55) |
| 2220 | 2220 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.55) |
| 2221 | 2221 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2267 | 2267 | /* sound hardware */ |
| 2268 | 2268 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2269 | 2269 | |
| 2270 | MDRV_SOUND_ADD("ym", YM3438, MASTER_CLOCK/4) | |
| 2270 | MDRV_SOUND_ADD("ymsnd", YM3438, MASTER_CLOCK/4) | |
| 2271 | 2271 | MDRV_SOUND_CONFIG(ym3438_config) |
| 2272 | 2272 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.40) |
| 2273 | 2273 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 511 | 511 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 512 | 512 | AM_RANGE(0x0000, 0x37ff) AM_ROM |
| 513 | 513 | 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) | |
| 516 | 516 | AM_RANGE(0x3c03, 0x3c03) AM_MIRROR(0x00f6) AM_NOP |
| 517 | 517 | AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("tms", SMH_NOP, tms5220_data_w) |
| 518 | 518 | AM_RANGE(0x3e02, 0x3e02) AM_MIRROR(0x00f4) AM_DEVREADWRITE("tms", tms5220_status_r, SMH_NOP) |
| r6428 | r6429 | |
| 522 | 522 | static ADDRESS_MAP_START( looping_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 523 | 523 | AM_RANGE(0x000, 0x000) AM_WRITE(looping_souint_clr) |
| 524 | 524 | 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) | |
| 526 | 526 | AM_RANGE(0x009, 0x009) AM_DEVWRITE("tms", speech_enable_w) |
| 527 | 527 | AM_RANGE(0x00a, 0x00a) AM_WRITE(ballon_enable_w) |
| 528 | 528 | AM_RANGE(0x00b, 0x00f) AM_NOP |
| r6428 | r6429 | |
| 638 | 638 | /* sound hardware */ |
| 639 | 639 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 640 | 640 | |
| 641 | MDRV_SOUND_ADD("ay", AY8910, SOUND_CLOCK/4) | |
| 641 | MDRV_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK/4) | |
| 642 | 642 | MDRV_SOUND_CONFIG(ay8910_config) |
| 643 | 643 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 644 | 644 |
| r6428 | r6429 | |
|---|---|---|
| 406 | 406 | |
| 407 | 407 | static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 408 | 408 | 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) | |
| 410 | 410 | AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w) |
| 411 | 411 | AM_RANGE(0x3000, 0xffff) AM_ROM |
| 412 | 412 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 527 | 527 | /* sound hardware */ |
| 528 | 528 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 529 | 529 | |
| 530 | MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4) | |
| 530 | MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 531 | 531 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 532 | 532 | MDRV_SOUND_ROUTE(1, "mono", 0.30) |
| 533 | 533 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 733 | 733 | /* sound hardware */ |
| 734 | 734 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 735 | 735 | |
| 736 | MDRV_SOUND_ADD("ym", YM2151, 2800000/4) | |
| 736 | MDRV_SOUND_ADD("ymsnd", YM2151, 2800000/4) | |
| 737 | 737 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 738 | 738 | MDRV_SOUND_ROUTE(1, "mono", 0.30) |
| 739 | 739 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 22 | 22 | #include "sound/samples.h" |
| 23 | 23 | |
| 24 | 24 | |
| 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 | |
| 27 | 27 | |
| 28 | 28 | |
| 29 | 29 | /* sample sound IDs - must match sample file name table below */ |
| r6428 | r6429 | |
| 41 | 41 | }; |
| 42 | 42 | |
| 43 | 43 | |
| 44 | typedef struct _astinvad_state astinvad_state; | |
| 45 | struct _astinvad_state | |
| 46 | { | |
| 47 | UINT8 * colorram; | |
| 48 | UINT8 * videoram; | |
| 44 | 49 | |
| 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; | |
| 50 | 56 | |
| 51 | static emu_timer *int_timer; | |
| 52 | static UINT8 sound_state[2]; | |
| 53 | static UINT8 screen_flip; | |
| 54 | static UINT8 screen_red; | |
| 55 | static UINT8 flip_yoffs; | |
| 56 | static UINT8 color_latch; | |
| 57 | const device_config *ppi8255_0; | |
| 58 | const device_config *ppi8255_1; | |
| 59 | const device_config *samples; | |
| 60 | }; | |
| 57 | 61 | |
| 58 | 62 | |
| 59 | ||
| 60 | 63 | /************************************* |
| 61 | 64 | * |
| 62 | 65 | * Prototypes and interfaces |
| r6428 | r6429 | |
| 96 | 99 | |
| 97 | 100 | static VIDEO_START( spaceint ) |
| 98 | 101 | { |
| 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); | |
| 100 | 107 | } |
| 101 | 108 | |
| 102 | 109 | |
| 103 | 110 | static WRITE8_HANDLER( color_latch_w ) |
| 104 | 111 | { |
| 105 | color_latch = data & 0x0f; | |
| 112 | astinvad_state *state = (astinvad_state *)space->machine->driver_data; | |
| 113 | state->color_latch = data & 0x0f; | |
| 106 | 114 | } |
| 107 | 115 | |
| 108 | 116 | |
| 109 | 117 | static WRITE8_HANDLER( spaceint_videoram_w ) |
| 110 | 118 | { |
| 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; | |
| 113 | 122 | } |
| 114 | 123 | |
| 115 | 124 | |
| r6428 | r6429 | |
| 120 | 129 | * |
| 121 | 130 | *************************************/ |
| 122 | 131 | |
| 123 | static void plot_byte(bitmap_t *bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color) | |
| 132 | static void plot_byte( running_machine *machine, bitmap_t *bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color ) | |
| 124 | 133 | { |
| 134 | astinvad_state *state = (astinvad_state *)machine->driver_data; | |
| 125 | 135 | 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; | |
| 127 | 137 | |
| 128 | 138 | *BITMAP_ADDR32(bitmap, y, x + (0 ^ flip_xor)) = (data & 0x01) ? fore_pen : RGB_BLACK; |
| 129 | 139 | *BITMAP_ADDR32(bitmap, y, x + (1 ^ flip_xor)) = (data & 0x02) ? fore_pen : RGB_BLACK; |
| r6428 | r6429 | |
| 138 | 148 | |
| 139 | 149 | static VIDEO_UPDATE( astinvad ) |
| 140 | 150 | { |
| 151 | astinvad_state *state = (astinvad_state *)screen->machine->driver_data; | |
| 141 | 152 | 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; | |
| 143 | 154 | int x, y; |
| 144 | 155 | |
| 145 | 156 | /* render the visible pixels */ |
| 146 | 157 | for (y = cliprect->min_y; y <= cliprect->max_y; y++) |
| 147 | 158 | for (x = cliprect->min_x & ~7; x <= cliprect->max_x; x += 8) |
| 148 | 159 | { |
| 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); | |
| 152 | 163 | } |
| 153 | 164 | |
| 154 | 165 | return 0; |
| r6428 | r6429 | |
| 157 | 168 | |
| 158 | 169 | static VIDEO_UPDATE( spaceint ) |
| 159 | 170 | { |
| 171 | astinvad_state *state = (astinvad_state *)screen->machine->driver_data; | |
| 160 | 172 | const UINT8 *color_prom = memory_region(screen->machine, "proms"); |
| 161 | 173 | int offs; |
| 162 | 174 | |
| 163 | 175 | for (offs = 0; offs < videoram_size; offs++) |
| 164 | 176 | { |
| 165 | UINT8 data = videoram[offs]; | |
| 166 | UINT8 color = colorram[offs]; | |
| 177 | UINT8 data = state->videoram[offs]; | |
| 178 | UINT8 color = state->colorram[offs]; | |
| 167 | 179 | |
| 168 | 180 | UINT8 y = ~offs; |
| 169 | 181 | UINT8 x = offs >> 8 << 3; |
| r6428 | r6429 | |
| 172 | 184 | offs_t n = ((offs >> 5) & 0xf0) | color; |
| 173 | 185 | color = color_prom[n] & 0x07; |
| 174 | 186 | |
| 175 | plot_byte(bitmap, y, x, data, color); | |
| 187 | plot_byte(screen->machine, bitmap, y, x, data, color); | |
| 176 | 188 | } |
| 177 | 189 | |
| 178 | 190 | return 0; |
| r6428 | r6429 | |
| 194 | 206 | |
| 195 | 207 | static TIMER_CALLBACK( kamizake_int_gen ) |
| 196 | 208 | { |
| 209 | astinvad_state *state = (astinvad_state *)machine->driver_data; | |
| 197 | 210 | /* interrupts are asserted on every state change of the 128V line */ |
| 198 | 211 | cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE); |
| 199 | 212 | 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); | |
| 201 | 214 | |
| 202 | 215 | /* an RC circuit turns the interrupt off after a short amount of time */ |
| 203 | 216 | timer_set(machine, double_to_attotime(300 * 0.1e-6), NULL, 0, kamikaze_int_off); |
| r6428 | r6429 | |
| 206 | 219 | |
| 207 | 220 | static MACHINE_START( kamikaze ) |
| 208 | 221 | { |
| 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); | |
| 211 | 234 | } |
| 212 | 235 | |
| 236 | static MACHINE_RESET( kamikaze ) | |
| 237 | { | |
| 238 | astinvad_state *state = (astinvad_state *)machine->driver_data; | |
| 213 | 239 | |
| 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 | ||
| 247 | static 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 | ||
| 257 | static 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 | ||
| 214 | 268 | static INPUT_CHANGED( spaceint_coin_inserted ) |
| 215 | 269 | { |
| 216 | 270 | /* coin insertion causes an NMI */ |
| r6428 | r6429 | |
| 227 | 281 | |
| 228 | 282 | static READ8_HANDLER( kamikaze_ppi_r ) |
| 229 | 283 | { |
| 284 | astinvad_state *state = (astinvad_state *)space->machine->driver_data; | |
| 230 | 285 | UINT8 result = 0xff; |
| 231 | 286 | |
| 232 | 287 | /* the address lines are used for /CS; yes, they can overlap! */ |
| 233 | 288 | if (!(offset & 4)) |
| 234 | result &= ppi8255_r( | |
| 289 | result &= ppi8255_r(s | |
| 235 | 290 | if (!(offset & 8)) |
| 236 | result &= ppi8255_r( | |
| 291 | result &= ppi8255_r(s | |
| 237 | 292 | return result; |
| 238 | 293 | } |
| 239 | 294 | |
| 240 | 295 | |
| 241 | 296 | static WRITE8_HANDLER( kamikaze_ppi_w ) |
| 242 | 297 | { |
| 298 | astinvad_state *state = (astinvad_state *)space->machine->driver_data; | |
| 299 | ||
| 243 | 300 | /* the address lines are used for /CS; yes, they can overlap! */ |
| 244 | 301 | if (!(offset & 4)) |
| 245 | ppi8255_w( | |
| 302 | ppi8255_w(s | |
| 246 | 303 | if (!(offset & 8)) |
| 247 | ppi8255_w( | |
| 304 | ppi8255_w(s | |
| 248 | 305 | } |
| 249 | 306 | |
| 250 | 307 | |
| r6428 | r6429 | |
| 257 | 314 | |
| 258 | 315 | static WRITE8_DEVICE_HANDLER( astinvad_sound1_w ) |
| 259 | 316 | { |
| 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; | |
| 263 | 320 | |
| 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); | |
| 269 | 326 | |
| 270 | 327 | sound_global_enable(device->machine, data & 0x20); |
| 271 | screen_red = data & 0x04; | |
| 328 | state->screen_red = data & 0x04; | |
| 272 | 329 | } |
| 273 | 330 | |
| 274 | 331 | |
| 275 | 332 | static WRITE8_DEVICE_HANDLER( astinvad_sound2_w ) |
| 276 | 333 | { |
| 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; | |
| 280 | 337 | |
| 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); | |
| 286 | 343 | |
| 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; | |
| 288 | 345 | } |
| 289 | 346 | |
| 290 | 347 | |
| 291 | 348 | static WRITE8_HANDLER( spaceint_sound1_w ) |
| 292 | 349 | { |
| 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; | |
| 296 | 353 | |
| 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); | |
| 302 | 359 | |
| 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); | |
| 307 | 364 | } |
| 308 | 365 | |
| 309 | 366 | |
| 310 | 367 | static WRITE8_HANDLER( spaceint_sound2_w ) |
| 311 | 368 | { |
| 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; | |
| 315 | 372 | |
| 316 | 373 | sound_global_enable(space->machine, data & 0x02); |
| 317 | 374 | |
| 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); | |
| 319 | 376 | |
| 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; | |
| 321 | 378 | } |
| 322 | 379 | |
| 323 | 380 | |
| r6428 | r6429 | |
| 332 | 389 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 333 | 390 | AM_RANGE(0x0000, 0x1bff) AM_ROM |
| 334 | 391 | AM_RANGE(0x1c00, 0x1fff) AM_RAM |
| 335 | AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE( | |
| 392 | AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE(&videoram_size) | |
| 336 | 393 | ADDRESS_MAP_END |
| 337 | 394 | |
| 338 | 395 | |
| 339 | 396 | static ADDRESS_MAP_START( spaceint_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 340 | 397 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 341 | 398 | AM_RANGE(0x2000, 0x23ff) AM_RAM |
| 342 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE( | |
| 399 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE(&videoram_size) | |
| 343 | 400 | ADDRESS_MAP_END |
| 344 | 401 | |
| 345 | 402 | |
| r6428 | r6429 | |
| 520 | 577 | |
| 521 | 578 | static MACHINE_DRIVER_START( kamikaze ) |
| 522 | 579 | |
| 580 | /* driver data */ | |
| 581 | MDRV_DRIVER_DATA(astinvad_state) | |
| 582 | ||
| 523 | 583 | /* basic machine hardware */ |
| 524 | 584 | MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK) |
| 525 | 585 | MDRV_CPU_PROGRAM_MAP(kamikaze_map) |
| 526 | 586 | MDRV_CPU_IO_MAP(kamikaze_portmap) |
| 527 | 587 | |
| 528 | 588 | MDRV_MACHINE_START(kamikaze) |
| 589 | MDRV_MACHINE_RESET(kamikaze) | |
| 529 | 590 | |
| 530 | 591 | MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] ) |
| 531 | 592 | MDRV_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] ) |
| r6428 | r6429 | |
| 557 | 618 | |
| 558 | 619 | static MACHINE_DRIVER_START( spaceint ) |
| 559 | 620 | |
| 621 | /* driver data */ | |
| 622 | MDRV_DRIVER_DATA(astinvad_state) | |
| 623 | ||
| 560 | 624 | /* basic machine hardware */ |
| 561 | 625 | MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* a guess */ |
| 562 | 626 | MDRV_CPU_PROGRAM_MAP(spaceint_map) |
| 563 | 627 | MDRV_CPU_IO_MAP(spaceint_portmap) |
| 564 | 628 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 565 | 629 | |
| 630 | MDRV_MACHINE_START(spaceint) | |
| 631 | MDRV_MACHINE_RESET(spaceint) | |
| 632 | ||
| 566 | 633 | /* video hardware */ |
| 567 | 634 | MDRV_VIDEO_START(spaceint) |
| 568 | 635 | MDRV_VIDEO_UPDATE(spaceint) |
| r6428 | r6429 | |
| 675 | 742 | |
| 676 | 743 | static DRIVER_INIT( kamikaze ) |
| 677 | 744 | { |
| 745 | astinvad_state *state = (astinvad_state *)machine->driver_data; | |
| 746 | ||
| 678 | 747 | /* the flip screen logic adds 32 to the Y after flipping */ |
| 679 | flip_yoffs = 32; | |
| 748 | state->flip_yoffs = 32; | |
| 680 | 749 | } |
| 681 | 750 | |
| 682 | 751 | |
| 683 | 752 | static DRIVER_INIT( spcking2 ) |
| 684 | 753 | { |
| 754 | astinvad_state *state = (astinvad_state *)machine->driver_data; | |
| 755 | ||
| 685 | 756 | /* don't have the schematics, but the blanking must center the screen here */ |
| 686 | flip_yoffs = 0; | |
| 757 | state->flip_yoffs = 0; | |
| 687 | 758 | } |
| 688 | 759 | |
| 689 | 760 | |
| r6428 | r6429 | |
| 694 | 765 | * |
| 695 | 766 | *************************************/ |
| 696 | 767 | |
| 697 | GAME( 1979, kamikaze, 0, kamikaze, kamikaze, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", GAME_IMPERFECT_SOUND ) | |
| 698 | GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, kamikaze, ROT270, "Stern", "Astro Invader", GAME_IMPERFECT_SOUND ) | |
| 699 | GAME( 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. | |
| 700 | GAME( 1979, spcking2, 0, spcking2, spcking2, spcking2, ROT270, "Konami", "Space King 2", GAME_IMPERFECT_SOUND ) | |
| 701 | GAME( 1980, spaceint, 0, spaceint, spaceint, 0, ROT90, "Shoei", "Space Intruder", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS ) | |
| 702 | GAME( 1980, spaceintj,spaceint, spaceint, spaceinj, 0, ROT90, "Shoei", "Space Intruder (Japan)", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS ) | |
| 768 | GAME( 1979, kamikaze, 0, kamikaze, kamikaze, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 769 | GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, kamikaze, ROT270, "Stern", "Astro Invader", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 770 | GAME( 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. | |
| 771 | GAME( 1979, spcking2, 0, spcking2, spcking2, spcking2, ROT270, "Konami", "Space King 2", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 772 | GAME( 1980, spaceint, 0, spaceint, spaceint, 0, ROT90, "Shoei", "Space Intruder", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) | |
| 773 | GAME( 1980, spaceintj,spaceint, spaceint, spaceinj, 0, ROT90, "Shoei", "Space Intruder (Japan)", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 296 | 296 | AM_RANGE(0x1800, 0x1bff) AM_RAM |
| 297 | 297 | AM_RANGE(0x1efc, 0x1efc) AM_READ_PORT("JOYS") |
| 298 | 298 | 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) | |
| 300 | 300 | AM_RANGE(0x1efe, 0x1efe) AM_READ_PORT("DSW") |
| 301 | 301 | AM_RANGE(0x1eff, 0x1eff) AM_READ_PORT("UNK") |
| 302 | 302 | AM_RANGE(0x2000, 0x3fff) AM_READWRITE(supertnk_videoram_r, supertnk_videoram_w) AM_SIZE(&supertnk_videoram_size) |
| r6428 | r6429 | |
| 434 | 434 | /* audio hardware */ |
| 435 | 435 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 436 | 436 | |
| 437 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 437 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 438 | 438 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 439 | 439 | MACHINE_DRIVER_END |
| 440 | 440 |
| r6428 | r6429 | |
|---|---|---|
| 74 | 74 | AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") |
| 75 | 75 | AM_RANGE(0xc0, 0xc0) AM_WRITE(quizdna_rombank_w) |
| 76 | 76 | 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) | |
| 78 | 78 | AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 79 | 79 | ADDRESS_MAP_END |
| 80 | 80 | |
| r6428 | r6429 | |
| 89 | 89 | AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") |
| 90 | 90 | AM_RANGE(0xc0, 0xc0) AM_WRITE(quizdna_rombank_w) |
| 91 | 91 | 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) | |
| 93 | 93 | AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 94 | 94 | ADDRESS_MAP_END |
| 95 | 95 | |
| r6428 | r6429 | |
| 104 | 104 | AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") |
| 105 | 105 | AM_RANGE(0xc0, 0xc0) AM_WRITE(gekiretu_rombank_w) |
| 106 | 106 | 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) | |
| 108 | 108 | AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 109 | 109 | ADDRESS_MAP_END |
| 110 | 110 | |
| r6428 | r6429 | |
| 477 | 477 | /* sound hardware */ |
| 478 | 478 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 479 | 479 | |
| 480 | MDRV_SOUND_ADD("ym", YM2203, MCLK/4) | |
| 480 | MDRV_SOUND_ADD("ymsnd", YM2203, MCLK/4) | |
| 481 | 481 | MDRV_SOUND_CONFIG(ym2203_config) |
| 482 | 482 | MDRV_SOUND_ROUTE(0, "mono", 0.10) |
| 483 | 483 | MDRV_SOUND_ROUTE(1, "mono", 0.10) |
| r6428 | r6429 | |
|---|---|---|
| 133 | 133 | static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 134 | 134 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 135 | 135 | 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) | |
| 137 | 137 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 138 | 138 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 139 | 139 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 323 | 323 | /* sound hardware */ |
| 324 | 324 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 325 | 325 | |
| 326 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 326 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 327 | 327 | MDRV_SOUND_CONFIG(ym2151_config) |
| 328 | 328 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 329 | 329 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 134 | 134 | /* sound hardware */ |
| 135 | 135 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 136 | 136 | |
| 137 | MDRV_SOUND_ADD("ym", YM2203, 2000000) | |
| 137 | MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) | |
| 138 | 138 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 139 | 139 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| 140 | 140 | MDRV_SOUND_ROUTE(2, "mono", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 736 | 736 | ROM_REGION( 0x20000, "fixedbios", 0 ) |
| 737 | 737 | ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) |
| 738 | 738 | |
| 739 | ROM_REGION( 0x10000, "ym", ROMREGION_ERASEFF ) | |
| 739 | ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) | |
| 740 | 740 | |
| 741 | 741 | NO_DELTAT_REGION |
| 742 | 742 | |
| r6428 | r6429 | |
| 752 | 752 | /* MB832000 */ |
| 753 | 753 | NEO_BIOS_AUDIO_256K( "001-m1.bin", CRC(ba874463) SHA1(a83514f4b20301f84a98699900e2593f1c1b8846) ) |
| 754 | 754 | |
| 755 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 755 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 756 | 756 | ROM_LOAD( "001-v1.bin", 0x000000, 0x080000, CRC(a7c3d5e5) SHA1(e3efc86940f91c53b7724c4566cfc21ea1a7a465) ) |
| 757 | 757 | |
| 758 | 758 | ROM_REGION( 0x180000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 778 | 778 | /* MB832000 */ |
| 779 | 779 | NEO_BIOS_AUDIO_256K( "002-m1.bin", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) ) |
| 780 | 780 | |
| 781 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 781 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 782 | 782 | ROM_LOAD( "002-v11.bin", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) ) |
| 783 | 783 | ROM_LOAD( "002-v12.bin", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) ) |
| 784 | 784 | ROM_LOAD( "002-v13.bin", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) ) |
| r6428 | r6429 | |
| 805 | 805 | /* MB832000 */ |
| 806 | 806 | NEO_BIOS_AUDIO_256K( "002-m1.bin", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) ) |
| 807 | 807 | |
| 808 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 808 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 809 | 809 | ROM_LOAD( "002-v11.bin", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) ) |
| 810 | 810 | ROM_LOAD( "002-v12.bin", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) ) |
| 811 | 811 | ROM_LOAD( "002-v13.bin", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) ) |
| r6428 | r6429 | |
| 833 | 833 | /* TC531001 */ |
| 834 | 834 | NEO_BIOS_AUDIO_128K( "003-m1.bin", CRC(4cc545e6) SHA1(8e014b8cab3e5b3995756a4ea52ce49c36866377) ) |
| 835 | 835 | |
| 836 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 836 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 837 | 837 | ROM_LOAD( "003-v1.bin", 0x000000, 0x080000, CRC(ff97f1cb) SHA1(defa249d46ae220f7bfa70746f5202bbbcc3e5fe) ) |
| 838 | 838 | |
| 839 | 839 | ROM_REGION( 0x200000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 861 | 861 | |
| 862 | 862 | NEO_BIOS_AUDIO_128K( "004-m1.bin", CRC(c71fbb3b) SHA1(59c58665b53da61352359d191a0569de5dd1f4b3) ) |
| 863 | 863 | |
| 864 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 864 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 865 | 865 | ROM_LOAD( "004-v11.bin", 0x000000, 0x080000, CRC(b2fb2153) SHA1(36e0cc8927b11105de40188af46f6cf532794c10) ) |
| 866 | 866 | ROM_LOAD( "004-v12.bin", 0x080000, 0x080000, CRC(8503317b) SHA1(ab22f1aba1e977ab234a4f1d73dc6ed789dbeb85) ) |
| 867 | 867 | |
| r6428 | r6429 | |
| 886 | 886 | /* MB832000 */ |
| 887 | 887 | NEO_BIOS_AUDIO_256K( "005-m1.bin", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) ) |
| 888 | 888 | |
| 889 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 889 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 890 | 890 | ROM_LOAD( "005-v11.bin", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) ) |
| 891 | 891 | |
| 892 | 892 | ROM_REGION( 0x100000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 911 | 911 | /* MB832000 */ |
| 912 | 912 | NEO_BIOS_AUDIO_256K( "005-m1.bin", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) ) |
| 913 | 913 | |
| 914 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 914 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 915 | 915 | ROM_LOAD( "005-v11.bin", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) ) |
| 916 | 916 | |
| 917 | 917 | ROM_REGION( 0x100000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 936 | 936 | /* MB832000 */ |
| 937 | 937 | NEO_BIOS_AUDIO_256K( "006-m1.bin", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) ) |
| 938 | 938 | |
| 939 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 939 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 940 | 940 | ROM_LOAD( "006-v11.bin", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) ) |
| 941 | 941 | ROM_LOAD( "006-v12.bin", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) ) |
| 942 | 942 | |
| r6428 | r6429 | |
| 962 | 962 | /* MB832000 */ |
| 963 | 963 | NEO_BIOS_AUDIO_256K( "006-m1.bin", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) ) |
| 964 | 964 | |
| 965 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 965 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 966 | 966 | ROM_LOAD( "006-v11.bin", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) ) |
| 967 | 967 | ROM_LOAD( "006-v12.bin", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) ) |
| 968 | 968 | |
| r6428 | r6429 | |
| 988 | 988 | |
| 989 | 989 | NEO_BIOS_AUDIO_128K( "007-m1.bin", CRC(28dfe2cd) SHA1(1a1a99fb917c6c8db591e3be695ce03f843ee1df) ) |
| 990 | 990 | |
| 991 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 991 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 992 | 992 | ROM_LOAD( "007-v1.bin", 0x000000, 0x100000, CRC(cd5db931) SHA1(b59f9f2df29f49470312a6cd20f5669b6aaf51ff) ) |
| 993 | 993 | ROM_LOAD( "007-v2.bin", 0x100000, 0x100000, CRC(63e9b574) SHA1(1ade4cd0b15c84dd4a0fb7f7abf0885eef3a3f71) ) |
| 994 | 994 | |
| r6428 | r6429 | |
| 1009 | 1009 | |
| 1010 | 1010 | NEO_BIOS_AUDIO_128K( "009-m1.bin", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) ) |
| 1011 | 1011 | |
| 1012 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1012 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1013 | 1013 | ROM_LOAD( "009-v11.bin", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) ) |
| 1014 | 1014 | ROM_LOAD( "009-v12.bin", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) ) |
| 1015 | 1015 | ROM_LOAD( "009-v13.bin", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) ) |
| r6428 | r6429 | |
| 1034 | 1034 | |
| 1035 | 1035 | NEO_BIOS_AUDIO_128K( "009-m1.bin", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) ) |
| 1036 | 1036 | |
| 1037 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1037 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1038 | 1038 | ROM_LOAD( "009-v11.bin", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) ) |
| 1039 | 1039 | ROM_LOAD( "009-v12.bin", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) ) |
| 1040 | 1040 | ROM_LOAD( "009-v13.bin", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) ) |
| r6428 | r6429 | |
| 1059 | 1059 | |
| 1060 | 1060 | NEO_BIOS_AUDIO_128K( "010-m1.bin", CRC(8be3a078) SHA1(054ec6a061fcc88df1ecbb0a01611a31f37a7709) ) |
| 1061 | 1061 | |
| 1062 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1062 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1063 | 1063 | ROM_LOAD( "010-v11.bin", 0x000000, 0x080000, CRC(90224d22) SHA1(5443ee6f90d80d43194cb4b4f0e08851a59e7784) ) |
| 1064 | 1064 | ROM_LOAD( "010-v12.bin", 0x080000, 0x080000, CRC(a0cf1834) SHA1(8df57a7941bdae7e446a6056039adb012cdde246) ) |
| 1065 | 1065 | ROM_LOAD( "010-v13.bin", 0x100000, 0x080000, CRC(ae38bc84) SHA1(c0937b4f89b8b26c8a0e747b234f44ad6a3bf2ba) ) |
| r6428 | r6429 | |
| 1087 | 1087 | /* MB832000 */ |
| 1088 | 1088 | NEO_BIOS_AUDIO_256K( "011-m1.bin", CRC(ca661f1b) SHA1(4e3cb57db716ec48487c1b070c3a55a5faf40856) ) |
| 1089 | 1089 | |
| 1090 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1090 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1091 | 1091 | ROM_LOAD( "011-v11.bin", 0x000000, 0x100000, CRC(5c674d5c) SHA1(d7b9beddeb247b584cea9ca6c43ec6869809b673) ) |
| 1092 | 1092 | ROM_LOAD( "011-v12.bin", 0x100000, 0x080000, CRC(9f513d5a) SHA1(37b04962f0b8e2a74abd35c407337a6151dc4e95) ) |
| 1093 | 1093 | |
| r6428 | r6429 | |
| 1110 | 1110 | /* CXK381003A */ |
| 1111 | 1111 | NEO_BIOS_AUDIO_128K( "014-m1.bin", CRC(b6683092) SHA1(623ec7ec2915fb077bf65b4a16c815e071c25259) ) |
| 1112 | 1112 | |
| 1113 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1113 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1114 | 1114 | ROM_LOAD( "014-v1.bin", 0x000000, 0x100000, CRC(25419296) SHA1(c9fc04987c4e0875d276e1a0fb671740b6f548ad) ) |
| 1115 | 1115 | ROM_LOAD( "014-v2.bin", 0x100000, 0x100000, CRC(0de53d5e) SHA1(467f6040da3dfb1974785e95e14c3f608a93720a) ) |
| 1116 | 1116 | |
| r6428 | r6429 | |
| 1133 | 1133 | /* TC531001 */ |
| 1134 | 1134 | NEO_BIOS_AUDIO_128K( "016-m1.bin", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) ) |
| 1135 | 1135 | |
| 1136 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1136 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1137 | 1137 | ROM_LOAD( "016-v1.bin", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) ) |
| 1138 | 1138 | ROM_LOAD( "016-v2.bin", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) ) |
| 1139 | 1139 | |
| r6428 | r6429 | |
| 1156 | 1156 | /* TC531001 */ |
| 1157 | 1157 | NEO_BIOS_AUDIO_128K( "016-m1.bin", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) ) |
| 1158 | 1158 | |
| 1159 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1159 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1160 | 1160 | ROM_LOAD( "016-v1.bin", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) ) |
| 1161 | 1161 | ROM_LOAD( "016-v2.bin", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) ) |
| 1162 | 1162 | |
| r6428 | r6429 | |
| 1178 | 1178 | |
| 1179 | 1179 | NEO_BIOS_AUDIO_128K( "017-m1.bin", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) ) |
| 1180 | 1180 | |
| 1181 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1181 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1182 | 1182 | ROM_LOAD( "017-v1.bin", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) ) |
| 1183 | 1183 | ROM_LOAD( "017-v2.bin", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) ) |
| 1184 | 1184 | |
| r6428 | r6429 | |
| 1200 | 1200 | |
| 1201 | 1201 | NEO_BIOS_AUDIO_128K( "017-m1.bin", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) ) |
| 1202 | 1202 | |
| 1203 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1203 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1204 | 1204 | ROM_LOAD( "017-v1.bin", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) ) |
| 1205 | 1205 | ROM_LOAD( "017-v2.bin", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) ) |
| 1206 | 1206 | |
| r6428 | r6429 | |
| 1222 | 1222 | /* HN62321A */ |
| 1223 | 1223 | NEO_BIOS_AUDIO_128K( "018-m1.bin", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) ) |
| 1224 | 1224 | |
| 1225 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1225 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1226 | 1226 | ROM_LOAD( "018-v1.bin", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) ) |
| 1227 | 1227 | ROM_LOAD( "018-v2.bin", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) ) |
| 1228 | 1228 | |
| r6428 | r6429 | |
| 1244 | 1244 | /* HN62321A */ |
| 1245 | 1245 | NEO_BIOS_AUDIO_128K( "018-m1.bin", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) ) |
| 1246 | 1246 | |
| 1247 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1247 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1248 | 1248 | ROM_LOAD( "018-v1.bin", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) ) |
| 1249 | 1249 | ROM_LOAD( "018-v2.bin", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) ) |
| 1250 | 1250 | |
| r6428 | r6429 | |
| 1266 | 1266 | /* TC531001 */ |
| 1267 | 1267 | NEO_BIOS_AUDIO_128K( "019-m1.bin", CRC(d568c17d) SHA1(a2e318ed6ad1809c79f3f0853d75e0dd1a2f275c) ) |
| 1268 | 1268 | |
| 1269 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 1269 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 1270 | 1270 | ROM_LOAD( "019-v11.bin", 0x000000, 0x080000, CRC(0fb74872) SHA1(38c555926c77576d63472bc075210c42e9ce13a3) ) |
| 1271 | 1271 | ROM_LOAD( "019-v12.bin", 0x080000, 0x080000, CRC(029faa57) SHA1(7bbaa87e38929ab1e32df5f6a2ec0fd5001e7cdb) ) |
| 1272 | 1272 | |
| r6428 | r6429 | |
| 1288 | 1288 | /* TC531001 */ |
| 1289 | 1289 | NEO_BIOS_AUDIO_128K( "020-m1.bin", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) ) |
| 1290 | 1290 | |
| 1291 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1291 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1292 | 1292 | ROM_LOAD( "020-v11.bin", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) ) |
| 1293 | 1293 | ROM_LOAD( "020-v12.bin", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) ) |
| 1294 | 1294 | |
| r6428 | r6429 | |
| 1312 | 1312 | /* TC531001 */ |
| 1313 | 1313 | NEO_BIOS_AUDIO_128K( "020-m1.bin", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) ) |
| 1314 | 1314 | |
| 1315 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1315 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1316 | 1316 | ROM_LOAD( "020-v11.bin", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) ) |
| 1317 | 1317 | ROM_LOAD( "020-v12.bin", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) ) |
| 1318 | 1318 | |
| r6428 | r6429 | |
| 1335 | 1335 | /* MB832000 */ |
| 1336 | 1336 | NEO_BIOS_AUDIO_256K( "021-m1.bin", CRC(5a4be5e8) SHA1(552f025ce0d51c25f42e1a81cf0d08376ca5475d) ) |
| 1337 | 1337 | |
| 1338 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 1338 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 1339 | 1339 | ROM_LOAD( "021-v11.bin", 0x000000, 0x080000, CRC(66c1e5c4) SHA1(7e85420021d4c39c36ed75a1cec567c5610ffce0) ) |
| 1340 | 1340 | |
| 1341 | 1341 | ROM_REGION( 0x080000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 1354 | 1354 | |
| 1355 | 1355 | NEO_BIOS_AUDIO_128K( "022-m1.bin", CRC(8e1d4ab6) SHA1(deabc11ab81e7e68a3e041c03a127ae28d0d7264) ) |
| 1356 | 1356 | |
| 1357 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1357 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1358 | 1358 | ROM_LOAD( "022-v11.bin", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) ) |
| 1359 | 1359 | ROM_LOAD( "022-v22.bin", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) ) |
| 1360 | 1360 | |
| r6428 | r6429 | |
| 1375 | 1375 | |
| 1376 | 1376 | NEO_BIOS_AUDIO_128K( "023-m1.bin", CRC(2a2105e0) SHA1(26fc13556fda2dbeb7b5b035abd994e302dc7662) ) |
| 1377 | 1377 | |
| 1378 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 1378 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 1379 | 1379 | ROM_LOAD( "023-v1.bin", 0x000000, 0x100000, CRC(a53e5bd3) SHA1(cf115c6478ce155d889e6a5acb962339e08e024b) ) |
| 1380 | 1380 | |
| 1381 | 1381 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 1393 | 1393 | |
| 1394 | 1394 | NEO_BIOS_AUDIO_128K( "024-m1.bin", CRC(cec19742) SHA1(ab6c6ba7737e68d2420a0617719c6d4c89039c45) ) |
| 1395 | 1395 | |
| 1396 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1396 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1397 | 1397 | ROM_LOAD( "024-v1.bin", 0x000000, 0x100000, CRC(efdfa063) SHA1(e4609ecbcc1c820758f229da5145f51285b50555) ) |
| 1398 | 1398 | ROM_LOAD( "024-v2.bin", 0x100000, 0x100000, CRC(3c7997c0) SHA1(8cb7e8e69892b19d318978370dbc510d51b06a69) ) |
| 1399 | 1399 | |
| r6428 | r6429 | |
| 1414 | 1414 | |
| 1415 | 1415 | NEO_BIOS_AUDIO_128K( "025-m1.bin", CRC(9927034c) SHA1(205665361c5b2ab4f01ec480dd3c9b69db858d09) ) |
| 1416 | 1416 | |
| 1417 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1417 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1418 | 1418 | ROM_LOAD( "025-v1.bin", 0x000000, 0x100000, CRC(4558558a) SHA1(a4b277703ed67225c652be0d618daeca65a27b88) ) |
| 1419 | 1419 | ROM_LOAD( "025-v2.bin", 0x100000, 0x100000, CRC(c5e052e9) SHA1(fa1119c90ce4c706a6aa0c17d7bc06aa3068d9b2) ) |
| 1420 | 1420 | |
| r6428 | r6429 | |
| 1435 | 1435 | |
| 1436 | 1436 | NEO_BIOS_AUDIO_128K( "027-m1.bin", CRC(6a915482) SHA1(ce39c41a0b13798b0401ba1dde489619dfbc30ef) ) |
| 1437 | 1437 | |
| 1438 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 1438 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 1439 | 1439 | ROM_LOAD( "027-v11.bin", 0x000000, 0x100000, CRC(59ad4459) SHA1(bbb8ba8a8e337dd2946eefda4757e80d0547d54a) ) |
| 1440 | 1440 | |
| 1441 | 1441 | ROM_REGION( 0x100000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 1456 | 1456 | |
| 1457 | 1457 | NEO_BIOS_AUDIO_128K( "029-m1.bin", CRC(8ed64977) SHA1(c2f77213f05b4b2e1962a45e718a9e36cc398cbb) ) |
| 1458 | 1458 | |
| 1459 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 1459 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 1460 | 1460 | ROM_LOAD( "029-v1.bin", 0x000000, 0x100000, CRC(85065452) SHA1(7154b7c59b16c32753ac6b5790fb50b51ce30a20) ) |
| 1461 | 1461 | |
| 1462 | 1462 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 1476 | 1476 | |
| 1477 | 1477 | NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) ) |
| 1478 | 1478 | |
| 1479 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1479 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1480 | 1480 | ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) |
| 1481 | 1481 | ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) |
| 1482 | 1482 | |
| r6428 | r6429 | |
| 1498 | 1498 | |
| 1499 | 1499 | NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) ) |
| 1500 | 1500 | |
| 1501 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1501 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1502 | 1502 | ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) |
| 1503 | 1503 | ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) |
| 1504 | 1504 | |
| r6428 | r6429 | |
| 1519 | 1519 | |
| 1520 | 1520 | NEO_BIOS_AUDIO_128K( "030-m1.bin", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) ) |
| 1521 | 1521 | |
| 1522 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1522 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1523 | 1523 | ROM_LOAD( "030-v1.bin", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) |
| 1524 | 1524 | ROM_LOAD( "030-v2.bin", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) |
| 1525 | 1525 | |
| r6428 | r6429 | |
| 1541 | 1541 | /* TC531001 */ |
| 1542 | 1542 | NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) ) |
| 1543 | 1543 | |
| 1544 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1544 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1545 | 1545 | ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) ) |
| 1546 | 1546 | ROM_LOAD( "031-v2.bin", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) ) |
| 1547 | 1547 | |
| r6428 | r6429 | |
| 1563 | 1563 | /* TC531001 */ |
| 1564 | 1564 | NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) ) |
| 1565 | 1565 | |
| 1566 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1566 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1567 | 1567 | ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) ) |
| 1568 | 1568 | ROM_LOAD( "031-v2.bin", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) ) |
| 1569 | 1569 | |
| r6428 | r6429 | |
| 1585 | 1585 | /* TC531001 */ |
| 1586 | 1586 | NEO_BIOS_AUDIO_128K( "032-m1.bin", CRC(35ec952d) SHA1(8aed30e26d7e2c70dbce5de752df416091066f7b) ) |
| 1587 | 1587 | |
| 1588 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1588 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1589 | 1589 | ROM_LOAD( "032-v1.bin", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) ) |
| 1590 | 1590 | ROM_LOAD( "032-v2.bin", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) ) |
| 1591 | 1591 | |
| r6428 | r6429 | |
| 1609 | 1609 | /* TC531001 */ |
| 1610 | 1610 | NEO_BIOS_AUDIO_128K( "032-m1.bin", CRC(35ec952d) SHA1(8aed30e26d7e2c70dbce5de752df416091066f7b) ) |
| 1611 | 1611 | |
| 1612 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1612 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1613 | 1613 | ROM_LOAD( "032-v1.bin", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) ) |
| 1614 | 1614 | ROM_LOAD( "032-v2.bin", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) ) |
| 1615 | 1615 | |
| r6428 | r6429 | |
| 1632 | 1632 | |
| 1633 | 1633 | NEO_BIOS_AUDIO_128K( "033-m1.bin", CRC(5be10ffd) SHA1(90a5e6cbbc58a7883cd2a3a597180d631a466882) ) |
| 1634 | 1634 | |
| 1635 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1635 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1636 | 1636 | ROM_LOAD( "033-v1.bin", 0x000000, 0x100000, CRC(212fd20d) SHA1(120c040db8c01a6f140eea03725448bfa9ca98c2) ) |
| 1637 | 1637 | ROM_LOAD( "033-v2.bin", 0x100000, 0x100000, CRC(fa2ae47f) SHA1(80d0ba4cd30aab59b6f0db8fa341387bd7388afc) ) |
| 1638 | 1638 | |
| r6428 | r6429 | |
| 1653 | 1653 | |
| 1654 | 1654 | NEO_BIOS_AUDIO_128K( "034-m1.bin", CRC(f41b16b8) SHA1(f3e1cfc4cd2c5baece176f169906aa796367d303) ) |
| 1655 | 1655 | |
| 1656 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1656 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1657 | 1657 | ROM_LOAD( "034-v1.bin", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) ) |
| 1658 | 1658 | ROM_LOAD( "034-v2.bin", 0x100000, 0x100000, CRC(5aa15686) SHA1(efe47954827a98d539ba719347c5f8aa60e6338b) ) |
| 1659 | 1659 | |
| r6428 | r6429 | |
| 1674 | 1674 | |
| 1675 | 1675 | NEO_BIOS_AUDIO_128K( "036-m1.bin", BAD_DUMP CRC(f1385b96) SHA1(e7e3d1484188a115e262511116aaf466b8b1f428) ) |
| 1676 | 1676 | |
| 1677 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1677 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1678 | 1678 | ROM_LOAD( "036-v1.bin", 0x000000, 0x100000, CRC(1c335dce) SHA1(493c273fa71bf81861a20af4c4eaae159e169f39) ) |
| 1679 | 1679 | ROM_LOAD( "036-v2.bin", 0x100000, 0x100000, CRC(bbf79342) SHA1(45a4f40e415cdf35c3073851506648c8f7d53958) ) |
| 1680 | 1680 | |
| r6428 | r6429 | |
| 1695 | 1695 | |
| 1696 | 1696 | NEO_BIOS_AUDIO_128K( "037-m1.bin", CRC(9c384263) SHA1(74b86284048669e316c5d241b4aaeb02d59d4dfa) ) |
| 1697 | 1697 | |
| 1698 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 1698 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 1699 | 1699 | ROM_LOAD( "037-v1.bin", 0x000000, 0x100000, CRC(61fedf65) SHA1(98f31d1e23bf7c1f7844e67f14707a704134042e) ) |
| 1700 | 1700 | |
| 1701 | 1701 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 1716 | 1716 | |
| 1717 | 1717 | NEO_BIOS_AUDIO_128K( "038-m1.bin", CRC(0908707e) SHA1(df7489ea6abf84d7f137ba7a8f52a4fd1b088fd7) ) |
| 1718 | 1718 | |
| 1719 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 1719 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 1720 | 1720 | ROM_LOAD( "038-v1.bin", 0x000000, 0x100000, CRC(5ccd9fd5) SHA1(c3c8c758a320c39e4ceb0b6d9f188ed6d122eec4) ) |
| 1721 | 1721 | ROM_LOAD( "038-v2.bin", 0x100000, 0x080000, CRC(ddd8d1e6) SHA1(65c819fa2392f264f5a1a0a4967c96775732500b) ) |
| 1722 | 1722 | |
| r6428 | r6429 | |
| 1738 | 1738 | |
| 1739 | 1739 | NEO_BIOS_AUDIO_128K( "039-m1.bin", CRC(0c5b2ad5) SHA1(15eb5ea10fecdbdbcfd06225ae6d88bb239592e7) ) |
| 1740 | 1740 | |
| 1741 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 1741 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 1742 | 1742 | ROM_LOAD( "039-v2.bin", 0x000000, 0x200000, CRC(86d34b25) SHA1(89bdb614b0c63d678962da52e2f596750d20828c) ) |
| 1743 | 1743 | ROM_LOAD( "039-v4.bin", 0x200000, 0x100000, CRC(8fa62a0b) SHA1(58ac2fdd73c542eb8178cfc4adfa0e5940183283) ) |
| 1744 | 1744 | |
| r6428 | r6429 | |
| 1761 | 1761 | |
| 1762 | 1762 | NEO_BIOS_AUDIO_128K( "040-m1.bin", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) ) |
| 1763 | 1763 | |
| 1764 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 1764 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 1765 | 1765 | ROM_LOAD( "040-v1.bin", 0x000000, 0x200000, CRC(71cb4b5d) SHA1(56d9aca1d476c19c7d0f707176a8fed53e0189b7) ) |
| 1766 | 1766 | ROM_LOAD( "040-v2.bin", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) ) |
| 1767 | 1767 | |
| r6428 | r6429 | |
| 1785 | 1785 | /* TC531001 */ |
| 1786 | 1786 | NEO_BIOS_AUDIO_128K( "041-m1.bin", CRC(15c177a6) SHA1(3f4abed635102f9bc8b44809750828c82e79b44f) ) |
| 1787 | 1787 | |
| 1788 | ROM_REGION( 0x280000, "ym", 0 ) | |
| 1788 | ROM_REGION( 0x280000, "ymsnd", 0 ) | |
| 1789 | 1789 | ROM_LOAD( "041-v1.bin", 0x000000, 0x100000, CRC(cb1da093) SHA1(4f4d1d5fefa9dda372083c045bf0d268a57ce8f1) ) |
| 1790 | 1790 | ROM_LOAD( "041-v2.bin", 0x100000, 0x100000, CRC(1c954a9d) SHA1(159bc6efdd531615461f6e16f83f6d4c4e67c237) ) |
| 1791 | 1791 | ROM_LOAD( "041-v3.bin", 0x200000, 0x080000, CRC(afaa0180) SHA1(c4a047e21f093830498a163598ed7bd48a8cf9d1) ) |
| r6428 | r6429 | |
| 1807 | 1807 | |
| 1808 | 1808 | NEO_BIOS_AUDIO_128K( "042-m1.bin", CRC(bb19995d) SHA1(ed458fad5a23c6bd0d099927d98c31e1e6562d1b) ) |
| 1809 | 1809 | |
| 1810 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 1810 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 1811 | 1811 | ROM_LOAD( "042-v1.bin", 0x000000, 0x100000, CRC(af7f8247) SHA1(99a47014017c20e4e22010c60612b6b7f6efc9e5) ) |
| 1812 | 1812 | ROM_LOAD( "042-v2.bin", 0x100000, 0x100000, CRC(c6474b59) SHA1(a6c5054032b698116247b2f09a8b94a1b588c4f1) ) |
| 1813 | 1813 | |
| r6428 | r6429 | |
| 1829 | 1829 | |
| 1830 | 1830 | NEO_BIOS_AUDIO_128K( "043-m1.bin", CRC(7eab59cb) SHA1(5ae4107457e091f73960bfba39b589ae36d51ca3) ) |
| 1831 | 1831 | |
| 1832 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1832 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1833 | 1833 | ROM_LOAD( "043-v1.bin", 0x000000, 0x200000, CRC(63688ce8) SHA1(5c6ac29a0cc0655a87cfe3ada8706838b86b86e4) ) |
| 1834 | 1834 | ROM_LOAD( "043-v2.bin", 0x200000, 0x200000, CRC(c69a827b) SHA1(f5197ea87bb6573fa6aef3a1713c3679c58c1e74) ) |
| 1835 | 1835 | |
| r6428 | r6429 | |
| 1855 | 1855 | /* TC531001 */ |
| 1856 | 1856 | NEO_BIOS_AUDIO_128K( "044-m1.bin", CRC(0987e4bb) SHA1(8fae4b7fac09d46d4727928e609ed9d3711dbded) ) |
| 1857 | 1857 | |
| 1858 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1858 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1859 | 1859 | ROM_LOAD( "044-v2.bin", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) ) |
| 1860 | 1860 | ROM_LOAD( "044-v4.bin", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) ) |
| 1861 | 1861 | |
| r6428 | r6429 | |
| 1881 | 1881 | |
| 1882 | 1882 | NEO_BIOS_AUDIO_128K( "045-m1.bin", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) ) |
| 1883 | 1883 | |
| 1884 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1884 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1885 | 1885 | ROM_LOAD( "045-v1.bin", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) ) |
| 1886 | 1886 | ROM_LOAD( "045-v2.bin", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) ) |
| 1887 | 1887 | |
| r6428 | r6429 | |
| 1905 | 1905 | |
| 1906 | 1906 | NEO_BIOS_AUDIO_128K( "045-m1.bin", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) ) |
| 1907 | 1907 | |
| 1908 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1908 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1909 | 1909 | ROM_LOAD( "045-v1.bin", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) ) |
| 1910 | 1910 | ROM_LOAD( "045-v2.bin", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) ) |
| 1911 | 1911 | |
| r6428 | r6429 | |
| 1937 | 1937 | |
| 1938 | 1938 | NEO_BIOS_AUDIO_128K( "046-m1.bin", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) ) |
| 1939 | 1939 | |
| 1940 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1940 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1941 | 1941 | ROM_LOAD( "046-v1.bin", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) ) |
| 1942 | 1942 | ROM_LOAD( "046-v2.bin", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) ) |
| 1943 | 1943 | ROM_LOAD( "046-v3.bin", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) ) |
| r6428 | r6429 | |
| 1965 | 1965 | |
| 1966 | 1966 | NEO_BIOS_AUDIO_128K( "046-m1.bin", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) ) |
| 1967 | 1967 | |
| 1968 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1968 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1969 | 1969 | ROM_LOAD( "046-v1.bin", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) ) |
| 1970 | 1970 | ROM_LOAD( "046-v2.bin", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) ) |
| 1971 | 1971 | ROM_LOAD( "046-v3.bin", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) ) |
| r6428 | r6429 | |
| 1993 | 1993 | |
| 1994 | 1994 | NEO_BIOS_AUDIO_128K( "047-m1.bin", CRC(820b0ba7) SHA1(5708248d89446e49184eaadb52f7c61b2b6c13c5) ) |
| 1995 | 1995 | |
| 1996 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 1996 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 1997 | 1997 | ROM_LOAD( "047-v1.bin", 0x000000, 0x200000, CRC(d9d00784) SHA1(f6a91eada8c23aa4518c4b82eeebca69f79d845c) ) |
| 1998 | 1998 | ROM_LOAD( "047-v2.bin", 0x200000, 0x200000, CRC(2c9a4b33) SHA1(d4a1c0951c02c8919b3ec32ed96933634ff9e54c) ) |
| 1999 | 1999 | |
| r6428 | r6429 | |
| 2018 | 2018 | |
| 2019 | 2019 | NEO_BIOS_AUDIO_128K( "048-m1.bin", CRC(310467c7) SHA1(c529961195c9bdf5d1ce70a38ad129002d1f3b5f) ) |
| 2020 | 2020 | |
| 2021 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 2021 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 2022 | 2022 | ROM_LOAD( "048-v1.bin", 0x000000, 0x200000, CRC(f1947d2b) SHA1(955ff91ab24eb2a7ec51ff46c9f9f2ec060456b2) ) |
| 2023 | 2023 | |
| 2024 | 2024 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2037 | 2037 | |
| 2038 | 2038 | NEO_BIOS_AUDIO_128K( "049-m1.bin", CRC(edd2acf4) SHA1(c4ee6ba834d54b9fc5a854dbc41a05877e090371) ) |
| 2039 | 2039 | |
| 2040 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 2040 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 2041 | 2041 | ROM_LOAD( "049-v1.bin", 0x000000, 0x100000, CRC(ce43cb89) SHA1(47f82e077abb6efc6b1b0490412ae147d5d2acef) ) |
| 2042 | 2042 | |
| 2043 | 2043 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2055 | 2055 | |
| 2056 | 2056 | NEO_BIOS_AUDIO_128K( "050-m1.bin", CRC(6fcf07d3) SHA1(e9ecff4bfec1f5964bf06645f75d80d611b6231c) ) |
| 2057 | 2057 | |
| 2058 | ROM_REGION( 0x180000, "ym", 0 ) | |
| 2058 | ROM_REGION( 0x180000, "ymsnd", 0 ) | |
| 2059 | 2059 | ROM_LOAD( "050-v1.bin", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) ) |
| 2060 | 2060 | ROM_LOAD( "050-v2.bin", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) ) |
| 2061 | 2061 | |
| r6428 | r6429 | |
| 2076 | 2076 | |
| 2077 | 2077 | NEO_BIOS_AUDIO_128K( "051-m1.bin", CRC(8e69f29a) SHA1(7a25f4997996434ea1b7d0d1ca9e7aaf966cbd03) ) |
| 2078 | 2078 | |
| 2079 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2079 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2080 | 2080 | ROM_LOAD( "051-v1.bin", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) ) |
| 2081 | 2081 | ROM_LOAD( "051-v2.bin", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) ) |
| 2082 | 2082 | |
| r6428 | r6429 | |
| 2097 | 2097 | |
| 2098 | 2098 | NEO_BIOS_AUDIO_128K( "052-m1.bin", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) ) |
| 2099 | 2099 | |
| 2100 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 2100 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 2101 | 2101 | ROM_LOAD( "052-v1.bin", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) ) |
| 2102 | 2102 | |
| 2103 | 2103 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2119 | 2119 | |
| 2120 | 2120 | NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) ) |
| 2121 | 2121 | |
| 2122 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2122 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2123 | 2123 | ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) |
| 2124 | 2124 | ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) |
| 2125 | 2125 | |
| r6428 | r6429 | |
| 2143 | 2143 | |
| 2144 | 2144 | NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) ) |
| 2145 | 2145 | |
| 2146 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2146 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2147 | 2147 | ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) |
| 2148 | 2148 | ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) |
| 2149 | 2149 | |
| r6428 | r6429 | |
| 2167 | 2167 | |
| 2168 | 2168 | NEO_BIOS_AUDIO_128K( "053-m1.bin", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) ) |
| 2169 | 2169 | |
| 2170 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2170 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2171 | 2171 | ROM_LOAD( "053-v2.bin", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) |
| 2172 | 2172 | ROM_LOAD( "053-v4.bin", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) |
| 2173 | 2173 | |
| r6428 | r6429 | |
| 2191 | 2191 | |
| 2192 | 2192 | NEO_BIOS_AUDIO_128K( "055-m1.bin", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) ) |
| 2193 | 2193 | |
| 2194 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 2194 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 2195 | 2195 | ROM_LOAD( "055-v1.bin", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) ) |
| 2196 | 2196 | ROM_LOAD( "055-v2.bin", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) ) |
| 2197 | 2197 | ROM_LOAD( "055-v3.bin", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) ) |
| r6428 | r6429 | |
| 2217 | 2217 | |
| 2218 | 2218 | NEO_BIOS_AUDIO_128K( "056-m1.bin", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) ) |
| 2219 | 2219 | |
| 2220 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2220 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2221 | 2221 | ROM_LOAD( "056-v1.bin", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) ) |
| 2222 | 2222 | ROM_LOAD( "056-v2.bin", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) ) |
| 2223 | 2223 | ROM_LOAD( "056-v3.bin", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) ) |
| r6428 | r6429 | |
| 2245 | 2245 | |
| 2246 | 2246 | NEO_BIOS_AUDIO_128K( "056-m1.bin", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) ) |
| 2247 | 2247 | |
| 2248 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2248 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2249 | 2249 | ROM_LOAD( "056-v1.bin", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) ) |
| 2250 | 2250 | ROM_LOAD( "056-v2.bin", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) ) |
| 2251 | 2251 | ROM_LOAD( "056-v3.bin", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) ) |
| r6428 | r6429 | |
| 2272 | 2272 | |
| 2273 | 2273 | NEO_BIOS_AUDIO_128K( "057-m1.bin", CRC(8fa3bc77) SHA1(982f92978671e4ee66630948e6bb7565b37b5dc0) ) |
| 2274 | 2274 | |
| 2275 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2275 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2276 | 2276 | ROM_LOAD( "057-v1.bin", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) ) |
| 2277 | 2277 | ROM_LOAD( "057-v2.bin", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) ) |
| 2278 | 2278 | |
| r6428 | r6429 | |
| 2296 | 2296 | |
| 2297 | 2297 | NEO_BIOS_AUDIO_128K( "058-m1.bin", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) ) |
| 2298 | 2298 | |
| 2299 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2299 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2300 | 2300 | ROM_LOAD( "058-v1.bin", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) ) |
| 2301 | 2301 | ROM_LOAD( "058-v2.bin", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) ) |
| 2302 | 2302 | ROM_LOAD( "058-v3.bin", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) ) |
| r6428 | r6429 | |
| 2323 | 2323 | |
| 2324 | 2324 | NEO_BIOS_AUDIO_128K( "058-m1.bin", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) ) |
| 2325 | 2325 | |
| 2326 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2326 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2327 | 2327 | ROM_LOAD( "058-v1.bin", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) ) |
| 2328 | 2328 | ROM_LOAD( "058-v2.bin", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) ) |
| 2329 | 2329 | ROM_LOAD( "058-v3.bin", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) ) |
| r6428 | r6429 | |
| 2348 | 2348 | |
| 2349 | 2349 | NEO_BIOS_AUDIO_128K( "059-m1.bin", CRC(29992eba) SHA1(187be624abe8670503edb235ff21ae8fdc3866e0) ) |
| 2350 | 2350 | |
| 2351 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 2351 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 2352 | 2352 | ROM_LOAD( "059-v1.bin", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) ) |
| 2353 | 2353 | ROM_LOAD( "059-v2.bin", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) ) |
| 2354 | 2354 | ROM_LOAD( "059-v3.bin", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) ) |
| r6428 | r6429 | |
| 2375 | 2375 | |
| 2376 | 2376 | NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) ) |
| 2377 | 2377 | |
| 2378 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2378 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2379 | 2379 | ROM_LOAD( "060-v1.bin", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) ) |
| 2380 | 2380 | ROM_LOAD( "060-v2.bin", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) ) |
| 2381 | 2381 | |
| r6428 | r6429 | |
| 2398 | 2398 | |
| 2399 | 2399 | NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) ) |
| 2400 | 2400 | |
| 2401 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2401 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2402 | 2402 | ROM_LOAD( "060-v1.bin", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) ) |
| 2403 | 2403 | ROM_LOAD( "060-v2.bin", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) ) |
| 2404 | 2404 | |
| r6428 | r6429 | |
| 2419 | 2419 | |
| 2420 | 2420 | NEO_BIOS_AUDIO_128K( "061-m1.bin", CRC(156f6951) SHA1(49686f615f109a02b4f23931f1c84fee13872ffd) ) |
| 2421 | 2421 | |
| 2422 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2422 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2423 | 2423 | ROM_LOAD( "061-v1.bin", 0x000000, 0x200000, CRC(f081c8d3) SHA1(fc9da0ddc1ddd1f9ae1443a726815c25e9dc38ae) ) |
| 2424 | 2424 | ROM_LOAD( "061-v2.bin", 0x200000, 0x200000, CRC(7cd63302) SHA1(c39984c0ae0a8e76f1fc036344bbb83635c18937) ) |
| 2425 | 2425 | |
| r6428 | r6429 | |
| 2441 | 2441 | |
| 2442 | 2442 | NEO_BIOS_AUDIO_128K( "062-m1.bin", CRC(76108b2f) SHA1(08c89a8b746dbb10ff885b41cde344173c2e3699) ) |
| 2443 | 2443 | |
| 2444 | ROM_REGION( 0x100000, "ym", 0 ) | |
| 2444 | ROM_REGION( 0x100000, "ymsnd", 0 ) | |
| 2445 | 2445 | ROM_LOAD( "062-v1.bin", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) ) |
| 2446 | 2446 | |
| 2447 | 2447 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2466 | 2466 | |
| 2467 | 2467 | NEO_BIOS_AUDIO_128K( "063-m1.bin", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) ) |
| 2468 | 2468 | |
| 2469 | ROM_REGION( 0x700000, "ym", 0 ) | |
| 2469 | ROM_REGION( 0x700000, "ymsnd", 0 ) | |
| 2470 | 2470 | ROM_LOAD( "063-v1.bin", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) ) |
| 2471 | 2471 | ROM_LOAD( "063-v2.bin", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) ) |
| 2472 | 2472 | ROM_LOAD( "063-v3.bin", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) ) |
| r6428 | r6429 | |
| 2498 | 2498 | |
| 2499 | 2499 | NEO_BIOS_AUDIO_128K( "063-m1.bin", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) ) |
| 2500 | 2500 | |
| 2501 | ROM_REGION( 0x700000, "ym", 0 ) | |
| 2501 | ROM_REGION( 0x700000, "ymsnd", 0 ) | |
| 2502 | 2502 | ROM_LOAD( "063-v1.bin", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) ) |
| 2503 | 2503 | ROM_LOAD( "063-v2.bin", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) ) |
| 2504 | 2504 | ROM_LOAD( "063-v3.bin", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) ) |
| r6428 | r6429 | |
| 2526 | 2526 | |
| 2527 | 2527 | NEO_BIOS_AUDIO_128K( "064-m1.bin", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) ) |
| 2528 | 2528 | |
| 2529 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2529 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2530 | 2530 | ROM_LOAD( "064-v1.bin", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) ) |
| 2531 | 2531 | ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) ) |
| 2532 | 2532 | |
| r6428 | r6429 | |
| 2548 | 2548 | |
| 2549 | 2549 | NEO_BIOS_AUDIO_128K( "064-m1.bin", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) ) |
| 2550 | 2550 | |
| 2551 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2551 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2552 | 2552 | ROM_LOAD( "064-v1.bin", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) ) |
| 2553 | 2553 | ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) ) |
| 2554 | 2554 | |
| r6428 | r6429 | |
| 2573 | 2573 | |
| 2574 | 2574 | NEO_BIOS_AUDIO_128K( "065-m1.bin", CRC(52c23cfc) SHA1(809a7e072ad9acbffc25e9bd27cdb97638d09d07) ) |
| 2575 | 2575 | |
| 2576 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2576 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2577 | 2577 | ROM_LOAD( "065-v1.bin", 0x000000, 0x100000, CRC(ce8b3698) SHA1(7d75e2a5cf8c90be422f8b425447e81597fe145a) ) |
| 2578 | 2578 | ROM_LOAD( "065-v2.bin", 0x100000, 0x100000, CRC(659f9b96) SHA1(62f40365212153bc3b92a1187fa44f6cdc7f7b83) ) |
| 2579 | 2579 | ROM_LOAD( "065-v3.bin", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) ) |
| r6428 | r6429 | |
| 2596 | 2596 | |
| 2597 | 2597 | NEO_BIOS_AUDIO_128K( "066-m1.bin", CRC(030beae4) SHA1(ceb6ee6c09514504efacdbca7b280901e4c97084) ) |
| 2598 | 2598 | |
| 2599 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 2599 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 2600 | 2600 | ROM_LOAD( "066-v1.bin", 0x000000, 0x200000, CRC(0b7ea37a) SHA1(34e7d4f6db053674a7e8c8b2e3e398777d5b02e6) ) |
| 2601 | 2601 | |
| 2602 | 2602 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2618 | 2618 | |
| 2619 | 2619 | NEO_BIOS_AUDIO_128K( "067-m1.bin", CRC(e777a234) SHA1(9f3974ac07859337bc0203f903c40ae3f60dc1fb) ) |
| 2620 | 2620 | |
| 2621 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2621 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2622 | 2622 | ROM_LOAD( "067-v1.bin", 0x000000, 0x80000, CRC(cf23afd0) SHA1(10f87014ee10613f92b04f482f449721a6379db7) ) |
| 2623 | 2623 | |
| 2624 | 2624 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2636 | 2636 | |
| 2637 | 2637 | NEO_BIOS_AUDIO_128K( "068-mg1.bin", CRC(b1c7911e) SHA1(27b298e7d50981331e17aa642e2e363ffac4333a) ) |
| 2638 | 2638 | |
| 2639 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2639 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2640 | 2640 | ROM_LOAD( "068-v1.bin", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) ) |
| 2641 | 2641 | ROM_LOAD( "068-v2.bin", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) ) |
| 2642 | 2642 | ROM_LOAD( "068-v3.bin", 0x200000, 0x100000, CRC(81ff05aa) SHA1(d74302f38c59055bfc83b39dff798a585314fecd) ) |
| r6428 | r6429 | |
| 2661 | 2661 | |
| 2662 | 2662 | NEO_BIOS_AUDIO_128K( "069-m1.bin", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) ) |
| 2663 | 2663 | |
| 2664 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 2664 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 2665 | 2665 | ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) ) |
| 2666 | 2666 | ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) |
| 2667 | 2667 | ROM_LOAD( "069-v3.bin", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) ) |
| r6428 | r6429 | |
| 2691 | 2691 | |
| 2692 | 2692 | NEO_BIOS_AUDIO_128K( "070-m1.bin", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) ) |
| 2693 | 2693 | |
| 2694 | ROM_REGION( 0x0200000, "ym", 0 ) | |
| 2694 | ROM_REGION( 0x0200000, "ymsnd", 0 ) | |
| 2695 | 2695 | ROM_LOAD( "070-v1.bin", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) ) |
| 2696 | 2696 | |
| 2697 | 2697 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 2710 | 2710 | |
| 2711 | 2711 | NEO_BIOS_AUDIO_128K( "073-m1.bin", CRC(3cdf5d88) SHA1(6d8365a946fbd0b7c7b896536322638d80f6a764) ) |
| 2712 | 2712 | |
| 2713 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2713 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2714 | 2714 | ROM_LOAD( "073-v1.bin", 0x000000, 0x200000, CRC(7fc86d2f) SHA1(aa4234d22157060e0ba97a09c4e85c5276b74099) ) |
| 2715 | 2715 | ROM_LOAD( "073-v2.bin", 0x200000, 0x100000, CRC(082adfc7) SHA1(19c168e9a6cadcbed79033c320bcf3a45f846daf) ) |
| 2716 | 2716 | |
| r6428 | r6429 | |
| 2730 | 2730 | |
| 2731 | 2731 | NEO_BIOS_AUDIO_128K( "074-m1.bin", CRC(5a52a9d1) SHA1(ef913a9a55d29d5dd3beab1ce6039d64ce9b1a5b) ) |
| 2732 | 2732 | |
| 2733 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2733 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2734 | 2734 | ROM_LOAD( "074-v1.bin", 0x000000, 0x200000, CRC(7675b8fa) SHA1(29f4facf89d551237b31bf779693cbbbc94e1ede) ) |
| 2735 | 2735 | ROM_LOAD( "074-v2.bin", 0x200000, 0x200000, CRC(a9da86e9) SHA1(ff65af61e42b79a75060a352b24077d1fa28c83f) ) |
| 2736 | 2736 | |
| r6428 | r6429 | |
| 2756 | 2756 | |
| 2757 | 2757 | NEO_BIOS_AUDIO_128K( "075-m1.bin", CRC(bb828df1) SHA1(eab8e2868173bdaac7c7ed97305a9aa1033fd303) ) |
| 2758 | 2758 | |
| 2759 | ROM_REGION( 0x300000, "ym", 0 ) | |
| 2759 | ROM_REGION( 0x300000, "ymsnd", 0 ) | |
| 2760 | 2760 | ROM_LOAD( "075-v1.bin", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) ) |
| 2761 | 2761 | ROM_LOAD( "075-v2.bin", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) ) |
| 2762 | 2762 | |
| r6428 | r6429 | |
| 2777 | 2777 | |
| 2778 | 2778 | NEO_BIOS_AUDIO_128K( "076-m1.bin", CRC(7b5f3d0a) SHA1(4a301781a57ff236f49492b576ff4858b0ffbdf8) ) |
| 2779 | 2779 | |
| 2780 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2780 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2781 | 2781 | ROM_LOAD( "076-v1.bin", 0x000000, 0x200000, CRC(1a21d90c) SHA1(4793ab06421228ad122e359653ed0f1339b90c7a) ) |
| 2782 | 2782 | ROM_LOAD( "076-v2.bin", 0x200000, 0x200000, CRC(b61686c3) SHA1(5a3405e833ce36abb7421190438b5cccc8537919) ) |
| 2783 | 2783 | ROM_LOAD( "076-v3.bin", 0x400000, 0x100000, CRC(b90658fa) SHA1(b9a4b34565ce3688495c47e35c9b888ef686ae9f) ) |
| r6428 | r6429 | |
| 2800 | 2800 | |
| 2801 | 2801 | NEO_BIOS_AUDIO_128K( "078-m1.bin", CRC(8e9e3b10) SHA1(7c44d1dbd4f8d337c99e90361d1dab837df85e31) ) |
| 2802 | 2802 | |
| 2803 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 2803 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 2804 | 2804 | ROM_LOAD( "078-v1.bin", 0x000000, 0x200000, CRC(e3b735ac) SHA1(e16dfac09aef8115a20bae0bef8c86d4e7d0dc4a) ) |
| 2805 | 2805 | ROM_LOAD( "078-v2.bin", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) ) |
| 2806 | 2806 | ROM_LOAD( "078-v3.bin", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) ) |
| r6428 | r6429 | |
| 2826 | 2826 | |
| 2827 | 2827 | NEO_BIOS_AUDIO_128K( "079-m1.bin", CRC(bee3455a) SHA1(fd5345d9847982085a9b364fff542580889bf02f) ) |
| 2828 | 2828 | |
| 2829 | ROM_REGION( 0x280000, "ym", 0 ) | |
| 2829 | ROM_REGION( 0x280000, "ymsnd", 0 ) | |
| 2830 | 2830 | ROM_LOAD( "079-v1.bin", 0x000000, 0x200000, CRC(718a2400) SHA1(cefc5d0b302bd4a87ab1fa244ade4482c23c6806) ) |
| 2831 | 2831 | ROM_LOAD( "079-v2.bin", 0x200000, 0x080000, CRC(b19884f8) SHA1(5fe910f2029da19ddab4dc95c2292d7fbb086741) ) |
| 2832 | 2832 | |
| r6428 | r6429 | |
| 2847 | 2847 | |
| 2848 | 2848 | NEO_BIOS_AUDIO_128K( "080-m1.bin", CRC(f5f44172) SHA1(eaaba1781622901b91bce9257be4e05f84df053b) ) |
| 2849 | 2849 | |
| 2850 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 2850 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 2851 | 2851 | ROM_LOAD( "080-v1.bin", 0x000000, 0x200000, CRC(0be18f60) SHA1(05c8b7d9f5a8583015f31902ad16d9c621f47d4e) ) |
| 2852 | 2852 | ROM_LOAD( "080-v2.bin", 0x200000, 0x200000, CRC(4abde3ff) SHA1(0188bfcafa9a1aac302705736a2bcb26b9d684c2) ) |
| 2853 | 2853 | ROM_LOAD( "080-v3.bin", 0x400000, 0x200000, CRC(f02844e2) SHA1(8c65ebe146f4ddb6c904f8125cb32767f74c24d5) ) |
| r6428 | r6429 | |
| 2870 | 2870 | |
| 2871 | 2871 | NEO_BIOS_AUDIO_128K( "081-m1.bin", CRC(82fcd863) SHA1(b219a5685450f9c24cc195f1c914bc3b292d72c0) ) |
| 2872 | 2872 | |
| 2873 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 2873 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 2874 | 2874 | ROM_LOAD( "081-v1.bin", 0x000000, 0x200000, CRC(201fa1e1) SHA1(9c27cc1b1d075223ed4a90dd02571d09a2f0d076) ) |
| 2875 | 2875 | ROM_LOAD( "081-v2.bin", 0x200000, 0x200000, CRC(acf29d96) SHA1(5426985c33aea2efc8ff774b59d34d8b03bd9a85) ) |
| 2876 | 2876 | ROM_LOAD( "081-v3.bin", 0x400000, 0x200000, CRC(e524e415) SHA1(8733e1b63471381b16c2b7c64b909745d99c8925) ) |
| r6428 | r6429 | |
| 2895 | 2895 | |
| 2896 | 2896 | NEO_BIOS_AUDIO_128K( "082-m1.bin", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) ) |
| 2897 | 2897 | |
| 2898 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 2898 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 2899 | 2899 | ROM_LOAD( "082-v1.bin", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) ) |
| 2900 | 2900 | ROM_LOAD( "082-v2.bin", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) ) |
| 2901 | 2901 | |
| r6428 | r6429 | |
| 2923 | 2923 | |
| 2924 | 2924 | NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1 (5e5bbcaeb82bed2ee17df08f005ca20ad1030723) ) |
| 2925 | 2925 | |
| 2926 | ROM_REGION( 0x380000, "ym", 0 ) | |
| 2926 | ROM_REGION( 0x380000, "ymsnd", 0 ) | |
| 2927 | 2927 | ROM_LOAD( "068-v1.bin", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) ) /* unused */ |
| 2928 | 2928 | ROM_LOAD( "068-v2.bin", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) ) /* unused */ |
| 2929 | 2929 | ROM_LOAD( "d96-01.v3", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) ) |
| r6428 | r6429 | |
| 2949 | 2949 | |
| 2950 | 2950 | NEO_BIOS_AUDIO_128K( "084-m1.bin", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) ) |
| 2951 | 2951 | |
| 2952 | ROM_REGION( 0x900000, "ym", 0 ) | |
| 2952 | ROM_REGION( 0x900000, "ymsnd", 0 ) | |
| 2953 | 2953 | ROM_LOAD( "084-v1.bin", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) ) |
| 2954 | 2954 | ROM_LOAD( "084-v2.bin", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) ) |
| 2955 | 2955 | /* 600000-7fffff empty */ |
| r6428 | r6429 | |
| 2979 | 2979 | |
| 2980 | 2980 | NEO_BIOS_AUDIO_128K( "084-m1.bin", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) ) |
| 2981 | 2981 | |
| 2982 | ROM_REGION( 0x900000, "ym", 0 ) | |
| 2982 | ROM_REGION( 0x900000, "ymsnd", 0 ) | |
| 2983 | 2983 | ROM_LOAD( "084-v1.bin", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) ) |
| 2984 | 2984 | ROM_LOAD( "084-v2.bin", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) ) |
| 2985 | 2985 | /* 600000-7fffff empty */ |
| r6428 | r6429 | |
| 3007 | 3007 | |
| 3008 | 3008 | NEO_BIOS_AUDIO_128K( "086-m1.bin", CRC(cb82bc5d) SHA1(8e3ecabec25d89adb6e0eed0ef5f94d34a4d5fc0) ) |
| 3009 | 3009 | |
| 3010 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3010 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3011 | 3011 | ROM_LOAD( "086-v1.bin", 0x000000, 0x200000, CRC(97bf1986) SHA1(b80d3a37e18d0a52f1e0092dc300989c9647efd1) ) |
| 3012 | 3012 | ROM_LOAD( "086-v2.bin", 0x200000, 0x200000, CRC(b7eb05df) SHA1(ff2b55c7021c248cfdcfc9cd3658f2896bcbca38) ) |
| 3013 | 3013 | |
| r6428 | r6429 | |
| 3032 | 3032 | |
| 3033 | 3033 | NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) ) |
| 3034 | 3034 | |
| 3035 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3035 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3036 | 3036 | ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) |
| 3037 | 3037 | ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) |
| 3038 | 3038 | |
| r6428 | r6429 | |
| 3058 | 3058 | |
| 3059 | 3059 | NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) ) |
| 3060 | 3060 | |
| 3061 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3061 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3062 | 3062 | ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) |
| 3063 | 3063 | ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) |
| 3064 | 3064 | |
| r6428 | r6429 | |
| 3084 | 3084 | |
| 3085 | 3085 | NEO_BIOS_AUDIO_128K( "087-m1.bin", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) ) |
| 3086 | 3086 | |
| 3087 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3087 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3088 | 3088 | ROM_LOAD( "087-v1.bin", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) |
| 3089 | 3089 | ROM_LOAD( "087-v2.bin", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) |
| 3090 | 3090 | |
| r6428 | r6429 | |
| 3110 | 3110 | |
| 3111 | 3111 | NEO_BIOS_AUDIO_128K( "088-m1.bin", CRC(2fe1f499) SHA1(5b747eeef65be04423d2db05e086df9132758a47) ) |
| 3112 | 3112 | |
| 3113 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3113 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3114 | 3114 | ROM_LOAD( "088-v1.bin", 0x000000, 0x200000, CRC(b7785023) SHA1(d11df1e623434669cd3f97f0feda747b24dac05d) ) |
| 3115 | 3115 | |
| 3116 | 3116 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3131 | 3131 | |
| 3132 | 3132 | NEO_BIOS_AUDIO_128K( "089-m1.bin", CRC(ff3df7c7) SHA1(59d2ef64f734f6026073b365300221909057a512) ) |
| 3133 | 3133 | |
| 3134 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3134 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3135 | 3135 | ROM_LOAD( "089-v1.bin", 0x000000, 0x400000, CRC(b458ded2) SHA1(75d659ecb1fd6002188f469fcaafc9907440e624) ) |
| 3136 | 3136 | ROM_LOAD( "089-v2.bin", 0x400000, 0x400000, CRC(9d2db551) SHA1(83f7e5db7fb1502ceadcd334df90b11b1bba78e5) ) |
| 3137 | 3137 | |
| r6428 | r6429 | |
| 3157 | 3157 | |
| 3158 | 3158 | NEO_BIOS_AUDIO_128K( "090-m1.bin", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) ) |
| 3159 | 3159 | |
| 3160 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3160 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3161 | 3161 | ROM_LOAD( "090-v1.bin", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) ) |
| 3162 | 3162 | ROM_LOAD( "064-v2.bin", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) ) |
| 3163 | 3163 | ROM_LOAD( "090-v3.bin", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) ) |
| r6428 | r6429 | |
| 3186 | 3186 | |
| 3187 | 3187 | NEO_BIOS_AUDIO_128K( "092-m1.bin", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) ) |
| 3188 | 3188 | |
| 3189 | ROM_REGION( 0x700000, "ym", 0 ) | |
| 3189 | ROM_REGION( 0x700000, "ymsnd", 0 ) | |
| 3190 | 3190 | ROM_LOAD( "092-v1.bin", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) ) |
| 3191 | 3191 | ROM_LOAD( "092-v2.bin", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) ) |
| 3192 | 3192 | ROM_LOAD( "092-v3.bin", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) ) |
| r6428 | r6429 | |
| 3209 | 3209 | |
| 3210 | 3210 | NEO_BIOS_AUDIO_128K( "093-m1.bin", CRC(e81e780b) SHA1(c56c53984e0f92e180e850c60a75f550ee84917c) ) |
| 3211 | 3211 | |
| 3212 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3212 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3213 | 3213 | ROM_LOAD( "093-v1.bin", 0x000000, 0x400000, CRC(02abd4b0) SHA1(6bf33ebc9b01cd4a029f6a555694a9835e30ca1b) ) |
| 3214 | 3214 | ROM_LOAD( "093-v2.bin", 0x400000, 0x200000, CRC(a92b8b3d) SHA1(b672c97b85d2f52eba3cb26025008ebc7a18312a) ) |
| 3215 | 3215 | |
| r6428 | r6429 | |
| 3231 | 3231 | |
| 3232 | 3232 | NEO_BIOS_AUDIO_128K( "094-m1.bin", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) ) |
| 3233 | 3233 | |
| 3234 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 3234 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 3235 | 3235 | ROM_LOAD( "094-v1.bin", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) ) |
| 3236 | 3236 | ROM_LOAD( "094-v2.bin", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) ) |
| 3237 | 3237 | ROM_LOAD( "094-v3.bin", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) ) |
| r6428 | r6429 | |
| 3258 | 3258 | |
| 3259 | 3259 | NEO_BIOS_AUDIO_128K( "095-m1.bin", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) ) |
| 3260 | 3260 | |
| 3261 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 3261 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 3262 | 3262 | ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) ) |
| 3263 | 3263 | ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) |
| 3264 | 3264 | ROM_LOAD( "095-v3.bin", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) ) |
| r6428 | r6429 | |
| 3291 | 3291 | |
| 3292 | 3292 | NEO_BIOS_AUDIO_128K( "095-m1.bin", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) ) |
| 3293 | 3293 | |
| 3294 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 3294 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 3295 | 3295 | ROM_LOAD( "069-v1.bin", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) ) |
| 3296 | 3296 | ROM_LOAD( "069-v2.bin", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) |
| 3297 | 3297 | ROM_LOAD( "095-v3.bin", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) ) |
| r6428 | r6429 | |
| 3318 | 3318 | |
| 3319 | 3319 | NEO_BIOS_AUDIO_128K( "096-m1.bin", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) ) |
| 3320 | 3320 | |
| 3321 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3321 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3322 | 3322 | ROM_LOAD( "096-v1.bin", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) ) |
| 3323 | 3323 | ROM_LOAD( "096-v2.bin", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) ) |
| 3324 | 3324 | ROM_LOAD( "096-v3.bin", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) ) |
| r6428 | r6429 | |
| 3345 | 3345 | |
| 3346 | 3346 | NEO_BIOS_AUDIO_128K( "096-m1.bin", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) ) |
| 3347 | 3347 | |
| 3348 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3348 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3349 | 3349 | ROM_LOAD( "096-v1.bin", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) ) |
| 3350 | 3350 | ROM_LOAD( "096-v2.bin", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) ) |
| 3351 | 3351 | ROM_LOAD( "096-v3.bin", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) ) |
| r6428 | r6429 | |
| 3372 | 3372 | |
| 3373 | 3373 | NEO_BIOS_AUDIO_128K( "097-m1.bin", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) ) |
| 3374 | 3374 | |
| 3375 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3375 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3376 | 3376 | ROM_LOAD( "097-v1.bin", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) ) |
| 3377 | 3377 | ROM_LOAD( "097-v2.bin", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) ) |
| 3378 | 3378 | |
| r6428 | r6429 | |
| 3394 | 3394 | |
| 3395 | 3395 | NEO_BIOS_AUDIO_128K( "200-m1.bin", CRC(9994ac00) SHA1(7bded797f3b80fd00bcbe451ac0abe6646b19a14) ) |
| 3396 | 3396 | |
| 3397 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3397 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3398 | 3398 | ROM_LOAD( "200-v1.bin", 0x000000, 0x200000, CRC(00fd48d2) SHA1(ddfee09328632e598fd51537b3ae8593219b2111) ) |
| 3399 | 3399 | ROM_LOAD( "200-v2.bin", 0x200000, 0x200000, CRC(082acb31) SHA1(2f1c053040e9d50a6d45fd7bea1b96742bae694f) ) |
| 3400 | 3400 | ROM_LOAD( "200-v3.bin", 0x400000, 0x200000, CRC(7abca053) SHA1(e229bc0ea82a371d6ee8fd9fe442b0fd141d0a71) ) |
| r6428 | r6429 | |
| 3416 | 3416 | |
| 3417 | 3417 | NEO_BIOS_AUDIO_128K( "201-m1.bin", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) ) |
| 3418 | 3418 | |
| 3419 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3419 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3420 | 3420 | ROM_LOAD( "201-v1.bin", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) ) |
| 3421 | 3421 | ROM_LOAD( "201-v2.bin", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) ) |
| 3422 | 3422 | |
| r6428 | r6429 | |
| 3437 | 3437 | |
| 3438 | 3438 | NEO_BIOS_AUDIO_128K( "202-m1.bin", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) ) |
| 3439 | 3439 | |
| 3440 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 3440 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 3441 | 3441 | ROM_LOAD( "202-v1.bin", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) ) |
| 3442 | 3442 | |
| 3443 | 3443 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3455 | 3455 | |
| 3456 | 3456 | NEO_BIOS_AUDIO_128K( "203-m1.bin", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) ) |
| 3457 | 3457 | |
| 3458 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3458 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3459 | 3459 | ROM_LOAD( "203-v1.bin", 0x000000, 0x200000, CRC(baa2b9a5) SHA1(914782b6c81d9a76ce02251575592b0648434ba3) ) |
| 3460 | 3460 | |
| 3461 | 3461 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3473 | 3473 | |
| 3474 | 3474 | NEO_BIOS_AUDIO_128K( "206-m1.bin", CRC(0e22902e) SHA1(fb8466c342d4abd8bb4cad01c6ceab03f96cdad8) ) |
| 3475 | 3475 | |
| 3476 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3476 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3477 | 3477 | ROM_LOAD( "206-v1.bin", 0x000000, 0x200000, CRC(5385eca8) SHA1(1ca171ce74a5885ae8841d0924de21dc0af2214e) ) |
| 3478 | 3478 | ROM_LOAD( "206-v2.bin", 0x200000, 0x200000, CRC(f8c55404) SHA1(cecc41e9e08a7ff05b6f62e713fc86a816bf55a2) ) |
| 3479 | 3479 | |
| r6428 | r6429 | |
| 3494 | 3494 | |
| 3495 | 3495 | NEO_BIOS_AUDIO_128K( "207-m1.bin", CRC(81eade02) SHA1(d6d135bc525f3ed14a8c255f0b83d83a52b0659c) ) |
| 3496 | 3496 | |
| 3497 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3497 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3498 | 3498 | ROM_LOAD( "207-v1.bin", 0x000000, 0x200000, CRC(4143c052) SHA1(561b19bc8811b80f2f42ffc0b5df27132696470a) ) |
| 3499 | 3499 | |
| 3500 | 3500 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3513 | 3513 | |
| 3514 | 3514 | NEO_BIOS_AUDIO_128K( "208-m1.bin", CRC(0a5f3325) SHA1(04e0236df478a5452654c823dcb42fea65b6a718) ) |
| 3515 | 3515 | |
| 3516 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3516 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3517 | 3517 | ROM_LOAD( "208-v1.bin", 0x000000, 0x200000, CRC(8b53e945) SHA1(beb7d63f6101f8435f35321fddb8479d312505c4) ) |
| 3518 | 3518 | ROM_LOAD( "208-v2.bin", 0x200000, 0x200000, CRC(af37ebf8) SHA1(f5c511479483533480f2b9ecf8edd4b7ae64c2d9) ) |
| 3519 | 3519 | |
| r6428 | r6429 | |
| 3535 | 3535 | |
| 3536 | 3536 | NEO_BIOS_AUDIO_128K( "209-m1.bin", CRC(cd758325) SHA1(b51eac634fc646c07210dff993018ad9ebabd3f9) ) |
| 3537 | 3537 | |
| 3538 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3538 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3539 | 3539 | ROM_LOAD( "209-v1.bin", 0x000000, 0x200000, CRC(ef214212) SHA1(3e05ccaa2d06decb18b379b96f900c0e6b39ce70) ) |
| 3540 | 3540 | |
| 3541 | 3541 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3556 | 3556 | |
| 3557 | 3557 | NEO_BIOS_AUDIO_128K( "212-m1.bin", CRC(fcab6191) SHA1(488b8310b0957f0012fe50f73641b606f6ac4a57) ) |
| 3558 | 3558 | |
| 3559 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3559 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3560 | 3560 | ROM_LOAD( "212-v1.bin", 0x000000, 0x400000, CRC(013d4ef9) SHA1(438a697c44525bdf78b54432c4f7217ab5667047) ) |
| 3561 | 3561 | |
| 3562 | 3562 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3579 | 3579 | |
| 3580 | 3580 | NEO_BIOS_AUDIO_128K( "213-m1.bin", CRC(200045f1) SHA1(7a6cd1c8d4447ea260d7ff4520c676b8d685f2e4) ) |
| 3581 | 3581 | |
| 3582 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3582 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3583 | 3583 | ROM_LOAD( "213-v1.bin", 0x000000, 0x200000, CRC(a421c076) SHA1(129f05c1a28a6493442f47a79c2d3577a1a43ef5) ) |
| 3584 | 3584 | ROM_LOAD( "213-v2.bin", 0x200000, 0x200000, CRC(233c7dd9) SHA1(be7f980aa83831b6605aaaf4ec904180bb96c935) ) |
| 3585 | 3585 | |
| r6428 | r6429 | |
| 3599 | 3599 | |
| 3600 | 3600 | NEO_BIOS_AUDIO_128K( "214-m1.bin", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) ) |
| 3601 | 3601 | |
| 3602 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 3602 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 3603 | 3603 | ROM_LOAD( "214-v1.bin", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) ) |
| 3604 | 3604 | ROM_LOAD( "214-v2.bin", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) ) |
| 3605 | 3605 | ROM_LOAD( "214-v3.bin", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) ) |
| r6428 | r6429 | |
| 3626 | 3626 | |
| 3627 | 3627 | NEO_BIOS_AUDIO_128K( "214-m1.bin", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) ) |
| 3628 | 3628 | |
| 3629 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 3629 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 3630 | 3630 | ROM_LOAD( "214-v1.bin", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) ) |
| 3631 | 3631 | ROM_LOAD( "214-v2.bin", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) ) |
| 3632 | 3632 | ROM_LOAD( "214-v3.bin", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) ) |
| r6428 | r6429 | |
| 3653 | 3653 | |
| 3654 | 3654 | NEO_BIOS_AUDIO_128K( "215-m1.bin", CRC(a932081d) SHA1(376a45e19edb780ac8798c41ae2260c8a8a4bba8) ) |
| 3655 | 3655 | |
| 3656 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3656 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3657 | 3657 | ROM_LOAD( "215-v1.bin", 0x000000, 0x400000, CRC(877d1409) SHA1(77c58ebffe677ea6369c964ec7975b11df512fa1) ) |
| 3658 | 3658 | ROM_LOAD( "215-v2.bin", 0x400000, 0x200000, CRC(1bfa218b) SHA1(344836a578bde3c0ab59b58c8734f868e7403c26) ) |
| 3659 | 3659 | |
| r6428 | r6429 | |
| 3677 | 3677 | |
| 3678 | 3678 | NEO_BIOS_AUDIO_128K( "216-m1.bin", CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) ) |
| 3679 | 3679 | |
| 3680 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3680 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3681 | 3681 | ROM_LOAD( "059-v1.bin", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) ) |
| 3682 | 3682 | ROM_LOAD( "216-v2.bin", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) ) |
| 3683 | 3683 | ROM_LOAD( "059-v3.bin", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) ) |
| r6428 | r6429 | |
| 3707 | 3707 | |
| 3708 | 3708 | NEO_BIOS_AUDIO_128K( "217-m1.bin", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) ) |
| 3709 | 3709 | |
| 3710 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3710 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3711 | 3711 | ROM_LOAD( "217-v1.bin", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) ) |
| 3712 | 3712 | ROM_LOAD( "217-v2.bin", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) ) |
| 3713 | 3713 | |
| r6428 | r6429 | |
| 3733 | 3733 | |
| 3734 | 3734 | NEO_BIOS_AUDIO_128K( "218-m1.bin", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) ) |
| 3735 | 3735 | |
| 3736 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3736 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3737 | 3737 | ROM_LOAD( "218-v1.bin", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) ) |
| 3738 | 3738 | ROM_LOAD( "218-v2.bin", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) ) |
| 3739 | 3739 | |
| r6428 | r6429 | |
| 3759 | 3759 | |
| 3760 | 3760 | NEO_BIOS_AUDIO_128K( "219-m1.bin", CRC(958efdc8) SHA1(aacc6056b1ff48cde8f241a11a27473cfb4b4aa3) ) |
| 3761 | 3761 | |
| 3762 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3762 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3763 | 3763 | ROM_LOAD( "219-v1.bin", 0x000000, 0x200000, CRC(2cc1bd05) SHA1(e204b6d359e5b37661dddc2c1f14d64fd9089f75) ) |
| 3764 | 3764 | ROM_LOAD( "219-v2.bin", 0x200000, 0x200000, CRC(06ac1d3f) SHA1(c7f2287e4e8366b78bc26ede7802e2e92d44d7c9) ) |
| 3765 | 3765 | |
| r6428 | r6429 | |
| 3782 | 3782 | |
| 3783 | 3783 | NEO_BIOS_AUDIO_128K( "221-m1.bin", CRC(bddae628) SHA1(02c77e6aaaed43e39778bf83a3184e7c21db63d4) ) |
| 3784 | 3784 | |
| 3785 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3785 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3786 | 3786 | ROM_LOAD( "221-v1.bin", 0x000000, 0x200000, CRC(7e5e53e4) SHA1(72b063b2d4acaaf72a20d14ad5bfc90cb64d3fed) ) |
| 3787 | 3787 | |
| 3788 | 3788 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3801 | 3801 | |
| 3802 | 3802 | NEO_BIOS_AUDIO_128K( "222-m1.bin", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) ) |
| 3803 | 3803 | |
| 3804 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 3804 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 3805 | 3805 | ROM_LOAD( "222-v1.bin", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) ) |
| 3806 | 3806 | ROM_LOAD( "222-v2.bin", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) ) |
| 3807 | 3807 | ROM_LOAD( "222-v3.bin", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) ) |
| r6428 | r6429 | |
| 3828 | 3828 | |
| 3829 | 3829 | NEO_BIOS_AUDIO_128K( "222-m1.bin", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) ) |
| 3830 | 3830 | |
| 3831 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 3831 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 3832 | 3832 | ROM_LOAD( "222-v1.bin", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) ) |
| 3833 | 3833 | ROM_LOAD( "222-v2.bin", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) ) |
| 3834 | 3834 | ROM_LOAD( "222-v3.bin", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) ) |
| r6428 | r6429 | |
| 3855 | 3855 | |
| 3856 | 3856 | NEO_BIOS_AUDIO_128K( "223-m1.bin", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) ) |
| 3857 | 3857 | |
| 3858 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 3858 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 3859 | 3859 | ROM_LOAD( "223-v1.bin", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) ) |
| 3860 | 3860 | ROM_LOAD( "223-v2.bin", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) ) |
| 3861 | 3861 | ROM_LOAD( "223-v3.bin", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) ) |
| r6428 | r6429 | |
| 3882 | 3882 | |
| 3883 | 3883 | NEO_BIOS_AUDIO_128K( "224-m1.bin", CRC(364d6f96) SHA1(779b95a6476089b71f48c8368d9043ee1dba9032) ) |
| 3884 | 3884 | |
| 3885 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 3885 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 3886 | 3886 | ROM_LOAD( "224-v1.bin", 0x000000, 0x400000, CRC(ff57f088) SHA1(1641989b8aac899dbd68aa2332bcdf9b90b33564) ) |
| 3887 | 3887 | ROM_LOAD( "224-v2.bin", 0x400000, 0x200000, CRC(7ad26599) SHA1(822030037b7664795bf3d64e1452d0aecc22497e) ) |
| 3888 | 3888 | |
| r6428 | r6429 | |
| 3904 | 3904 | |
| 3905 | 3905 | NEO_BIOS_AUDIO_128K( "225-m1.bin", CRC(0634bba6) SHA1(153aaf016440500df7a4454f3f2f2911219cb7d8) ) |
| 3906 | 3906 | |
| 3907 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3907 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3908 | 3908 | ROM_LOAD( "225-v1.bin", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) ) |
| 3909 | 3909 | ROM_LOAD( "225-v2.bin", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) ) |
| 3910 | 3910 | |
| r6428 | r6429 | |
| 3928 | 3928 | |
| 3929 | 3929 | NEO_BIOS_AUDIO_128K( "227-m1.bin", CRC(c8e5e0f9) SHA1(09bb05ae6f09b59b9e4871fae1fc7c3bafd07394) ) |
| 3930 | 3930 | |
| 3931 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3931 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3932 | 3932 | ROM_LOAD( "227-v1.bin", 0x000000, 0x400000, CRC(b8f24181) SHA1(0a3af88d20ff65b82c58325d32c20b99fc07f7f3) ) |
| 3933 | 3933 | ROM_LOAD( "227-v2.bin", 0x400000, 0x400000, CRC(ee39e260) SHA1(4ed6802564ce262ebe92c7276424056b70998758) ) |
| 3934 | 3934 | |
| r6428 | r6429 | |
| 3949 | 3949 | |
| 3950 | 3950 | NEO_BIOS_AUDIO_128K( "gl-m1.bin", CRC(fd833b33) SHA1(ab6c218c42cba821654cbdae154efecb69f844f6) ) |
| 3951 | 3951 | |
| 3952 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 3952 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 3953 | 3953 | ROM_LOAD( "gl-v1.bin", 0x000000, 0x200000, CRC(c603fce6) SHA1(5a866471d35895b2ae13cbd5d1cb41bf2e72e1b8) ) |
| 3954 | 3954 | |
| 3955 | 3955 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 3968 | 3968 | |
| 3969 | 3969 | NEO_BIOS_AUDIO_128K( "230-m1.bin", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) ) |
| 3970 | 3970 | |
| 3971 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 3971 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 3972 | 3972 | ROM_LOAD( "230-v1.bin", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) ) |
| 3973 | 3973 | ROM_LOAD( "230-v2.bin", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) ) |
| 3974 | 3974 | |
| r6428 | r6429 | |
| 3989 | 3989 | |
| 3990 | 3990 | NEO_BIOS_AUDIO_128K( "231-m1.bin", CRC(de41301b) SHA1(59ce3836ac8f064d56a446c9374f05bcb40fcfd8) ) |
| 3991 | 3991 | |
| 3992 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 3992 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 3993 | 3993 | ROM_LOAD( "231-v1.bin", 0x000000, 0x400000, CRC(113fb898) SHA1(9168ba90c4aa969f69eb11ba3f4d76592d81e05a) ) |
| 3994 | 3994 | |
| 3995 | 3995 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 4010 | 4010 | |
| 4011 | 4011 | NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) |
| 4012 | 4012 | |
| 4013 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 4013 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 4014 | 4014 | ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) |
| 4015 | 4015 | ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) |
| 4016 | 4016 | ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) |
| r6428 | r6429 | |
| 4035 | 4035 | |
| 4036 | 4036 | NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) |
| 4037 | 4037 | |
| 4038 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 4038 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 4039 | 4039 | ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) |
| 4040 | 4040 | ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) |
| 4041 | 4041 | ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) |
| r6428 | r6429 | |
| 4059 | 4059 | |
| 4060 | 4060 | NEO_BIOS_AUDIO_128K( "233-m1.bin", CRC(5beaf34e) SHA1(2905d26945932cddc2dd3a1dc5abba8aa3baee14) ) |
| 4061 | 4061 | |
| 4062 | ROM_REGION( 0x480000, "ym", 0 ) | |
| 4062 | ROM_REGION( 0x480000, "ymsnd", 0 ) | |
| 4063 | 4063 | ROM_LOAD( "233-v1.bin", 0x000000, 0x400000, CRC(58839298) SHA1(18cae7bba997c52780761cbf119c4e4b34397a61) ) |
| 4064 | 4064 | ROM_LOAD( "233-v2.bin", 0x400000, 0x080000, CRC(d5e30df4) SHA1(bbbc0ff5b975471bd682f85976ac4a93f6d44f2e) ) |
| 4065 | 4065 | |
| r6428 | r6429 | |
| 4081 | 4081 | |
| 4082 | 4082 | NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) ) |
| 4083 | 4083 | |
| 4084 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4084 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4085 | 4085 | ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) ) |
| 4086 | 4086 | ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) ) |
| 4087 | 4087 | ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) |
| r6428 | r6429 | |
| 4107 | 4107 | |
| 4108 | 4108 | NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) ) |
| 4109 | 4109 | |
| 4110 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4110 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4111 | 4111 | ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) ) |
| 4112 | 4112 | ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) ) |
| 4113 | 4113 | ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) |
| r6428 | r6429 | |
| 4133 | 4133 | |
| 4134 | 4134 | NEO_BIOS_AUDIO_128K( "234-m1.bin", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) ) |
| 4135 | 4135 | |
| 4136 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4136 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4137 | 4137 | ROM_LOAD( "234-v1.bin", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) ) |
| 4138 | 4138 | ROM_LOAD( "234-v2.bin", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) ) |
| 4139 | 4139 | ROM_LOAD( "234-v3.bin", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) |
| r6428 | r6429 | |
| 4158 | 4158 | |
| 4159 | 4159 | NEO_BIOS_AUDIO_128K( "202-m1.bin", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) ) |
| 4160 | 4160 | |
| 4161 | ROM_REGION( 0x080000, "ym", 0 ) | |
| 4161 | ROM_REGION( 0x080000, "ymsnd", 0 ) | |
| 4162 | 4162 | ROM_LOAD( "202-v1.bin", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) ) |
| 4163 | 4163 | |
| 4164 | 4164 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 4185 | 4185 | ROM_LOAD( "236-m1.bin", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) ) /* so overwrite it with the real thing */ |
| 4186 | 4186 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 4187 | 4187 | |
| 4188 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 4188 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 4189 | 4189 | ROM_LOAD( "236-v1.bin", 0x000000, 0x200000, CRC(5f89c3b4) SHA1(dc8fd561cf8dfdd41696dcf14ea8d2d0ac4eec4b) ) |
| 4190 | 4190 | |
| 4191 | 4191 | ROM_REGION( 0x100000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 4204 | 4204 | |
| 4205 | 4205 | NEO_BIOS_AUDIO_128K( "237-m1.bin", CRC(d4c946dd) SHA1(6ca09040b5db8d89511d627954c783154d58ab01) ) |
| 4206 | 4206 | |
| 4207 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 4207 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 4208 | 4208 | ROM_LOAD( "237-v1.bin", 0x000000, 0x200000, CRC(edcb1beb) SHA1(62f086b9968b366b59276ee4ae3c32c4d76fc6ce) ) |
| 4209 | 4209 | |
| 4210 | 4210 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 4223 | 4223 | |
| 4224 | 4224 | NEO_BIOS_AUDIO_128K( "238-m1.bin", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) ) |
| 4225 | 4225 | |
| 4226 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 4226 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 4227 | 4227 | ROM_LOAD( "238-v1.bin", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) ) |
| 4228 | 4228 | ROM_LOAD( "238-v2.bin", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) ) |
| 4229 | 4229 | |
| r6428 | r6429 | |
| 4249 | 4249 | |
| 4250 | 4250 | NEO_BIOS_AUDIO_128K( "238-m1.bin", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) ) |
| 4251 | 4251 | |
| 4252 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 4252 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 4253 | 4253 | ROM_LOAD( "238-v1.bin", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) ) |
| 4254 | 4254 | ROM_LOAD( "238-v2.bin", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) ) |
| 4255 | 4255 | |
| r6428 | r6429 | |
| 4275 | 4275 | |
| 4276 | 4276 | NEO_BIOS_AUDIO_128K( "239-m1.bin", CRC(d31a3aea) SHA1(e23abfeb23052f0358edcf2c83401025fe632511) ) |
| 4277 | 4277 | |
| 4278 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 4278 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 4279 | 4279 | ROM_LOAD( "239-v1.bin", 0x000000, 0x400000, CRC(1b8d5bf7) SHA1(67fc1f7e36e92a89cd1d415eb31a2892f57b0d04) ) |
| 4280 | 4280 | ROM_LOAD( "239-v2.bin", 0x400000, 0x400000, CRC(74cf0a70) SHA1(b00451a2a30de2517ae3eca35eb1fe985b950eb8) ) |
| 4281 | 4281 | |
| r6428 | r6429 | |
| 4302 | 4302 | /* TC532000DP */ |
| 4303 | 4303 | NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) ) |
| 4304 | 4304 | |
| 4305 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4305 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4306 | 4306 | ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) ) |
| 4307 | 4307 | ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) ) |
| 4308 | 4308 | //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad? |
| r6428 | r6429 | |
| 4330 | 4330 | /* TC532000DP */ |
| 4331 | 4331 | NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) ) |
| 4332 | 4332 | |
| 4333 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4333 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4334 | 4334 | ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) ) |
| 4335 | 4335 | ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) ) |
| 4336 | 4336 | //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad? |
| r6428 | r6429 | |
| 4358 | 4358 | /* TC532000DP */ |
| 4359 | 4359 | NEO_BIOS_AUDIO_256K( "240-m1.bin", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) ) |
| 4360 | 4360 | |
| 4361 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4361 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4362 | 4362 | ROM_LOAD( "240-v1.bin", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) ) |
| 4363 | 4363 | ROM_LOAD( "240-v2.bin", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) ) |
| 4364 | 4364 | //ROM_LOAD( "240-v3.bin", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) ) // bad? |
| r6428 | r6429 | |
| 4385 | 4385 | |
| 4386 | 4386 | NEO_BIOS_AUDIO_128K( "241-m1.bin", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) ) |
| 4387 | 4387 | |
| 4388 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 4388 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 4389 | 4389 | ROM_LOAD( "241-v1.bin", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) ) |
| 4390 | 4390 | ROM_LOAD( "241-v2.bin", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) ) |
| 4391 | 4391 | |
| r6428 | r6429 | |
| 4408 | 4408 | /* TC532000DP */ |
| 4409 | 4409 | NEO_BIOS_AUDIO_256K( "242-m1.bin", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) ) |
| 4410 | 4410 | |
| 4411 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4411 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4412 | 4412 | ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) |
| 4413 | 4413 | ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) |
| 4414 | 4414 | ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) |
| r6428 | r6429 | |
| 4437 | 4437 | /* Correct chip label */ |
| 4438 | 4438 | NEO_BIOS_AUDIO_256K( "242-m1k.bin", CRC(ce12da0c) SHA1(e7c01dae2852d543d1a58d55735239f6a5aa05a5) ) |
| 4439 | 4439 | |
| 4440 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4440 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4441 | 4441 | ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) |
| 4442 | 4442 | ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) |
| 4443 | 4443 | ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) |
| r6428 | r6429 | |
| 4466 | 4466 | /* TC532000DP */ |
| 4467 | 4467 | NEO_BIOS_AUDIO_256K( "242-mg1.bin", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) ) |
| 4468 | 4468 | |
| 4469 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4469 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4470 | 4470 | ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) |
| 4471 | 4471 | ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) |
| 4472 | 4472 | ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) |
| r6428 | r6429 | |
| 4494 | 4494 | |
| 4495 | 4495 | NEO_BIOS_AUDIO_128K( "243-m1.bin", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) ) |
| 4496 | 4496 | |
| 4497 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4497 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4498 | 4498 | ROM_LOAD( "243-v1.bin", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) ) |
| 4499 | 4499 | ROM_LOAD( "243-v2.bin", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) ) |
| 4500 | 4500 | ROM_LOAD( "243-v3.bin", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) ) |
| r6428 | r6429 | |
| 4520 | 4520 | |
| 4521 | 4521 | NEO_BIOS_AUDIO_128K( "244-m1.bin", CRC(a701b276) SHA1(055550ebc650835bcf8ea4457b2c91bd73e21281) ) |
| 4522 | 4522 | |
| 4523 | ROM_REGION( 0x600000, "ym", 0 ) | |
| 4523 | ROM_REGION( 0x600000, "ymsnd", 0 ) | |
| 4524 | 4524 | ROM_LOAD( "244-v1.bin", 0x000000, 0x400000, CRC(79def46d) SHA1(63414235de2e177654508f1c840040424f8993e6) ) |
| 4525 | 4525 | ROM_LOAD( "244-v2.bin", 0x400000, 0x200000, CRC(b231902f) SHA1(9209772e947a2c7ac31b49dd613bf2eab0cb3358) ) |
| 4526 | 4526 | |
| r6428 | r6429 | |
| 4540 | 4540 | |
| 4541 | 4541 | NEO_BIOS_AUDIO_128K( "245-m1.bin", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) ) |
| 4542 | 4542 | |
| 4543 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 4543 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 4544 | 4544 | ROM_LOAD( "245-v1.bin", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) ) |
| 4545 | 4545 | ROM_LOAD( "245-v2.bin", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) ) |
| 4546 | 4546 | |
| r6428 | r6429 | |
| 4565 | 4565 | |
| 4566 | 4566 | NEO_BIOS_AUDIO_128K( "246-m1.bin", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) ) |
| 4567 | 4567 | |
| 4568 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4568 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4569 | 4569 | ROM_LOAD( "246-v1.bin", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) ) |
| 4570 | 4570 | ROM_LOAD( "246-v2.bin", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) ) |
| 4571 | 4571 | ROM_LOAD( "246-v3.bin", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) ) |
| r6428 | r6429 | |
| 4589 | 4589 | |
| 4590 | 4590 | NEO_BIOS_AUDIO_128K( "247-m1.bin", CRC(a9fe0144) SHA1(4cc076ecce9216a373f3dcd7ba28a03d6050e522) ) |
| 4591 | 4591 | |
| 4592 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 4592 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 4593 | 4593 | ROM_LOAD( "247-v1.bin", 0x000000, 0x200000, CRC(42ec743d) SHA1(f45b5167ebcbd59300f4e5b05448cd421654102a) ) |
| 4594 | 4594 | |
| 4595 | 4595 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 4607 | 4607 | |
| 4608 | 4608 | NEO_BIOS_AUDIO_128K( "248-m1.bin", CRC(883097a9) SHA1(677bf9684c0c7977a9a3f0c1288e430040a53b49) ) |
| 4609 | 4609 | |
| 4610 | ROM_REGION( 0x800000, "ym", 0 ) | |
| 4610 | ROM_REGION( 0x800000, "ymsnd", 0 ) | |
| 4611 | 4611 | ROM_LOAD( "248-v1.bin", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) ) |
| 4612 | 4612 | ROM_LOAD( "248-v2.bin", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) ) |
| 4613 | 4613 | |
| r6428 | r6429 | |
| 4629 | 4629 | |
| 4630 | 4630 | NEO_BIOS_AUDIO_128K( "249-m1.bin", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) ) |
| 4631 | 4631 | |
| 4632 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 4632 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 4633 | 4633 | ROM_LOAD( "249-v1.bin", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) ) |
| 4634 | 4634 | ROM_LOAD( "249-v2.bin", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) ) |
| 4635 | 4635 | |
| r6428 | r6429 | |
| 4649 | 4649 | |
| 4650 | 4650 | NEO_BIOS_AUDIO_128K( "250-m1.bin", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) |
| 4651 | 4651 | |
| 4652 | ROM_REGION( 0xa00000, "ym", 0 ) | |
| 4652 | ROM_REGION( 0xa00000, "ymsnd", 0 ) | |
| 4653 | 4653 | ROM_LOAD( "250-v1.bin", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) |
| 4654 | 4654 | ROM_LOAD( "250-v2.bin", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) |
| 4655 | 4655 | ROM_LOAD( "250-v3.bin", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) |
| r6428 | r6429 | |
| 4681 | 4681 | |
| 4682 | 4682 | NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) |
| 4683 | 4683 | |
| 4684 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4684 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4685 | 4685 | ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) |
| 4686 | 4686 | ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) |
| 4687 | 4687 | ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) |
| r6428 | r6429 | |
| 4717 | 4717 | |
| 4718 | 4718 | NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) |
| 4719 | 4719 | |
| 4720 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4720 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4721 | 4721 | ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) |
| 4722 | 4722 | ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) |
| 4723 | 4723 | ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) |
| r6428 | r6429 | |
| 4755 | 4755 | |
| 4756 | 4756 | NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) |
| 4757 | 4757 | |
| 4758 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4758 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4759 | 4759 | ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) |
| 4760 | 4760 | ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) |
| 4761 | 4761 | ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) |
| r6428 | r6429 | |
| 4791 | 4791 | |
| 4792 | 4792 | NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) |
| 4793 | 4793 | |
| 4794 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4794 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4795 | 4795 | ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) |
| 4796 | 4796 | ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) |
| 4797 | 4797 | ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) |
| r6428 | r6429 | |
| 4822 | 4822 | /* Did the Prototype really use the same sound program / voice roms, sound isn't great .. */ |
| 4823 | 4823 | NEO_BIOS_AUDIO_128K( "251-m1.bin", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) |
| 4824 | 4824 | |
| 4825 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 4825 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 4826 | 4826 | ROM_LOAD( "251-v1.bin", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) |
| 4827 | 4827 | ROM_LOAD( "251-v2.bin", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) |
| 4828 | 4828 | ROM_LOAD( "251-v3.bin", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) |
| r6428 | r6429 | |
| 4857 | 4857 | |
| 4858 | 4858 | NEO_BIOS_AUDIO_128K( "252-m1.bin", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) ) |
| 4859 | 4859 | |
| 4860 | ROM_REGION( 0x0400000, "ym", 0 ) | |
| 4860 | ROM_REGION( 0x0400000, "ymsnd", 0 ) | |
| 4861 | 4861 | ROM_LOAD( "252-v1.bin", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) ) |
| 4862 | 4862 | |
| 4863 | 4863 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 4886 | 4886 | |
| 4887 | 4887 | NEO_BIOS_AUDIO_256K( "253-m1.bin", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) ) |
| 4888 | 4888 | |
| 4889 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4889 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4890 | 4890 | ROM_LOAD( "253-v1.bin", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) ) |
| 4891 | 4891 | ROM_LOAD( "253-v2.bin", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) ) |
| 4892 | 4892 | ROM_LOAD( "253-v3.bin", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) ) |
| r6428 | r6429 | |
| 4922 | 4922 | |
| 4923 | 4923 | NEO_BIOS_AUDIO_256K( "253-m1.bin", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) ) |
| 4924 | 4924 | |
| 4925 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4925 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4926 | 4926 | ROM_LOAD( "253-v1.bin", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) ) |
| 4927 | 4927 | ROM_LOAD( "253-v2.bin", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) ) |
| 4928 | 4928 | ROM_LOAD( "253-v3.bin", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) ) |
| r6428 | r6429 | |
| 4951 | 4951 | |
| 4952 | 4952 | NEO_BIOS_AUDIO_256K( "253-m1p.bin", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) ) |
| 4953 | 4953 | |
| 4954 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4954 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4955 | 4955 | ROM_LOAD( "253-v1p.bin", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) ) |
| 4956 | 4956 | ROM_LOAD( "253-v2p.bin", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) ) |
| 4957 | 4957 | ROM_LOAD( "253-v3p.bin", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) ) |
| r6428 | r6429 | |
| 4985 | 4985 | |
| 4986 | 4986 | NEO_BIOS_AUDIO_128K( "254-m1.bin", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) ) |
| 4987 | 4987 | |
| 4988 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 4988 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 4989 | 4989 | ROM_LOAD( "254-v1.bin", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) ) |
| 4990 | 4990 | ROM_LOAD( "254-v2.bin", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) ) |
| 4991 | 4991 | ROM_LOAD( "254-v3.bin", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) ) |
| r6428 | r6429 | |
| 5019 | 5019 | |
| 5020 | 5020 | NEO_BIOS_AUDIO_128K( "255-m1.bin", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) ) |
| 5021 | 5021 | |
| 5022 | ROM_REGION( 0x0600000, "ym", 0 ) | |
| 5022 | ROM_REGION( 0x0600000, "ymsnd", 0 ) | |
| 5023 | 5023 | ROM_LOAD( "255-v1.bin", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) ) |
| 5024 | 5024 | ROM_LOAD( "255-v2.bin", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) ) |
| 5025 | 5025 | |
| r6428 | r6429 | |
| 5051 | 5051 | |
| 5052 | 5052 | NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) ) |
| 5053 | 5053 | |
| 5054 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5054 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5055 | 5055 | ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) ) |
| 5056 | 5056 | ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) ) |
| 5057 | 5057 | ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) |
| r6428 | r6429 | |
| 5086 | 5086 | |
| 5087 | 5087 | NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) ) |
| 5088 | 5088 | |
| 5089 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5089 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5090 | 5090 | ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) ) |
| 5091 | 5091 | ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) ) |
| 5092 | 5092 | ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) |
| r6428 | r6429 | |
| 5123 | 5123 | /* Encrypted */ |
| 5124 | 5124 | NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.bin", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) ) |
| 5125 | 5125 | |
| 5126 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5126 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5127 | 5127 | ROM_LOAD( "257-v1.bin", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) ) |
| 5128 | 5128 | ROM_LOAD( "257-v2.bin", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) ) |
| 5129 | 5129 | ROM_LOAD( "257-v3.bin", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) ) |
| r6428 | r6429 | |
| 5158 | 5158 | /* Encrypted */ |
| 5159 | 5159 | NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.bin", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) ) |
| 5160 | 5160 | |
| 5161 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5161 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5162 | 5162 | ROM_LOAD( "257-v1.bin", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) ) |
| 5163 | 5163 | ROM_LOAD( "257-v2.bin", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) ) |
| 5164 | 5164 | ROM_LOAD( "257-v3.bin", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) ) |
| r6428 | r6429 | |
| 5192 | 5192 | |
| 5193 | 5193 | NEO_BIOS_AUDIO_128K( "259-m1.bin", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) ) |
| 5194 | 5194 | |
| 5195 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 5195 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 5196 | 5196 | ROM_LOAD( "259-v1.bin", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) ) |
| 5197 | 5197 | ROM_LOAD( "259-v2.bin", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) ) |
| 5198 | 5198 | |
| r6428 | r6429 | |
| 5216 | 5216 | |
| 5217 | 5217 | NEO_BIOS_AUDIO_128K( "259-m1.bin", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) ) |
| 5218 | 5218 | |
| 5219 | ROM_REGION( 0x500000, "ym", 0 ) | |
| 5219 | ROM_REGION( 0x500000, "ymsnd", 0 ) | |
| 5220 | 5220 | ROM_LOAD( "259-v1p.bin", 0x000000, 0x200000, CRC(e97b9385) SHA1(d213cae6cf5732b8ab1f8a8cf04afee5dfd9a260) ) |
| 5221 | 5221 | ROM_LOAD( "259-v2p.bin", 0x200000, 0x200000, CRC(b0cbd70a) SHA1(fc7c8183f8ff9800e8aae7c8d44d962300058cfb) ) |
| 5222 | 5222 | ROM_LOAD( "259-v3p.bin", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) ) |
| r6428 | r6429 | |
| 5245 | 5245 | |
| 5246 | 5246 | NEO_BIOS_AUDIO_512K( "260-m1.bin", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) ) |
| 5247 | 5247 | |
| 5248 | ROM_REGION( 0x0400000, "ym", 0 ) | |
| 5248 | ROM_REGION( 0x0400000, "ymsnd", 0 ) | |
| 5249 | 5249 | ROM_LOAD( "260-v1.bin", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) ) |
| 5250 | 5250 | |
| 5251 | 5251 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 5272 | 5272 | |
| 5273 | 5273 | NEO_BIOS_AUDIO_128K( "261-m1.bin", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) ) |
| 5274 | 5274 | |
| 5275 | ROM_REGION( 0x0e00000, "ym", 0 ) | |
| 5275 | ROM_REGION( 0x0e00000, "ymsnd", 0 ) | |
| 5276 | 5276 | ROM_LOAD( "261-v1.bin", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) ) |
| 5277 | 5277 | ROM_LOAD( "261-v2.bin", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) ) |
| 5278 | 5278 | ROM_LOAD( "261-v3.bin", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) ) |
| r6428 | r6429 | |
| 5304 | 5304 | /* Encrypted */ |
| 5305 | 5305 | NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.bin", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* yes it really does have a strange name */ |
| 5306 | 5306 | |
| 5307 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5307 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5308 | 5308 | ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) |
| 5309 | 5309 | ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) |
| 5310 | 5310 | ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) |
| r6428 | r6429 | |
| 5340 | 5340 | /* Encrypted */ |
| 5341 | 5341 | NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.bin", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* yes it really does have a strange name */ |
| 5342 | 5342 | |
| 5343 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5343 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5344 | 5344 | ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) |
| 5345 | 5345 | ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) |
| 5346 | 5346 | ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) |
| r6428 | r6429 | |
| 5381 | 5381 | /* Encrypted */ |
| 5382 | 5382 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) ) |
| 5383 | 5383 | |
| 5384 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5384 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5385 | 5385 | /* Encrypted */ |
| 5386 | 5386 | ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) |
| 5387 | 5387 | ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) |
| r6428 | r6429 | |
| 5414 | 5414 | /* Encrypted */ |
| 5415 | 5415 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) ) |
| 5416 | 5416 | |
| 5417 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5417 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5418 | 5418 | /* Encrypted */ |
| 5419 | 5419 | ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) |
| 5420 | 5420 | ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) |
| r6428 | r6429 | |
| 5447 | 5447 | /* Encrypted */ |
| 5448 | 5448 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "264-m1.bin", CRC(4dbd7b43) SHA1(6b63756b0d2d30bbf13fbd219833c81fd060ef96) ) |
| 5449 | 5449 | |
| 5450 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5450 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5451 | 5451 | /* Encrypted */ |
| 5452 | 5452 | ROM_LOAD( "264-v1.bin", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) ) |
| 5453 | 5453 | ROM_LOAD( "264-v2.bin", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) ) |
| r6428 | r6429 | |
| 5482 | 5482 | /* Encrypted */ |
| 5483 | 5483 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 5484 | 5484 | |
| 5485 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5485 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5486 | 5486 | /* Encrypted */ |
| 5487 | 5487 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 5488 | 5488 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 5517 | 5517 | /* Encrypted */ |
| 5518 | 5518 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "266-m1.bin", CRC(456c3e6c) SHA1(5a07d0186198a18d2dda1331093cf29b0b9b2984) ) |
| 5519 | 5519 | |
| 5520 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5520 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5521 | 5521 | /* Encrypted */ |
| 5522 | 5522 | ROM_LOAD( "266-v1.bin", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) ) |
| 5523 | 5523 | ROM_LOAD( "266-v2.bin", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) ) |
| r6428 | r6429 | |
| 5551 | 5551 | /* Encrypted */ |
| 5552 | 5552 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "267-m1.bin", CRC(c7853ccd) SHA1(1b7a4c5093cf0fe3861ce44fd1d3b30c71ad0abe) ) |
| 5553 | 5553 | |
| 5554 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 5554 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 5555 | 5555 | /* Encrypted */ |
| 5556 | 5556 | ROM_LOAD( "267-v1.bin", 0x000000, 0x400000, CRC(e2e8e917) SHA1(7f412d55aebff3d38a225a88c632916295ab0584) ) |
| 5557 | 5557 | |
| r6428 | r6429 | |
| 5579 | 5579 | /* Encrypted */ |
| 5580 | 5580 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) ) |
| 5581 | 5581 | |
| 5582 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5582 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5583 | 5583 | /* Encrypted */ |
| 5584 | 5584 | ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) |
| 5585 | 5585 | ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) |
| r6428 | r6429 | |
| 5614 | 5614 | /* Encrypted */ |
| 5615 | 5615 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1h.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) ) /* Same as MVS above, but different label */ |
| 5616 | 5616 | |
| 5617 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5617 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5618 | 5618 | /* Encrypted */ |
| 5619 | 5619 | ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) |
| 5620 | 5620 | ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) |
| r6428 | r6429 | |
| 5649 | 5649 | /* Encrypted */ |
| 5650 | 5650 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.bin", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) ) |
| 5651 | 5651 | |
| 5652 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5652 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5653 | 5653 | /* Encrypted */ |
| 5654 | 5654 | ROM_LOAD( "269-v1.bin", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) ) |
| 5655 | 5655 | ROM_LOAD( "269-v2.bin", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) ) |
| r6428 | r6429 | |
| 5682 | 5682 | /* Encrypted */ |
| 5683 | 5683 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.bin", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) ) |
| 5684 | 5684 | |
| 5685 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5685 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5686 | 5686 | /* Encrypted */ |
| 5687 | 5687 | ROM_LOAD( "270-v1.bin", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) ) |
| 5688 | 5688 | ROM_LOAD( "270-v2.bin", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) ) |
| r6428 | r6429 | |
| 5717 | 5717 | /* Encrypted */ |
| 5718 | 5718 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.bin", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) ) |
| 5719 | 5719 | |
| 5720 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5720 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5721 | 5721 | /* Encrypted */ |
| 5722 | 5722 | ROM_LOAD( "270-v1.bin", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) ) |
| 5723 | 5723 | ROM_LOAD( "270-v2.bin", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) ) |
| r6428 | r6429 | |
| 5753 | 5753 | /* Encrypted */ |
| 5754 | 5754 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.bin", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) ) |
| 5755 | 5755 | |
| 5756 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5756 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5757 | 5757 | /* Encrypted */ |
| 5758 | 5758 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 5759 | 5759 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 5789 | 5789 | /* Encrypted */ |
| 5790 | 5790 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1k.bin", CRC(48d9affe) SHA1(68f01560b91bbada39001ce01bdeeed5c9bb29f2) ) |
| 5791 | 5791 | |
| 5792 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5792 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5793 | 5793 | /* Encrypted */ |
| 5794 | 5794 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 5795 | 5795 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 5823 | 5823 | |
| 5824 | 5824 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) ) |
| 5825 | 5825 | |
| 5826 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5826 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5827 | 5827 | /* Encrypted */ |
| 5828 | 5828 | ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) |
| 5829 | 5829 | ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) |
| r6428 | r6429 | |
| 5858 | 5858 | /* Encrypted */ |
| 5859 | 5859 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) ) |
| 5860 | 5860 | |
| 5861 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5861 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5862 | 5862 | /* Encrypted */ |
| 5863 | 5863 | ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) |
| 5864 | 5864 | ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) |
| r6428 | r6429 | |
| 5893 | 5893 | /* Encrypted */ |
| 5894 | 5894 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.bin", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) ) |
| 5895 | 5895 | |
| 5896 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 5896 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 5897 | 5897 | /* Encrypted */ |
| 5898 | 5898 | ROM_LOAD( "272-v1.bin", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) |
| 5899 | 5899 | ROM_LOAD( "272-v2.bin", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) |
| r6428 | r6429 | |
| 5928 | 5928 | /* Encrypted */ |
| 5929 | 5929 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "jgp-m1.bin", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) ) |
| 5930 | 5930 | |
| 5931 | ROM_REGION( 0x0200000, "ym", 0 ) | |
| 5931 | ROM_REGION( 0x0200000, "ymsnd", 0 ) | |
| 5932 | 5932 | ROM_LOAD( "jgp-v1.bin", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) ) |
| 5933 | 5933 | |
| 5934 | 5934 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 5947 | 5947 | |
| 5948 | 5948 | NEO_BIOS_AUDIO_64K( "vl-m1.bin", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) ) |
| 5949 | 5949 | |
| 5950 | ROM_REGION( 0x200000, "ym", ROMREGION_ERASE00 ) | |
| 5950 | ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 ) | |
| 5951 | 5951 | |
| 5952 | 5952 | NO_DELTAT_REGION |
| 5953 | 5953 | |
| r6428 | r6429 | |
| 5964 | 5964 | |
| 5965 | 5965 | NEO_BIOS_AUDIO_64K( "vl-m1.bin", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) ) |
| 5966 | 5966 | |
| 5967 | ROM_REGION( 0x200000, "ym", ROMREGION_ERASE00 ) | |
| 5967 | ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 ) | |
| 5968 | 5968 | |
| 5969 | 5969 | NO_DELTAT_REGION |
| 5970 | 5970 | |
| r6428 | r6429 | |
| 6018 | 6018 | |
| 6019 | 6019 | ROM_Y_ZOOM |
| 6020 | 6020 | |
| 6021 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6021 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6022 | 6022 | /* Encrypted */ |
| 6023 | 6023 | ROM_LOAD( "268-v1.bin", 0x000000, 0x1000000, CRC(8458afe5) SHA1(62b4c6e7db763e9ff2697bbcdb43dc5a56b48c68) ) |
| 6024 | 6024 | |
| r6428 | r6429 | |
| 6052 | 6052 | |
| 6053 | 6053 | ROM_Y_ZOOM |
| 6054 | 6054 | |
| 6055 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6055 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6056 | 6056 | /* Encrypted */ |
| 6057 | 6057 | ROM_LOAD( "269-v1.bin", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) ) |
| 6058 | 6058 | ROM_LOAD( "269-v2.bin", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) ) |
| r6428 | r6429 | |
| 6085 | 6085 | |
| 6086 | 6086 | ROM_Y_ZOOM |
| 6087 | 6087 | |
| 6088 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6088 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6089 | 6089 | /* Encrypted */ |
| 6090 | 6090 | ROM_LOAD( "269-v1a.bin", 0x000000, 0x1000000, CRC(a6af4753) SHA1(ec4f61a526b707a7faec4653b773beb3bf3a17ba) ) |
| 6091 | 6091 | |
| r6428 | r6429 | |
| 6118 | 6118 | |
| 6119 | 6119 | ROM_Y_ZOOM |
| 6120 | 6120 | |
| 6121 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6121 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6122 | 6122 | /* Encrypted */ |
| 6123 | 6123 | ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) ) |
| 6124 | 6124 | |
| r6428 | r6429 | |
| 6161 | 6161 | |
| 6162 | 6162 | NEO_BIOS_AUDIO_128K( "zin-m1.bin", CRC(fd9627ca) SHA1(b640c1f1ff466f734bb1cb5d7b589cb7e8a55346) ) |
| 6163 | 6163 | |
| 6164 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 6164 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 6165 | 6165 | ROM_LOAD( "zin-v1.bin", 0x000000, 0x200000, CRC(c09f74f1) SHA1(d0b56a780a6eba85ff092240b1f1cc6718f17c21) ) |
| 6166 | 6166 | |
| 6167 | 6167 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 6182 | 6182 | |
| 6183 | 6183 | NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) |
| 6184 | 6184 | |
| 6185 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 6185 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 6186 | 6186 | ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) |
| 6187 | 6187 | ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) |
| 6188 | 6188 | ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) |
| r6428 | r6429 | |
| 6207 | 6207 | |
| 6208 | 6208 | NEO_BIOS_AUDIO_128K( "232-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) |
| 6209 | 6209 | |
| 6210 | ROM_REGION( 0xc00000, "ym", 0 ) | |
| 6210 | ROM_REGION( 0xc00000, "ymsnd", 0 ) | |
| 6211 | 6211 | ROM_LOAD( "232-v1.bin", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) |
| 6212 | 6212 | ROM_LOAD( "232-v2.bin", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) |
| 6213 | 6213 | ROM_LOAD( "232-v3.bin", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) |
| r6428 | r6429 | |
| 6233 | 6233 | |
| 6234 | 6234 | NEO_BIOS_AUDIO_128K( "246-m1.bin", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) ) |
| 6235 | 6235 | |
| 6236 | ROM_REGION( 0xA00000, "ym", 0 ) | |
| 6236 | ROM_REGION( 0xA00000, "ymsnd", 0 ) | |
| 6237 | 6237 | ROM_LOAD( "lnsq-v1.bin", 0x000000, 0x400000, CRC(4408ebc3) SHA1(e3f4d8a7e243a8cf48e97d91bbfec7829c0d9404) ) |
| 6238 | 6238 | ROM_LOAD( "lnsq-v2.bin", 0x400000, 0x400000, CRC(3d953975) SHA1(6a4ab02ab3d4416a65343cf16815007cb273f19b) ) |
| 6239 | 6239 | ROM_LOAD( "lnsq-v3.bin", 0x800000, 0x200000, CRC(437d1d8e) SHA1(95e015c21707b53ed7223eaa19f6cdcfb4d94f0c) ) |
| r6428 | r6429 | |
| 6260 | 6260 | |
| 6261 | 6261 | NEO_BIOS_AUDIO_512K( "garou-m1.bin", CRC(7c51d002) SHA1(01ffba6cbc8da07804f7b21d8c71c39d64a1a4e2) ) |
| 6262 | 6262 | |
| 6263 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6263 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6264 | 6264 | ROM_LOAD( "garou-v1.bin", 0x000000, 0x400000, CRC(98d736e4) SHA1(3edda9a1d45b0e38a85156d24fc8ff2f0011239b) ) |
| 6265 | 6265 | ROM_LOAD( "garou-v2.bin", 0x400000, 0x400000, CRC(eb43c03f) SHA1(83c9c168b154e60a64f1033004b2d33e218bbb8b) ) |
| 6266 | 6266 | ROM_LOAD( "garou-v3.bin", 0x800000, 0x400000, CRC(10a0f814) SHA1(e86def80d6fb2a38ebc9f3338d22f28c15ce85da) ) |
| r6428 | r6429 | |
| 6286 | 6286 | |
| 6287 | 6287 | NEO_BIOS_AUDIO_512K( "256-m1.bin", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) ) |
| 6288 | 6288 | |
| 6289 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6289 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6290 | 6290 | ROM_LOAD( "256-v1.bin", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) ) |
| 6291 | 6291 | ROM_LOAD( "256-v2.bin", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) ) |
| 6292 | 6292 | ROM_LOAD( "256-v3.bin", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) |
| r6428 | r6429 | |
| 6317 | 6317 | /* Bootleg m1 is 128k, data is identical */ |
| 6318 | 6318 | NEO_BIOS_AUDIO_512K( "260-m1.bin", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) ) |
| 6319 | 6319 | |
| 6320 | ROM_REGION( 0x400000, "ym", 0 ) | |
| 6320 | ROM_REGION( 0x400000, "ymsnd", 0 ) | |
| 6321 | 6321 | ROM_LOAD( "nitd-v1.bin", 0x000000, 0x200000, CRC(79008868) SHA1(90bd6aaefd37341297ab1f4ae7246e52facd87d0) ) |
| 6322 | 6322 | ROM_LOAD( "nitd-v2.bin", 0x200000, 0x200000, CRC(728558F9) SHA1(309aa7c933c199b2e540a601b363e7af8744fe00) ) |
| 6323 | 6323 | |
| r6428 | r6429 | |
| 6342 | 6342 | NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) ) |
| 6343 | 6343 | |
| 6344 | 6344 | /* sound roms are identical to kof2001 */ |
| 6345 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6345 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6346 | 6346 | ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) |
| 6347 | 6347 | ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) |
| 6348 | 6348 | ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) |
| r6428 | r6429 | |
| 6377 | 6377 | NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) ) |
| 6378 | 6378 | |
| 6379 | 6379 | /* sound roms are identical to kof2001 */ |
| 6380 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6380 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6381 | 6381 | ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) |
| 6382 | 6382 | ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) |
| 6383 | 6383 | ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) |
| r6428 | r6429 | |
| 6413 | 6413 | NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) ) |
| 6414 | 6414 | |
| 6415 | 6415 | /* Original set has 2x64 mbit sound roms */ |
| 6416 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6416 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6417 | 6417 | ROM_LOAD( "262-v1-08-e0.bin", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) |
| 6418 | 6418 | ROM_LOAD( "262-v2-08-e0.bin", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) |
| 6419 | 6419 | ROM_LOAD( "262-v3-08-e0.bin", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) |
| r6428 | r6429 | |
| 6445 | 6445 | /* Encrypted */ |
| 6446 | 6446 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.bin", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) ) |
| 6447 | 6447 | |
| 6448 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6448 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6449 | 6449 | /* Encrypted */ |
| 6450 | 6450 | ROM_LOAD( "263-v1.bin", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) |
| 6451 | 6451 | ROM_LOAD( "263-v2.bin", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) |
| r6428 | r6429 | |
| 6474 | 6474 | /* Encrypted */ |
| 6475 | 6475 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 6476 | 6476 | |
| 6477 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6477 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6478 | 6478 | /* Encrypted */ |
| 6479 | 6479 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 6480 | 6480 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 6502 | 6502 | /* Encrypted */ |
| 6503 | 6503 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 6504 | 6504 | |
| 6505 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6505 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6506 | 6506 | /* Encrypted */ |
| 6507 | 6507 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 6508 | 6508 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 6531 | 6531 | /* Encrypted */ |
| 6532 | 6532 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 6533 | 6533 | |
| 6534 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6534 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6535 | 6535 | /* Encrypted */ |
| 6536 | 6536 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 6537 | 6537 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 6560 | 6560 | /* Encrypted */ |
| 6561 | 6561 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 6562 | 6562 | |
| 6563 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6563 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6564 | 6564 | /* Encrypted */ |
| 6565 | 6565 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 6566 | 6566 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 6587 | 6587 | /* Encrypted */ |
| 6588 | 6588 | NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.bin", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) ) |
| 6589 | 6589 | |
| 6590 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6590 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6591 | 6591 | /* Encrypted */ |
| 6592 | 6592 | ROM_LOAD( "265-v1.bin", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) |
| 6593 | 6593 | ROM_LOAD( "265-v2.bin", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) |
| r6428 | r6429 | |
| 6617 | 6617 | |
| 6618 | 6618 | NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) ) |
| 6619 | 6619 | |
| 6620 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6620 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6621 | 6621 | ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) |
| 6622 | 6622 | ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) |
| 6623 | 6623 | |
| r6428 | r6429 | |
| 6655 | 6655 | NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) ) |
| 6656 | 6656 | //NEO_BIOS_AUDIO_128K( "5004-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) ) |
| 6657 | 6657 | |
| 6658 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6658 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6659 | 6659 | ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) |
| 6660 | 6660 | ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) |
| 6661 | 6661 | |
| r6428 | r6429 | |
| 6689 | 6689 | |
| 6690 | 6690 | NEO_BIOS_AUDIO_128K( "5006-m1.bin", CRC(9050bfe7) SHA1(765bf3d954f775231b7ef2504bb844cd0b29e3f7) ) |
| 6691 | 6691 | |
| 6692 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6692 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6693 | 6693 | ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) |
| 6694 | 6694 | ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) |
| 6695 | 6695 | |
| r6428 | r6429 | |
| 6722 | 6722 | |
| 6723 | 6723 | NEO_BIOS_AUDIO_128K( "k2k4s-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) ) |
| 6724 | 6724 | |
| 6725 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6725 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6726 | 6726 | ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) ) |
| 6727 | 6727 | ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) ) |
| 6728 | 6728 | |
| r6428 | r6429 | |
| 6755 | 6755 | |
| 6756 | 6756 | NEO_BIOS_AUDIO_128K( "mart-m1.bin", CRC(3ea96ab1) SHA1(e5053c4312f658faed2a34e38325a22ef792d384) ) |
| 6757 | 6757 | |
| 6758 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6758 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6759 | 6759 | ROM_LOAD( "mart-v1.bin", 0x000000, 0x400000, CRC(352b0a07) SHA1(19f7cc12f3f6d0fda9c7449816c4c32367447897) ) |
| 6760 | 6760 | ROM_LOAD16_WORD_SWAP( "mart-v2.bin", 0x400000, 0x400000, CRC(1e9bd59e) SHA1(0f754e780d0ebb815a92a45ad55f85f6d0181b70) ) |
| 6761 | 6761 | ROM_LOAD( "mart-v3.bin", 0x800000, 0x400000, CRC(e8362fcc) SHA1(42d558fd80cabe22a1c09a1fa75741afbcf46b7c) ) |
| r6428 | r6429 | |
| 6792 | 6792 | /* Encrypted */ |
| 6793 | 6793 | NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.bin", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) ) |
| 6794 | 6794 | |
| 6795 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6795 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6796 | 6796 | /* Encrypted */ |
| 6797 | 6797 | ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) |
| 6798 | 6798 | ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) |
| r6428 | r6429 | |
| 6821 | 6821 | |
| 6822 | 6822 | NEO_BIOS_AUDIO_128K( "um1", CRC(f424368a) SHA1 (5e5bbcaeb82bed2ee17df08f005ca20ad1030723) ) |
| 6823 | 6823 | |
| 6824 | ROM_REGION( 0x380000, "ym", 0 ) | |
| 6824 | ROM_REGION( 0x380000, "ymsnd", 0 ) | |
| 6825 | 6825 | /* 0x000000-0x1fffff empty */ |
| 6826 | 6826 | ROM_LOAD( "u8", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) ) |
| 6827 | 6827 | ROM_LOAD( "u9", 0x300000, 0x080000, CRC(0a548948) SHA1 (e1e4afd17811cb60401c14fbcf0465035165f4fb) ) |
| r6428 | r6429 | |
| 6857 | 6857 | |
| 6858 | 6858 | ROM_Y_ZOOM |
| 6859 | 6859 | |
| 6860 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6860 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6861 | 6861 | ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) |
| 6862 | 6862 | ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) |
| 6863 | 6863 | ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) |
| r6428 | r6429 | |
| 6894 | 6894 | ROM_CONTINUE( 0x00000, 0x10000 ) |
| 6895 | 6895 | ROM_COPY( "audiocpu", 0x00000, 0x10000, 0x10000 ) |
| 6896 | 6896 | |
| 6897 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6897 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6898 | 6898 | ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) |
| 6899 | 6899 | ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) |
| 6900 | 6900 | ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) |
| r6428 | r6429 | |
| 6936 | 6936 | |
| 6937 | 6937 | ROM_Y_ZOOM |
| 6938 | 6938 | |
| 6939 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6939 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6940 | 6940 | ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) |
| 6941 | 6941 | ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) |
| 6942 | 6942 | ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) |
| r6428 | r6429 | |
| 6972 | 6972 | ROM_CONTINUE( 0x00000, 0x10000 ) |
| 6973 | 6973 | ROM_COPY( "audiocpu", 0x00000, 0x10000, 0x10000 ) |
| 6974 | 6974 | |
| 6975 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 6975 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 6976 | 6976 | ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) |
| 6977 | 6977 | ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) |
| 6978 | 6978 | ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) |
| r6428 | r6429 | |
| 7002 | 7002 | |
| 7003 | 7003 | NEO_BIOS_AUDIO_128K( "ssv-m1.bin", CRC(18114fb1) SHA1(016dc2f328340f3637a9bff373a20973df29f6b8) ) |
| 7004 | 7004 | |
| 7005 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 7005 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 7006 | 7006 | ROM_LOAD( "ssv-v1.bin", 0x000000, 0x400000, CRC(a3609761) SHA1(6dce1dbfd228c739b3716ae1cf08fd7f925d8650) ) |
| 7007 | 7007 | ROM_LOAD( "ssv-v2.bin", 0x400000, 0x400000, CRC(cbd6ebd5) SHA1(00211be3fa32035b0947ac65920ea8acae7bfae2) ) |
| 7008 | 7008 | ROM_LOAD( "ssv-v3.bin", 0x800000, 0x400000, CRC(6f1c2703) SHA1(8015df3d788cb7926ebbcda64a96964fe102ba27) ) |
| r6428 | r6429 | |
| 7030 | 7030 | |
| 7031 | 7031 | NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) ) |
| 7032 | 7032 | |
| 7033 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 7033 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 7034 | 7034 | /* Encrypted */ |
| 7035 | 7035 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 7036 | 7036 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 7059 | 7059 | |
| 7060 | 7060 | NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) ) |
| 7061 | 7061 | |
| 7062 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 7062 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 7063 | 7063 | /* Encrypted */ |
| 7064 | 7064 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 7065 | 7065 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 7088 | 7088 | |
| 7089 | 7089 | NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) ) |
| 7090 | 7090 | |
| 7091 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 7091 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 7092 | 7092 | /* Encrypted */ |
| 7093 | 7093 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 7094 | 7094 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 7115 | 7115 | |
| 7116 | 7116 | NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) ) |
| 7117 | 7117 | |
| 7118 | ROM_REGION( 0x1000000, "ym", 0 ) | |
| 7118 | ROM_REGION( 0x1000000, "ymsnd", 0 ) | |
| 7119 | 7119 | /* Encrypted */ |
| 7120 | 7120 | ROM_LOAD( "271-v1c.bin", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) |
| 7121 | 7121 | ROM_LOAD( "271-v2c.bin", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) |
| r6428 | r6429 | |
| 7146 | 7146 | |
| 7147 | 7147 | NEO_BIOS_AUDIO_64K( "dig-m1.bin", CRC(833cdf1b) SHA1(3a92c79adbe0d37956ea46a4746d6f1cbf7d2c14) ) |
| 7148 | 7148 | |
| 7149 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 7149 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 7150 | 7150 | ROM_LOAD( "dig-v1.bin", 0x000000, 0x080000, CRC(ee15bda4) SHA1(fe2206728e6efd02d6302869a98b196eb19a17df) ) |
| 7151 | 7151 | |
| 7152 | 7152 | NO_DELTAT_REGION |
| r6428 | r6429 | |
| 7206 | 7206 | ROM_LOAD( "pt004-m1", 0x00000, 0x20000, CRC(6d77cdaa) SHA1(f88a93b3085b18b6663b4e51fccaa41958aafae1) ) |
| 7207 | 7207 | ROM_RELOAD( 0x10000, 0x20000 ) |
| 7208 | 7208 | |
| 7209 | ROM_REGION( 0x200000, "ym", 0 ) | |
| 7209 | ROM_REGION( 0x200000, "ymsnd", 0 ) | |
| 7210 | 7210 | ROM_LOAD( "pt004-v1", 0x000000, 0x200000, CRC(118a84fd) SHA1(9059297a42a329eca47a82327c301853219013bd) ) |
| 7211 | 7211 | |
| 7212 | 7212 | NO_DELTAT_REGION |
| r6428 | r6429 | |
|---|---|---|
| 302 | 302 | AM_RANGE(0xe6, 0xe6) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w) |
| 303 | 303 | AM_RANGE(0xe7, 0xe7) AM_DEVWRITE("msm", fromance_adpcm_reset_w) |
| 304 | 304 | 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) | |
| 306 | 306 | ADDRESS_MAP_END |
| 307 | 307 | |
| 308 | 308 | static ADDRESS_MAP_START( idolmj_sub_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 316 | 316 | AM_RANGE(0x26, 0x26) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w) |
| 317 | 317 | AM_RANGE(0x27, 0x27) AM_DEVWRITE("msm", fromance_adpcm_reset_w) |
| 318 | 318 | 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) | |
| 320 | 320 | ADDRESS_MAP_END |
| 321 | 321 | |
| 322 | 322 | static ADDRESS_MAP_START( fromance_sub_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 330 | 330 | AM_RANGE(0x26, 0x26) AM_READWRITE(fromance_commanddata_r, fromance_busycheck_sub_w) |
| 331 | 331 | AM_RANGE(0x27, 0x27) AM_DEVWRITE("msm", fromance_adpcm_reset_w) |
| 332 | 332 | 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) | |
| 334 | 334 | ADDRESS_MAP_END |
| 335 | 335 | |
| 336 | 336 | |
| r6428 | r6429 | |
| 1002 | 1002 | /* sound hardware */ |
| 1003 | 1003 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1004 | 1004 | |
| 1005 | MDRV_SOUND_ADD("ay", AY8910, 12000000/6) | |
| 1005 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6) | |
| 1006 | 1006 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 1007 | 1007 | |
| 1008 | 1008 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
| 1040 | 1040 | /* sound hardware */ |
| 1041 | 1041 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1042 | 1042 | |
| 1043 | MDRV_SOUND_ADD("ay", AY8910, 12000000/6) | |
| 1043 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6) | |
| 1044 | 1044 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 1045 | 1045 | |
| 1046 | 1046 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
| 1078 | 1078 | /* sound hardware */ |
| 1079 | 1079 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1080 | 1080 | |
| 1081 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 1081 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 1082 | 1082 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 1083 | 1083 | |
| 1084 | 1084 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
|---|---|---|
| 223 | 223 | /* sound hardware */ |
| 224 | 224 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 225 | 225 | |
| 226 | MDRV_SOUND_ADD("ym", YM2151, YM_CLOCK) | |
| 226 | MDRV_SOUND_ADD("ymsnd", YM2151, YM_CLOCK) | |
| 227 | 227 | MDRV_SOUND_CONFIG(t5182_ym2151_interface) |
| 228 | 228 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 229 | 229 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 1003 | 1003 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1004 | 1004 | ADDRESS_MAP_UNMAP_HIGH |
| 1005 | 1005 | 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) | |
| 1007 | 1007 | AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w) |
| 1008 | 1008 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 1009 | 1009 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1950 | 1950 | /* sound hardware */ |
| 1951 | 1951 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1952 | 1952 | |
| 1953 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 1953 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1954 | 1954 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1955 | 1955 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43) |
| 1956 | 1956 | |
| r6428 | r6429 | |
| 1964 | 1964 | MDRV_DEVICE_REMOVE("n7751") |
| 1965 | 1965 | MDRV_DEVICE_REMOVE("dac") |
| 1966 | 1966 | |
| 1967 | MDRV_SOUND_REPLACE("ym", YM2151, 4000000) | |
| 1967 | MDRV_SOUND_REPLACE("ymsnd", YM2151, 4000000) | |
| 1968 | 1968 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1969 | 1969 | MACHINE_DRIVER_END |
| 1970 | 1970 |
| r6428 | r6429 | |
|---|---|---|
| 1167 | 1167 | static ADDRESS_MAP_START( auido_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1168 | 1168 | /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */ |
| 1169 | 1169 | 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) | |
| 1171 | 1171 | AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */ |
| 1172 | 1172 | AM_RANGE(0x08, 0x08) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_f000_f7ff_r) |
| 1173 | 1173 | AM_RANGE(0x09, 0x09) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_e000_efff_r) |
| r6428 | r6429 | |
| 1337 | 1337 | /* audio hardware */ |
| 1338 | 1338 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1339 | 1339 | |
| 1340 | MDRV_SOUND_ADD("ym", YM2610, NEOGEO_YM2610_CLOCK) | |
| 1340 | MDRV_SOUND_ADD("ymsnd", YM2610, NEOGEO_YM2610_CLOCK) | |
| 1341 | 1341 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1342 | 1342 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1343 | 1343 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 452 | 452 | ADDRESS_MAP_UNMAP_HIGH |
| 453 | 453 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 454 | 454 | 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) | |
| 456 | 456 | AM_RANGE(0xe000, 0xe0ff) AM_MIRROR(0x0f00) AM_DEVREADWRITE("pcm", sega_pcm_r, sega_pcm_w) |
| 457 | 457 | ADDRESS_MAP_END |
| 458 | 458 | |
| r6428 | r6429 | |
| 473 | 473 | static ADDRESS_MAP_START( sound_portmap_2151, ADDRESS_SPACE_IO, 8 ) |
| 474 | 474 | ADDRESS_MAP_UNMAP_HIGH |
| 475 | 475 | 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) | |
| 477 | 477 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 478 | 478 | ADDRESS_MAP_END |
| 479 | 479 | |
| r6428 | r6429 | |
| 939 | 939 | /* sound hardware */ |
| 940 | 940 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 941 | 941 | |
| 942 | MDRV_SOUND_ADD("ym", YM2203, MASTER_CLOCK_8MHz/2) | |
| 942 | MDRV_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK_8MHz/2) | |
| 943 | 943 | MDRV_SOUND_CONFIG(ym2203_config) |
| 944 | 944 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.13) |
| 945 | 945 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.13) |
| r6428 | r6429 | |
| 1005 | 1005 | /* sound hardware */ |
| 1006 | 1006 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1007 | 1007 | |
| 1008 | MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK_8MHz/2) | |
| 1008 | MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2) | |
| 1009 | 1009 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1010 | 1010 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 1011 | 1011 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.43) |
| r6428 | r6429 | |
|---|---|---|
| 274 | 274 | static ADDRESS_MAP_START( statriv2_io_map, ADDRESS_SPACE_IO, 8 ) |
| 275 | 275 | AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi", ppi8255_r, ppi8255_w) |
| 276 | 276 | 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) | |
| 279 | 279 | AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_r, tms9927_w) |
| 280 | 280 | ADDRESS_MAP_END |
| 281 | 281 | |
| 282 | 282 | static ADDRESS_MAP_START( statusbj_io, ADDRESS_SPACE_IO, 8 ) |
| 283 | 283 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 284 | 284 | 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) | |
| 287 | 287 | AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_r, tms9927_w) |
| 288 | 288 | ADDRESS_MAP_END |
| 289 | 289 | |
| r6428 | r6429 | |
| 591 | 591 | /* sound hardware */ |
| 592 | 592 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 593 | 593 | |
| 594 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8) | |
| 594 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8) | |
| 595 | 595 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 596 | 596 | MACHINE_DRIVER_END |
| 597 | 597 |
| r6428 | r6429 | |
|---|---|---|
| 71 | 71 | AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") |
| 72 | 72 | AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5") |
| 73 | 73 | 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) | |
| 75 | 75 | ADDRESS_MAP_END |
| 76 | 76 | |
| 77 | 77 | static INPUT_PORTS_START( carrera ) |
| r6428 | r6429 | |
| 338 | 338 | /* sound hardware */ |
| 339 | 339 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 340 | 340 | |
| 341 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/12) | |
| 341 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12) | |
| 342 | 342 | MDRV_SOUND_CONFIG(ay8910_config) |
| 343 | 343 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 344 | 344 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 141 | 141 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) /* Sound latch read */ |
| 142 | 142 | // AM_RANGE(0xd000, 0xd000) AM_WRITENOP /* ??? */ |
| 143 | 143 | 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 */ | |
| 145 | 145 | ADDRESS_MAP_END |
| 146 | 146 | |
| 147 | 147 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 272 | 272 | /* sound hardware */ |
| 273 | 273 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 274 | 274 | |
| 275 | MDRV_SOUND_ADD("ym", YM2151, 24000000/6) | |
| 275 | MDRV_SOUND_ADD("ymsnd", YM2151, 24000000/6) | |
| 276 | 276 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 277 | 277 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 278 | 278 |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 26 | static UINT8 *lo_vram,*hi_vram,*cram; | |
| 27 | static tilemap *sc0_tilemap; | |
| 28 | ||
| 29 | static 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 | ||
| 41 | static VIDEO_START(d9final) | |
| 42 | { | |
| 43 | sc0_tilemap = tilemap_create(machine, get_sc0_tile_info,tilemap_scan_rows,8,8,64,32); | |
| 44 | } | |
| 45 | ||
| 46 | static VIDEO_UPDATE(d9final) | |
| 47 | { | |
| 48 | tilemap_draw(bitmap,cliprect,sc0_tilemap,0,0); | |
| 49 | return 0; | |
| 50 | } | |
| 51 | ||
| 52 | static WRITE8_HANDLER( sc0_lovram ) | |
| 53 | { | |
| 54 | lo_vram[offset] = data; | |
| 55 | tilemap_mark_tile_dirty(sc0_tilemap,offset); | |
| 56 | } | |
| 57 | ||
| 58 | static WRITE8_HANDLER( sc0_hivram ) | |
| 59 | { | |
| 60 | hi_vram[offset] = data; | |
| 61 | tilemap_mark_tile_dirty(sc0_tilemap,offset); | |
| 62 | } | |
| 63 | ||
| 64 | static WRITE8_HANDLER( sc0_cram ) | |
| 65 | { | |
| 66 | cram[offset] = data; | |
| 67 | tilemap_mark_tile_dirty(sc0_tilemap,offset); | |
| 68 | } | |
| 69 | ||
| 70 | static 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. */ | |
| 80 | static READ8_HANDLER( prot_latch_r ) | |
| 81 | { | |
| 82 | // printf("PC=%06x\n",cpu_get_pc(space->cpu)); | |
| 83 | ||
| 84 | return 0x04; | |
| 85 | } | |
| 86 | ||
| 87 | ||
| 88 | static 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) | |
| 98 | ADDRESS_MAP_END | |
| 99 | ||
| 100 | static 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") | |
| 111 | ADDRESS_MAP_END | |
| 112 | ||
| 113 | static 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" ) | |
| 234 | INPUT_PORTS_END | |
| 235 | ||
| 236 | static 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 | ||
| 247 | static GFXDECODE_START( d9final ) | |
| 248 | GFXDECODE_ENTRY( "gfx1", 0, tiles16x8_layout, 0, 16*4 ) | |
| 249 | GFXDECODE_END | |
| 250 | ||
| 251 | static MACHINE_RESET( d9final ) | |
| 252 | { | |
| 253 | UINT8 *ROM = memory_region(machine, "maincpu"); | |
| 254 | ||
| 255 | memory_set_bankptr(machine, 1, &ROM[0x10000]); | |
| 256 | } | |
| 257 | ||
| 258 | static 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) | |
| 286 | MACHINE_DRIVER_END | |
| 287 | ||
| 288 | ||
| 289 | ROM_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) ) | |
| 299 | ROM_END | |
| 300 | ||
| 301 | ||
| 302 | ||
| 303 | GAME( 1992, d9final, 0, d9final, d9final, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Blue Print memory map (preliminary) | |
| 3 | Blue Print memory map (preliminary) | |
| 4 | 4 | |
| 5 | driver by Nicola Salmoria | |
| 5 | driver by Nicola Salmoria | |
| 6 | 6 | |
| 7 | 7 | |
| 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 | |
| 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 | |
| 14 | 14 | |
| 15 | read: | |
| 16 | c000 IN0 | |
| 17 | c001 IN1 | |
| 18 | c003 read dip switches from the second CPU | |
| 15 | read: | |
| 16 | c000 IN0 | |
| 17 | c001 IN1 | |
| 18 | c003 read dip switches from the second CPU | |
| 19 | 19 | |
| 20 | e000 Watchdog reset | |
| 20 | e000 Watchdog reset | |
| 21 | 21 | |
| 22 | write: | |
| 23 | c000 bit 0,1 = coin counters | |
| 24 | d000 command for the second CPU | |
| 25 | e000 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 | |
| 26 | 26 | |
| 27 | CPU #2 | |
| 28 | 0000-0fff ROM | |
| 29 | 2000-2fff ROM | |
| 30 | 4000-43ff RAM | |
| 27 | CPU #2 | |
| 28 | 0000-0fff ROM | |
| 29 | 2000-2fff ROM | |
| 30 | 4000-43ff RAM | |
| 31 | 31 | |
| 32 | read: | |
| 33 | 6002 8910 #0 read | |
| 34 | 8002 8910 #1 read | |
| 32 | read: | |
| 33 | 6002 8910 #0 read | |
| 34 | 8002 8910 #1 read | |
| 35 | 35 | |
| 36 | write: | |
| 37 | 6000 8910 #0 control | |
| 38 | 6001 8910 #0 write | |
| 39 | 8000 8910 #1 control | |
| 40 | 8001 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 | |
| 41 | 41 | |
| 42 | ***************************************************************************/ | |
| 43 | 42 | |
| 44 | /* | |
| 45 | ||
| 46 | 43 | TODO: |
| 47 | 44 | |
| 48 | 45 | - the cross hatch pattern test in service mode is too fast, each phase |
| r6428 | r6429 | |
| 52 | 49 | DIP locations verified for: |
| 53 | 50 | - blueprnt (manual) |
| 54 | 51 | |
| 55 | */ | |
| 52 | ***************************************************************************/ | |
| 56 | 53 | |
| 54 | ||
| 57 | 55 | #include "driver.h" |
| 58 | 56 | #include "deprecat.h" |
| 59 | 57 | #include "cpu/z80/z80.h" |
| 60 | 58 | #include "sound/ay8910.h" |
| 59 | #include "blueprnt.h" | |
| 61 | 60 | |
| 62 | extern UINT8 *blueprnt_scrollram; | |
| 61 | /************************************* | |
| 62 | * | |
| 63 | * Memory handlers | |
| 64 | * | |
| 65 | *************************************/ | |
| 63 | 66 | |
| 64 | extern WRITE8_HANDLER( blueprnt_videoram_w ); | |
| 65 | extern WRITE8_HANDLER( blueprnt_colorram_w ); | |
| 66 | extern WRITE8_HANDLER( blueprnt_flipscreen_w ); | |
| 67 | ||
| 68 | extern PALETTE_INIT( blueprnt ); | |
| 69 | extern VIDEO_START( blueprnt ); | |
| 70 | extern VIDEO_UPDATE( blueprnt ); | |
| 71 | ||
| 72 | /* Read/Write Handlers */ | |
| 73 | ||
| 74 | static int dipsw; | |
| 75 | ||
| 76 | 67 | static WRITE8_DEVICE_HANDLER( dipsw_w ) |
| 77 | 68 | { |
| 78 | dipsw = data; | |
| 69 | blueprnt_state *state = (blueprnt_state *)device->machine->driver_data; | |
| 70 | state->dipsw = data; | |
| 79 | 71 | } |
| 80 | 72 | |
| 81 | 73 | static READ8_HANDLER( blueprnt_sh_dipsw_r ) |
| 82 | 74 | { |
| 83 | return dipsw; | |
| 75 | blueprnt_state *state = (blueprnt_state *)space->machine->driver_data; | |
| 76 | return state->dipsw; | |
| 84 | 77 | } |
| 85 | 78 | |
| 86 | 79 | static WRITE8_HANDLER( blueprnt_sound_command_w ) |
| r6428 | r6429 | |
| 95 | 88 | coin_counter_w(1, data & 0x02); |
| 96 | 89 | } |
| 97 | 90 | |
| 98 | /* Memory Maps */ | |
| 91 | /************************************* | |
| 92 | * | |
| 93 | * Address maps | |
| 94 | * | |
| 95 | *************************************/ | |
| 99 | 96 | |
| 100 | 97 | static ADDRESS_MAP_START( blueprnt_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 101 | 98 | AM_RANGE(0x0000, 0x7fff) AM_ROM // service mode checks for 8 chips = 64K |
| 102 | 99 | 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) | |
| 106 | 103 | AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") AM_WRITE(blueprnt_coin_counter_w) |
| 107 | 104 | AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") |
| 108 | 105 | AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r) |
| 109 | 106 | AM_RANGE(0xd000, 0xd000) AM_WRITE(blueprnt_sound_command_w) |
| 110 | 107 | 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( | |
| 108 | AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_BASE_MEMBER(blueprnt_state, colorram) | |
| 112 | 109 | ADDRESS_MAP_END |
| 113 | 110 | |
| 114 | 111 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 121 | 118 | AM_RANGE(0x8002, 0x8002) AM_DEVREAD("ay2", ay8910_r) |
| 122 | 119 | ADDRESS_MAP_END |
| 123 | 120 | |
| 124 | /* Input Ports */ | |
| 125 | 121 | |
| 122 | /************************************* | |
| 123 | * | |
| 124 | * Input ports | |
| 125 | * | |
| 126 | *************************************/ | |
| 127 | ||
| 126 | 128 | static INPUT_PORTS_START( blueprnt ) |
| 127 | 129 | PORT_START("P1") |
| 128 | 130 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| r6428 | r6429 | |
| 223 | 225 | PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DILSW2:8" ) |
| 224 | 226 | INPUT_PORTS_END |
| 225 | 227 | |
| 226 | /* Graphics Layouts */ | |
| 227 | 228 | |
| 229 | /************************************* | |
| 230 | * | |
| 231 | * Graphics definitions | |
| 232 | * | |
| 233 | *************************************/ | |
| 234 | ||
| 228 | 235 | static const gfx_layout spritelayout = |
| 229 | 236 | { |
| 230 | 237 | 8,16, /* 8*16 sprites */ |
| r6428 | r6429 | |
| 237 | 244 | 16*8 /* every sprite takes 16 consecutive bytes */ |
| 238 | 245 | }; |
| 239 | 246 | |
| 240 | /* Graphics Decode Info */ | |
| 241 | 247 | |
| 242 | 248 | static GFXDECODE_START( blueprnt ) |
| 243 | 249 | GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 0, 128 ) |
| 244 | 250 | GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 128*4, 1 ) |
| 245 | 251 | GFXDECODE_END |
| 246 | 252 | |
| 247 | /* Sound Interfaces */ | |
| 248 | 253 | |
| 254 | /************************************* | |
| 255 | * | |
| 256 | * Sound interfaces | |
| 257 | * | |
| 258 | *************************************/ | |
| 259 | ||
| 249 | 260 | static const ay8910_interface ay8910_interface_1 = |
| 250 | 261 | { |
| 251 | 262 | AY8910_LEGACY_OUTPUT, |
| r6428 | r6429 | |
| 266 | 277 | DEVCB_NULL |
| 267 | 278 | }; |
| 268 | 279 | |
| 269 | /* Machine Driver */ | |
| 270 | 280 | |
| 281 | /************************************* | |
| 282 | * | |
| 283 | * Machine driver | |
| 284 | * | |
| 285 | *************************************/ | |
| 286 | ||
| 287 | static MACHINE_START( blueprnt ) | |
| 288 | { | |
| 289 | blueprnt_state *state = (blueprnt_state *)machine->driver_data; | |
| 290 | ||
| 291 | state_save_register_global(machine, state->dipsw); | |
| 292 | } | |
| 293 | ||
| 294 | static 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 | ||
| 271 | 303 | static MACHINE_DRIVER_START( blueprnt ) |
| 272 | // basic machine hardware | |
| 304 | ||
| 305 | /* driver data */ | |
| 306 | MDRV_DRIVER_DATA(blueprnt_state) | |
| 307 | ||
| 308 | /* basic machine hardware */ | |
| 273 | 309 | MDRV_CPU_ADD("maincpu", Z80, 7000000/2) // 3.5 MHz |
| 274 | 310 | MDRV_CPU_PROGRAM_MAP(blueprnt_map) |
| 275 | 311 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| r6428 | r6429 | |
| 277 | 313 | MDRV_CPU_ADD("audiocpu", Z80, 10000000/2/2/2) // 1.25 MHz (2H) |
| 278 | 314 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 279 | 315 | 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 | |
| 282 | 317 | |
| 318 | MDRV_MACHINE_START(blueprnt) | |
| 319 | MDRV_MACHINE_RESET(blueprnt) | |
| 320 | ||
| 321 | /* video hardware */ | |
| 283 | 322 | MDRV_SCREEN_ADD("screen", RASTER) |
| 284 | 323 | MDRV_SCREEN_REFRESH_RATE(60) |
| 285 | 324 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| r6428 | r6429 | |
| 294 | 333 | MDRV_VIDEO_START(blueprnt) |
| 295 | 334 | MDRV_VIDEO_UPDATE(blueprnt) |
| 296 | 335 | |
| 297 | / | |
| 336 | /* sound hardware */ | |
| 298 | 337 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 299 | 338 | |
| 300 | 339 | MDRV_SOUND_ADD("ay1", AY8910, 10000000/2/2/2) |
| r6428 | r6429 | |
| 306 | 345 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 307 | 346 | MACHINE_DRIVER_END |
| 308 | 347 | |
| 309 | /* ROMs */ | |
| 310 | 348 | |
| 349 | /************************************* | |
| 350 | * | |
| 351 | * ROM definition(s) | |
| 352 | * | |
| 353 | *************************************/ | |
| 354 | ||
| 311 | 355 | ROM_START( blueprnt ) |
| 312 | 356 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 313 | 357 | ROM_LOAD( "bp-1.1m", 0x0000, 0x1000, CRC(b20069a6) SHA1(aa0a61c898ec58fc4872a24666f422e1abdc09f3) ) |
| r6428 | r6429 | |
| 375 | 419 | ROM_LOAD( "r13", 0x2000, 0x1000, CRC(8b3e8c32) SHA1(65e2bf4a9f45be39419d85b2ee46b9c5eeff8f57) ) |
| 376 | 420 | ROM_END |
| 377 | 421 | |
| 378 | /* Game Drivers */ | |
| 379 | 422 | |
| 380 | GAME( 1982, blueprnt, 0, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Bally Midway", "Blue Print (Midway)", 0 ) | |
| 381 | GAME( 1982, blueprntj,blueprnt, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Jaleco", "Blue Print (Jaleco)", 0 ) | |
| 382 | GAME( 1983, saturn, 0, blueprnt, saturn, 0, ROT270, "[Zilec Electronics] Jaleco", "Saturn", 0 ) | |
| 423 | /************************************* | |
| 424 | * | |
| 425 | * Game driver(s) | |
| 426 | * | |
| 427 | *************************************/ | |
| 428 | ||
| 429 | GAME( 1982, blueprnt, 0, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Bally Midway", "Blue Print (Midway)", GAME_SUPPORTS_SAVE ) | |
| 430 | GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, 0, ROT270, "[Zilec Electronics] Jaleco", "Blue Print (Jaleco)", GAME_SUPPORTS_SAVE ) | |
| 431 | GAME( 1983, saturn, 0, blueprnt, saturn, 0, ROT270, "[Zilec Electronics] Jaleco", "Saturn", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 128 | 128 | |
| 129 | 129 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 130 | 130 | 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) | |
| 132 | 132 | AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("oki", okim6295_w) // TWO addresses! |
| 133 | 133 | AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_r) |
| 134 | 134 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| r6428 | r6429 | |
| 287 | 287 | /* sound hardware */ |
| 288 | 288 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 289 | 289 | |
| 290 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 290 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 291 | 291 | MDRV_SOUND_CONFIG(ym2151_config) |
| 292 | 292 | MDRV_SOUND_ROUTE(0, "mono", 0.80) |
| 293 | 293 | MDRV_SOUND_ROUTE(1, "mono", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 1166 | 1166 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 1167 | 1167 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2) |
| 1168 | 1168 | 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) | |
| 1170 | 1170 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 1171 | 1171 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 1172 | 1172 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 1182 | 1182 | static ADDRESS_MAP_START( cameltrya_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1183 | 1183 | AM_RANGE(0x0000, 0x7fff) AM_ROM // I can't see a bank control, but there ARE some bytes past 0x8000 |
| 1184 | 1184 | 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) | |
| 1186 | 1186 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 1187 | 1187 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 1188 | 1188 | // AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w) // probably controlling sample player? |
| r6428 | r6429 | |
| 3196 | 3196 | /* sound hardware */ |
| 3197 | 3197 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3198 | 3198 | |
| 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 */ | |
| 3200 | 3200 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3201 | 3201 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3202 | 3202 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3641 | 3641 | /* sound hardware */ |
| 3642 | 3642 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3643 | 3643 | |
| 3644 | MDRV_SOUND_ADD("ym", YM2203, 24000000/8) /* verified on pcb */ | |
| 3644 | MDRV_SOUND_ADD("ymsnd", YM2203, 24000000/8) /* verified on pcb */ | |
| 3645 | 3645 | MDRV_SOUND_CONFIG(ym2203_config) |
| 3646 | 3646 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 3647 | 3647 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 3717 | 3717 | ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) |
| 3718 | 3718 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3719 | 3719 | |
| 3720 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3720 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3721 | 3721 | ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) |
| 3722 | 3722 | |
| 3723 | 3723 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3755 | 3755 | ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) |
| 3756 | 3756 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3757 | 3757 | |
| 3758 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3758 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3759 | 3759 | ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) |
| 3760 | 3760 | |
| 3761 | 3761 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3794 | 3794 | ROM_LOAD( "b82_10.16", 0x00000, 0x04000, CRC(a38aaaed) SHA1(d476ea516a797e71e0306da54c17ed1759fe1ccd) ) |
| 3795 | 3795 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3796 | 3796 | |
| 3797 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3797 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3798 | 3798 | ROM_LOAD( "b82-02.1", 0x00000, 0x80000, CRC(5dd06bdd) SHA1(6eeaec6743805ba429b0ef58a530bc0740646324) ) |
| 3799 | 3799 | |
| 3800 | 3800 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3828 | 3828 | ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) |
| 3829 | 3829 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3830 | 3830 | |
| 3831 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3831 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3832 | 3832 | ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) |
| 3833 | 3833 | |
| 3834 | 3834 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 3854 | 3854 | ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) |
| 3855 | 3855 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3856 | 3856 | |
| 3857 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3857 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3858 | 3858 | ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) |
| 3859 | 3859 | |
| 3860 | 3860 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 3880 | 3880 | ROM_LOAD( "b95-08.bin", 0x00000, 0x04000, CRC(b5aa49e1) SHA1(83b0a3434e0d0b9aa581c1acdd0c70308362b923) ) |
| 3881 | 3881 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3882 | 3882 | |
| 3883 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3883 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3884 | 3884 | ROM_LOAD( "b95-04.bin", 0x00000, 0x80000, CRC(ac4c1716) SHA1(06a9def7fa3bd739438f4a1d7b55f70eb904bf54) ) |
| 3885 | 3885 | |
| 3886 | 3886 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 3904 | 3904 | ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) ) |
| 3905 | 3905 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3906 | 3906 | |
| 3907 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3907 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3908 | 3908 | ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) ) |
| 3909 | 3909 | |
| 3910 | 3910 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3937 | 3937 | ROM_LOAD( "c11-12.3", 0x00000, 0x04000, CRC(b11094f1) SHA1(a01e9f7d1f616bb379eaa85ad81b94173b067782) ) |
| 3938 | 3938 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3939 | 3939 | |
| 3940 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3940 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3941 | 3941 | ROM_LOAD( "c11-01.29", 0x00000, 0x80000, CRC(fd1ea532) SHA1(481698b747a421a17bfb8cef96065712d4f3997f) ) |
| 3942 | 3942 | |
| 3943 | 3943 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3965 | 3965 | ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) |
| 3966 | 3966 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 3967 | 3967 | |
| 3968 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3968 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3969 | 3969 | ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) |
| 3970 | 3970 | |
| 3971 | 3971 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4001 | 4001 | ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) |
| 4002 | 4002 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4003 | 4003 | |
| 4004 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4004 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4005 | 4005 | ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) |
| 4006 | 4006 | |
| 4007 | 4007 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4031 | 4031 | ROM_LOAD( "c28-14.3", 0x00000, 0x04000, CRC(45ef3616) SHA1(97bf1de7fd32a378839df1845f7522dae776d997) ) |
| 4032 | 4032 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4033 | 4033 | |
| 4034 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4034 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4035 | 4035 | ROM_LOAD( "c28-06.41", 0x00000, 0x80000, CRC(db6983db) SHA1(b72541aa35c48624478060e7453f01956ff1ceb2) ) |
| 4036 | 4036 | |
| 4037 | 4037 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4059 | 4059 | ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) ) |
| 4060 | 4060 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4061 | 4061 | |
| 4062 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4062 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4063 | 4063 | ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) ) |
| 4064 | 4064 | /* no Delta-T samples */ |
| 4065 | 4065 | ROM_END |
| r6428 | r6429 | |
| 4133 | 4133 | ROM_LOAD( "c38-08.bin", 0x00000, 0x04000, CRC(7ff78873) SHA1(6574f1c707b8911fa957dd057e1cddc7a1cea99b) ) |
| 4134 | 4134 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4135 | 4135 | |
| 4136 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4136 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4137 | 4137 | ROM_LOAD( "c38-03.bin", 0x000000, 0x020000, CRC(59fa59a7) SHA1(161f11b96a47c8431c33e300f6a509bf804309af) ) |
| 4138 | 4138 | |
| 4139 | 4139 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4157 | 4157 | ROM_LOAD( "c41-06.bin", 0x00000, 0x04000, CRC(753a98d8) SHA1(a832a4789194a67a2201da4e4484ab08210e5ccc) ) |
| 4158 | 4158 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4159 | 4159 | |
| 4160 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4160 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4161 | 4161 | ROM_LOAD( "c41-03.bin", 0x000000, 0x020000, CRC(b2c18e89) SHA1(32eca1721cd8f47e9a6dcb553208ddd0daa67f83) ) |
| 4162 | 4162 | |
| 4163 | 4163 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4181 | 4181 | ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) |
| 4182 | 4182 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4183 | 4183 | |
| 4184 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4184 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4185 | 4185 | ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) |
| 4186 | 4186 | |
| 4187 | 4187 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4205 | 4205 | ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) |
| 4206 | 4206 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4207 | 4207 | |
| 4208 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4208 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4209 | 4209 | ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) |
| 4210 | 4210 | |
| 4211 | 4211 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4229 | 4229 | ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) ) |
| 4230 | 4230 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4231 | 4231 | |
| 4232 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4232 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4233 | 4233 | ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) ) |
| 4234 | 4234 | |
| 4235 | 4235 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4255 | 4255 | ROM_LOAD( "c53-08.bin", 0x00000, 0x04000, CRC(25187e81) SHA1(c549fbfff6963be93aaf349b240f15b1d578d1f1) ) |
| 4256 | 4256 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4257 | 4257 | |
| 4258 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4258 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4259 | 4259 | ROM_LOAD( "c53-04.bin", 0x000000, 0x020000, CRC(99890ad4) SHA1(c9be9d21dc72059c39de81e1b73849cc77d6b95d) ) |
| 4260 | 4260 | |
| 4261 | 4261 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4276 | 4276 | ROM_LOAD( "c64-09.13", 0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) ) |
| 4277 | 4277 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4278 | 4278 | |
| 4279 | ROM_REGION( 0x20000, "ym", 0 ) /* ADPCM samples */ | |
| 4279 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4280 | 4280 | ROM_LOAD( "c64-02.2", 0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) ) |
| 4281 | 4281 | |
| 4282 | 4282 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4299 | 4299 | ROM_LOAD( "c64-09.13", 0x00000, 0x04000, CRC(88d7f65c) SHA1(d6383bf8fd035772fa3c57b26b727eefe1aadd93) ) |
| 4300 | 4300 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4301 | 4301 | |
| 4302 | ROM_REGION( 0x20000, "ym", 0 ) /* ADPCM samples */ | |
| 4302 | ROM_REGION( 0x20000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4303 | 4303 | ROM_LOAD( "c64-02.2", 0x00000, 0x20000, CRC(3cb0b907) SHA1(7cbe437fe584575a2f26a582095fd49665c7003e) ) |
| 4304 | 4304 | |
| 4305 | 4305 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4390 | 4390 | ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) ) |
| 4391 | 4391 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4392 | 4392 | |
| 4393 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4393 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4394 | 4394 | ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) ) |
| 4395 | 4395 | |
| 4396 | 4396 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4417 | 4417 | ROM_LOAD( "c71-12.ic49", 0x00000, 0x04000, CRC(0038c7f8) SHA1(405def36e67949219b6f9394333278ec60ad5783) ) |
| 4418 | 4418 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4419 | 4419 | |
| 4420 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4420 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4421 | 4421 | ROM_LOAD( "c71-01.ic29", 0x000000, 0x100000, CRC(0e73105a) SHA1(c5c9743f68a43273e16f5e5179557f2392505a1e) ) |
| 4422 | 4422 | |
| 4423 | 4423 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4441 | 4441 | ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) |
| 4442 | 4442 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4443 | 4443 | |
| 4444 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4444 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4445 | 4445 | ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) |
| 4446 | 4446 | |
| 4447 | 4447 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4468 | 4468 | ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) |
| 4469 | 4469 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4470 | 4470 | |
| 4471 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4471 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4472 | 4472 | ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) |
| 4473 | 4473 | |
| 4474 | 4474 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4493 | 4493 | ROM_LOAD( "c74-12.ic62", 0x00000, 0x04000, CRC(bb6ed668) SHA1(e8c3a15ccbc788ac57d42bd2cabcdb2db6305489) ) |
| 4494 | 4494 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4495 | 4495 | |
| 4496 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4496 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4497 | 4497 | ROM_LOAD( "c74-04.ic28", 0x000000, 0x100000, CRC(2d97edf2) SHA1(d3a995303facdad4f8e1fdda04eaaec4440ff371) ) |
| 4498 | 4498 | |
| 4499 | 4499 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4517 | 4517 | ROM_LOAD( "c77-10", 0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) ) |
| 4518 | 4518 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4519 | 4519 | |
| 4520 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4520 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4521 | 4521 | ROM_LOAD( "c77-03", 0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) ) |
| 4522 | 4522 | |
| 4523 | 4523 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4540 | 4540 | ROM_LOAD( "c77-10", 0x00000, 0x04000, CRC(f16b2c1e) SHA1(f6f13429a0b4e0e4c64991f1acc4ecf85dc64364) ) |
| 4541 | 4541 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4542 | 4542 | |
| 4543 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4543 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4544 | 4544 | ROM_LOAD( "c77-03", 0x000000, 0x080000, CRC(312f17b1) SHA1(3b45eeb6c6721c532451cb113e6a38da4d8a8cbf) ) |
| 4545 | 4545 | |
| 4546 | 4546 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4565 | 4565 | ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) ) |
| 4566 | 4566 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4567 | 4567 | |
| 4568 | ROM_REGION( 0x100000, "ym", 0 ) /* YM2610 samples */ | |
| 4568 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* YM2610 samples */ | |
| 4569 | 4569 | ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) |
| 4570 | 4570 | |
| 4571 | 4571 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4592 | 4592 | ROM_LOAD( "c80-15.70", 0x00000, 0x04000, CRC(05aa7fd7) SHA1(7eb10964ea9f43abcda8444f13733a0753a04580) ) |
| 4593 | 4593 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4594 | 4594 | |
| 4595 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4595 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4596 | 4596 | ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) |
| 4597 | 4597 | |
| 4598 | 4598 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4617 | 4617 | ROM_LOAD( "ec92_27.rom", 0x00000, 0x04000, CRC(2db48e65) SHA1(43a47ebc91c043a996e966cf808d71256e158494) ) |
| 4618 | 4618 | ROM_CONTINUE( 0x10000, 0x0c000 ) |
| 4619 | 4619 | |
| 4620 | ROM_REGION( 0x100000, "ym", 0 ) /* YM2610 samples */ | |
| 4620 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* YM2610 samples */ | |
| 4621 | 4621 | ROM_LOAD( "c80-03.57", 0x000000, 0x100000, CRC(609938d5) SHA1(54c7a7265dee5cb031fd402f4c74858d73bec652) ) // ec92_03.rom |
| 4622 | 4622 | |
| 4623 | 4623 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4640 | 4640 | ROM_LOAD( "c81-12.bin", 0x00000, 0x04000, CRC(6e8625b6) SHA1(212d384aa6ed43f5389739863afecbf0ad68af14) ) |
| 4641 | 4641 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4642 | 4642 | |
| 4643 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4643 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4644 | 4644 | ROM_LOAD( "c81-05.bin", 0x00000, 0x80000, CRC(9c3d71be) SHA1(79f1bb40d8356d9fc93b569c20be15e7fbf34580) ) |
| 4645 | 4645 | |
| 4646 | 4646 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4672 | 4672 | ROM_LOAD( "c83-11.1" , 0x00000, 0x04000, CRC(461e702a) SHA1(f1f4294a7e8acc50473df15a167ba84595c9eb15) ) |
| 4673 | 4673 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4674 | 4674 | |
| 4675 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4675 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4676 | 4676 | ROM_LOAD( "c83-04.5", 0x000000, 0x100000, CRC(2600093a) SHA1(824fde078e0ded58037bd06f888eac4e7487ac82) ) |
| 4677 | 4677 | |
| 4678 | 4678 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4697 | 4697 | ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ |
| 4698 | 4698 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4699 | 4699 | |
| 4700 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4700 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4701 | 4701 | ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ |
| 4702 | 4702 | |
| 4703 | 4703 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4723 | 4723 | ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ |
| 4724 | 4724 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4725 | 4725 | |
| 4726 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4726 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4727 | 4727 | ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ |
| 4728 | 4728 | |
| 4729 | 4729 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4749 | 4749 | ROM_LOAD( "c85-14.ic54", 0x00000, 0x04000, CRC(f2a52a51) SHA1(951793c65a3436a7fb36f3058bc7a3b4265a90bb) ) /* SND */ |
| 4750 | 4750 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4751 | 4751 | |
| 4752 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4752 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4753 | 4753 | ROM_LOAD( "c85-04.ic31", 0x00000, 0x80000, CRC(5afb747e) SHA1(e4f03582221f3a97f0e24693aa77264663eb1b47) ) /* SCH-B */ |
| 4754 | 4754 | |
| 4755 | 4755 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4772 | 4772 | ROM_LOAD( "c91-07.62", 0x00000, 0x04000, CRC(e471a05a) SHA1(4d9c2b734aac27819673094dc1843e1ca5fe6994) ) |
| 4773 | 4773 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4774 | 4774 | |
| 4775 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4775 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4776 | 4776 | ROM_LOAD( "c91-04.28", 0x00000, 0x80000, CRC(390b1065) SHA1(ee7ba77634854e4896528ff1bbc308de92a5815b) ) /* Channel A */ |
| 4777 | 4777 | |
| 4778 | 4778 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4797 | 4797 | ROM_LOAD( "c92-07.5", 0x00000, 0x04000, CRC(3e313db9) SHA1(44f781c7d3df8eacd745dc0af180cec9e1164b89) ) |
| 4798 | 4798 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4799 | 4799 | |
| 4800 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 4800 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4801 | 4801 | ROM_LOAD( "c92-04.9", 0x000000, 0x080000, CRC(e421bb43) SHA1(a89157e65b537b31f5837435dae848adde8a86d1) ) |
| 4802 | 4802 | |
| 4803 | 4803 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4824 | 4824 | ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) ) |
| 4825 | 4825 | ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ |
| 4826 | 4826 | |
| 4827 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4827 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4828 | 4828 | ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) ) |
| 4829 | 4829 | |
| 4830 | 4830 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4851 | 4851 | ROM_LOAD( "c98-14.rom", 0x00000, 0x04000, CRC(a858e17c) SHA1(4389f43035a94e776a25350a8989dcfdb3e4675a) ) |
| 4852 | 4852 | ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ |
| 4853 | 4853 | |
| 4854 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4854 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4855 | 4855 | ROM_LOAD( "c98-01.rom", 0x000000, 0x100000, CRC(197f66f5) SHA1(cc5d104033f9ab7d614afd47eeb61a22ef5714ea) ) |
| 4856 | 4856 | |
| 4857 | 4857 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4875 | 4875 | ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) ) |
| 4876 | 4876 | ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ |
| 4877 | 4877 | |
| 4878 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4878 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4879 | 4879 | ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) ) |
| 4880 | 4880 | |
| 4881 | 4881 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4900 | 4900 | ROM_LOAD( "d12-13.5", 0x00000, 0x04000, CRC(bcca2649) SHA1(d932134416c951d849ae41598f75609d453ed520) ) |
| 4901 | 4901 | ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ |
| 4902 | 4902 | |
| 4903 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4903 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4904 | 4904 | ROM_LOAD( "d12-02.10", 0x000000, 0x100000, CRC(79263e74) SHA1(f9ef222239855d593b5855dbf9ea0376ea349c4b) ) |
| 4905 | 4905 | |
| 4906 | 4906 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4923 | 4923 | ROM_LOAD( "d19-07.5", 0x00000, 0x04000, CRC(a8935f84) SHA1(6f264cf7a52dfb8248b8aeb4ff34477d7ccb0b6d) ) |
| 4924 | 4924 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4925 | 4925 | |
| 4926 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4926 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4927 | 4927 | ROM_LOAD( "d19-04.9", 0x000000, 0x080000, CRC(d3c44905) SHA1(d00bd4f11523b2123383dd852ee5484d907ff904) ) |
| 4928 | 4928 | |
| 4929 | 4929 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4974 | 4974 | ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) ) |
| 4975 | 4975 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 4976 | 4976 | |
| 4977 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4977 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4978 | 4978 | ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) ) |
| 4979 | 4979 | |
| 4980 | 4980 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 4999 | 4999 | ROM_LOAD( "d28-10.6", 0x00000, 0x04000, CRC(40805d74) SHA1(172114be692c766622d1235e5c4aa83ad438d9d9) ) |
| 5000 | 5000 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5001 | 5001 | |
| 5002 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5002 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5003 | 5003 | ROM_LOAD( "d28-03.10", 0x000000, 0x100000, CRC(a1804b52) SHA1(f252c473a71a4cf80d9f984fec08e5ae7524a620) ) |
| 5004 | 5004 | |
| 5005 | 5005 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 5024 | 5024 | ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) |
| 5025 | 5025 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5026 | 5026 | |
| 5027 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5027 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5028 | 5028 | ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) |
| 5029 | 5029 | |
| 5030 | 5030 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 5050 | 5050 | ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) |
| 5051 | 5051 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5052 | 5052 | |
| 5053 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5053 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5054 | 5054 | ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) |
| 5055 | 5055 | |
| 5056 | 5056 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 5076 | 5076 | ROM_LOAD( "d39-12.5", 0x00000, 0x04000, CRC(8292c7c1) SHA1(2ff20726f6cc6d98d860d96b8eb3c10f46b87d58) ) |
| 5077 | 5077 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5078 | 5078 | |
| 5079 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5079 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5080 | 5080 | ROM_LOAD( "d39-07.10", 0x000000, 0x100000, CRC(28262816) SHA1(6df9a31a2edf1dfc23070b41b1da2c0a9e91d1b0) ) |
| 5081 | 5081 | |
| 5082 | 5082 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 5100 | 5100 | ROM_LOAD( "d48-11", 0x00000, 0x04000, CRC(656c5b54) SHA1(650bcc5920838db5c6613bcf30468d6e296ea017) ) |
| 5101 | 5101 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5102 | 5102 | |
| 5103 | ROM_REGION( 0x080000, "ym", 0 ) /* ADPCM samples */ | |
| 5103 | ROM_REGION( 0x080000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5104 | 5104 | ROM_LOAD( "d48-05", 0x000000, 0x080000, CRC(3fefd058) SHA1(338c35c3a086041d28708d4b17e208b590c926d5) ) |
| 5105 | 5105 | |
| 5106 | 5106 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 5126 | 5126 | ROM_LOAD( "d55-15", 0x00000, 0x04000, CRC(ba782eff) SHA1(ce24654db49b9694e444e93b9a8d529a86729e03) ) |
| 5127 | 5127 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5128 | 5128 | |
| 5129 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5129 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5130 | 5130 | ROM_LOAD( "d55-01", 0x000000, 0x100000, CRC(a8309af4) SHA1(dc30b2e019003c58aecaf899668b36dea6e1274e) ) |
| 5131 | 5131 | |
| 5132 | 5132 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 5151 | 5151 | ROM_LOAD( "d63-11", 0x00000, 0x04000, CRC(2c7ac9e5) SHA1(2477fb4415781afddc2f4084eca52f53b7d40480) ) |
| 5152 | 5152 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5153 | 5153 | |
| 5154 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 5154 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5155 | 5155 | ROM_LOAD( "d63-02", 0x000000, 0x100000, CRC(162ae165) SHA1(8b503d096640ec91cf55e05374b293937965c672) ) |
| 5156 | 5156 | |
| 5157 | 5157 | /* no Delta-T samples */ |
| r6428 | r6429 | |
| 5175 | 5175 | ROM_LOAD( "do_50.rom", 0x00000, 0x04000, CRC(ffe10124) SHA1(a47dfedfa7b352a5db39e7e1ccc666d3c5fb0d75) ) |
| 5176 | 5176 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 5177 | 5177 | |
| 5178 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 5178 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 5179 | 5179 | ROM_LOAD( "do_snd.rom", 0x00000, 0x80000, CRC(f2deb82b) SHA1(55e39173a475f5ab0b5f573a678a493fb6eefe64) ) |
| 5180 | 5180 | |
| 5181 | 5181 | /* no Delta-T samples */ |
| r6428 | r6429 | |
|---|---|---|
| 24 | 24 | #include "sound/ay8910.h" |
| 25 | 25 | #include "sound/dac.h" |
| 26 | 26 | #include "konamipt.h" |
| 27 | #include "pandoras.h" | |
| 27 | 28 | |
| 28 | static int irq_enable_a, irq_enable_b; | |
| 29 | static int firq_old_data_a, firq_old_data_b; | |
| 30 | static int i8039_status; | |
| 31 | ||
| 32 | /* from video */ | |
| 33 | PALETTE_INIT( pandoras ); | |
| 34 | WRITE8_HANDLER( pandoras_vram_w ); | |
| 35 | WRITE8_HANDLER( pandoras_cram_w ); | |
| 36 | WRITE8_HANDLER( pandoras_flipscreen_w ); | |
| 37 | WRITE8_HANDLER( pandoras_scrolly_w ); | |
| 38 | VIDEO_START( pandoras ); | |
| 39 | VIDEO_UPDATE( pandoras ); | |
| 40 | ||
| 41 | 29 | static INTERRUPT_GEN( pandoras_master_interrupt ) |
| 42 | 30 | { |
| 43 | if (irq_enable_a) | |
| 31 | pandoras_state *state = (pandoras_state *)device->machine->driver_data; | |
| 32 | ||
| 33 | if (state->irq_enable_a) | |
| 44 | 34 | cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE); |
| 45 | 35 | } |
| 46 | 36 | |
| 47 | 37 | static INTERRUPT_GEN( pandoras_slave_interrupt ) |
| 48 | 38 | { |
| 49 | if (irq_enable_b) | |
| 39 | pandoras_state *state = (pandoras_state *)device->machine->driver_data; | |
| 40 | ||
| 41 | if (state->irq_enable_b) | |
| 50 | 42 | cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE); |
| 51 | 43 | } |
| 52 | 44 | |
| r6428 | r6429 | |
| 61 | 53 | |
| 62 | 54 | other bytes unknown */ |
| 63 | 55 | |
| 56 | pandoras_state *state = (pandoras_state *)space->machine->driver_data; | |
| 57 | ||
| 64 | 58 | switch (offset) |
| 65 | 59 | { |
| 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; | |
| 69 | 64 | case 0x02: coin_counter_w(0,data & 0x01); |
| 70 | | |
| 65 | | |
| 71 | 66 | case 0x03: coin_counter_w(1,data & 0x01); |
| 72 | | |
| 67 | | |
| 73 | 68 | 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; | |
| 78 | 74 | case 0x07: cputag_set_input_line(space->machine, "sub",INPUT_LINE_NMI,PULSE_LINE); |
| 79 | | |
| 75 | | |
| 80 | 76 | |
| 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; | |
| 83 | 79 | } |
| 84 | 80 | } |
| 85 | 81 | |
| 86 | 82 | static WRITE8_HANDLER( pandoras_cpua_irqtrigger_w ) |
| 87 | 83 | { |
| 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) | |
| 89 | 87 | { |
| 90 | 88 | cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); |
| 91 | 89 | } |
| 92 | 90 | |
| 93 | firq_old_data_a = data; | |
| 91 | state->firq_old_data_a = data; | |
| 94 | 92 | } |
| 95 | 93 | |
| 96 | 94 | static WRITE8_HANDLER( pandoras_cpub_irqtrigger_w ) |
| 97 | 95 | { |
| 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) | |
| 99 | 99 | { |
| 100 | 100 | cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE); |
| 101 | 101 | } |
| 102 | 102 | |
| 103 | firq_old_data_b = data; | |
| 103 | state->firq_old_data_b = data; | |
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | static WRITE8_HANDLER( pandoras_i8039_irqtrigger_w ) |
| r6428 | r6429 | |
| 110 | 110 | |
| 111 | 111 | static WRITE8_HANDLER( i8039_irqen_and_status_w ) |
| 112 | 112 | { |
| 113 | pandoras_state *state = (pandoras_state *)space->machine->driver_data; | |
| 114 | ||
| 113 | 115 | /* bit 7 enables IRQ */ |
| 114 | 116 | if ((data & 0x80) == 0) |
| 115 | 117 | cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE); |
| 116 | 118 | |
| 117 | 119 | /* bit 5 goes to 8910 port A */ |
| 118 | i8039_status = (data & 0x20) >> 5; | |
| 120 | state->i8039_status = (data & 0x20) >> 5; | |
| 119 | 121 | } |
| 120 | 122 | |
| 121 | 123 | static WRITE8_HANDLER( pandoras_z80_irqtrigger_w ) |
| r6428 | r6429 | |
| 126 | 128 | |
| 127 | 129 | |
| 128 | 130 | static 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) */ | |
| 132 | 134 | AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w) /* INT control */ |
| 133 | 135 | AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w) /* bg scroll */ |
| 134 | 136 | AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w) /* cause INT on the Z80 */ |
| r6428 | r6429 | |
| 141 | 143 | ADDRESS_MAP_END |
| 142 | 144 | |
| 143 | 145 | static ADDRESS_MAP_START( pandoras_slave_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 144 | AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1) | |
| 146 | AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1) | |
| 145 | 147 | AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2) /* Color RAM (shared with CPU A) */ |
| 146 | 148 | AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3) /* Video RAM (shared with CPU A) */ |
| 147 | 149 | AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW1") |
| r6428 | r6429 | |
| 162 | 164 | AM_RANGE(0x0000, 0x1fff) AM_ROM /* ROM */ |
| 163 | 165 | AM_RANGE(0x2000, 0x23ff) AM_RAM /* RAM */ |
| 164 | 166 | 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 */ | |
| 168 | 170 | AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w) /* cause INT on the 8039 */ |
| 169 | 171 | AM_RANGE(0xa000, 0xa000) AM_WRITE(soundlatch2_w) /* sound command to the 8039 */ |
| 170 | 172 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 289 | 291 | |
| 290 | 292 | ***************************************************************************/ |
| 291 | 293 | |
| 294 | static 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 | ||
| 292 | 305 | static MACHINE_RESET( pandoras ) |
| 293 | 306 | { |
| 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; | |
| 296 | 316 | } |
| 297 | 317 | |
| 298 | 318 | static READ8_DEVICE_HANDLER( pandoras_portA_r ) |
| 299 | 319 | { |
| 300 | return i8039_status; | |
| 320 | pandoras_state *state = (pandoras_state *)device->machine->driver_data; | |
| 321 | return state->i8039_status; | |
| 301 | 322 | } |
| 302 | 323 | |
| 303 | 324 | static READ8_DEVICE_HANDLER( pandoras_portB_r ) |
| r6428 | r6429 | |
| 317 | 338 | |
| 318 | 339 | static MACHINE_DRIVER_START( pandoras ) |
| 319 | 340 | |
| 341 | /* driver data */ | |
| 342 | MDRV_DRIVER_DATA(pandoras_state) | |
| 343 | ||
| 320 | 344 | /* basic machine hardware */ |
| 321 | 345 | MDRV_CPU_ADD("maincpu", M6809,18432000/6) /* CPU A */ |
| 322 | 346 | MDRV_CPU_PROGRAM_MAP(pandoras_master_map) |
| r6428 | r6429 | |
| 335 | 359 | |
| 336 | 360 | MDRV_QUANTUM_TIME(HZ(3000)) /* slices per frame */ |
| 337 | 361 | |
| 362 | MDRV_MACHINE_START(pandoras) | |
| 338 | 363 | MDRV_MACHINE_RESET(pandoras) |
| 339 | 364 | |
| 340 | 365 | /* video hardware */ |
| r6428 | r6429 | |
| 355 | 380 | /* sound hardware */ |
| 356 | 381 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 357 | 382 | |
| 358 | MDRV_SOUND_ADD("ay", AY8910, 14318000/8) | |
| 383 | MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8) | |
| 359 | 384 | MDRV_SOUND_CONFIG(ay8910_config) |
| 360 | 385 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 361 | 386 | |
| r6428 | r6429 | |
| 402 | 427 | ROM_END |
| 403 | 428 | |
| 404 | 429 | |
| 405 | GAME( 1984, pandoras, 0, pandoras, pandoras, 0, ROT90, "Konami/Interlogic", "Pandora's Palace", | |
| 430 | GAME( 1984, pandoras, 0, pandoras, pandoras, 0, ROT90, "Konami/Interlogic", "Pandora's Palace", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 339 | 339 | |
| 340 | 340 | static CUSTOM_INPUT( stooges_joystick_r ) |
| 341 | 341 | { |
| 342 | static const char *const joyport[] = { "P | |
| 342 | static const char *const joyport[] = { "P2JOY", "P3JOY", "P1JOY", NULL }; | |
| 343 | 343 | return (joyport[joystick_select & 3] != NULL) ? input_port_read(field->port->machine, joyport[joystick_select & 3]) : 0xff; |
| 344 | 344 | } |
| 345 | 345 |
| r6428 | r6429 | |
|---|---|---|
| 586 | 586 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 587 | 587 | AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r) |
| 588 | 588 | 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) | |
| 590 | 590 | AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w) |
| 591 | 591 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 592 | 592 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 595 | 595 | static ADDRESS_MAP_START( dd2_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 596 | 596 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 597 | 597 | 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) | |
| 599 | 599 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 600 | 600 | AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_r) |
| 601 | 601 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 995 | 995 | /* sound hardware */ |
| 996 | 996 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 997 | 997 | |
| 998 | MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK) | |
| 998 | MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 999 | 999 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1000 | 1000 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 1001 | 1001 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 1061 | 1061 | /* sound hardware */ |
| 1062 | 1062 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1063 | 1063 | |
| 1064 | MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK) | |
| 1064 | MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 1065 | 1065 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1066 | 1066 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 1067 | 1067 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 1108 | 1108 | /* sound hardware */ |
| 1109 | 1109 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1110 | 1110 | |
| 1111 | MDRV_SOUND_ADD("fm", YM2151, SOUND_CLOCK) | |
| 1111 | MDRV_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK) | |
| 1112 | 1112 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1113 | 1113 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 1114 | 1114 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 202 | 202 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 203 | 203 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 204 | 204 | 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) | |
| 206 | 206 | AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 207 | 207 | 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) | |
| 209 | 209 | ADDRESS_MAP_END |
| 210 | 210 | |
| 211 | 211 | |
| r6428 | r6429 | |
| 255 | 255 | /* sound hardware */ |
| 256 | 256 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 257 | 257 | |
| 258 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 258 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 259 | 259 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 260 | 260 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 261 | 261 |
| r6428 | r6429 | |
|---|---|---|
| 196 | 196 | switch(offset&0xff) |
| 197 | 197 | { |
| 198 | 198 | 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; | |
| 200 | 200 | case 2: dac_data_w(devtag_get_device(space->machine, "dac"),data);break; |
| 201 | 201 | default: logerror("%x %x - %x\n",offset,data,cpu_get_previouspc(space->cpu)); |
| 202 | 202 | } |
| r6428 | r6429 | |
| 369 | 369 | |
| 370 | 370 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 371 | 371 | |
| 372 | MDRV_SOUND_ADD("ym", YM2413, 5000000/2) | |
| 372 | MDRV_SOUND_ADD("ymsnd", YM2413, 5000000/2) | |
| 373 | 373 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 374 | 374 | |
| 375 | 375 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 64 | 64 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 65 | 65 | // AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w) |
| 66 | 66 | 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) | |
| 69 | 69 | AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") |
| 70 | 70 | AM_RANGE(0x90, 0x97) AM_WRITE(hyhoo_blitter_w) |
| 71 | 71 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r, nb1413m3_inputportsel_w) |
| r6428 | r6429 | |
| 277 | 277 | /* sound hardware */ |
| 278 | 278 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 279 | 279 | |
| 280 | MDRV_SOUND_ADD("ay", AY8910, 1250000) | |
| 280 | MDRV_SOUND_ADD("aysnd", AY8910, 1250000) | |
| 281 | 281 | MDRV_SOUND_CONFIG(ay8910_config) |
| 282 | 282 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 283 | 283 |
| r6428 | r6429 | |
|---|---|---|
| 404 | 404 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| 405 | 405 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 406 | 406 | 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) | |
| 408 | 408 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w) |
| 409 | 409 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r) |
| 410 | 410 | AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r) |
| r6428 | r6429 | |
| 506 | 506 | /* sound hardware */ |
| 507 | 507 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 508 | 508 | |
| 509 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 509 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 510 | 510 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 511 | 511 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 512 | 512 |
| r6428 | r6429 | |
|---|---|---|
| 652 | 652 | AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w) |
| 653 | 653 | |
| 654 | 654 | #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) \ | |
| 656 | 656 | AM_RANGE(0x8000, 0x9fff) AM_RAM |
| 657 | 657 | |
| 658 | 658 | |
| r6428 | r6429 | |
| 685 | 685 | AM_RANGE(0x8000, 0x9fff) AM_RAM |
| 686 | 686 | AM_RANGE(0xe000, 0xe000) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 687 | 687 | 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) | |
| 689 | 689 | ADDRESS_MAP_END |
| 690 | 690 | |
| 691 | 691 | |
| r6428 | r6429 | |
| 718 | 718 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 719 | 719 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(7) |
| 720 | 720 | 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) | |
| 722 | 722 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 723 | 723 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 724 | 724 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 755 | 755 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 756 | 756 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(7) |
| 757 | 757 | 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) | |
| 759 | 759 | AM_RANGE(0xa000, 0xa000) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 760 | 760 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 761 | 761 | AM_RANGE(0xb000, 0xb000) AM_WRITE(champwr_msm5205_hi_w) |
| r6428 | r6429 | |
| 778 | 778 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 779 | 779 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 780 | 780 | 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) | |
| 782 | 782 | #if 0 |
| 783 | 783 | AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w) |
| 784 | 784 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA") |
| r6428 | r6429 | |
| 886 | 886 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 887 | 887 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 888 | 888 | 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) | |
| 890 | 890 | AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK(7) |
| 891 | 891 | ADDRESS_MAP_END |
| 892 | 892 | |
| r6428 | r6429 | |
| 1982 | 1982 | /* sound hardware */ |
| 1983 | 1983 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1984 | 1984 | |
| 1985 | MDRV_SOUND_ADD("ym", YM2203, 3000000) /* verified on pcb */ | |
| 1985 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* verified on pcb */ | |
| 1986 | 1986 | MDRV_SOUND_CONFIG(ym2203_interface_triple) |
| 1987 | 1987 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 1988 | 1988 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 2007 | 2007 | MDRV_MACHINE_RESET(champwr) |
| 2008 | 2008 | |
| 2009 | 2009 | /* sound hardware */ |
| 2010 | MDRV_SOUND_MODIFY("ym") | |
| 2010 | MDRV_SOUND_MODIFY("ymsnd") | |
| 2011 | 2011 | MDRV_SOUND_CONFIG(ym2203_interface_champwr) |
| 2012 | 2012 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 2013 | 2013 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 2037 | 2037 | MDRV_MACHINE_RESET(raimais) |
| 2038 | 2038 | |
| 2039 | 2039 | /* 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) */ | |
| 2041 | 2041 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2042 | 2042 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 2043 | 2043 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2078 | 2078 | /* sound hardware */ |
| 2079 | 2079 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2080 | 2080 | |
| 2081 | MDRV_SOUND_ADD("ym", YM2203, 3000000) /* verified on pcb */ | |
| 2081 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) /* verified on pcb */ | |
| 2082 | 2082 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 2083 | 2083 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| 2084 | 2084 | MDRV_SOUND_ROUTE(2, "mono", 0.20) |
| r6428 | r6429 | |
| 2123 | 2123 | /* sound hardware */ |
| 2124 | 2124 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2125 | 2125 | |
| 2126 | MDRV_SOUND_ADD("ym", YM2203, 3330000) /* verified on pcb */ | |
| 2126 | MDRV_SOUND_ADD("ymsnd", YM2203, 3330000) /* verified on pcb */ | |
| 2127 | 2127 | MDRV_SOUND_CONFIG(ym2203_interface_single) |
| 2128 | 2128 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 2129 | 2129 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 2218 | 2218 | /* sound hardware */ |
| 2219 | 2219 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2220 | 2220 | |
| 2221 | MDRV_SOUND_ADD("ym", YM2203, 12000000/4) /* not verified */ | |
| 2221 | MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/4) /* not verified */ | |
| 2222 | 2222 | MDRV_SOUND_ROUTE(0, "mono", 0.00) |
| 2223 | 2223 | MDRV_SOUND_ROUTE(1, "mono", 0.00) |
| 2224 | 2224 | MDRV_SOUND_ROUTE(2, "mono", 0.00) |
| r6428 | r6429 | |
| 2245 | 2245 | ROM_LOAD( "b36-01.bin", 0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) ) |
| 2246 | 2246 | ROM_LOAD( "b36-02.bin", 0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) ) |
| 2247 | 2247 | |
| 2248 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2248 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2249 | 2249 | ROM_LOAD( "b36-03.bin", 0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) ) |
| 2250 | 2250 | ROM_END |
| 2251 | 2251 | |
| r6428 | r6429 | |
| 2266 | 2266 | ROM_LOAD( "b36-01.bin", 0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) ) |
| 2267 | 2267 | ROM_LOAD( "b36-02.bin", 0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) ) |
| 2268 | 2268 | |
| 2269 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2269 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2270 | 2270 | ROM_LOAD( "b36-03.bin", 0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) ) |
| 2271 | 2271 | ROM_END |
| 2272 | 2272 | |
| r6428 | r6429 | |
| 2287 | 2287 | ROM_LOAD( "b36-01.bin", 0x00000, 0x80000, CRC(89355cb2) SHA1(433e929fe8b488af84e88486d9679468a3d9677a) ) |
| 2288 | 2288 | ROM_LOAD( "b36-02.bin", 0x80000, 0x80000, CRC(e71da5db) SHA1(aa47ae02c359264c0a1f09ecc583eefd1ef1dfa4) ) |
| 2289 | 2289 | |
| 2290 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 2290 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 2291 | 2291 | ROM_LOAD( "b36-03.bin", 0x00000, 0x80000, CRC(96166516) SHA1(a6748218188cbd1b037f6c0845416665c0d55a7b) ) |
| 2292 | 2292 | ROM_END |
| 2293 | 2293 |
| r6428 | r6429 | |
|---|---|---|
| 330 | 330 | static ADDRESS_MAP_START( st0016_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 331 | 331 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 332 | 332 | 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) | |
| 334 | 334 | AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) |
| 335 | 335 | AM_RANGE(0xf000, 0xffff) AM_RAM |
| 336 | 336 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 541 | 541 | |
| 542 | 542 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 543 | 543 | |
| 544 | MDRV_SOUND_ADD("st", ST0016, 0) | |
| 544 | MDRV_SOUND_ADD("stsnd", ST0016, 0) | |
| 545 | 545 | MDRV_SOUND_CONFIG(st0016_config) |
| 546 | 546 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 547 | 547 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 422 | 422 | AM_RANGE(0x9ff00, 0x9ffff) AM_WRITENOP /* Irq controller? */ |
| 423 | 423 | AM_RANGE(0xa0000, 0xa3fff) AM_RAM |
| 424 | 424 | 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) | |
| 426 | 426 | AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m92_soundlatch_r, m92_sound_irq_ack_w) |
| 427 | 427 | AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m92_sound_status_w) |
| 428 | 428 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| r6428 | r6429 | |
| 949 | 949 | /* sound hardware */ |
| 950 | 950 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 951 | 951 | |
| 952 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 952 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 953 | 953 | MDRV_SOUND_CONFIG(ym2151_config) |
| 954 | 954 | MDRV_SOUND_ROUTE(0, "mono", 0.40) |
| 955 | 955 | MDRV_SOUND_ROUTE(1, "mono", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 12 | 12 | #include "driver.h" |
| 13 | 13 | #include "cpu/z80/z80.h" |
| 14 | 14 | #include "iremipt.h" |
| 15 | #include "m58.h" | |
| 16 | #include "audio/irem.h" | |
| 15 | #include "includes/iremz80.h" | |
| 17 | 16 | |
| 18 | 17 | #define MASTER_CLOCK XTAL_18_432MHz |
| 19 | 18 | |
| r6428 | r6429 | |
| 26 | 25 | |
| 27 | 26 | static ADDRESS_MAP_START( yard_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 28 | 27 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 29 | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_BASE( | |
| 28 | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram) | |
| 30 | 29 | 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) | |
| 36 | 35 | AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w) |
| 37 | 36 | AM_RANGE(0xd001, 0xd001) AM_WRITE(yard_flipscreen_w) /* + coin counters */ |
| 38 | 37 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") |
| r6428 | r6429 | |
| 190 | 189 | |
| 191 | 190 | static MACHINE_DRIVER_START( yard ) |
| 192 | 191 | |
| 192 | /* driver data */ | |
| 193 | MDRV_DRIVER_DATA(irem_z80_state) | |
| 194 | ||
| 193 | 195 | /* basic machine hardware */ |
| 194 | 196 | MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2) |
| 195 | 197 | MDRV_CPU_PROGRAM_MAP(yard_map) |
| r6428 | r6429 | |
| 363 | 365 | * |
| 364 | 366 | *************************************/ |
| 365 | 367 | |
| 366 | GAME( 1983, 10yard, 0, yard, yard, 0, ROT0, "Irem", "10-Yard Fight (World)", 0 ) | |
| 367 | GAME( 1983, 10yardj, 10yard, yard, yard, 0, ROT0, "Irem", "10-Yard Fight (Japan)", 0 ) | |
| 368 | GAME( 1984, vs10yard, 10yard, yard, vs10yard, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", 0 ) | |
| 369 | GAME( 1984, vs10yardj,10yard, yard, vs10yarj, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", 0 ) | |
| 368 | GAME( 1983, 10yard, 0, yard, yard, 0, ROT0, "Irem", "10-Yard Fight (World)", GAME_SUPPORTS_SAVE ) | |
| 369 | GAME( 1983, 10yardj, 10yard, yard, yard, 0, ROT0, "Irem", "10-Yard Fight (Japan)", GAME_SUPPORTS_SAVE ) | |
| 370 | GAME( 1984, vs10yard, 10yard, yard, vs10yard, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", GAME_SUPPORTS_SAVE ) | |
| 371 | GAME( 1984, vs10yardj,10yard, yard, vs10yarj, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 88 | 88 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 89 | 89 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 90 | 90 | 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) | |
| 92 | 92 | AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 93 | 93 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r) |
| 94 | 94 | AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("oki", oki_bankswitch_w) |
| r6428 | r6429 | |
| 417 | 417 | /* sound hardware */ |
| 418 | 418 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 419 | 419 | |
| 420 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 420 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 421 | 421 | MDRV_SOUND_CONFIG(ym2151_config) |
| 422 | 422 | MDRV_SOUND_ROUTE(0, "mono", 0.45) |
| 423 | 423 | MDRV_SOUND_ROUTE(1, "mono", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 134 | 134 | AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w) |
| 135 | 135 | AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP /* irq ack? */ |
| 136 | 136 | 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) | |
| 140 | 140 | AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w) |
| 141 | 141 | AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) |
| 142 | 142 | AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size) /* gfx & work ram */ |
| r6428 | r6429 | |
| 184 | 184 | |
| 185 | 185 | static ADDRESS_MAP_START( heberpop_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 186 | 186 | 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) | |
| 188 | 188 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 189 | 189 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| 190 | 190 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 502 | 502 | /* sound hardware */ |
| 503 | 503 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 504 | 504 | |
| 505 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 505 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 506 | 506 | MDRV_SOUND_CONFIG(ay8910_config) |
| 507 | 507 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 508 | 508 | |
| r6428 | r6429 | |
| 542 | 542 | /* sound hardware */ |
| 543 | 543 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 544 | 544 | |
| 545 | MDRV_SOUND_ADD("ym", YM3438, 8000000) | |
| 545 | MDRV_SOUND_ADD("ymsnd", YM3438, 8000000) | |
| 546 | 546 | MDRV_SOUND_CONFIG(ym3438_config) |
| 547 | 547 | MDRV_SOUND_ROUTE(0, "mono", 0.40) |
| 548 | 548 | MDRV_SOUND_ROUTE(1, "mono", 0.40) |
| r6428 | r6429 | |
| 583 | 583 | /* sound hardware */ |
| 584 | 584 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 585 | 585 | |
| 586 | MDRV_SOUND_ADD("ym", YM3438, 8000000) | |
| 586 | MDRV_SOUND_ADD("ymsnd", YM3438, 8000000) | |
| 587 | 587 | MDRV_SOUND_CONFIG(ym3438_config) |
| 588 | 588 | MDRV_SOUND_ROUTE(0, "mono", 0.40) |
| 589 | 589 | MDRV_SOUND_ROUTE(1, "mono", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 153 | 153 | |
| 154 | 154 | static ADDRESS_MAP_START( cpu2_port_map, ADDRESS_SPACE_IO, 8 ) |
| 155 | 155 | 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) | |
| 158 | 158 | ADDRESS_MAP_END |
| 159 | 159 | |
| 160 | 160 | |
| r6428 | r6429 | |
| 339 | 339 | /* sound hardware */ |
| 340 | 340 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 341 | 341 | |
| 342 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 342 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 343 | 343 | MDRV_SOUND_CONFIG(ay8910_config) |
| 344 | 344 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 345 | 345 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 98 | 98 | AM_RANGE(0x049018, 0x049019) AM_WRITENOP |
| 99 | 99 | AM_RANGE(0x04901c, 0x04901d) AM_WRITENOP |
| 100 | 100 | 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) | |
| 102 | 102 | AM_RANGE(0x052086, 0x052087) AM_WRITENOP |
| 103 | 103 | ADDRESS_MAP_END |
| 104 | 104 | |
| r6428 | r6429 | |
| 297 | 297 | /* sound hardware */ |
| 298 | 298 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 299 | 299 | |
| 300 | MDRV_SOUND_ADD("ym", YM2203, 12000000/4) | |
| 300 | MDRV_SOUND_ADD("ymsnd", YM2203, 12000000/4) | |
| 301 | 301 | MDRV_SOUND_CONFIG(ym2203_config) |
| 302 | 302 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 303 | 303 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 4 | 4 | |
| 5 | 5 | TODO: |
| 6 | 6 | -eeprom |
| 7 | -bankswitch | |
| 8 | 7 | -inputs |
| 9 | 8 | -missing color proms? |
| 10 | 9 | |
| 10 | bp 529 do pc=53e | |
| 11 | ||
| 11 | 12 | ----------------------------------------------------- |
| 12 | 13 | |
| 13 | 14 | Forte Card (POKER GAME) |
| r6428 | r6429 | |
| 28 | 29 | #include "machine/eeprom.h" |
| 29 | 30 | #include "sound/ay8910.h" |
| 30 | 31 | #include "machine/8255ppi.h" |
| 32 | #include "video/mc6845.h" | |
| 31 | 33 | |
| 32 | 34 | static UINT8 *fortecar_ram; |
| 33 | 35 | static int bank; |
| 34 | 36 | |
| 35 | static | |
| 37 | static V | |
| 36 | 38 | { |
| 37 | ||
| 39 | } | |
| 38 | 40 | |
| 39 | if(offset == 0) | |
| 40 | address = data; | |
| 41 | else | |
| 41 | static VIDEO_UPDATE(fortecar) | |
| 42 | { | |
| 43 | int x,y,count; | |
| 44 | count = 0; | |
| 45 | ||
| 46 | for (y=0;y<0x1e;y++) | |
| 42 | 47 | { |
| 43 | | |
| 48 | fo | |
| 44 | 49 | { |
| 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 | ||
| 47 | 58 | } |
| 48 | 59 | } |
| 60 | ||
| 61 | return 0; | |
| 49 | 62 | } |
| 50 | 63 | |
| 51 | 64 | static WRITE8_DEVICE_HANDLER( ppi0_portc_w ) |
| r6428 | r6429 | |
| 67 | 80 | DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(ppi0_portc_w) |
| 68 | 81 | }; |
| 69 | 82 | |
| 70 | static WRITE8_HANDLER( rom_bank_w ) | |
| 71 | { | |
| 72 | int new_bank = (data&0xff)>>0; | |
| 73 | 83 | |
| 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 | ||
| 84 | 84 | static WRITE8_DEVICE_HANDLER( ayporta_w ) |
| 85 | 85 | { |
| 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 | */ | |
| 86 | 98 | } |
| 87 | 99 | |
| 100 | /* lamps? */ | |
| 88 | 101 | static WRITE8_DEVICE_HANDLER( ayportb_w ) |
| 89 | 102 | { |
| 103 | //logerror("AY port B write %02x\n",data); | |
| 90 | 104 | } |
| 91 | 105 | |
| 92 | 106 | static const ay8910_interface ay8910_config = |
| r6428 | r6429 | |
| 101 | 115 | |
| 102 | 116 | static ADDRESS_MAP_START( fortecar_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 103 | 117 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 104 | AM_RANGE(0xc000, 0xc7ff) AM_R | |
| 118 | AM_RANGE(0xc000, 0xc7ff) AM_R | |
| 105 | 119 | AM_RANGE(0xd000, 0xd7ff) AM_RAM |
| 106 | 120 | AM_RANGE(0xd800, 0xffff) AM_RAM AM_BASE(&fortecar_ram) |
| 107 | 121 | ADDRESS_MAP_END |
| 108 | 122 | |
| 109 | 123 | static ADDRESS_MAP_START( fortecar_ports, ADDRESS_SPACE_IO, 8 ) |
| 110 | 124 | 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 | |
| 116 | 131 | AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0") //written too,multiplexer? |
| 117 | 132 | AM_RANGE(0xa1, 0xa1) AM_READ_PORT("IN1") |
| 118 | 133 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 178 | 193 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 179 | 194 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 180 | 195 | 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 ) | |
| 199 | 202 | |
| 200 | 203 | PORT_START("DSW1") /* 8bit */ |
| 201 | 204 | PORT_DIPNAME( 0x01, 0x01, "DSW1" ) |
| r6428 | r6429 | |
| 227 | 230 | static const gfx_layout tiles8x8_layout = |
| 228 | 231 | { |
| 229 | 232 | 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 }, | |
| 233 | 236 | { 8,9,10,11,0, 1, 2, 3 }, |
| 234 | 237 | { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, |
| 235 | 238 | 16*8 |
| 236 | 239 | }; |
| 237 | 240 | |
| 238 | 241 | static GFXDECODE_START( fortecar ) |
| 239 | GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, | |
| 242 | GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 4 | |
| 240 | 243 | GFXDECODE_END |
| 241 | 244 | |
| 242 | static | |
| 245 | static MACHINE | |
| 243 | 246 | { |
| 247 | bank = -1; | |
| 244 | 248 | } |
| 245 | 249 | |
| 246 | static VIDEO_UPDATE(fortecar) | |
| 250 | /* WRONG, just to see something */ | |
| 251 | static PALETTE_INIT( fortecar ) | |
| 247 | 252 | { |
| 248 | int x,y,count; | |
| 249 | count = 0; | |
| 253 | int i,r,g,b; | |
| 250 | 254 | |
| 251 | for ( | |
| 255 | for (i = 0; i < 0x40*4; i++ ) | |
| 252 | 256 | { |
| 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; | |
| 256 | 260 | |
| 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))); | |
| 264 | 262 | } |
| 265 | return 0; | |
| 266 | 263 | } |
| 267 | 264 | |
| 268 | static | |
| 265 | static c | |
| 269 | 266 | { |
| 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 | |
| 280 | static 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 | ||
| 292 | static 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 | } | |
| 271 | 305 | } |
| 272 | 306 | |
| 273 | 307 | static MACHINE_DRIVER_START( fortecar ) |
| r6428 | r6429 | |
| 286 | 320 | MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1) |
| 287 | 321 | |
| 288 | 322 | MDRV_MACHINE_RESET(fortecar) |
| 289 | MDRV_NVRAM_HANDLER( | |
| 323 | MDRV_NVRAM_HANDLER(fortecar) | |
| 290 | 324 | |
| 291 | 325 | MDRV_PPI8255_ADD("fcppi0", ppi0intf) |
| 292 | 326 | |
| 293 | 327 | MDRV_GFXDECODE(fortecar) |
| 294 | 328 | MDRV_PALETTE_LENGTH(0x100) |
| 329 | MDRV_PALETTE_INIT(fortecar) | |
| 295 | 330 | |
| 296 | 331 | MDRV_VIDEO_START(fortecar) |
| 297 | 332 | MDRV_VIDEO_UPDATE(fortecar) |
| 298 | 333 | |
| 334 | MDRV_MC6845_ADD("crtc", MC6845, 6000000/4, mc6845_intf) /* unknown type / hand tuned to get ~60 fps */ | |
| 335 | ||
| 299 | 336 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 300 | 337 | |
| 301 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 338 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 302 | 339 | MDRV_SOUND_CONFIG(ay8910_config) |
| 303 | 340 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 304 | 341 | MACHINE_DRIVER_END |
| 305 | 342 | |
| 306 | 343 | ROM_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) ) | |
| 310 | 346 | |
| 311 | 347 | ROM_REGION( 0x30000, "gfx1", 0 ) |
| 312 | 348 | ROM_LOAD( "fortecar.u38", 0x00000, 0x10000, CRC(c2090690) SHA1(f0aa8935b90a2ab6043555ece69f926372246648) ) |
| 313 | 349 | ROM_LOAD( "fortecar.u39", 0x10000, 0x10000, CRC(fc3ddf4f) SHA1(4a95b24c4edb67f6d59f795f86dfbd12899e01b0) ) |
| 314 | 350 | 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 ) | |
| 315 | 354 | ROM_END |
| 316 | 355 | |
| 317 | 356 | static DRIVER_INIT( fortecar ) |
| r6428 | r6429 | |
|---|---|---|
| 623 | 623 | } |
| 624 | 624 | case 0x30: |
| 625 | 625 | { |
| 626 | sn76496_w(devtag_get_device(space->machine, "sn"), 0, data & 0xff); | |
| 626 | sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data & 0xff); | |
| 627 | 627 | break; |
| 628 | 628 | } |
| 629 | 629 | case 0x31: |
| r6428 | r6429 | |
| 784 | 784 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 785 | 785 | |
| 786 | 786 | /* TODO: Verify clock */ |
| 787 | MDRV_SOUND_ADD("sn", SN76489, 2000000) | |
| 787 | MDRV_SOUND_ADD("snsnd", SN76489, 2000000) | |
| 788 | 788 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 789 | 789 | |
| 790 | 790 | /* 6840 PTM */ |
| r6428 | r6429 | |
|---|---|---|
| 101 | 101 | |
| 102 | 102 | static ADDRESS_MAP_START( maniach_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 103 | 103 | 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) | |
| 105 | 105 | AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_signed_w) |
| 106 | 106 | AM_RANGE(0x2004, 0x2004) AM_READ(soundlatch_r) |
| 107 | 107 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 357 | 357 | /* sound hardware */ |
| 358 | 358 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 359 | 359 | |
| 360 | MDRV_SOUND_ADD("ym", YM3526, 3600000) | |
| 360 | MDRV_SOUND_ADD("ymsnd", YM3526, 3600000) | |
| 361 | 361 | MDRV_SOUND_CONFIG(ym3526_config) |
| 362 | 362 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 363 | 363 |
| r6428 | r6429 | |
|---|---|---|
| 195 | 195 | AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w) /* 007232 (chip 1) */ |
| 196 | 196 | AM_RANGE(0xa01c, 0xa01c) AM_DEVWRITE("konami2", k007232_extvolume_w) /* extra volume, goes to the 007232 w/ A11 */ |
| 197 | 197 | 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 */ | |
| 199 | 199 | AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 200 | 200 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_r) /* engine sound volume */ |
| 201 | 201 | AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ??? */ |
| r6428 | r6429 | |
| 355 | 355 | /* sound hardware */ |
| 356 | 356 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 357 | 357 | |
| 358 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 358 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 359 | 359 | MDRV_SOUND_CONFIG(ym2151_config) |
| 360 | 360 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 361 | 361 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 192 | 192 | static ADDRESS_MAP_START( lsasquad_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 193 | 193 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 194 | 194 | 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) | |
| 197 | 197 | AM_RANGE(0xd000, 0xd000) AM_READWRITE(lsasquad_sh_sound_command_r,lsasquad_sh_result_w) |
| 198 | 198 | AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w) |
| 199 | 199 | AM_RANGE(0xd800, 0xd800) AM_WRITE(lsasquad_sh_nmi_enable_w) |
| r6428 | r6429 | |
| 361 | 361 | static ADDRESS_MAP_START( daikaiju_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 362 | 362 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 363 | 363 | 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) | |
| 366 | 366 | AM_RANGE(0xd000, 0xd000) AM_READ(daikaiju_sh_sound_command_r) |
| 367 | 367 | AM_RANGE(0xd400, 0xd400) AM_WRITENOP |
| 368 | 368 | AM_RANGE(0xd800, 0xd800) AM_READ(daikaiju_sound_status_r) AM_WRITENOP |
| r6428 | r6429 | |
| 562 | 562 | /* sound hardware */ |
| 563 | 563 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 564 | 564 | |
| 565 | MDRV_SOUND_ADD("ay", AY8910, 3000000) | |
| 565 | MDRV_SOUND_ADD("aysnd", AY8910, 3000000) | |
| 566 | 566 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) |
| 567 | 567 | |
| 568 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 568 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 569 | 569 | MDRV_SOUND_CONFIG(ym2203_config) |
| 570 | 570 | MDRV_SOUND_ROUTE(0, "mono", 0.12) |
| 571 | 571 | MDRV_SOUND_ROUTE(1, "mono", 0.12) |
| r6428 | r6429 | |
| 607 | 607 | /* sound hardware */ |
| 608 | 608 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 609 | 609 | |
| 610 | MDRV_SOUND_ADD("ay", AY8910, 3000000) | |
| 610 | MDRV_SOUND_ADD("aysnd", AY8910, 3000000) | |
| 611 | 611 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) |
| 612 | 612 | |
| 613 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 613 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 614 | 614 | MDRV_SOUND_CONFIG(ym2203_config) |
| 615 | 615 | MDRV_SOUND_ROUTE(0, "mono", 0.12) |
| 616 | 616 | MDRV_SOUND_ROUTE(1, "mono", 0.12) |
| r6428 | r6429 | |
|---|---|---|
| 271 | 271 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 272 | 272 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 273 | 273 | 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) | |
| 275 | 275 | AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 276 | 276 | ADDRESS_MAP_END |
| 277 | 277 | |
| r6428 | r6429 | |
| 789 | 789 | static MACHINE_DRIVER_START( sound_2151 ) |
| 790 | 790 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 791 | 791 | |
| 792 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 792 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 793 | 793 | MDRV_SOUND_CONFIG(ym2151_config) |
| 794 | 794 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 795 | 795 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 802 | 802 | static MACHINE_DRIVER_START( sound_2151_m68k ) |
| 803 | 803 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 804 | 804 | |
| 805 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 805 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 806 | 806 | MDRV_SOUND_CONFIG(ym2151_config) |
| 807 | 807 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 808 | 808 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | Break Thru Doc. Data East (1986) | |
| 3 | 2 | |
| 4 | ||
| 3 | Br | |
| 5 | 4 | |
| 6 | UNK-1.1 (16Kb) Code (4000-7FFF) | |
| 7 | UNK-1.2 (32Kb) Main 6809 (8000-FFFF) | |
| 8 | UNK-1.3 (32Kb) Mapped (2000-3FFF) | |
| 9 | UNK-1.4 (32Kb) Mapped (2000-3FFF) | |
| 5 | driver by Phil Stroffolino | |
| 10 | 6 | |
| 11 | UNK-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) | |
| 12 | 11 | |
| 13 | Background has 4 banks, with 256 16x16x8 tiles in each bank. | |
| 14 | UNK-1.6 (32Kb) GFX Background | |
| 15 | UNK-1.7 (32Kb) GFX Background | |
| 16 | UNK-1.8 (32Kb) GFX Background | |
| 12 | UNK-1.5 (32Kb) Sound 6809 (8000-FFFF) | |
| 17 | 13 | |
| 18 | UNK-1.9 (32Kb) GFX Sprites | |
| 19 | UNK-1.10 (32Kb) GFX Sprites | |
| 20 | UNK-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 | |
| 21 | 18 | |
| 22 | Text has 256 8x8x4 characters. | |
| 23 | UNK-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 | |
| 24 | 22 | |
| 25 | ************************************************************************** | |
| 26 | Memory Map for Main CPU by Carlos A. Lozano | |
| 27 | ************************************************************************** | |
| 23 | Text has 256 8x8x4 characters. | |
| 24 | UNK-1.12 (8Kb) GFX Text | |
| 28 | 25 | |
| 29 | MAIN CPU | |
| 30 | 0000-03FF W Plane0 | |
| 31 | 0400-0BFF R/W RAM | |
| 32 | 0C00-0FFF W Plane2(Background) | |
| 33 | 1000-10FF W Plane1(sprites) | |
| 34 | 1100-17FF R/W RAM | |
| 35 | 1800-180F R/W In/Out | |
| 36 | 1810-1FFF R/W RAM (unmapped?) | |
| 37 | 2000-3FFF R ROM Mapped(*) | |
| 38 | 4000-7FFF R ROM(UNK-1.1) | |
| 39 | 8000-FFFF R ROM(UNK-1.2) | |
| 26 | ************************************************************************** | |
| 27 | Memory Map for Main CPU by Carlos A. Lozano | |
| 28 | ************************************************************************** | |
| 40 | 29 | |
| 41 | Interrupts: Reset, NMI, IRQ | |
| 42 | The 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) | |
| 43 | 41 | |
| 44 | Sound: 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 | |
| 45 | 44 | |
| 46 | 2008-07 | |
| 47 | Dip 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. | |
| 48 | 46 | |
| 47 | 2008-07 | |
| 48 | Dip locations verified with manual for brkthru (US conv. kit) and darwin | |
| 49 | ||
| 49 | 50 | ***************************************************************************/ |
| 50 | 51 | |
| 51 | 52 | #include "driver.h" |
| 52 | 53 | #include "cpu/m6809/m6809.h" |
| 53 | 54 | #include "sound/2203intf.h" |
| 54 | 55 | #include "sound/3526intf.h" |
| 56 | #include "brkthru.h" | |
| 55 | 57 | |
| 56 | 58 | |
| 57 | 59 | #define MASTER_CLOCK XTAL_12MHz |
| 58 | 60 | |
| 59 | 61 | |
| 60 | //UINT8 *brkthru_nmi_enable; /* needs to be tracked down */ | |
| 61 | extern UINT8 *brkthru_videoram; | |
| 62 | extern size_t brkthru_videoram_size; | |
| 62 | /************************************* | |
| 63 | * | |
| 64 | * Memory handlers | |
| 65 | * | |
| 66 | *************************************/ | |
| 63 | 67 | |
| 64 | WRITE8_HANDLER( brkthru_1800_w ); | |
| 65 | WRITE8_HANDLER( brkthru_bgram_w ); | |
| 66 | WRITE8_HANDLER( brkthru_fgram_w ); | |
| 67 | VIDEO_START( brkthru ); | |
| 68 | PALETTE_INIT( brkthru ); | |
| 69 | VIDEO_UPDATE( brkthru ); | |
| 70 | ||
| 71 | ||
| 72 | 68 | static WRITE8_HANDLER( brkthru_1803_w ) |
| 73 | 69 | { |
| 74 | 70 | /* bit 0 = NMI enable */ |
| r6428 | r6429 | |
| 87 | 83 | |
| 88 | 84 | static WRITE8_HANDLER( brkthru_soundlatch_w ) |
| 89 | 85 | { |
| 90 | soundlatch_w(space,offset,data); | |
| 86 | soundlatch_w(space, offset, data); | |
| 91 | 87 | cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE); |
| 92 | 88 | } |
| 93 | 89 | |
| r6428 | r6429 | |
| 98 | 94 | } |
| 99 | 95 | |
| 100 | 96 | |
| 97 | /************************************* | |
| 98 | * | |
| 99 | * Address maps | |
| 100 | * | |
| 101 | *************************************/ | |
| 101 | 102 | |
| 102 | 103 | static ADDRESS_MAP_START( brkthru_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 103 | AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE( | |
| 104 | AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE_MEMBER( | |
| 104 | 105 | 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) | |
| 107 | 108 | AM_RANGE(0x1100, 0x17ff) AM_RAM |
| 108 | 109 | AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") |
| 109 | 110 | AM_RANGE(0x1801, 0x1801) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 116 | 117 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| 117 | 118 | ADDRESS_MAP_END |
| 118 | 119 | |
| 119 | ||
| 120 | 120 | /* same as brktrhu, but xor 0x1000 below 8k */ |
| 121 | 121 | static ADDRESS_MAP_START( darwin_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 122 | AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE( | |
| 122 | AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_BASE_MEMBER( | |
| 123 | 123 | 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) | |
| 126 | 126 | AM_RANGE(0x0100, 0x01ff) AM_WRITENOP /*tidyup, nothing realy here?*/ |
| 127 | 127 | AM_RANGE(0x0800, 0x0800) AM_READ_PORT("P1") |
| 128 | 128 | AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 145 | 145 | ADDRESS_MAP_END |
| 146 | 146 | |
| 147 | 147 | |
| 148 | /************************************* | |
| 149 | * | |
| 150 | * Input ports | |
| 151 | * | |
| 152 | *************************************/ | |
| 148 | 153 | |
| 149 | 154 | static INPUT_PORTS_START( brkthru ) |
| 150 | 155 | PORT_START("P1") |
| r6428 | r6429 | |
| 258 | 263 | INPUT_PORTS_END |
| 259 | 264 | |
| 260 | 265 | |
| 266 | /************************************* | |
| 267 | * | |
| 268 | * Graphics definitions | |
| 269 | * | |
| 270 | *************************************/ | |
| 271 | ||
| 261 | 272 | static const gfx_layout charlayout = |
| 262 | 273 | { |
| 263 | 274 | 8,8, /* 8*8 chars */ |
| r6428 | r6429 | |
| 321 | 332 | GFXDECODE_ENTRY( "gfx3", 0x00000, spritelayout, 0x40, 8 ) /* use colors 0x40-0x7f */ |
| 322 | 333 | GFXDECODE_END |
| 323 | 334 | |
| 335 | ||
| 336 | /************************************* | |
| 337 | * | |
| 338 | * Sound interface | |
| 339 | * | |
| 340 | *************************************/ | |
| 341 | ||
| 324 | 342 | /* handler called by the 3812 emulator when the internal timers cause an IRQ */ |
| 325 | 343 | static void irqhandler(const device_config *device, int linestate) |
| 326 | 344 | { |
| r6428 | r6429 | |
| 334 | 352 | |
| 335 | 353 | |
| 336 | 354 | |
| 355 | /************************************* | |
| 356 | * | |
| 357 | * Machine driver | |
| 358 | * | |
| 359 | *************************************/ | |
| 360 | ||
| 361 | static 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 | ||
| 337 | 370 | static MACHINE_DRIVER_START( brkthru ) |
| 338 | 371 | |
| 372 | /* driver data */ | |
| 373 | MDRV_DRIVER_DATA(brkthru_state) | |
| 374 | ||
| 339 | 375 | /* basic machine hardware */ |
| 340 | 376 | MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ |
| 341 | 377 | MDRV_CPU_PROGRAM_MAP(brkthru_map) |
| r6428 | r6429 | |
| 344 | 380 | MDRV_CPU_ADD("audiocpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ |
| 345 | 381 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 346 | 382 | |
| 383 | MDRV_MACHINE_RESET(brkthru) | |
| 384 | ||
| 347 | 385 | /* video hardware */ |
| 348 | 386 | MDRV_GFXDECODE(brkthru) |
| 349 | 387 | MDRV_PALETTE_LENGTH(256) |
| r6428 | r6429 | |
| 374 | 412 | |
| 375 | 413 | static MACHINE_DRIVER_START( darwin ) |
| 376 | 414 | |
| 415 | /* driver data */ | |
| 416 | MDRV_DRIVER_DATA(brkthru_state) | |
| 417 | ||
| 377 | 418 | /* basic machine hardware */ |
| 378 | 419 | MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ |
| 379 | 420 | MDRV_CPU_PROGRAM_MAP(darwin_map) |
| r6428 | r6429 | |
| 382 | 423 | MDRV_CPU_ADD("audiocpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ |
| 383 | 424 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 384 | 425 | |
| 426 | MDRV_MACHINE_RESET(brkthru) | |
| 427 | ||
| 385 | 428 | /* video hardware */ |
| 386 | 429 | MDRV_GFXDECODE(brkthru) |
| 387 | 430 | MDRV_PALETTE_LENGTH(256) |
| r6428 | r6429 | |
| 399 | 442 | = HSync / (VDisplay + VBlank) |
| 400 | 443 | = 15.625kHz / (240 + 32) |
| 401 | 444 | = 57.444855Hz |
| 402 | tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */ | |
| 445 | tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */ | |
| 403 | 446 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 404 | 447 | |
| 405 | 448 | MDRV_PALETTE_INIT(brkthru) |
| r6428 | r6429 | |
| 422 | 465 | |
| 423 | 466 | |
| 424 | 467 | |
| 425 | /*************************************************************************** | |
| 468 | /************************************* | |
| 469 | * | |
| 470 | * ROM definition(s) | |
| 471 | * | |
| 472 | *************************************/ | |
| 426 | 473 | |
| 427 | Game driver(s) | |
| 428 | ||
| 429 | ***************************************************************************/ | |
| 430 | ||
| 431 | 474 | ROM_START( brkthru ) |
| 432 | 475 | ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for main CPU + 64k for banked ROMs */ |
| 433 | 476 | ROM_LOAD( "brkthru.1", 0x04000, 0x4000, CRC(cfb4265f) SHA1(4cd748fa06fd2727de1694196912d605672d4883) ) |
| r6428 | r6429 | |
| 590 | 633 | ROM_END |
| 591 | 634 | |
| 592 | 635 | |
| 636 | /************************************* | |
| 637 | * | |
| 638 | * Driver initialization | |
| 639 | * | |
| 640 | *************************************/ | |
| 593 | 641 | |
| 594 | GAME( 1986, brkthru, 0, brkthru, brkthru, 0, ROT0, "Data East USA", "Break Thru (US)", 0 ) | |
| 595 | GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, 0, ROT0, "Data East Corporation", "Kyohkoh-Toppa (Japan)", 0 ) | |
| 596 | GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, 0, ROT0, "bootleg", "Force Break (bootleg)", 0 ) | |
| 597 | GAME( 1986, darwin, 0, darwin, darwin, 0, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", 0 ) | |
| 642 | static 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 | ||
| 654 | GAME( 1986, brkthru, 0, brkthru, brkthru, brkthru, ROT0, "Data East USA", "Break Thru (US)", GAME_SUPPORTS_SAVE ) | |
| 655 | GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, brkthru, ROT0, "Data East Corporation", "Kyohkoh-Toppa (Japan)", GAME_SUPPORTS_SAVE ) | |
| 656 | GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, brkthru, ROT0, "bootleg", "Force Break (bootleg)", GAME_SUPPORTS_SAVE ) | |
| 657 | GAME( 1986, darwin, 0, darwin, darwin, brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 210 | 210 | |
| 211 | 211 | static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) |
| 212 | 212 | 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) | |
| 214 | 214 | AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") |
| 215 | 215 | AM_RANGE(0x80, 0x80) AM_WRITE(trvmadns_banking_w) |
| 216 | 216 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 308 | 308 | /* sound hardware */ |
| 309 | 309 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 310 | 310 | |
| 311 | MDRV_SOUND_ADD("ay", AY8910, 10000000/2/4) //? | |
| 311 | MDRV_SOUND_ADD("aysnd", AY8910, 10000000/2/4) //? | |
| 312 | 312 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 313 | 313 | MACHINE_DRIVER_END |
| 314 | 314 |
| r6428 | r6429 | |
|---|---|---|
| 270 | 270 | |
| 271 | 271 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 272 | 272 | 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) | |
| 274 | 274 | AM_RANGE(0xf200, 0xf200) AM_READ(sound_command_r) |
| 275 | 275 | AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("upd", upd_control_w) |
| 276 | 276 | AM_RANGE(0xf600, 0xf600) AM_DEVWRITE("upd", upd_data_w) |
| r6428 | r6429 | |
| 506 | 506 | /* sound hardware */ |
| 507 | 507 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 508 | 508 | |
| 509 | MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK/4) | |
| 509 | MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK/4) | |
| 510 | 510 | MDRV_SOUND_CONFIG(ym2151_config) |
| 511 | 511 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 512 | 512 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 254 | 254 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 255 | 255 | AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_address_w) |
| 256 | 256 | 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) | |
| 259 | 259 | AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) |
| 260 | 260 | AM_RANGE(0xc0, 0xc0) AM_WRITE(watchdog_reset_w) |
| 261 | 261 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 301 | 301 | /* sound hardware */ |
| 302 | 302 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 303 | 303 | |
| 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 */ | |
| 305 | 305 | MDRV_SOUND_CONFIG(ay8910_config) |
| 306 | 306 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 307 | 307 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 110 | 110 | |
| 111 | 111 | static ADDRESS_MAP_START( sound_io, ADDRESS_SPACE_IO, 8 ) |
| 112 | 112 | 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) | |
| 114 | 114 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", bingoc_play_w) |
| 115 | 115 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", upd7759_port_w) |
| 116 | 116 | #if !SOUND_TEST |
| r6428 | r6429 | |
| 153 | 153 | |
| 154 | 154 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") //might just be mono... |
| 155 | 155 | |
| 156 | MDRV_SOUND_ADD("ym", YM2151, 7159160/2) | |
| 156 | MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2) | |
| 157 | 157 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 158 | 158 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 159 | 159 |
| r6428 | r6429 | |
|---|---|---|
| 116 | 116 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 117 | 117 | AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ |
| 118 | 118 | 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) | |
| 120 | 120 | AM_RANGE(0x72, 0x72) AM_READWRITE(protection_r, protection_w) |
| 121 | 121 | AM_RANGE(0x74, 0x74) AM_READ_PORT("P1") |
| 122 | 122 | AM_RANGE(0x76, 0x76) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 126 | 126 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 127 | 127 | AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ |
| 128 | 128 | 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) | |
| 130 | 130 | AM_RANGE(0x72, 0x72) AM_READWRITE(gfire2_protection_r, gfire2_protection_w) |
| 131 | 131 | AM_RANGE(0x74, 0x74) AM_READ_PORT("P1") |
| 132 | 132 | AM_RANGE(0x76, 0x76) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 281 | 281 | /* sound hardware */ |
| 282 | 282 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 283 | 283 | |
| 284 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 284 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 285 | 285 | MDRV_SOUND_CONFIG(ym2203_config) |
| 286 | 286 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 287 | 287 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 605 | 605 | ADDRESS_MAP_UNMAP_HIGH |
| 606 | 606 | AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x10000) |
| 607 | 607 | 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) | |
| 610 | 610 | AM_RANGE(0xe000, 0xffff) AM_RAM |
| 611 | 611 | ADDRESS_MAP_END |
| 612 | 612 | |
| r6428 | r6429 | |
| 1293 | 1293 | MDRV_SOUND_ADD("ym2", YM3438, 8000000) |
| 1294 | 1294 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 1295 | 1295 | |
| 1296 | MDRV_SOUND_ADD("rf", RF5C68, 10000000) | |
| 1296 | MDRV_SOUND_ADD("rfsnd", RF5C68, 10000000) | |
| 1297 | 1297 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1298 | 1298 | MACHINE_DRIVER_END |
| 1299 | 1299 |
| r6428 | r6429 | |
|---|---|---|
| 69 | 69 | AM_RANGE(0xec10, 0xec10) AM_READ_PORT("IN4") |
| 70 | 70 | AM_RANGE(0xec12, 0xec12) AM_READ_PORT("IN5") |
| 71 | 71 | |
| 72 | AM_RANGE(0xec20, 0xec20) AM_DEVREAD("ay", ay8910_r) | |
| 72 | AM_RANGE(0xec20, 0xec20) AM_DEVREAD("aysnd", ay8910_r) | |
| 73 | 73 | 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) | |
| 75 | 75 | AM_RANGE(0xec3e, 0xec3e) AM_READNOP //not used |
| 76 | 76 | AM_RANGE(0xec30, 0xec3f) AM_RAM |
| 77 | 77 | AM_RANGE(0xf000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 649 | 649 | /* sound hardware */ |
| 650 | 650 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 651 | 651 | |
| 652 | MDRV_SOUND_ADD("ay", AY8910, 1000000) | |
| 652 | MDRV_SOUND_ADD("aysnd", AY8910, 1000000) | |
| 653 | 653 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) |
| 654 | 654 | MACHINE_DRIVER_END |
| 655 | 655 |
| r6428 | r6429 | |
|---|---|---|
| 162 | 162 | |
| 163 | 163 | static ADDRESS_MAP_START( meijinsn_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 164 | 164 | 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) | |
| 167 | 167 | AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_clear_w) |
| 168 | 168 | AM_RANGE(0x06, 0x06) AM_WRITENOP |
| 169 | 169 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 335 | 335 | /* sound hardware */ |
| 336 | 336 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 337 | 337 | |
| 338 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 338 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 339 | 339 | MDRV_SOUND_CONFIG(ay8910_config) |
| 340 | 340 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 341 | 341 |
| r6428 | r6429 | |
|---|---|---|
| 419 | 419 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 420 | 420 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 421 | 421 | 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) | |
| 423 | 423 | AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 424 | 424 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 425 | 425 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w) |
| r6428 | r6429 | |
| 677 | 677 | /* sound hardware */ |
| 678 | 678 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 679 | 679 | |
| 680 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 680 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 681 | 681 | MDRV_SOUND_CONFIG(ym2151_config) |
| 682 | 682 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 683 | 683 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 72 | 72 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 73 | 73 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 74 | 74 | 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) | |
| 76 | 76 | AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(SMH_NOP, SMH_NOP) /* irq ack ?? */ |
| 77 | 77 | AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r) |
| 78 | 78 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 234 | 234 | /* sound hardware */ |
| 235 | 235 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 236 | 236 | |
| 237 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 237 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 238 | 238 | MDRV_SOUND_CONFIG(ym3812_config) |
| 239 | 239 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 240 | 240 |
| r6428 | r6429 | |
|---|---|---|
| 86 | 86 | |
| 87 | 87 | static ADDRESS_MAP_START( sound_cpu, ADDRESS_SPACE_PROGRAM, 8 ) |
| 88 | 88 | 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) | |
| 90 | 90 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 91 | 91 | AM_RANGE(0xd000, 0xd000) AM_WRITE(tryout_sound_irq_ack_w) |
| 92 | 92 | AM_RANGE(0xc000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 223 | 223 | /* sound hardware */ |
| 224 | 224 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 225 | 225 | |
| 226 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 226 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 227 | 227 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 228 | 228 | MACHINE_DRIVER_END |
| 229 | 229 |
| r6428 | r6429 | |
|---|---|---|
| 114 | 114 | DMA8237 Controller |
| 115 | 115 | ******************/ |
| 116 | 116 | |
| 117 | static int dma_channel; | |
| 117 | 118 | static UINT8 dma_offset[2][4]; |
| 118 | 119 | static UINT8 at_pages[0x10]; |
| 119 | 120 | |
| 120 | static | |
| 121 | static W | |
| 121 | 122 | { |
| 122 | 123 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 123 | 124 | |
| 124 | 125 | /* Assert HLDA */ |
| 125 | | |
| 126 | i | |
| 126 | 127 | } |
| 127 | 128 | |
| 128 | 129 | |
| 129 | static | |
| 130 | static READ8 | |
| 130 | 131 | { |
| 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) | |
| 133 | 133 | & 0xFF0000; |
| 134 | 134 | |
| 135 | 135 | return memory_read_byte(space, page_offset + offset); |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 138 | |
| 139 | static | |
| 139 | static | |
| 140 | 140 | { |
| 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) | |
| 143 | 142 | & 0xFF0000; |
| 144 | 143 | |
| 145 | 144 | memory_write_byte(space, page_offset + offset, data); |
| r6428 | r6429 | |
| 189 | 188 | } |
| 190 | 189 | } |
| 191 | 190 | |
| 192 | ||
| 193 | static const struct dma8237_interface dma8237_1_config = | |
| 191 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 194 | 192 | { |
| 195 | XTAL_14_31818MHz/3, | |
| 193 | if (!state) dma_channel = channel; | |
| 194 | } | |
| 196 | 195 | |
| 197 | pc_dma_hrq_changed, | |
| 198 | pc_dma_read_byte, | |
| 199 | pc_dma_write_byte, | |
| 196 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 197 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 198 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 199 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 200 | 200 | |
| 201 | { NULL, NULL, NULL, NULL }, | |
| 202 | { NULL, NULL, NULL, NULL }, | |
| 203 | NULL | |
| 201 | static 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) } | |
| 204 | 210 | }; |
| 205 | 211 | |
| 206 | static | |
| 212 | static I | |
| 207 | 213 | { |
| 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 } | |
| 217 | 221 | }; |
| 218 | 222 | |
| 219 | 223 | |
| r6428 | r6429 | |
| 349 | 353 | } |
| 350 | 354 | |
| 351 | 355 | static ADDRESS_MAP_START( photoply_io, ADDRESS_SPACE_IO, 32 ) |
| 352 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 356 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 353 | 357 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 354 | 358 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 355 | 359 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| 356 | 360 | AM_RANGE(0x0070, 0x007f) AM_RAM//READWRITE(mc146818_port32le_r, mc146818_port32le_w) |
| 357 | 361 | AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO |
| 358 | 362 | AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff) |
| 359 | AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", | |
| 363 | AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", i | |
| 360 | 364 | AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2 |
| 361 | 365 | AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port |
| 362 | 366 | AM_RANGE(0x03c0, 0x03c3) AM_RAM |
| r6428 | r6429 | |
| 513 | 517 | // MDRV_IMPORT_FROM( at_kbdc8042 ) |
| 514 | 518 | MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config ) |
| 515 | 519 | 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 ) | |
| 518 | 522 | MDRV_PIT8254_ADD( "pit8254", at_pit8254_config ) |
| 519 | 523 | |
| 520 | 524 | MDRV_PALETTE_INIT(pcat_286) |
| r6428 | r6429 | |
|---|---|---|
| 212 | 212 | AM_RANGE(0x00, 0x00) AM_WRITE(chinsan_port00_w) |
| 213 | 213 | AM_RANGE(0x01, 0x01) AM_READ(chinsan_input_port_0_r) |
| 214 | 214 | 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) | |
| 216 | 216 | AM_RANGE(0x20, 0x20) AM_DEVWRITE("adpcm", chin_adpcm_w) |
| 217 | 217 | AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w) // ROM bank + unknown stuff (input mutliplex?) |
| 218 | 218 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 542 | 542 | // sound hardware |
| 543 | 543 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 544 | 544 | |
| 545 | MDRV_SOUND_ADD("ym", YM2203, 1500000) /* ? Mhz */ | |
| 545 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) /* ? Mhz */ | |
| 546 | 546 | MDRV_SOUND_CONFIG(ym2203_config) |
| 547 | 547 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 548 | 548 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
|---|---|---|
| 399 | 399 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 400 | 400 | AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w) |
| 401 | 401 | 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) | |
| 403 | 403 | ADDRESS_MAP_END |
| 404 | 404 | |
| 405 | 405 | static ADDRESS_MAP_START( aerofgt_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 406 | 406 | 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) | |
| 408 | 408 | AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w) |
| 409 | 409 | AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w) |
| 410 | 410 | AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 422 | 422 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 423 | 423 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 424 | 424 | 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) | |
| 426 | 426 | AM_RANGE(0xfc00, 0xfc00) AM_NOP |
| 427 | 427 | AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r) |
| 428 | 428 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1307 | 1307 | static MACHINE_DRIVER_START( pspikes ) |
| 1308 | 1308 | |
| 1309 | 1309 | /* basic machine hardware */ |
| 1310 | MDRV_CPU_ADD("maincpu",M68000,20 | |
| 1310 | MDRV_CPU_ADD("maincpu",M68000,XTAL_20MHz | |
| 1311 | 1311 | MDRV_CPU_PROGRAM_MAP(pspikes_map) |
| 1312 | 1312 | MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)/* all irq vectors are the same */ |
| 1313 | 1313 | |
| 1314 | MDRV_CPU_ADD("audiocpu",Z80, | |
| 1314 | MDRV_CPU_ADD("audiocpu",Z80,XTAL_20MHz | |
| 1315 | 1315 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 1316 | 1316 | MDRV_CPU_IO_MAP(turbofrc_sound_portmap) |
| 1317 | 1317 | /* IRQs are triggered by the YM2610 */ |
| r6428 | r6429 | |
| 1321 | 1321 | |
| 1322 | 1322 | /* video hardware */ |
| 1323 | 1323 | MDRV_SCREEN_ADD("screen", RASTER) |
| 1324 | ||
| 1324 | MDRV_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */ | |
| 1325 | 1325 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1326 | 1326 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 1327 | 1327 | MDRV_SCREEN_SIZE(64*8, 32*8) |
| r6428 | r6429 | |
| 1336 | 1336 | /* sound hardware */ |
| 1337 | 1337 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1338 | 1338 | |
| 1339 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 1339 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 1340 | 1340 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1341 | 1341 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1342 | 1342 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1462 | 1462 | /* sound hardware */ |
| 1463 | 1463 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1464 | 1464 | |
| 1465 | ||
| 1465 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz | |
| 1466 | 1466 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1467 | 1467 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1468 | 1468 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1501 | 1501 | /* sound hardware */ |
| 1502 | 1502 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1503 | 1503 | |
| 1504 | MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1504 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1505 | 1505 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1506 | 1506 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1507 | 1507 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1526 | 1526 | |
| 1527 | 1527 | /* video hardware */ |
| 1528 | 1528 | MDRV_SCREEN_ADD("screen", RASTER) |
| 1529 | ||
| 1529 | MDRV_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */ | |
| 1530 | 1530 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 1531 | 1531 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 1532 | 1532 | MDRV_SCREEN_SIZE(64*8, 32*8) |
| r6428 | r6429 | |
| 1540 | 1540 | /* sound hardware */ |
| 1541 | 1541 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1542 | 1542 | |
| 1543 | MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1543 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1544 | 1544 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1545 | 1545 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1546 | 1546 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1580 | 1580 | /* sound hardware */ |
| 1581 | 1581 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1582 | 1582 | |
| 1583 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 1583 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 1584 | 1584 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1585 | 1585 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1586 | 1586 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1595 | 1595 | MDRV_CPU_PROGRAM_MAP(aerofgt_map) |
| 1596 | 1596 | MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)/* all irq vectors are the same */ |
| 1597 | 1597 | |
| 1598 | ||
| 1598 | MDRV_CPU_ADD("audiocpu",Z80,XTAL_20MHz/4) /* 5 MHz | |
| 1599 | 1599 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 1600 | 1600 | MDRV_CPU_IO_MAP(aerofgt_sound_portmap) |
| 1601 | 1601 | /* IRQs are triggered by the YM2610 */ |
| r6428 | r6429 | |
| 1605 | 1605 | |
| 1606 | 1606 | /* video hardware */ |
| 1607 | 1607 | MDRV_SCREEN_ADD("screen", RASTER) |
| 1608 | ||
| 1608 | MDRV_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */ | |
| 1609 | 1609 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(400)) |
| 1610 | 1610 | /* wrong but improves sprite-background synchronization */ |
| 1611 | 1611 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| r6428 | r6429 | |
| 1620 | 1620 | /* sound hardware */ |
| 1621 | 1621 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1622 | 1622 | |
| 1623 | MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1623 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ | |
| 1624 | 1624 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1625 | 1625 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1626 | 1626 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1719 | 1719 | /* sound hardware */ |
| 1720 | 1720 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1721 | 1721 | |
| 1722 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 1722 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 1723 | 1723 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1724 | 1724 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1725 | 1725 | |
| r6428 | r6429 | |
| 1754 | 1754 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 1755 | 1755 | ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) ) |
| 1756 | 1756 | |
| 1757 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 1757 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 1758 | 1758 | ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) ) |
| 1759 | 1759 | |
| 1760 | 1760 | ROM_REGION( 0x0200, "plds", 0 ) |
| r6428 | r6429 | |
| 1779 | 1779 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 1780 | 1780 | ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) ) |
| 1781 | 1781 | |
| 1782 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 1782 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 1783 | 1783 | ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) ) |
| 1784 | 1784 | |
| 1785 | 1785 | ROM_REGION( 0x0400, "plds", 0 ) |
| r6428 | r6429 | |
| 1805 | 1805 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 1806 | 1806 | ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) ) |
| 1807 | 1807 | |
| 1808 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 1808 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 1809 | 1809 | ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) ) |
| 1810 | 1810 | ROM_END |
| 1811 | 1811 | |
| r6428 | r6429 | |
| 1988 | 1988 | |
| 1989 | 1989 | /* no "ym.deltat" */ |
| 1990 | 1990 | |
| 1991 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 1991 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 1992 | 1992 | ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) ) |
| 1993 | 1993 | ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL |
| 1994 | 1994 | |
| r6428 | r6429 | |
| 2038 | 2038 | |
| 2039 | 2039 | /* no "ym.deltat" */ |
| 2040 | 2040 | |
| 2041 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2041 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2042 | 2042 | ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) ) |
| 2043 | 2043 | ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL |
| 2044 | 2044 | |
| r6428 | r6429 | |
| 2088 | 2088 | |
| 2089 | 2089 | /* no "ym.deltat" */ |
| 2090 | 2090 | |
| 2091 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2091 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2092 | 2092 | ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) ) |
| 2093 | 2093 | ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL |
| 2094 | 2094 | |
| r6428 | r6429 | |
| 2129 | 2129 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 2130 | 2130 | ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) ) |
| 2131 | 2131 | |
| 2132 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2132 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2133 | 2133 | ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) ) |
| 2134 | 2134 | ROM_END |
| 2135 | 2135 | |
| r6428 | r6429 | |
| 2161 | 2161 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 2162 | 2162 | ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) ) |
| 2163 | 2163 | |
| 2164 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2164 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2165 | 2165 | ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) ) |
| 2166 | 2166 | ROM_END |
| 2167 | 2167 | |
| r6428 | r6429 | |
| 2193 | 2193 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 2194 | 2194 | ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) ) |
| 2195 | 2195 | |
| 2196 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2196 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2197 | 2197 | ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) ) |
| 2198 | 2198 | ROM_END |
| 2199 | 2199 | |
| r6428 | r6429 | |
| 2228 | 2228 | ROM_REGION( 0x20000, "ym.deltat", 0 ) /* sound samples */ |
| 2229 | 2229 | ROM_LOAD( "tfrcu180.bin", 0x00000, 0x20000, CRC(39c7c7d5) SHA1(66ee9f7cbc18ffab2c70f77ab0edead6bb018ca9) ) |
| 2230 | 2230 | |
| 2231 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2231 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2232 | 2232 | ROM_LOAD( "tfrcu179.bin", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) ) |
| 2233 | 2233 | ROM_END |
| 2234 | 2234 | |
| r6428 | r6429 | |
| 2253 | 2253 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 2254 | 2254 | ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) |
| 2255 | 2255 | |
| 2256 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2256 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2257 | 2257 | ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) ) |
| 2258 | 2258 | ROM_END |
| 2259 | 2259 | |
| r6428 | r6429 | |
| 2283 | 2283 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 2284 | 2284 | ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) |
| 2285 | 2285 | |
| 2286 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2286 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2287 | 2287 | ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) ) |
| 2288 | 2288 | ROM_END |
| 2289 | 2289 | |
| r6428 | r6429 | |
| 2314 | 2314 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 2315 | 2315 | ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) |
| 2316 | 2316 | |
| 2317 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2317 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2318 | 2318 | ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) ) |
| 2319 | 2319 | ROM_END |
| 2320 | 2320 | |
| r6428 | r6429 | |
| 2345 | 2345 | ROM_REGION( 0x40000, "ym.deltat", 0 ) /* sound samples */ |
| 2346 | 2346 | ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) |
| 2347 | 2347 | |
| 2348 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 2348 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 2349 | 2349 | ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) ) |
| 2350 | 2350 | ROM_END |
| 2351 | 2351 |
| r6428 | r6429 | |
|---|---|---|
| 760 | 760 | |
| 761 | 761 | AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE( "duart68681", duart68681_r, duart68681_w ) |
| 762 | 762 | |
| 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) | |
| 765 | 765 | |
| 766 | 766 | AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_w) |
| 767 | 767 | AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_r) |
| 768 | 768 | |
| 769 | 769 | AM_RANGE(0x20C0, 0x20C7) AM_WRITE(m1_latch_w) |
| 770 | 770 | |
| 771 | AM_RANGE(0x2400, 0x2401) AM_DEVWRITE( "ym", ym2413_w ) | |
| 771 | AM_RANGE(0x2400, 0x2401) AM_DEVWRITE( "ymsnd", ym2413_w ) | |
| 772 | 772 | |
| 773 | 773 | AM_RANGE(0x2800, 0xffff) AM_ROM |
| 774 | 774 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 804 | 804 | MDRV_PIA6821_ADD("pia", m1_pia_intf) |
| 805 | 805 | |
| 806 | 806 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 807 | MDRV_SOUND_ADD("ay",AY8913, M1_MASTER_CLOCK) | |
| 807 | MDRV_SOUND_ADD("aysnd",AY8913, M1_MASTER_CLOCK) | |
| 808 | 808 | MDRV_SOUND_CONFIG(ay8910_config) |
| 809 | 809 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 810 | 810 | |
| 811 | MDRV_SOUND_ADD("ym", YM2413, M1_MASTER_CLOCK/4) | |
| 811 | MDRV_SOUND_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4) | |
| 812 | 812 | |
| 813 | 813 | MDRV_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //? |
| 814 | 814 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 388 | 388 | PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) |
| 389 | 389 | PORT_DIPSETTING( 0x01, DEF_STR( Free_Play ) ) |
| 390 | 390 | PORT_DIPNAME( 0x0c, 0x0c, "Right Coin Mechanism" ) PORT_DIPLOCATION("SW2:5,6") |
| 391 | PORT_DIPSETTING( 0x0c, "x1" ) | |
| 391 | PORT_DIPSETTING( 0x0c, "x1snd" ) | |
| 392 | 392 | PORT_DIPSETTING( 0x08, "x4" ) |
| 393 | 393 | PORT_DIPSETTING( 0x04, "x5" ) |
| 394 | 394 | PORT_DIPSETTING( 0x00, "x6" ) |
| 395 | 395 | PORT_DIPNAME( 0x10, 0x10, "Left Coin Mechanism" ) PORT_DIPLOCATION("SW2:4") |
| 396 | PORT_DIPSETTING( 0x10, "x1" ) | |
| 396 | PORT_DIPSETTING( 0x10, "x1snd" ) | |
| 397 | 397 | PORT_DIPSETTING( 0x00, "x2" ) |
| 398 | 398 | PORT_DIPNAME( 0xe0, 0xe0, "Bonus Credits" ) PORT_DIPLOCATION("SW2:1,2,3") |
| 399 | 399 | PORT_DIPSETTING( 0x80, "2 each 4" ) |
| r6428 | r6429 | |
|---|---|---|
| 747 | 747 | |
| 748 | 748 | static READ16_HANDLER( twinkle_waveram_r ) |
| 749 | 749 | { |
| 750 | UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rf"); | |
| 750 | UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rfsnd"); | |
| 751 | 751 | |
| 752 | 752 | return waveram[offset]; |
| 753 | 753 | } |
| 754 | 754 | |
| 755 | 755 | static WRITE16_HANDLER( twinkle_waveram_w ) |
| 756 | 756 | { |
| 757 | UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rf"); | |
| 757 | UINT16 *waveram = (UINT16 *)memory_region(space->machine, "rfsnd"); | |
| 758 | 758 | |
| 759 | 759 | COMBINE_DATA(&waveram[offset]); |
| 760 | 760 | } |
| r6428 | r6429 | |
| 784 | 784 | AM_RANGE(0x280000, 0x280fff) AM_READWRITE( shared_68k_r, shared_68k_w ) |
| 785 | 785 | AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ide", twinkle_ide_r, twinkle_ide_w) |
| 786 | 786 | // 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) | |
| 788 | 788 | AM_RANGE(0x800000, 0xffffff) AM_READWRITE( twinkle_waveram_r, twinkle_waveram_w ) // 8 MB window wave RAM |
| 789 | 789 | ADDRESS_MAP_END |
| 790 | 790 | |
| r6428 | r6429 | |
| 870 | 870 | |
| 871 | 871 | static void scsi_irq(running_machine *machine) |
| 872 | 872 | { |
| 873 | psx_irq_set(machine, | |
| 873 | psx_irq_set(machine, 0x400 | |
| 874 | 874 | } |
| 875 | 875 | |
| 876 | 876 | static const SCSIConfigTable dev_table = |
| r6428 | r6429 | |
| 962 | 962 | MDRV_SOUND_ROUTE( 0, "speakerleft", 0.75 ) |
| 963 | 963 | MDRV_SOUND_ROUTE( 1, "speakerright", 0.75 ) |
| 964 | 964 | |
| 965 | MDRV_SOUND_ADD("rf", RF5C400, 32000000/2) | |
| 965 | MDRV_SOUND_ADD("rfsnd", RF5C400, 32000000/2) | |
| 966 | 966 | MDRV_SOUND_ROUTE(0, "speakerleft", 1.0) |
| 967 | 967 | MDRV_SOUND_ROUTE(1, "speakerright", 1.0) |
| 968 | 968 | |
| r6428 | r6429 | |
| 1026 | 1026 | ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\ |
| 1027 | 1027 | ROM_LOAD16_WORD_SWAP( "863a05.2x", 0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )\ |
| 1028 | 1028 | \ |
| 1029 | ROM_REGION(0x1800000, "rf", ROMREGION_ERASE00) | |
| 1029 | ROM_REGION(0x1800000, "rfsnd", ROMREGION_ERASE00) | |
| 1030 | 1030 | |
| 1031 | 1031 | ROM_START( gq863 ) |
| 1032 | 1032 | TWINKLE_BIOS |
| r6428 | r6429 | |
|---|---|---|
| 152 | 152 | static READ16_HANDLER( ultennis_hack_r ) |
| 153 | 153 | { |
| 154 | 154 | /* 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) | |
| 156 | 157 | { |
| 157 | 158 | hack_irq = 1; |
| 158 | 159 | update_irq_state(space->machine); |
| r6428 | r6429 | |
| 791 | 792 | ROM_END |
| 792 | 793 | |
| 793 | 794 | |
| 795 | ROM_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) ) | |
| 805 | ROM_END | |
| 806 | ||
| 807 | ||
| 794 | 808 | /* |
| 795 | 809 | Stone Ball |
| 796 | 810 | Art & Magic, 1994 |
| r6428 | r6429 | |
| 932 | 946 | * |
| 933 | 947 | *************************************/ |
| 934 | 948 | |
| 935 | GAME( 1993, ultennis, 0, artmagic, ultennis, ultennis, ROT0, "Art & Magic", "Ultimate Tennis", GAME_SUPPORTS_SAVE ) | |
| 936 | GAME( 1994, cheesech, 0, cheesech, cheesech, cheesech, ROT0, "Art & Magic", "Cheese Chase", GAME_SUPPORTS_SAVE ) | |
| 949 | GAME( 1993, ultennis, 0, artmagic, ultennis, ultennis, ROT0, "Art & Magic", "Ultimate Tennis", GAME_SUPPORTS_SAVE ) | |
| 950 | GAME( 1993, ultennisj,ultennis, artmagic, ultennis, ultennis, ROT0, "[Art & Magic] (Banpresto license)", "Ultimate Tennis (v 1.4, Japan)", GAME_SUPPORTS_SAVE ) | |
| 951 | GAME( 1994, cheesech, 0, cheesech, cheesech, cheesech, ROT0, "Art & Magic", "Cheese Chase", GAME_SUPPORTS_SAVE ) | |
| 937 | 952 | GAME( 1994, stonebal, 0, stonebal, stonebal, stonebal, ROT0, "Art & Magic", "Stone Ball (4 Players)", GAME_SUPPORTS_SAVE ) |
| 938 | 953 | GAME( 1994, stonebal2,stonebal, stonebal, stoneba2, stonebal, ROT0, "Art & Magic", "Stone Ball (2 Players)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 237 | 237 | |
| 238 | 238 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 239 | 239 | 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) | |
| 241 | 241 | AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") /* Twin Cobra - Coin/Start */ |
| 242 | 242 | AM_RANGE(0x20, 0x20) AM_WRITE(twincobr_coin_w) /* Twin Cobra coin count-lockout */ |
| 243 | 243 | AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") |
| r6428 | r6429 | |
| 740 | 740 | /* sound hardware */ |
| 741 | 741 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 742 | 742 | |
| 743 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 743 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 744 | 744 | MDRV_SOUND_CONFIG(ym3812_config) |
| 745 | 745 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 746 | 746 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 545 | 545 | // AM_RANGE(0x35, 0x35) AM_WRITE(multfish_port35_w) |
| 546 | 546 | // AM_RANGE(0x36, 0x36) AM_WRITE(multfish_port36_w) |
| 547 | 547 | // 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) | |
| 551 | 551 | |
| 552 | 552 | AM_RANGE(0x90, 0x90) AM_READ(ray_r) |
| 553 | 553 | |
| r6428 | r6429 | |
| 630 | 630 | MDRV_VIDEO_UPDATE(multfish) |
| 631 | 631 | |
| 632 | 632 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 633 | MDRV_SOUND_ADD("ay", AY8910, 6000000/4) | |
| 633 | MDRV_SOUND_ADD("aysnd", AY8910, 6000000/4) | |
| 634 | 634 | MDRV_SOUND_CONFIG(ay8910_config) |
| 635 | 635 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 636 | 636 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 94 | 94 | AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w) |
| 95 | 95 | AM_RANGE(0x5000, 0x500f) AM_MIRROR(0x0010) AM_READWRITE(lions_via_r, lions_via_w) |
| 96 | 96 | 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) | |
| 98 | 98 | AM_RANGE(0xe000, 0xffff) AM_ROM |
| 99 | 99 | ADDRESS_MAP_END |
| 100 | 100 | |
| r6428 | r6429 | |
| 380 | 380 | |
| 381 | 381 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 382 | 382 | |
| 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) */ | |
| 384 | 384 | MDRV_SOUND_CONFIG(ay8910_config) |
| 385 | 385 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 386 | 386 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 342 | 342 | |
| 343 | 343 | static ADDRESS_MAP_START( sound_master_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 344 | 344 | 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) | |
| 346 | 346 | AM_RANGE(0x6000, 0x67ff) AM_WRITE(sound_nmi_rate_w) |
| 347 | 347 | AM_RANGE(0x6800, 0x6fff) AM_READ(sound_master_latch_r) |
| 348 | 348 | AM_RANGE(0x7000, 0x77ff) AM_READ(sound_nmi_to_slave_r) |
| r6428 | r6429 | |
| 507 | 507 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 508 | 508 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 509 | 509 | |
| 510 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 510 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 511 | 511 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 512 | 512 | MACHINE_DRIVER_END |
| 513 | 513 |
| r6428 | r6429 | |
|---|---|---|
| 172 | 172 | static ADDRESS_MAP_START( sauro_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 173 | 173 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 174 | 174 | 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) | |
| 176 | 176 | AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", adpcm_w) |
| 177 | 177 | AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r) |
| 178 | 178 | AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */ |
| r6428 | r6429 | |
| 190 | 190 | AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2") |
| 191 | 191 | AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1") |
| 192 | 192 | 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) | |
| 194 | 194 | AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r) |
| 195 | 195 | AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w) |
| 196 | 196 | AM_RANGE(0xf838, 0xf838) AM_WRITENOP /* only written at startup */ |
| r6428 | r6429 | |
| 353 | 353 | /* sound hardware */ |
| 354 | 354 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 355 | 355 | |
| 356 | MDRV_SOUND_ADD("ym", YM3812, XTAL_20MHz/8) /* verified on pcb */ | |
| 356 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_20MHz/8) /* verified on pcb */ | |
| 357 | 357 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 358 | 358 | |
| 359 | 359 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 128 | 128 | AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") |
| 129 | 129 | AM_RANGE(0x10, 0x10) AM_READ_PORT("IN1") |
| 130 | 130 | 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) | |
| 132 | 132 | AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) |
| 133 | 133 | AM_RANGE(0x70, 0x70) AM_WRITE(port70_w) |
| 134 | 134 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 206 | 206 | |
| 207 | 207 | /* sound hardware */ |
| 208 | 208 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 209 | MDRV_SOUND_ADD("ay", AY8910, XTAL2/16 ) | |
| 209 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL2/16 ) | |
| 210 | 210 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 211 | 211 | MACHINE_DRIVER_END |
| 212 | 212 |
| r6428 | r6429 | |
|---|---|---|
| 404 | 404 | AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_0_dir_pc_r, tmpz84c011_0_dir_pc_w) |
| 405 | 405 | AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_0_dir_pd_r, tmpz84c011_0_dir_pd_w) |
| 406 | 406 | 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) | |
| 408 | 408 | ADDRESS_MAP_END |
| 409 | 409 | |
| 410 | 410 | |
| r6428 | r6429 | |
| 804 | 804 | /* sound hardware */ |
| 805 | 805 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 806 | 806 | |
| 807 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 807 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 808 | 808 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 809 | 809 | |
| 810 | 810 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 339 | 339 | |
| 340 | 340 | e2ram_reset(); |
| 341 | 341 | |
| 342 | devtag_reset(machine, "ym"); | |
| 342 | devtag_reset(machine, "ymsnd"); | |
| 343 | 343 | |
| 344 | 344 | // reset stepper motors ///////////////////////////////////////////////// |
| 345 | 345 | { |
| r6428 | r6429 | |
| 698 | 698 | |
| 699 | 699 | if ( old != volume_override ) |
| 700 | 700 | { |
| 701 | const device_config *ym = devtag_get_device(space->machine, "ym"); | |
| 701 | const device_config *ym = devtag_get_device(space->machine, "ymsnd"); | |
| 702 | 702 | const device_config *upd = devtag_get_device(space->machine, "upd"); |
| 703 | 703 | float percent = volume_override? 1.0f : (32-global_volume)/32.0f; |
| 704 | 704 | |
| r6428 | r6429 | |
| 812 | 812 | } |
| 813 | 813 | |
| 814 | 814 | { |
| 815 | const device_config *ym = devtag_get_device(space->machine, "ym"); | |
| 815 | const device_config *ym = devtag_get_device(space->machine, "ymsnd"); | |
| 816 | 816 | const device_config *upd = devtag_get_device(space->machine, "upd"); |
| 817 | 817 | float percent = volume_override ? 1.0f : (32-global_volume)/32.0f; |
| 818 | 818 | |
| r6428 | r6429 | |
| 1544 | 1544 | AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w) // this is where it reads? |
| 1545 | 1545 | AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w) // upd7759 reset line |
| 1546 | 1546 | 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) | |
| 1548 | 1548 | AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) // write bank (rom page select for 0x6000 - 0x7fff ) |
| 1549 | 1549 | AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) // vfd2 data |
| 1550 | 1550 | |
| r6428 | r6429 | |
| 2248 | 2248 | MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) |
| 2249 | 2249 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2250 | 2250 | |
| 2251 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 2251 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 2252 | 2252 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 2253 | 2253 | MACHINE_DRIVER_END |
| 2254 | 2254 | |
| r6428 | r6429 | |
| 2784 | 2784 | AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w) |
| 2785 | 2785 | AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w) |
| 2786 | 2786 | 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) | |
| 2788 | 2788 | AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) /* write bank (rom page select for 0x6000 - 0x7fff ) */ |
| 2789 | 2789 | AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) /* vfd2 data */ |
| 2790 | 2790 | |
| r6428 | r6429 | |
| 2833 | 2833 | AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w) |
| 2834 | 2834 | AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w) |
| 2835 | 2835 | 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) | |
| 2837 | 2837 | AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) |
| 2838 | 2838 | AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) |
| 2839 | 2839 | AM_RANGE(0x3FFF, 0x3FFF) AM_READ( coin_input_r) |
| r6428 | r6429 | |
| 2882 | 2882 | AM_RANGE(0x2A00, 0x2AFF) AM_DEVWRITE("upd", nec_latch_w) |
| 2883 | 2883 | AM_RANGE(0x2B00, 0x2BFF) AM_DEVWRITE("upd", nec_reset_w) |
| 2884 | 2884 | 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) | |
| 2886 | 2886 | AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) |
| 2887 | 2887 | AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) |
| 2888 | 2888 | AM_RANGE(0x3FFE, 0x3FFE) AM_READ( direct_input_r) |
| r6428 | r6429 | |
| 3977 | 3977 | MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK) |
| 3978 | 3978 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 3979 | 3979 | |
| 3980 | MDRV_SOUND_ADD("ym",YM2413, XTAL_3_579545MHz) | |
| 3980 | MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_3_579545MHz) | |
| 3981 | 3981 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3982 | 3982 | |
| 3983 | 3983 | MDRV_NVRAM_HANDLER(bfm_sc2) |
| r6428 | r6429 | |
| 4004 | 4004 | MDRV_CPU_PERIODIC_INT(timer_irq, 1000 ) |
| 4005 | 4005 | |
| 4006 | 4006 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4007 | MDRV_SOUND_ADD("ym",YM2413, XTAL_3_579545MHz) | |
| 4007 | MDRV_SOUND_ADD("ymsnd",YM2413, XTAL_3_579545MHz) | |
| 4008 | 4008 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4009 | 4009 | |
| 4010 | 4010 | MDRV_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK) |
| r6428 | r6429 | |
| 4193 | 4193 | Scorpion2_SetSwitchState(7,3,0); |
| 4194 | 4194 | } |
| 4195 | 4195 | |
| 4196 | /********************************************* | |
| 4197 | The Big Breakfast | |
| 4198 | *********************************************/ | |
| 4199 | ||
| 4196 | 4200 | ROM_START( m_brkfst ) |
| 4197 | 4201 | ROM_REGION( 0x12000, "maincpu", 0 ) |
| 4198 | 4202 | ROM_LOAD("big-breakfast_std_ar_var_a.bin", 0x00000, 0x10000, CRC(5f016daa) SHA1(25ee10138bddf453588e3c458268533a88a51217) ) |
| r6428 | r6429 | |
| 4201 | 4205 | ROM_LOAD("bigbreakfastsnd.bin", 0x00000, 0x80000, CRC(bf91aa2b) SHA1(40942165e65ff9b027015d500e5a9726c44ba1c5)) |
| 4202 | 4206 | ROM_END |
| 4203 | 4207 | |
| 4208 | ROM_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)) | |
| 4214 | ROM_END | |
| 4215 | ||
| 4216 | ROM_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)) | |
| 4222 | ROM_END | |
| 4223 | ||
| 4224 | ROM_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)) | |
| 4230 | ROM_END | |
| 4231 | ||
| 4232 | ROM_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)) | |
| 4238 | ROM_END | |
| 4239 | ||
| 4240 | ROM_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)) | |
| 4246 | ROM_END | |
| 4247 | ||
| 4204 | 4248 | /********************************************* |
| 4205 | 4249 | Dr.Who The Timelord |
| 4206 | 4250 | *********************************************/ |
| r6428 | r6429 | |
| 4408 | 4452 | ROM_END |
| 4409 | 4453 | |
| 4410 | 4454 | /* year, name, parent, machine, input, init, monitor, company, fullname */ |
| 4411 | GAME( 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) | |
| 4412 | 4455 | |
| 4413 | 4456 | GAMEL( 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) |
| 4414 | 4457 | GAMEL( 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) |
| r6428 | r6429 | |
| 4429 | 4472 | GAMEL( 1994, m_bdrw16, m_bdrwho, scorpion2, drwho, drwho, 0, "BFM", "Dr.Who The Timelord (set 17)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK,layout_drwho) |
| 4430 | 4473 | GAMEL( 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) |
| 4431 | 4474 | |
| 4475 | GAME( 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) | |
| 4476 | GAME( 1994, m_brkfs1, m_brkfst, scorpion2, bbrkfst, bbrkfst, 0, "BFM", "The Big Breakfast (Set 2)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING) | |
| 4477 | GAME( 1994, m_brkfs2, m_brkfst, scorpion2, bbrkfst, bbrkfst, 0, "BFM", "The Big Breakfast (Set 3)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING) | |
| 4478 | GAME( 1994, m_brkfs3, m_brkfst, scorpion2, bbrkfst, bbrkfst, 0, "BFM", "The Big Breakfast (Set 4)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING) | |
| 4479 | GAME( 1994, m_brkfs4, m_brkfst, scorpion2, bbrkfst, bbrkfst, 0, "BFM", "The Big Breakfast (Set 5)",GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING) | |
| 4480 | GAME( 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 | ||
| 4432 | 4482 | GAME ( 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) |
| 4433 | 4483 | |
| 4434 | 4484 | GAME ( 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) |
| 4435 | 4485 | |
| 4436 | GAME ( 1996, m_luvjub, | |
| 4486 | GAME ( 1996, m_luvjub, | |
| 4437 | 4487 | |
| 4438 | GAME ( 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 | ||
| 4488 | GAME ( 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) |
| r6428 | r6429 | |
|---|---|---|
| 1115 | 1115 | /* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */ |
| 1116 | 1116 | /* 0x040000 - 0x3fffff empty? */ |
| 1117 | 1117 | |
| 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?? */ | |
| 1119 | 1119 | ROM_LOAD( "gp430000.u4", 0x000000, 0x200000, CRC(8374663a) SHA1(095512564f4de25dc3752d9fbd254b9dabd16d1b) ) |
| 1120 | 1120 | ROM_END |
| 1121 | 1121 | |
| r6428 | r6429 | |
| 1144 | 1144 | ROM_LOAD( "gps30000.u4", 0x000000, 0x400000, CRC(9e4da8e3) SHA1(6506d9300a442883357003a05fd2c78d364c35bb) ) |
| 1145 | 1145 | ROM_END |
| 1146 | 1146 | |
| 1147 | ROM_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) ) | |
| 1170 | ROM_END | |
| 1171 | ||
| 1147 | 1172 | ROM_START( galpans2 ) |
| 1148 | 1173 | ROM_REGION( 0x080000, "maincpu", 0 ) /* SH-2 Code */ |
| 1149 | 1174 | ROM_LOAD ( "sknsj1.u10", 0x000000, 0x080000, CRC(7e2b836c) SHA1(92c5a7a2472496028bff0e5980d41dd294f42144) ) /* Japan BIOS */ |
| r6428 | r6429 | |
| 1657 | 1682 | GAME( 1996, skns, 0, skns, skns, 0, ROT0, "Kaneko", "Super Kaneko Nova System BIOS", GAME_IS_BIOS_ROOT ) |
| 1658 | 1683 | |
| 1659 | 1684 | GAME( 1996, galpani4, skns, skns, cyvern, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 1660 | GAME( 1996, galpani4k, galpani4, skns, cyvern, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Korea)", GAME_IMPERFECT_GRAPHICS ) | |
| 1685 | GAME( 1996, galpani4k, galpani4, skns, cyvern, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND ) /* sound samples are different / missing? */ | |
| 1661 | 1686 | GAME( 1996, jjparads, skns, skns, skns_1p, jjparads, ROT0, "Electro Design", "Jan Jan Paradise", GAME_IMPERFECT_GRAPHICS ) |
| 1662 | 1687 | GAME( 1997, galpanis, skns, skns, galpanis, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| 1688 | GAME( 1997, galpanisk, galpanis, skns, galpanis, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Korea)", GAME_IMPERFECT_GRAPHICS ) | |
| 1663 | 1689 | GAME( 1997, jjparad2, skns, skns, skns_1p, jjparad2, ROT0, "Electro Design", "Jan Jan Paradise 2", GAME_IMPERFECT_GRAPHICS ) |
| 1664 | 1690 | GAME( 1997, sengekis, skns, skns, skns, sengekis, ROT90, "Kaneko / Warashi", "Sengeki Striker (Asia)", GAME_IMPERFECT_GRAPHICS ) |
| 1665 | 1691 | GAME( 1997, sengekisj, sengekis, skns, skns, sengekij, ROT90, "Kaneko / Warashi", "Sengeki Striker (Japan)", GAME_IMPERFECT_GRAPHICS ) |
| r6428 | r6429 | |
|---|---|---|
| 460 | 460 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 461 | 461 | AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w) |
| 462 | 462 | 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) | |
| 464 | 464 | AM_RANGE(0xa000, 0xa00f) AM_READWRITE(read_a00x, write_a00x) |
| 465 | 465 | AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE(1) |
| 466 | 466 | AM_RANGE(0xf180, 0xffff) AM_RAM AM_SHARE(2) |
| r6428 | r6429 | |
| 786 | 786 | /* sound hardware */ |
| 787 | 787 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 788 | 788 | |
| 789 | MDRV_SOUND_ADD("es", ES8712, 8000) | |
| 789 | MDRV_SOUND_ADD("essnd", ES8712, 8000) | |
| 790 | 790 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 791 | 791 | |
| 792 | 792 | MDRV_SOUND_ADD("ym1", YM2203, 1500000) |
| r6428 | r6429 | |
| 814 | 814 | ROM_REGION( 0x40000, "gfx2", 0 ) |
| 815 | 815 | ROM_LOAD( "rom.a1", 0x00000, 0x40000, CRC(512300a5) SHA1(1e9ba58d1ddbfb8276c68f6d5c3591e6b77abf21) ) |
| 816 | 816 | |
| 817 | ROM_REGION( 0x40000, "es", 0 ) | |
| 817 | ROM_REGION( 0x40000, "essnd", 0 ) | |
| 818 | 818 | ROM_LOAD( "rom.v10", 0x00000, 0x40000, CRC(62e42371) SHA1(5042abc2176d0c35fd6b698eca4145f93b0a3944) ) |
| 819 | 819 | ROM_END |
| 820 | 820 | |
| r6428 | r6429 | |
| 833 | 833 | ROM_REGION( 0x40000, "gfx2", 0 ) |
| 834 | 834 | ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(f6cf7ed6) SHA1(327580a17eb2740fad974a01d97dad0a4bef9881) ) |
| 835 | 835 | |
| 836 | ROM_REGION( 0x40000, "es", 0 ) | |
| 836 | ROM_REGION( 0x40000, "essnd", 0 ) | |
| 837 | 837 | ROM_LOAD( "5.bin", 0x00000, 0x40000, CRC(62e42371) SHA1(5042abc2176d0c35fd6b698eca4145f93b0a3944) ) |
| 838 | 838 | ROM_END |
| 839 | 839 |
| r6428 | r6429 | |
|---|---|---|
| 540 | 540 | AM_RANGE( 0x74, 0x74 ) AM_WRITE ( dynax_blitter_ack_w ) // Blitter IRQ Ack |
| 541 | 541 | AM_RANGE( 0x76, 0x76 ) AM_WRITE ( dynax_blit_palbank_w ) // Layers Palettes (High Bit) |
| 542 | 542 | 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 | |
| 545 | 545 | // AM_RANGE( 0x7c, 0x7c ) AM_WRITE ( SMH_NOP ) // CRT Controller |
| 546 | 546 | // AM_RANGE( 0x7d, 0x7d ) AM_WRITE ( SMH_NOP ) // |
| 547 | 547 | AM_RANGE( 0x7e, 0x7e ) AM_WRITE ( dynax_blit_romregion_w ) // Blitter ROM bank |
| r6428 | r6429 | |
| 562 | 562 | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT ( "DSW2" ) // DSW3 |
| 563 | 563 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 564 | 564 | 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 ) // | |
| 569 | 569 | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 570 | 570 | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 571 | 571 | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| r6428 | r6429 | |
| 645 | 645 | |
| 646 | 646 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 647 | 647 | 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 ) // | |
| 649 | 649 | |
| 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) // | |
| 653 | 653 | |
| 654 | 654 | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 655 | 655 | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| r6428 | r6429 | |
| 781 | 781 | AM_RANGE( 0x11, 0x17 ) AM_WRITE ( dynax_blitter_rev2_w ) // Blitter |
| 782 | 782 | AM_RANGE( 0x20, 0x20 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 783 | 783 | 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 ) // | |
| 787 | 787 | AM_RANGE( 0x48, 0x48 ) AM_WRITE ( dynax_extra_scrollx_w ) // screen scroll X |
| 788 | 788 | AM_RANGE( 0x49, 0x49 ) AM_WRITE ( dynax_extra_scrolly_w ) // screen scroll Y |
| 789 | 789 | AM_RANGE( 0x4a, 0x4a ) AM_WRITE ( yarunara_rombank_w ) // BANK ROM Select |
| r6428 | r6429 | |
| 820 | 820 | AM_RANGE( 0x26, 0x26 ) AM_READ_PORT ( "DSW1" ) // DSW3 |
| 821 | 821 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 822 | 822 | 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 ) // | |
| 826 | 826 | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( dynax_blit_pen_w ) // Destination Pen |
| 827 | 827 | AM_RANGE( 0x41, 0x41 ) AM_WRITE ( dynax_blit_dest_w ) // Destination Layer |
| 828 | 828 | AM_RANGE( 0x42, 0x42 ) AM_WRITE ( dynax_blit_palette01_w ) // Layers Palettes |
| r6428 | r6429 | |
| 848 | 848 | static ADDRESS_MAP_START( sprtmtch_io_map, ADDRESS_SPACE_IO, 8 ) |
| 849 | 849 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 850 | 850 | 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 | |
| 852 | 852 | // AM_RANGE( 0x12, 0x12 ) AM_WRITE ( SMH_NOP ) // CRT Controller |
| 853 | 853 | // AM_RANGE( 0x13, 0x13 ) AM_WRITE ( SMH_NOP ) // CRT Controller |
| 854 | 854 | AM_RANGE( 0x20, 0x20 ) AM_READ_PORT ( "P1" ) // P1 |
| r6428 | r6429 | |
| 894 | 894 | AM_RANGE( 0x63, 0x63 ) AM_READ ( hanamai_keyboard_0_r ) // P1 |
| 895 | 895 | AM_RANGE( 0x64, 0x64 ) AM_READ_PORT ( "DSW0" ) // DSW |
| 896 | 896 | 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 ) // | |
| 898 | 898 | // AM_RANGE( 0x80, 0x80 ) AM_WRITE ( SMH_NOP ) // IRQ ack? |
| 899 | 899 | ADDRESS_MAP_END |
| 900 | 900 | |
| r6428 | r6429 | |
| 903 | 903 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 904 | 904 | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 905 | 905 | 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 ) // | |
| 909 | 909 | AM_RANGE( 0x10, 0x10 ) AM_WRITE ( hanamai_keyboard_w ) // keyboard row select |
| 910 | 910 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT ( "COINS" ) // Coins |
| 911 | 911 | AM_RANGE( 0x12, 0x12 ) AM_READ ( hanamai_keyboard_1_r ) // P2 |
| r6428 | r6429 | |
| 1031 | 1031 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1032 | 1032 | AM_RANGE( 0x00, 0x00 ) AM_WRITE ( jantouki_sound_rombank_w ) // BANK ROM Select |
| 1033 | 1033 | 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) // | |
| 1037 | 1037 | AM_RANGE( 0x30, 0x30 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 1038 | 1038 | AM_RANGE( 0x40, 0x40 ) AM_WRITE ( adpcm_data_w ) // MSM5205 data |
| 1039 | 1039 | AM_RANGE( 0x50, 0x50 ) AM_READ ( jantouki_soundlatch_status_r ) // Soundlatch status |
| r6428 | r6429 | |
| 1069 | 1069 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1070 | 1070 | AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE ( "msm", adpcm_reset_w ) // MSM5205 reset |
| 1071 | 1071 | 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 ) // | |
| 1075 | 1075 | AM_RANGE( 0x11, 0x12 ) AM_WRITE ( mjelctrn_blitter_ack_w ) //? |
| 1076 | 1076 | // AM_RANGE( 0x20, 0x20 ) AM_WRITE ( SMH_NOP ) // CRT Controller |
| 1077 | 1077 | // AM_RANGE( 0x21, 0x21 ) AM_WRITE ( SMH_NOP ) // CRT Controller |
| r6428 | r6429 | |
| 1213 | 1213 | AM_RANGE( 0x21, 0x21 ) AM_WRITE ( htengoku_coin_w ) // |
| 1214 | 1214 | AM_RANGE( 0x22, 0x22 ) AM_READ ( htengoku_coin_r ) // |
| 1215 | 1215 | 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 ) // | |
| 1220 | 1220 | AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC |
| 1221 | 1221 | AM_RANGE( 0xa0, 0xa3 ) AM_WRITE ( ddenlovr_palette_base_w ) // ddenlovr mixer chip |
| 1222 | 1222 | AM_RANGE( 0xa4, 0xa7 ) AM_WRITE ( ddenlovr_palette_mask_w ) |
| r6428 | r6429 | |
| 1487 | 1487 | AM_RANGE( 0x6000, 0x6fff ) AM_RAM |
| 1488 | 1488 | AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) |
| 1489 | 1489 | 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 ) // | |
| 1494 | 1494 | AM_RANGE( 0x10040, 0x10040 ) AM_WRITE( dynax_blit_pen_w ) // Destination Pen |
| 1495 | 1495 | AM_RANGE( 0x10044, 0x10044 ) AM_WRITE( tenkai_blit_dest_w ) // Destination Layer |
| 1496 | 1496 | AM_RANGE( 0x10048, 0x10048 ) AM_WRITE( tenkai_blit_palette23_w ) // Layers Palettes |
| r6428 | r6429 | |
| 1636 | 1636 | case 0x8050: // CRT controller |
| 1637 | 1637 | case 0x8051: return; |
| 1638 | 1638 | |
| 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; | |
| 1641 | 1641 | |
| 1642 | 1642 | case 0x8060: keyb = data; return; |
| 1643 | 1643 | |
| r6428 | r6429 | |
| 4208 | 4208 | /* sound hardware */ |
| 4209 | 4209 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4210 | 4210 | |
| 4211 | MDRV_SOUND_ADD("ay", AY8910, 22000000 / 8) | |
| 4211 | MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 8) | |
| 4212 | 4212 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4213 | 4213 | |
| 4214 | MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8) | |
| 4214 | MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8) | |
| 4215 | 4215 | MDRV_SOUND_CONFIG(hanamai_ym2203_interface) |
| 4216 | 4216 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 4217 | 4217 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 4264 | 4264 | /* sound hardware */ |
| 4265 | 4265 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4266 | 4266 | |
| 4267 | MDRV_SOUND_ADD("ay", AY8910, 22000000 / 16) | |
| 4267 | MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 16) | |
| 4268 | 4268 | MDRV_SOUND_CONFIG(hnoridur_ay8910_interface) |
| 4269 | 4269 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4270 | 4270 | |
| 4271 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4271 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4272 | 4272 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4273 | 4273 | |
| 4274 | 4274 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
| 4309 | 4309 | /* sound hardware */ |
| 4310 | 4310 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4311 | 4311 | |
| 4312 | MDRV_SOUND_ADD("ay", AY8910, XTAL_22MHz / 16) | |
| 4312 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_22MHz / 16) | |
| 4313 | 4313 | MDRV_SOUND_CONFIG(hnoridur_ay8910_interface) |
| 4314 | 4314 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4315 | 4315 | |
| 4316 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz ) | |
| 4316 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz ) | |
| 4317 | 4317 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4318 | 4318 | |
| 4319 | 4319 | MDRV_SOUND_ADD("msm", MSM5205, XTAL_384kHz ) |
| r6428 | r6429 | |
| 4366 | 4366 | /* sound hardware */ |
| 4367 | 4367 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4368 | 4368 | |
| 4369 | MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8) | |
| 4369 | MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8) | |
| 4370 | 4370 | MDRV_SOUND_CONFIG(sprtmtch_ym2203_interface) |
| 4371 | 4371 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 4372 | 4372 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 4406 | 4406 | /* sound hardware */ |
| 4407 | 4407 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4408 | 4408 | |
| 4409 | MDRV_SOUND_ADD("ym", YM2413, 24000000/6) | |
| 4409 | MDRV_SOUND_ADD("ymsnd", YM2413, 24000000/6) | |
| 4410 | 4410 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4411 | 4411 | MACHINE_DRIVER_END |
| 4412 | 4412 | |
| r6428 | r6429 | |
| 4561 | 4561 | /* sound hardware */ |
| 4562 | 4562 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4563 | 4563 | |
| 4564 | MDRV_SOUND_ADD("ay", AY8910, 22000000 / 8) | |
| 4564 | MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 8) | |
| 4565 | 4565 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4566 | 4566 | |
| 4567 | MDRV_SOUND_ADD("ym", YM2203, 22000000 / 8) | |
| 4567 | MDRV_SOUND_ADD("ymsnd", YM2203, 22000000 / 8) | |
| 4568 | 4568 | MDRV_SOUND_CONFIG(jantouki_ym2203_interface) |
| 4569 | 4569 | MDRV_SOUND_ROUTE(0, "mono", 0.20) |
| 4570 | 4570 | MDRV_SOUND_ROUTE(1, "mono", 0.20) |
| r6428 | r6429 | |
| 4715 | 4715 | /* sound hardware */ |
| 4716 | 4716 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4717 | 4717 | |
| 4718 | MDRV_SOUND_ADD("ay", AY8910, 20000000 / 16) | |
| 4718 | MDRV_SOUND_ADD("aysnd", AY8910, 20000000 / 16) | |
| 4719 | 4719 | MDRV_SOUND_CONFIG(htengoku_ay8910_interface) |
| 4720 | 4720 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4721 | 4721 | |
| 4722 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4722 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4723 | 4723 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4724 | 4724 | |
| 4725 | 4725 | /* devices */ |
| r6428 | r6429 | |
| 4776 | 4776 | /* sound hardware */ |
| 4777 | 4777 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4778 | 4778 | |
| 4779 | MDRV_SOUND_ADD("ay", AY8910, 22000000 / 16) | |
| 4779 | MDRV_SOUND_ADD("aysnd", AY8910, 22000000 / 16) | |
| 4780 | 4780 | MDRV_SOUND_CONFIG(tenkai_ay8910_interface) |
| 4781 | 4781 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4782 | 4782 | |
| 4783 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 4783 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 4784 | 4784 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4785 | 4785 | |
| 4786 | 4786 | /* devices */ |
| r6428 | r6429 | |
| 4830 | 4830 | /* sound hardware */ |
| 4831 | 4831 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4832 | 4832 | |
| 4833 | MDRV_SOUND_ADD("ay", AY8910, XTAL_24MHz / 16) // ? | |
| 4833 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_24MHz / 16) // ? | |
| 4834 | 4834 | MDRV_SOUND_CONFIG(tenkai_ay8910_interface) |
| 4835 | 4835 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4836 | 4836 | |
| 4837 | MDRV_SOUND_ADD("ym", YM2413, XTAL_24MHz / 8) // ? | |
| 4837 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_24MHz / 8) // ? | |
| 4838 | 4838 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4839 | 4839 | MACHINE_DRIVER_END |
| 4840 | 4840 |
| r6428 | r6429 | |
|---|---|---|
| 95 | 95 | AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2") |
| 96 | 96 | AM_RANGE(0x1800, 0x1800) AM_WRITE(shootout_coin_counter_w) |
| 97 | 97 | 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) | |
| 99 | 99 | AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram) |
| 100 | 100 | AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(shootout_videoram_w) AM_BASE(&videoram) |
| 101 | 101 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| r6428 | r6429 | |
| 106 | 106 | |
| 107 | 107 | static ADDRESS_MAP_START( shootout_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 108 | 108 | 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) | |
| 110 | 110 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 111 | 111 | AM_RANGE(0xc000, 0xffff) AM_ROM |
| 112 | 112 | AM_RANGE(0xd000, 0xd000) AM_WRITE(interrupt_enable_w) |
| r6428 | r6429 | |
| 296 | 296 | /* sound hardware */ |
| 297 | 297 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 298 | 298 | |
| 299 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 299 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 300 | 300 | MDRV_SOUND_CONFIG(ym2203_config) |
| 301 | 301 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 302 | 302 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 326 | 326 | /* sound hardware */ |
| 327 | 327 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 328 | 328 | |
| 329 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 329 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 330 | 330 | MDRV_SOUND_CONFIG(ym2203_interface2) |
| 331 | 331 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 332 | 332 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 91 | 91 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 92 | 92 | AM_RANGE(0x8800, 0x8800) AM_WRITE(taitosound_slave_port_w) |
| 93 | 93 | 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) | |
| 95 | 95 | AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? */ |
| 96 | 96 | ADDRESS_MAP_END |
| 97 | 97 | |
| r6428 | r6429 | |
| 272 | 272 | /* sound hardware */ |
| 273 | 273 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 274 | 274 | |
| 275 | MDRV_SOUND_ADD("ym", YM2203, 4000000) | |
| 275 | MDRV_SOUND_ADD("ymsnd", YM2203, 4000000) | |
| 276 | 276 | MDRV_SOUND_CONFIG(ym2203_config) |
| 277 | 277 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 278 | 278 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
|---|---|---|
| 983 | 983 | case 0x12: |
| 984 | 984 | case 0x14: |
| 985 | 985 | 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); | |
| 988 | 988 | break; |
| 989 | 989 | |
| 990 | 990 | default: |
| r6428 | r6429 | |
| 1968 | 1968 | |
| 1969 | 1969 | AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram,megadriv_68k_write_z80_ram) |
| 1970 | 1970 | 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) | |
| 1972 | 1972 | |
| 1973 | 1973 | AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write) |
| 1974 | 1974 | |
| r6428 | r6429 | |
| 2087 | 2087 | { |
| 2088 | 2088 | devtag_reset( machine, "genesis_snd_z80" ); |
| 2089 | 2089 | cputag_suspend( machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 ); |
| 2090 | devtag_reset( machine, "ym" ); | |
| 2090 | devtag_reset( machine, "ymsnd" ); | |
| 2091 | 2091 | } |
| 2092 | 2092 | else |
| 2093 | 2093 | { |
| r6428 | r6429 | |
| 2249 | 2249 | case 0x13: |
| 2250 | 2250 | case 0x15: |
| 2251 | 2251 | case 0x17: |
| 2252 | sn76496_w(devtag_get_device(space->machine, "sn"), 0, data); | |
| 2252 | sn76496_w(devtag_get_device(space->machine, "snsnd"), 0, data); | |
| 2253 | 2253 | break; |
| 2254 | 2254 | |
| 2255 | 2255 | default: |
| r6428 | r6429 | |
| 2280 | 2280 | else if (fulladdress == 0xc00011) |
| 2281 | 2281 | { |
| 2282 | 2282 | /* 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); | |
| 2284 | 2284 | } |
| 2285 | 2285 | else |
| 2286 | 2286 | { |
| r6428 | r6429 | |
| 2303 | 2303 | |
| 2304 | 2304 | static ADDRESS_MAP_START( megadriv_z80_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 2305 | 2305 | 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) | |
| 2307 | 2307 | |
| 2308 | 2308 | AM_RANGE(0x6000, 0x6000) AM_WRITE(megadriv_z80_z80_bank_w) |
| 2309 | 2309 | AM_RANGE(0x6001, 0x6001) AM_WRITE(megadriv_z80_z80_bank_w) // wacky races uses this address |
| r6428 | r6429 | |
| 2330 | 2330 | |
| 2331 | 2331 | AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram) |
| 2332 | 2332 | 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) | |
| 2334 | 2334 | AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write) |
| 2335 | 2335 | |
| 2336 | 2336 | AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write) |
| r6428 | r6429 | |
| 6090 | 6090 | /* sound hardware */ |
| 6091 | 6091 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 6092 | 6092 | |
| 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 */ | |
| 6094 | 6094 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 6095 | 6095 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 6096 | 6096 | |
| 6097 | 6097 | /* sound hardware */ |
| 6098 | MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK_NTSC/15) | |
| 6098 | MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK_NTSC/15) | |
| 6099 | 6099 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */ |
| 6100 | 6100 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */ |
| 6101 | 6101 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 6134 | 6134 | /* sound hardware */ |
| 6135 | 6135 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 6136 | 6136 | |
| 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 */ | |
| 6138 | 6138 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 6139 | 6139 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 6140 | 6140 | |
| 6141 | 6141 | /* sound hardware */ |
| 6142 | MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK_PAL/15) | |
| 6142 | MDRV_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK_PAL/15) | |
| 6143 | 6143 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */ |
| 6144 | 6144 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */ |
| 6145 | 6145 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 6402 | 6402 | /* sets the megadrive z80 to it's normal ports / map */ |
| 6403 | 6403 | void megatech_set_megadrive_z80_as_megadrive_z80(running_machine *machine, const char* tag) |
| 6404 | 6404 | { |
| 6405 | const device_config *ym = devtag_get_device(machine, "ym"); | |
| 6405 | const device_config *ym = devtag_get_device(machine, "ymsnd"); | |
| 6406 | 6406 | |
| 6407 | 6407 | /* INIT THE PORTS *********************************************************************************************/ |
| 6408 | 6408 | 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); |
| r6428 | r6429 | |
|---|---|---|
| 86 | 86 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 87 | 87 | AM_RANGE(0x8000, 0xa7ff) AM_RAM AM_SHARE(1) |
| 88 | 88 | 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) | |
| 90 | 90 | ADDRESS_MAP_END |
| 91 | 91 | |
| 92 | 92 | static ADDRESS_MAP_START( mexico86_m68705_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 430 | 430 | /* sound hardware */ |
| 431 | 431 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 432 | 432 | |
| 433 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 433 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 434 | 434 | MDRV_SOUND_CONFIG(ym2203_config) |
| 435 | 435 | MDRV_SOUND_ROUTE(0, "mono", 0.30) |
| 436 | 436 | MDRV_SOUND_ROUTE(1, "mono", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 148 | 148 | |
| 149 | 149 | static READ8_DEVICE_HANDLER(at_dma8237_2_r) |
| 150 | 150 | { |
| 151 | return | |
| 151 | return i | |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | static WRITE8_DEVICE_HANDLER(at_dma8237_2_w) |
| 155 | 155 | { |
| 156 | | |
| 156 | i | |
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | static READ32_DEVICE_HANDLER(at32_dma8237_2_r) |
| r6428 | r6429 | |
| 166 | 166 | write32le_with_write8_device_handler(at_dma8237_2_w, device, offset, data, mem_mask); |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | static int dma_channel; | |
| 169 | 170 | static UINT8 dma_offset[2][4]; |
| 170 | 171 | static UINT8 at_pages[0x10]; |
| 171 | 172 | |
| r6428 | r6429 | |
| 213 | 214 | } |
| 214 | 215 | |
| 215 | 216 | |
| 216 | static | |
| 217 | static W | |
| 217 | 218 | { |
| 218 | 219 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 219 | 220 | |
| 220 | 221 | /* Assert HLDA */ |
| 221 | | |
| 222 | i | |
| 222 | 223 | } |
| 223 | 224 | |
| 224 | 225 | |
| 225 | static | |
| 226 | static READ8 | |
| 226 | 227 | { |
| 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) | |
| 229 | 229 | & 0xFF0000; |
| 230 | 230 | |
| 231 | 231 | return memory_read_byte(space, page_offset + offset); |
| 232 | 232 | } |
| 233 | 233 | |
| 234 | 234 | |
| 235 | static | |
| 235 | static | |
| 236 | 236 | { |
| 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) | |
| 239 | 238 | & 0xFF0000; |
| 240 | 239 | |
| 241 | 240 | memory_write_byte(space, page_offset + offset, data); |
| 242 | 241 | } |
| 243 | 242 | |
| 244 | ||
| 245 | static const struct dma8237_interface dma8237_1_config = | |
| 243 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 246 | 244 | { |
| 247 | XTAL_14_31818MHz/3, | |
| 245 | if (!state) dma_channel = channel; | |
| 246 | } | |
| 248 | 247 | |
| 249 | pc_dma_hrq_changed, | |
| 250 | pc_dma_read_byte, | |
| 251 | pc_dma_write_byte, | |
| 248 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 249 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 250 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 251 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 252 | 252 | |
| 253 | { NULL, NULL, NULL, NULL }, | |
| 254 | { NULL, NULL, NULL, NULL }, | |
| 255 | NULL | |
| 253 | static 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) } | |
| 256 | 262 | }; |
| 257 | 263 | |
| 258 | ||
| 259 | static const struct dma8237_interface dma8237_2_config = | |
| 264 | static I8237_INTERFACE( dma8237_2_config ) | |
| 260 | 265 | { |
| 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 } | |
| 270 | 273 | }; |
| 271 | 274 | |
| 272 | 275 | static READ32_HANDLER(at_page32_r) |
| r6428 | r6429 | |
| 471 | 474 | ADDRESS_MAP_END |
| 472 | 475 | |
| 473 | 476 | static ADDRESS_MAP_START( calchase_io, ADDRESS_SPACE_IO, 32) |
| 474 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 477 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 475 | 478 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 476 | 479 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 477 | 480 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| r6428 | r6429 | |
| 660 | 663 | MDRV_MACHINE_RESET(calchase) |
| 661 | 664 | |
| 662 | 665 | 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 ) | |
| 665 | 668 | MDRV_PIC8259_ADD( "pic8259_1", calchase_pic8259_1_config ) |
| 666 | 669 | MDRV_PIC8259_ADD( "pic8259_2", calchase_pic8259_2_config ) |
| 667 | 670 | MDRV_IDE_CONTROLLER_ADD("ide", ide_interrupt) |
| r6428 | r6429 | |
|---|---|---|
| 163 | 163 | |
| 164 | 164 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 165 | 165 | 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) | |
| 167 | 167 | AM_RANGE(0x02, 0x02) AM_WRITE(adpcm_w) |
| 168 | 168 | AM_RANGE(0x04, 0x04) AM_READ(sound_latch_r) |
| 169 | 169 | AM_RANGE(0x06, 0x06) AM_READ(sound_latch_status_r) |
| r6428 | r6429 | |
| 378 | 378 | /* sound hardware */ |
| 379 | 379 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 380 | 380 | |
| 381 | MDRV_SOUND_ADD("ym", YM2203, 4000000) | |
| 381 | MDRV_SOUND_ADD("ymsnd", YM2203, 4000000) | |
| 382 | 382 | MDRV_SOUND_CONFIG(ym2203_config) |
| 383 | 383 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) |
| 384 | 384 |
| r6428 | r6429 | |
|---|---|---|
| 434 | 434 | |
| 435 | 435 | static ADDRESS_MAP_START( drgnbowl_sound_port_map, ADDRESS_SPACE_IO, 8 ) |
| 436 | 436 | 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) | |
| 438 | 438 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 439 | 439 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| 440 | 440 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 932 | 932 | /* sound hardware */ |
| 933 | 933 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 934 | 934 | |
| 935 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 935 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 936 | 936 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 937 | 937 | |
| 938 | 938 | MDRV_SOUND_ADD("oki", OKIM6295, 1000000) |
| r6428 | r6429 | |
|---|---|---|
| 473 | 473 | ROM_REGION32_BE( 0x4000000, "user2", ROMREGION_ERASE00 ) |
| 474 | 474 | ROM_REGION32_BE( 0x100000, "user3", ROMREGION_ERASE00 ) |
| 475 | 475 | 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) ) | |
| 476 | 482 | ROM_END |
| 477 | 483 | |
| 478 | 484 | ROM_START( 11beat ) |
| r6428 | r6429 | |
| 481 | 487 | |
| 482 | 488 | ROM_REGION32_BE( 0x4000000, "user2", 0 ) |
| 483 | 489 | 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) ) | |
| 484 | 496 | ROM_END |
| 485 | 497 | |
| 486 | 498 | ROM_START( mtetrisc ) |
| r6428 | r6429 | |
| 495 | 507 | |
| 496 | 508 | ROM_REGION32_BE( 0x80, "user4", 0 ) |
| 497 | 509 | 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) ) | |
| 498 | 516 | ROM_END |
| 499 | 517 | |
| 500 | 518 | |
| r6428 | r6429 | |
| 513 | 531 | ROM_REGION32_BE( 0x4000000, "user2", 0 ) |
| 514 | 532 | ROM_LOAD16_WORD_SWAP( "nus-zhbj-0.u3", 0x000000, 0xc00000, CRC(a4edac93) SHA1(3794606c008fb69f5d16dcccece94d03da23bf8a) ) |
| 515 | 533 | |
| 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 | ||
| 516 | 540 | ROM_END |
| 517 | 541 | |
| 518 | 542 | ROM_START( srmvs ) |
| r6428 | r6429 | |
| 522 | 546 | ROM_REGION32_BE( 0x4000000, "user2", 0 ) |
| 523 | 547 | ROM_LOAD16_WORD_SWAP( "nus-zsej-0.u2", 0x000000, 0x2000000, CRC(44f40102) SHA1(a78de955f2fcd99dda14e782984368b320eb5415) ) |
| 524 | 548 | |
| 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 | ||
| 525 | 555 | ROM_END |
| 526 | 556 | |
| 527 | 557 | |
| r6428 | r6429 | |
| 540 | 570 | ROM_REGION32_BE( 0x4000000, "user2", 0 ) |
| 541 | 571 | ROM_LOAD16_WORD_SWAP( "nus-zsaj-0.u3", 0x000000, 0x800000, CRC(f3220e29) SHA1(06d8b808cc19378b046803f4dc75c7d791b7767f) ) |
| 542 | 572 | |
| 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 | ||
| 543 | 579 | ROM_END |
| 544 | 580 | |
| 545 | 581 | |
| r6428 | r6429 | |
| 564 | 600 | |
| 565 | 601 | ROM_REGION32_BE( 0x800000, "user3", 0 ) |
| 566 | 602 | 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) ) | |
| 567 | 609 | ROM_END |
| 568 | 610 | |
| 569 | 611 | |
| r6428 | r6429 | |
| 577 | 619 | |
| 578 | 620 | ROM_REGION32_BE( 0x800000, "user3", 0 ) |
| 579 | 621 | 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) ) | |
| 580 | 628 | ROM_END |
| 581 | 629 | |
| 582 | 630 | |
| r6428 | r6429 | |
| 590 | 638 | |
| 591 | 639 | ROM_REGION32_BE( 0x800000, "user3", 0 ) |
| 592 | 640 | 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) ) | |
| 593 | 647 | ROM_END |
| 594 | 648 | |
| 595 | 649 | ROM_START( kurufev ) |
| r6428 | r6429 | |
| 602 | 656 | |
| 603 | 657 | ROM_REGION32_BE( 0x800000, "user3", 0 ) |
| 604 | 658 | 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) ) | |
| 605 | 665 | ROM_END |
| 606 | 666 | |
| 607 | 667 | |
| r6428 | r6429 | |
| 612 | 672 | ROM_REGION32_BE( 0x4000000, "user2", 0 ) |
| 613 | 673 | ROM_LOAD16_WORD_SWAP( "nus-zscj.u3", 0x000000, 0x800000, CRC(8b36eb91) SHA1(179745625c16c6813d5f8d29bfd7628783d55806) ) |
| 614 | 674 | |
| 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 | ||
| 615 | 681 | ROM_END |
| 616 | 682 | |
| 617 | 683 |
| r6428 | r6429 | |
|---|---|---|
| 222 | 222 | AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_r) |
| 223 | 223 | AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(trackfld_sh_timer_r) |
| 224 | 224 | 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) | |
| 226 | 226 | AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_w) |
| 227 | 227 | AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */ |
| 228 | 228 | AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("vlm", trackfld_speech_r) |
| r6428 | r6429 | |
| 236 | 236 | AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_r) |
| 237 | 237 | AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(trackfld_sh_timer_r) |
| 238 | 238 | 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) | |
| 240 | 240 | AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_w) |
| 241 | 241 | AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */ |
| 242 | 242 | AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_READ(hyprolyb_adpcm_busy_r) |
| r6428 | r6429 | |
| 723 | 723 | MDRV_SOUND_ADD("dac", DAC, 0) |
| 724 | 724 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 725 | 725 | |
| 726 | MDRV_SOUND_ADD("sn", SN76496, SOUND_CLOCK/8) | |
| 726 | MDRV_SOUND_ADD("snsnd", SN76496, SOUND_CLOCK/8) | |
| 727 | 727 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 728 | 728 | |
| 729 | 729 | MDRV_SOUND_ADD("vlm", VLM5030, VLM_CLOCK) |
| r6428 | r6429 | |
|---|---|---|
| 63 | 63 | |
| 64 | 64 | |
| 65 | 65 | |
| 66 | static UINT8 *astrof_videoram; | |
| 67 | static size_t astrof_videoram_size; | |
| 68 | static UINT8 *astrof_colorram; | |
| 69 | static UINT8 *tomahawk_protection; | |
| 70 | ||
| 71 | static UINT8 *astrof_color; | |
| 72 | static UINT8 astrof_palette_bank; | |
| 73 | static UINT8 red_on; | |
| 74 | static UINT8 flipscreen; | |
| 75 | static UINT8 screen_off; | |
| 76 | ||
| 77 | static UINT16 abattle_count; | |
| 78 | ||
| 79 | ||
| 80 | ||
| 81 | 66 | /************************************* |
| 82 | 67 | * |
| 83 | 68 | * IRQ generation |
| r6428 | r6429 | |
| 145 | 130 | static CUSTOM_INPUT( tomahawk_controls_r ) |
| 146 | 131 | { |
| 147 | 132 | UINT32 ret; |
| 133 | astrof_state *state = (astrof_state *)field->port->machine->driver_data; | |
| 148 | 134 | |
| 149 | 135 | /* on a cocktail cabinet, two sets of controls are |
| 150 | 136 | multiplexed on a single set of inputs |
| 151 | 137 | (not verified on pcb) */ |
| 152 | 138 | |
| 153 | if (flipscreen) | |
| 139 | if (state->flipscreen) | |
| 154 | 140 | ret = input_port_read(field->port->machine, "P2"); |
| 155 | 141 | else |
| 156 | 142 | ret = input_port_read(field->port->machine, "P1"); |
| r6428 | r6429 | |
| 172 | 158 | |
| 173 | 159 | static VIDEO_START( astrof ) |
| 174 | 160 | { |
| 161 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 162 | ||
| 175 | 163 | /* 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); | |
| 178 | 166 | } |
| 179 | 167 | |
| 180 | 168 | |
| 181 | static rgb_t make_pen(UINT8 data) | |
| 169 | static rgb_t make_pen( running_machine *machine, UINT8 data ) | |
| 182 | 170 | { |
| 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; | |
| 189 | 172 | |
| 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 | ||
| 190 | 180 | /* this is probably not quite right, but I don't have the |
| 191 | 181 | knowledge to figure out the actual weights - ZV */ |
| 192 | 182 | UINT8 r = (0xc0 * r1_bit) + (0x3f * r2_bit); |
| r6428 | r6429 | |
| 197 | 187 | } |
| 198 | 188 | |
| 199 | 189 | |
| 200 | static void astrof_get_pens(running_machine *machine, pen_t *pens) | |
| 190 | static void astrof_get_pens( running_machine *machine, pen_t *pens ) | |
| 201 | 191 | { |
| 192 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 202 | 193 | offs_t i; |
| 203 | 194 | UINT8 *prom = memory_region(machine, "proms"); |
| 204 | 195 | |
| 205 | 196 | for (i = 0; i < ASTROF_NUM_PENS; i++) |
| 206 | 197 | { |
| 207 | UINT8 data = prom[(astrof_palette_bank ? 0x10 : 0x00) | i]; | |
| 198 | UINT8 data = prom[(state->astrof_palette_bank ? 0x10 : 0x00) | i]; | |
| 208 | 199 | |
| 209 | pens[i] = make_pen(data); | |
| 200 | pens[i] = make_pen(machine, data); | |
| 210 | 201 | } |
| 211 | 202 | } |
| 212 | 203 | |
| 213 | 204 | |
| 214 | static void tomahawk_get_pens(running_machine *machine, pen_t *pens) | |
| 205 | static void tomahawk_get_pens( running_machine *machine, pen_t *pens ) | |
| 215 | 206 | { |
| 216 | 207 | offs_t i; |
| 217 | 208 | UINT8 *prom = memory_region(machine, "proms"); |
| r6428 | r6429 | |
| 220 | 211 | { |
| 221 | 212 | UINT8 data = prom[i]; |
| 222 | 213 | |
| 223 | pens[i] = make_pen(data); | |
| 214 | pens[i] = make_pen(machine, data); | |
| 224 | 215 | } |
| 225 | 216 | } |
| 226 | 217 | |
| 227 | 218 | |
| 228 | 219 | static WRITE8_HANDLER( astrof_videoram_w ) |
| 229 | 220 | { |
| 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; | |
| 232 | 225 | } |
| 233 | 226 | |
| 234 | 227 | |
| 235 | 228 | static WRITE8_HANDLER( tomahawk_videoram_w ) |
| 236 | 229 | { |
| 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); | |
| 239 | 234 | } |
| 240 | 235 | |
| 241 | 236 | |
| 242 | 237 | static WRITE8_HANDLER( video_control_1_w ) |
| 243 | 238 | { |
| 244 | | |
| 239 | a | |
| 245 | 240 | |
| 241 | state->flipscreen = ((data >> 0) & 0x01) & input_port_read(space->machine, "CAB"); | |
| 242 | ||
| 246 | 243 | /* 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; | |
| 248 | 245 | |
| 249 | 246 | /* D2 - not connected in the schematics, but at one point Astro Fighter sets it to 1 */ |
| 250 | 247 | /* D3-D7 - not connected */ |
| r6428 | r6429 | |
| 253 | 250 | } |
| 254 | 251 | |
| 255 | 252 | |
| 256 | static void astrof_set_video_control_2(UINT8 data) | |
| 253 | static void astrof_set_video_control_2( running_machine *machine, UINT8 data ) | |
| 257 | 254 | { |
| 255 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 256 | ||
| 258 | 257 | /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */ |
| 259 | 258 | /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */ |
| 260 | 259 | |
| 261 | 260 | /* 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; | |
| 263 | 262 | |
| 264 | 263 | /* 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; | |
| 266 | 265 | |
| 267 | 266 | /* D4-D7 - not connected */ |
| 268 | 267 | } |
| 269 | 268 | |
| 270 | 269 | static WRITE8_HANDLER( astrof_video_control_2_w ) |
| 271 | 270 | { |
| 272 | astrof_set_video_control_2(data); | |
| 271 | astrof_set_video_control_2(space->machine, data); | |
| 273 | 272 | video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen)); |
| 274 | 273 | } |
| 275 | 274 | |
| 276 | 275 | |
| 277 | static void spfghmk2_set_video_control_2(UINT8 data) | |
| 276 | static void spfghmk2_set_video_control_2( running_machine *machine, UINT8 data ) | |
| 278 | 277 | { |
| 278 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 279 | ||
| 279 | 280 | /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */ |
| 280 | 281 | /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */ |
| 281 | 282 | |
| 282 | 283 | /* 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; | |
| 284 | 285 | |
| 285 | 286 | /* D3-D7 - not connected */ |
| 286 | 287 | } |
| 287 | 288 | |
| 288 | 289 | static WRITE8_HANDLER( spfghmk2_video_control_2_w ) |
| 289 | 290 | { |
| 290 | spfghmk2_set_video_control_2(data); | |
| 291 | spfghmk2_set_video_control_2(space->machine, data); | |
| 291 | 292 | video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen)); |
| 292 | 293 | } |
| 293 | 294 | |
| 294 | 295 | |
| 295 | static void tomahawk_set_video_control_2(UINT8 data) | |
| 296 | static void tomahawk_set_video_control_2( running_machine *machine, UINT8 data ) | |
| 296 | 297 | { |
| 298 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 299 | ||
| 297 | 300 | /* D0 - OUT0 - goes to edge conn. pin A10 - was perhaps meant to be a start lamp */ |
| 298 | 301 | /* D1 - OUT1 - goes to edge conn. pin A11 - was perhaps meant to be a start lamp */ |
| 299 | 302 | /* D2 - not connected */ |
| 300 | 303 | |
| 301 | 304 | /* 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; | |
| 303 | 306 | } |
| 304 | 307 | |
| 305 | 308 | static WRITE8_HANDLER( tomahawk_video_control_2_w ) |
| 306 | 309 | { |
| 307 | tomahawk_set_video_control_2(data); | |
| 310 | tomahawk_set_video_control_2(space->machine, data); | |
| 308 | 311 | video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen)); |
| 309 | 312 | } |
| 310 | 313 | |
| 311 | 314 | |
| 312 | static void video_update_common(bitmap_t *bitmap, const rectangle *cliprect, pen_t *pens) | |
| 315 | static void video_update_common( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, pen_t *pens ) | |
| 313 | 316 | { |
| 317 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 314 | 318 | offs_t offs; |
| 315 | 319 | |
| 316 | for (offs = 0; offs < | |
| 320 | for (offs = 0; offs < | |
| 317 | 321 | { |
| 318 | 322 | UINT8 data; |
| 319 | 323 | int i; |
| 320 | 324 | |
| 321 | UINT8 color = | |
| 325 | UINT8 color = | |
| 322 | 326 | |
| 323 | 327 | pen_t back_pen = pens[color | 0x00]; |
| 324 | 328 | pen_t fore_pen = pens[color | 0x01]; |
| r6428 | r6429 | |
| 326 | 330 | UINT8 y = offs; |
| 327 | 331 | UINT8 x = offs >> 8 << 3; |
| 328 | 332 | |
| 329 | if (!flipscreen) | |
| 333 | if (!state->flipscreen) | |
| 330 | 334 | y = ~y; |
| 331 | 335 | |
| 332 | 336 | if ((y <= cliprect->min_y) || (y >= cliprect->max_y)) |
| 333 | 337 | continue; |
| 334 | 338 | |
| 335 | if (screen_off) | |
| 339 | if (state->screen_off) | |
| 336 | 340 | data = 0; |
| 337 | 341 | else |
| 338 | data = | |
| 342 | data = | |
| 339 | 343 | |
| 340 | 344 | for (i = 0; i < 8; i++) |
| 341 | 345 | { |
| 342 | 346 | pen_t pen = (data & 0x01) ? fore_pen : back_pen; |
| 343 | 347 | |
| 344 | if (flipscreen) | |
| 348 | if (state->flipscreen) | |
| 345 | 349 | *BITMAP_ADDR32(bitmap, y, 255 - x) = pen; |
| 346 | 350 | else |
| 347 | 351 | *BITMAP_ADDR32(bitmap, y, x) = pen; |
| r6428 | r6429 | |
| 359 | 363 | |
| 360 | 364 | astrof_get_pens(screen->machine, pens); |
| 361 | 365 | |
| 362 | video_update_common(bitmap, cliprect, pens); | |
| 366 | video_update_common(screen->machine, bitmap, cliprect, pens); | |
| 363 | 367 | |
| 364 | 368 | return 0; |
| 365 | 369 | } |
| r6428 | r6429 | |
| 371 | 375 | |
| 372 | 376 | tomahawk_get_pens(screen->machine, pens); |
| 373 | 377 | |
| 374 | video_update_common(bitmap, cliprect, pens); | |
| 378 | video_update_common(screen->machine, bitmap, cliprect, pens); | |
| 375 | 379 | |
| 376 | 380 | return 0; |
| 377 | 381 | } |
| r6428 | r6429 | |
| 393 | 397 | |
| 394 | 398 | static READ8_HANDLER( abattle_coin_prot_r ) |
| 395 | 399 | { |
| 396 | a | |
| 400 | as | |
| 397 | 401 | |
| 398 | return abattle_count ? 0x07 : 0x00; | |
| 402 | state->abattle_count = (state->abattle_count + 1) % 0x0101; | |
| 403 | return state->abattle_count ? 0x07 : 0x00; | |
| 399 | 404 | } |
| 400 | 405 | |
| 401 | 406 | |
| 402 | 407 | static READ8_HANDLER( afire_coin_prot_r ) |
| 403 | 408 | { |
| 404 | a | |
| 409 | as | |
| 405 | 410 | |
| 406 | return abattle_count ? 0x07 : 0x00; | |
| 411 | state->abattle_count = state->abattle_count ^ 0x01; | |
| 412 | return state->abattle_count ? 0x07 : 0x00; | |
| 407 | 413 | } |
| 408 | 414 | |
| 409 | 415 | |
| 410 | 416 | static READ8_HANDLER( tomahawk_protection_r ) |
| 411 | 417 | { |
| 418 | astrof_state *state = (astrof_state *)space->machine->driver_data; | |
| 419 | ||
| 412 | 420 | /* 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); | |
| 414 | 422 | } |
| 415 | 423 | |
| 416 | 424 | |
| r6428 | r6429 | |
| 423 | 431 | |
| 424 | 432 | static MACHINE_START( astrof ) |
| 425 | 433 | { |
| 434 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 435 | ||
| 426 | 436 | /* 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); | |
| 428 | 438 | |
| 439 | state->samples = devtag_get_device(machine, "samples"); | |
| 440 | ||
| 429 | 441 | /* 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); | |
| 436 | 451 | } |
| 437 | 452 | |
| 438 | 453 | |
| 439 | 454 | static MACHINE_START( abattle ) |
| 440 | 455 | { |
| 456 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 457 | ||
| 441 | 458 | /* register for state saving */ |
| 442 | state_save_register_global(machine, abattle_count); | |
| 459 | state_save_register_global(machine, state->abattle_count); | |
| 443 | 460 | |
| 444 | 461 | MACHINE_START_CALL(astrof); |
| 445 | 462 | } |
| r6428 | r6429 | |
| 447 | 464 | |
| 448 | 465 | static MACHINE_START( spfghmk2 ) |
| 449 | 466 | { |
| 467 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 468 | ||
| 450 | 469 | /* 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); | |
| 452 | 471 | |
| 453 | 472 | /* the red background circuit is disabled */ |
| 454 | red_on = FALSE; | |
| 473 | state->red_on = FALSE; | |
| 455 | 474 | |
| 456 | 475 | /* 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); | |
| 460 | 479 | } |
| 461 | 480 | |
| 462 | 481 | |
| 463 | 482 | static MACHINE_START( tomahawk ) |
| 464 | 483 | { |
| 484 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 485 | ||
| 465 | 486 | /* 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); | |
| 467 | 488 | |
| 489 | state->sn = devtag_get_device(machine, "snsnd"); | |
| 490 | ||
| 468 | 491 | /* 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); | |
| 472 | 495 | } |
| 473 | 496 | |
| 474 | 497 | |
| r6428 | r6429 | |
| 481 | 504 | |
| 482 | 505 | static MACHINE_RESET( abattle ) |
| 483 | 506 | { |
| 484 | abattle_count = 0; | |
| 507 | astrof_state *state = (astrof_state *)machine->driver_data; | |
| 508 | state->abattle_count = 0; | |
| 485 | 509 | } |
| 486 | 510 | |
| 487 | 511 | |
| r6428 | r6429 | |
| 495 | 519 | static ADDRESS_MAP_START( astrof_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 496 | 520 | AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM |
| 497 | 521 | AM_RANGE(0x2000, 0x3fff) AM_NOP |
| 498 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE( | |
| 522 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE_MEMBER( | |
| 499 | 523 | AM_RANGE(0x6000, 0x7fff) AM_NOP |
| 500 | 524 | AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP |
| 501 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE( | |
| 525 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color) | |
| 502 | 526 | AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) |
| 503 | 527 | AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_video_control_2_w) |
| 504 | 528 | AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_1_w) |
| r6428 | r6429 | |
| 514 | 538 | static ADDRESS_MAP_START( spfghmk2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 515 | 539 | AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM |
| 516 | 540 | AM_RANGE(0x2000, 0x3fff) AM_NOP |
| 517 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE( | |
| 541 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_BASE_MEMBER( | |
| 518 | 542 | AM_RANGE(0x6000, 0x7fff) AM_NOP |
| 519 | 543 | AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP |
| 520 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE( | |
| 544 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color) | |
| 521 | 545 | AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) |
| 522 | 546 | AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_video_control_2_w) |
| 523 | 547 | AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_audio_w) |
| r6428 | r6429 | |
| 533 | 557 | static ADDRESS_MAP_START( tomahawk_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 534 | 558 | AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM |
| 535 | 559 | AM_RANGE(0x2000, 0x3fff) AM_NOP |
| 536 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_BASE( | |
| 560 | AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_BASE_MEMBER( | |
| 537 | 561 | AM_RANGE(0x6000, 0x7fff) AM_NOP |
| 538 | 562 | AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP |
| 539 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE( | |
| 563 | AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, astrof_color) | |
| 540 | 564 | AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) |
| 541 | 565 | AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_video_control_2_w) |
| 542 | 566 | 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( | |
| 567 | AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_BASE_MEMBER(astrof_state, tomahawk_protection) | |
| 544 | 568 | AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP |
| 545 | 569 | AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP |
| 546 | 570 | AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP |
| r6428 | r6429 | |
| 844 | 868 | |
| 845 | 869 | static MACHINE_DRIVER_START( base ) |
| 846 | 870 | |
| 871 | /* driver data */ | |
| 872 | MDRV_DRIVER_DATA(astrof_state) | |
| 873 | ||
| 847 | 874 | /* basic machine hardware */ |
| 848 | 875 | MDRV_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) |
| 849 | 876 | MDRV_TIMER_ADD_SCANLINE("vblank", irq_callback, "screen", VBSTART, 0) |
| r6428 | r6429 | |
|---|---|---|
| 234 | 234 | static ADDRESS_MAP_START( rygar_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 235 | 235 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 236 | 236 | 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) | |
| 238 | 238 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) AM_DEVWRITE("msm", tecmo_adpcm_start_w) |
| 239 | 239 | AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w) |
| 240 | 240 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", tecmo_adpcm_vol_w) |
| r6428 | r6429 | |
| 246 | 246 | /* writes code to this area */ |
| 247 | 247 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 248 | 248 | 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) | |
| 250 | 250 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) AM_DEVWRITE("msm", tecmo_adpcm_start_w) |
| 251 | 251 | AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w) |
| 252 | 252 | AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("msm", tecmo_adpcm_vol_w) |
| r6428 | r6429 | |
| 704 | 704 | /* sound hardware */ |
| 705 | 705 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 706 | 706 | |
| 707 | MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 707 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 708 | 708 | MDRV_SOUND_CONFIG(ym3812_config) |
| 709 | 709 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 710 | 710 | |
| r6428 | r6429 | |
| 763 | 763 | /* sound hardware */ |
| 764 | 764 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 765 | 765 | |
| 766 | MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 766 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 767 | 767 | MDRV_SOUND_CONFIG(ym3812_config) |
| 768 | 768 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 769 | 769 |
| r6428 | r6429 | |
|---|---|---|
| 117 | 117 | AM_RANGE(0x0813, 0x0813) AM_READ_PORT("DSW1") |
| 118 | 118 | AM_RANGE(0x0818, 0x0818) AM_WRITE(watchdog_reset_w) |
| 119 | 119 | 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. */ | |
| 121 | 121 | AM_RANGE(0x081b, 0x081b) AM_WRITENOP /* Loads the snd command into the snd latch */ |
| 122 | 122 | AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w) /* custom sound chip */ |
| 123 | 123 | AM_RANGE(0x081d, 0x081d) AM_WRITE(soundlatch_w) /* custom sound chip */ |
| r6428 | r6429 | |
| 276 | 276 | /* sound hardware */ |
| 277 | 277 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 278 | 278 | |
| 279 | MDRV_SOUND_ADD("sn", SN76489A, XTAL_18_432MHz/12) | |
| 279 | MDRV_SOUND_ADD("snsnd", SN76489A, XTAL_18_432MHz/12) | |
| 280 | 280 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 281 | 281 | |
| 282 | 282 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 445 | 445 | AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM AM_WRITENOP |
| 446 | 446 | AM_RANGE(0x2000, 0x7fff) AM_NOP |
| 447 | 447 | 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) | |
| 450 | 450 | AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ffc) AM_NOP |
| 451 | 451 | AM_RANGE(0xc000, 0xffff) AM_NOP |
| 452 | 452 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 584 | 584 | /* audio hardware */ |
| 585 | 585 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 586 | 586 | |
| 587 | MDRV_SOUND_ADD("ay", AY8910, AY8910_CLOCK) | |
| 587 | MDRV_SOUND_ADD("aysnd", AY8910, AY8910_CLOCK) | |
| 588 | 588 | MDRV_SOUND_CONFIG(ay8910_config) |
| 589 | 589 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 590 | 590 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 614 | 614 | /* audio hardware */ |
| 615 | 615 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 616 | 616 | |
| 617 | MDRV_SOUND_ADD("ay", AY8910, AY8910_CLOCK) | |
| 617 | MDRV_SOUND_ADD("aysnd", AY8910, AY8910_CLOCK) | |
| 618 | 618 | MDRV_SOUND_CONFIG(ay8910_config) |
| 619 | 619 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 620 | 620 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 312 | 312 | AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w) |
| 313 | 313 | AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE( igs_lamps_w ) /* Keyboard */ |
| 314 | 314 | 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) | |
| 316 | 316 | AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) |
| 317 | 317 | AM_RANGE(0x6800, 0x6fff) AM_RAM_WRITE( bg_tile_w ) AM_BASE( &bg_tile_ram ) |
| 318 | 318 | AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE( fg_tile_w ) AM_BASE( &fg_tile_ram ) |
| r6428 | r6429 | |
| 1582 | 1582 | |
| 1583 | 1583 | /* sound hardware */ |
| 1584 | 1584 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1585 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 1585 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 1586 | 1586 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1587 | 1587 | |
| 1588 | 1588 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 107 | 107 | |
| 108 | 108 | static ADDRESS_MAP_START( io_map_sound_cowrace, ADDRESS_SPACE_IO, 8 ) |
| 109 | 109 | 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) | |
| 111 | 111 | ADDRESS_MAP_END |
| 112 | 112 | |
| 113 | 113 | |
| r6428 | r6429 | |
| 225 | 225 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) |
| 226 | 226 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) |
| 227 | 227 | |
| 228 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 228 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 229 | 229 | MDRV_SOUND_CONFIG(ym2203_interface_1) |
| 230 | 230 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) |
| 231 | 231 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 553 | 553 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 554 | 554 | ADDRESS_MAP_UNMAP_HIGH |
| 555 | 555 | 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) | |
| 557 | 557 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) |
| 558 | 558 | ADDRESS_MAP_END |
| 559 | 559 | |
| r6428 | r6429 | |
| 836 | 836 | /* sound hardware */ |
| 837 | 837 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 838 | 838 | |
| 839 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4) | |
| 839 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) | |
| 840 | 840 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.43) |
| 841 | 841 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.43) |
| 842 | 842 |
| r6428 | r6429 | |
|---|---|---|
| 327 | 327 | static void count_7dig(unsigned long data, UINT8 index) |
| 328 | 328 | { |
| 329 | 329 | UINT8 i; |
| 330 | char strn[ | |
| 330 | char strn[8]; | |
| 331 | 331 | sprintf(strn,"%7lu",data); |
| 332 | 332 | |
| 333 | 333 | for (i = 0; i < 7; i++) |
| r6428 | r6429 | |
| 906 | 906 | AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE(baby_sound_p0_r, baby_sound_p0_w) |
| 907 | 907 | AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(baby_sound_p1_r, baby_sound_p1_w) |
| 908 | 908 | 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) | |
| 910 | 910 | ADDRESS_MAP_END |
| 911 | 911 | |
| 912 | 912 | |
| r6428 | r6429 | |
| 1239 | 1239 | MDRV_GFXDECODE(videodad) |
| 1240 | 1240 | MDRV_VIDEO_START(vidadcba) |
| 1241 | 1241 | |
| 1242 | MDRV_SOUND_ADD("ay", AY8910, CPU_CLOCK / 6) | |
| 1242 | MDRV_SOUND_ADD("aysnd", AY8910, CPU_CLOCK / 6) | |
| 1243 | 1243 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1244 | 1244 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1245 | 1245 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 130 | 130 | static ADDRESS_MAP_START( koikoi_io_map, ADDRESS_SPACE_IO, 8 ) |
| 131 | 131 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 132 | 132 | 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) | |
| 135 | 135 | ADDRESS_MAP_END |
| 136 | 136 | |
| 137 | 137 | static INPUT_PORTS_START( koikoi ) |
| r6428 | r6429 | |
| 267 | 267 | /* sound hardware */ |
| 268 | 268 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 269 | 269 | |
| 270 | MDRV_SOUND_ADD("ay", AY8910, KOIKOI_CRYSTAL/8) | |
| 270 | MDRV_SOUND_ADD("aysnd", AY8910, KOIKOI_CRYSTAL/8) | |
| 271 | 271 | MDRV_SOUND_CONFIG(ay8910_config) |
| 272 | 272 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 273 | 273 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /**************************************************************************** |
| 2 | 2 | |
| 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. | |
| 7 | 7 | |
| 8 | HEXA | |
| 8 | HEXA | |
| 9 | 9 | |
| 10 | driver by Howie Cohen | |
| 10 | driver by Howie Cohen | |
| 11 | 11 | |
| 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 | |
| 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 | |
| 18 | 18 | |
| 19 | read: | |
| 20 | d001 AY8910 read | |
| 21 | f000 ??????? | |
| 19 | read: | |
| 20 | d001 AY8910 read | |
| 21 | f000 ??????? | |
| 22 | 22 | |
| 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 ???????? | |
| 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 ???????? | |
| 32 | 32 | |
| 33 | 33 | ************************************************************************* |
| 34 | 34 | |
| 35 | main hardware consists of..... | |
| 35 | main hardware consists of..... | |
| 36 | 36 | |
| 37 | sub 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) | |
| 38 | 38 | |
| 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 | |
| 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 | |
| 46 | 46 | |
| 47 | 47 | *************************************************************************/ |
| 48 | 48 | |
| 49 | 49 | #include "driver.h" |
| 50 | 50 | #include "cpu/z80/z80.h" |
| 51 | 51 | #include "sound/ay8910.h" |
| 52 | #include "hexa.h" | |
| 52 | 53 | |
| 53 | 54 | |
| 54 | ||
| 55 | VIDEO_START( hexa ); | |
| 56 | VIDEO_UPDATE( hexa ); | |
| 57 | WRITE8_HANDLER( hexa_videoram_w ); | |
| 58 | WRITE8_HANDLER( hexa_d008_w ); | |
| 59 | ||
| 60 | ||
| 61 | ||
| 62 | 55 | static ADDRESS_MAP_START( hexa_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 63 | 56 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 64 | 57 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| 65 | 58 | 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) | |
| 68 | 61 | AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w) |
| 69 | 62 | 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( | |
| 63 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE_MEMBER(hexa_state, videoram) AM_SIZE(&videoram_size) | |
| 71 | 64 | ADDRESS_MAP_END |
| 72 | 65 | |
| 73 | 66 | |
| 74 | 67 | |
| 75 | 68 | static INPUT_PORTS_START( hexa ) |
| 76 | PORT_START("INPUTS") | |
| 69 | PORT_START("INPUTS") | |
| 77 | 70 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY |
| 78 | 71 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY |
| 79 | 72 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| r6428 | r6429 | |
| 83 | 76 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 84 | 77 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
| 85 | 78 | |
| 86 | PORT_START("DSW") | |
| 79 | PORT_START("DSW") | |
| 87 | 80 | PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) |
| 88 | 81 | PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) |
| 89 | 82 | PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) |
| r6428 | r6429 | |
| 141 | 134 | |
| 142 | 135 | |
| 143 | 136 | |
| 137 | static MACHINE_START( hexa ) | |
| 138 | { | |
| 139 | hexa_state *state = (hexa_state *)machine->driver_data; | |
| 140 | ||
| 141 | state_save_register_global(machine, state->charbank); | |
| 142 | } | |
| 143 | ||
| 144 | static MACHINE_RESET( hexa ) | |
| 145 | { | |
| 146 | hexa_state *state = (hexa_state *)machine->driver_data; | |
| 147 | ||
| 148 | state->charbank = 0; | |
| 149 | } | |
| 150 | ||
| 144 | 151 | static MACHINE_DRIVER_START( hexa ) |
| 145 | 152 | |
| 153 | /* driver data */ | |
| 154 | MDRV_DRIVER_DATA(hexa_state) | |
| 155 | ||
| 146 | 156 | /* basic machine hardware */ |
| 147 | 157 | MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz ??????? */ |
| 148 | 158 | MDRV_CPU_PROGRAM_MAP(hexa_map) |
| 149 | 159 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 150 | 160 | |
| 161 | MDRV_MACHINE_START(hexa) | |
| 162 | MDRV_MACHINE_RESET(hexa) | |
| 163 | ||
| 151 | 164 | /* video hardware */ |
| 152 | 165 | MDRV_SCREEN_ADD("screen", RASTER) |
| 153 | 166 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 165 | 178 | |
| 166 | 179 | /* sound hardware */ |
| 167 | 180 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 168 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 181 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 169 | 182 | MDRV_SOUND_CONFIG(ay8910_config) |
| 170 | 183 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 171 | 184 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 197 | 210 | |
| 198 | 211 | static DRIVER_INIT( hexa ) |
| 199 | 212 | { |
| 213 | UINT8 *RAM = memory_region(machine, "maincpu"); | |
| 200 | 214 | #if 0 |
| 201 | UINT8 *RAM = memory_region(machine, "maincpu"); | |
| 202 | 215 | |
| 203 | 216 | |
| 204 | 217 | /* Hexa is not protected or anything, but it keeps writing 0x3f to register */ |
| r6428 | r6429 | |
| 210 | 223 | RAM[0x0125] = 0x00; |
| 211 | 224 | RAM[0x0126] = 0x00; |
| 212 | 225 | #endif |
| 226 | ||
| 227 | memory_configure_bank(machine, 1, 0, 2, &RAM[0x10000], 0x4000); | |
| 213 | 228 | } |
| 214 | 229 | |
| 215 | 230 | |
| 216 | GAME( 199?, hexa, 0, hexa, hexa, hexa, ROT0, "D. R. Korea", "Hexa", | |
| 231 | GAME( 199?, hexa, 0, hexa, hexa, hexa, ROT0, "D. R. Korea", "Hexa", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 628 | 628 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 629 | 629 | AM_RANGE(0x200000, 0x20ffff) AM_RAM |
| 630 | 630 | 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 */ | |
| 632 | 632 | AM_RANGE(0x580000, 0x580001) AM_WRITENOP |
| 633 | 633 | AM_RANGE(0x600000, 0x600001) AM_WRITENOP |
| 634 | 634 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 937 | 937 | |
| 938 | 938 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 939 | 939 | |
| 940 | MDRV_SOUND_ADD("rf", RF5C400, 64000000/4) | |
| 940 | MDRV_SOUND_ADD("rfsnd", RF5C400, 64000000/4) | |
| 941 | 941 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 942 | 942 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 943 | 943 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1003 | 1003 | |
| 1004 | 1004 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1005 | 1005 | |
| 1006 | MDRV_SOUND_ADD("rf", RF5C400, 64000000/4) | |
| 1006 | MDRV_SOUND_ADD("rfsnd", RF5C400, 64000000/4) | |
| 1007 | 1007 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1008 | 1008 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1009 | 1009 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1024 | 1024 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */ |
| 1025 | 1025 | ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) ) |
| 1026 | 1026 | |
| 1027 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1027 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1028 | 1028 | ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) ) |
| 1029 | 1029 | ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) ) |
| 1030 | 1030 | ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) ) |
| r6428 | r6429 | |
| 1051 | 1051 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */ |
| 1052 | 1052 | ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) ) |
| 1053 | 1053 | |
| 1054 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1054 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1055 | 1055 | ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) ) |
| 1056 | 1056 | ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) ) |
| 1057 | 1057 | ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) ) |
| r6428 | r6429 | |
| 1078 | 1078 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */ |
| 1079 | 1079 | ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) ) |
| 1080 | 1080 | |
| 1081 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1081 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1082 | 1082 | ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) ) |
| 1083 | 1083 | ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) ) |
| 1084 | 1084 | ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) ) |
| r6428 | r6429 | |
| 1108 | 1108 | ROM_REGION(0x20000, "dsp", 0) /* 68k program for outboard sound? network? board */ |
| 1109 | 1109 | ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) ) |
| 1110 | 1110 | |
| 1111 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1111 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1112 | 1112 | ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) ) |
| 1113 | 1113 | ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) ) |
| 1114 | 1114 | ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) ) |
| r6428 | r6429 | |
| 1138 | 1138 | ROM_REGION(0x20000, "dsp", 0) /* 68k program for outboard sound? network? board */ |
| 1139 | 1139 | ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) ) |
| 1140 | 1140 | |
| 1141 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1141 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1142 | 1142 | ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) ) |
| 1143 | 1143 | ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) ) |
| 1144 | 1144 | ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) ) |
| r6428 | r6429 | |
| 1165 | 1165 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */ |
| 1166 | 1166 | ROM_LOAD16_WORD_SWAP( "792a07.10k", 0x000000, 0x080000, CRC(89a65ad1) SHA1(d814ef0b560c8e68da57ad5c6096e4fc05e9913e) ) |
| 1167 | 1167 | |
| 1168 | ROM_REGION(0x800000, "rf", 0) /* sound roms */ | |
| 1168 | ROM_REGION(0x800000, "rfsnd", 0) /* sound roms */ | |
| 1169 | 1169 | ROM_LOAD( "792a09.9s", 0x000000, 0x200000, CRC(7d7ea427) SHA1(a9a311a7c17223cc87140fe2890e20a321464831) ) |
| 1170 | 1170 | ROM_LOAD( "792a10.7s", 0x200000, 0x200000, CRC(e585e5d9) SHA1(ec44ad324a66eeea4c45933dda5a8a9a4398879d) ) |
| 1171 | 1171 | ROM_LOAD( "792a11.5s", 0x400000, 0x200000, CRC(c9c3a04c) SHA1(f834659f67712c9fcd93b7407669d7f35517b790) ) |
| r6428 | r6429 | |
| 1192 | 1192 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */ |
| 1193 | 1193 | ROM_LOAD16_WORD_SWAP( "685a07.13k", 0x000000, 0x080000, CRC(5b72fd80) SHA1(a150837fa0d66dc0c3832495a4c8ce4f9b92cd98) ) |
| 1194 | 1194 | |
| 1195 | ROM_REGION(0x1000000, "rf", 0) /* sound roms */ | |
| 1195 | ROM_REGION(0x1000000, "rfsnd", 0) /* sound roms */ | |
| 1196 | 1196 | ROM_LOAD( "685a09.9s", 0x000000, 0x400000, CRC(b8ae40aa) SHA1(eee27a8929e0e805f1045fd9638e661b36a1e3c7) ) |
| 1197 | 1197 | ROM_LOAD( "685a10.7s", 0x400000, 0x400000, CRC(fef3dc36) SHA1(566c7469fc452b5965a31fa42291082ec8e48a24) ) |
| 1198 | 1198 |
| r6428 | r6429 | |
|---|---|---|
| 90 | 90 | AM_RANGE(0x102c, 0x102d) AM_DEVWRITE("discrete", bsktball_noise_reset_w) /* Noise Reset */ |
| 91 | 91 | AM_RANGE(0x102e, 0x102f) AM_WRITE(bsktball_nmion_w) /* NMI On */ |
| 92 | 92 | 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) | |
| 95 | 95 | AM_RANGE(0x1c00, 0x1cff) AM_RAM |
| 96 | 96 | AM_RANGE(0x2000, 0x3fff) AM_ROM /* PROGRAM */ |
| 97 | 97 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 210 | 210 | * |
| 211 | 211 | *************************************/ |
| 212 | 212 | |
| 213 | static 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 | ||
| 231 | static 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 | ||
| 213 | 250 | static MACHINE_DRIVER_START( bsktball ) |
| 214 | 251 | |
| 252 | /* driver data */ | |
| 253 | MDRV_DRIVER_DATA(bsktball_state) | |
| 254 | ||
| 215 | 255 | /* basic machine hardware */ |
| 216 | 256 | MDRV_CPU_ADD("maincpu", M6502,750000) |
| 217 | 257 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 218 | 258 | MDRV_CPU_VBLANK_INT_HACK(bsktball_interrupt,8) |
| 219 | 259 | |
| 260 | MDRV_MACHINE_START(bsktball) | |
| 261 | MDRV_MACHINE_RESET(bsktball) | |
| 262 | ||
| 220 | 263 | /* video hardware */ |
| 221 | 264 | MDRV_SCREEN_ADD("screen", RASTER) |
| 222 | 265 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 268 | 311 | * |
| 269 | 312 | *************************************/ |
| 270 | 313 | |
| 271 | GAME( 1979, bsktball, 0, bsktball, bsktball, 0, ROT0, "Atari", "Basketball", | |
| 314 | GAME( 1979, bsktball, 0, bsktball, bsktball, 0, ROT0, "Atari", "Basketball", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 427 | 427 | |
| 428 | 428 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 429 | 429 | 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) | |
| 431 | 431 | AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w) |
| 432 | 432 | AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_signed_w) |
| 433 | 433 | AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) |
| r6428 | r6429 | |
| 758 | 758 | /* sound hardware */ |
| 759 | 759 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 760 | 760 | |
| 761 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 761 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 762 | 762 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 763 | 763 | |
| 764 | 764 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 805 | 805 | /* sound hardware */ |
| 806 | 806 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 807 | 807 | |
| 808 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 808 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 809 | 809 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 810 | 810 | |
| 811 | 811 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 846 | 846 | /* sound hardware */ |
| 847 | 847 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 848 | 848 | |
| 849 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 849 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 850 | 850 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 851 | 851 | |
| 852 | 852 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 887 | 887 | /* sound hardware */ |
| 888 | 888 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 889 | 889 | |
| 890 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 890 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 891 | 891 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 892 | 892 | |
| 893 | 893 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 928 | 928 | /* sound hardware */ |
| 929 | 929 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 930 | 930 | |
| 931 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 931 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 932 | 932 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 933 | 933 | |
| 934 | 934 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 969 | 969 | /* sound hardware */ |
| 970 | 970 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 971 | 971 | |
| 972 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 972 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 973 | 973 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 974 | 974 | |
| 975 | 975 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 1010 | 1010 | /* sound hardware */ |
| 1011 | 1011 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1012 | 1012 | |
| 1013 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 1013 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 1014 | 1014 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1015 | 1015 | |
| 1016 | 1016 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /******************************************************************************************************************** |
| 2 | 2 | |
| 3 | Tournament Solitaire (c) 199 | |
| 3 | Tournament Solitaire (c) 1995 Dynamo | |
| 4 | 4 | |
| 5 | ||
| 5 | Un | |
| 6 | 6 | |
| 7 | Jet Way Information Co. OP495SLC motherboard | |
| 8 | - AMD Am486-DX40 CPU | |
| 9 | - Trident TVGA9000i video card | |
| 10 | ||
| 7 | 11 | preliminary driver by Angelo Salese |
| 8 | 12 | |
| 13 | - Gets stuck on 640K DRAM banking, beeps endlessly once it gets to memory test. | |
| 14 | ||
| 9 | 15 | ********************************************************************************************************************/ |
| 10 | 16 | |
| 11 | 17 | #include "driver.h" |
| r6428 | r6429 | |
| 21 | 27 | #include "machine/8042kbdc.h" |
| 22 | 28 | #include "machine/pckeybrd.h" |
| 23 | 29 | #include "machine/idectrl.h" |
| 30 | #include "sound/beep.h" | |
| 24 | 31 | |
| 25 | 32 | static UINT32 *vga_vram; |
| 26 | 33 | static UINT8 vga_regs[0x19]; |
| r6428 | r6429 | |
| 111 | 118 | DMA8237 Controller |
| 112 | 119 | ******************/ |
| 113 | 120 | |
| 121 | static int dma_channel; | |
| 114 | 122 | static UINT8 dma_offset[2][4]; |
| 115 | 123 | static UINT8 at_pages[0x10]; |
| 116 | 124 | |
| 117 | static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed ) | |
| 118 | { | |
| 119 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); | |
| 120 | 125 | |
| 121 | /* Assert HLDA */ | |
| 122 | dma8237_set_hlda( device, state ); | |
| 123 | } | |
| 124 | ||
| 125 | ||
| 126 | static 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 | ||
| 136 | static 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 | ||
| 145 | 126 | static READ8_HANDLER(dma_page_select_r) |
| 146 | 127 | { |
| 147 | 128 | UINT8 data = at_pages[offset % 0x10]; |
| r6428 | r6429 | |
| 187 | 168 | } |
| 188 | 169 | |
| 189 | 170 | |
| 190 | static | |
| 171 | static WRITE_LINE_DEVICE_HANDLER( p | |
| 191 | 172 | { |
| 192 | | |
| 173 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_ | |
| 193 | 174 | |
| 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 | } | |
| 197 | 178 | |
| 198 | { NULL, NULL, NULL, NULL }, | |
| 199 | { NULL, NULL, NULL, NULL }, | |
| 200 | NULL | |
| 201 | }; | |
| 202 | 179 | |
| 203 | static | |
| 180 | static READ8_HANDLER( p | |
| 204 | 181 | { |
| 205 | XTAL_14_31818MHz/3, | |
| 182 | offs_t page_offset = (((offs_t) dma_offset[0][dma_channel]) << 16) | |
| 183 | & 0xFF0000; | |
| 206 | 184 | |
| 207 | NULL, | |
| 208 | NULL, | |
| 209 | NULL, | |
| 185 | return memory_read_byte(space, page_offset + offset); | |
| 186 | } | |
| 210 | 187 | |
| 211 | { NULL, NULL, NULL, NULL }, | |
| 212 | { NULL, NULL, NULL, NULL }, | |
| 213 | NULL | |
| 188 | ||
| 189 | static 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 | ||
| 197 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 198 | { | |
| 199 | if (!state) dma_channel = channel; | |
| 200 | } | |
| 201 | ||
| 202 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 203 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 204 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 205 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 206 | ||
| 207 | static 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) } | |
| 214 | 216 | }; |
| 215 | 217 | |
| 218 | static 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 | }; | |
| 216 | 228 | |
| 229 | ||
| 217 | 230 | /****************** |
| 218 | 231 | 8259 IRQ controller |
| 219 | 232 | ******************/ |
| r6428 | r6429 | |
| 290 | 303 | // AM_RANGE(0x000e0000, 0x000effff) AM_ROM AM_REGION("game_prg", 0) |
| 291 | 304 | AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 ) |
| 292 | 305 | 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 | |
| 293 | 308 | AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) |
| 294 | 309 | ADDRESS_MAP_END |
| 295 | 310 | |
| r6428 | r6429 | |
| 352 | 367 | } |
| 353 | 368 | |
| 354 | 369 | static ADDRESS_MAP_START( pcat_io, ADDRESS_SPACE_IO, 32 ) |
| 355 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 370 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 356 | 371 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 357 | 372 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 358 | 373 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| 359 | 374 | 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) | |
| 375 | AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff) | |
| 361 | 376 | 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 | |
| 363 | 379 | AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2 |
| 364 | 380 | AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port |
| 365 | 381 | AM_RANGE(0x03c0, 0x03c3) AM_RAM |
| r6428 | r6429 | |
| 494 | 510 | |
| 495 | 511 | static MACHINE_DRIVER_START( pcat_dyn ) |
| 496 | 512 | /* basic machine hardware */ |
| 497 | MDRV_CPU_ADD("maincpu", I486, | |
| 513 | MDRV_CPU_ADD("maincpu", I486, | |
| 498 | 514 | MDRV_CPU_PROGRAM_MAP(pcat_map) |
| 499 | 515 | MDRV_CPU_IO_MAP(pcat_io) |
| 500 | 516 | |
| r6428 | r6429 | |
| 513 | 529 | // MDRV_IMPORT_FROM( at_kbdc8042 ) |
| 514 | 530 | MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config ) |
| 515 | 531 | 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 ) | |
| 518 | 534 | MDRV_PIT8254_ADD( "pit8254", at_pit8254_config ) |
| 519 | 535 | |
| 520 | 536 | MDRV_PALETTE_INIT(pcat_286) |
| r6428 | r6429 | |
| 540 | 556 | ROM_CONTINUE( 0x00001, 0x04000 ) |
| 541 | 557 | |
| 542 | 558 | 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)) | |
| 564 | ROM_END | |
| 565 | ||
| 566 | ||
| 567 | ROM_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 */ | |
| 543 | 576 | ROM_LOAD("prom.0", 0x00000, 0x40000, CRC(f26ce73f) SHA1(5516c31aa18716a47f46e412fc273ae8784d2061)) |
| 544 | 577 | ROM_LOAD("prom.1", 0x40000, 0x40000, CRC(8f96e2a8) SHA1(bc3ce8b99e6ff40e355df2c3f797f1fe88b3b219)) |
| 545 | 578 | ROM_LOAD("prom.2", 0x80000, 0x40000, CRC(8b0ac5cf) SHA1(1c2b6a53c9ff4d18a5227d899facbbc719f40205)) |
| r6428 | r6429 | |
| 547 | 580 | ROM_LOAD("prom.7", 0xe0000, 0x02000, CRC(154c8092) SHA1(4439ee82f36d5d5c334494ba7bb4848e839213a7)) |
| 548 | 581 | ROM_END |
| 549 | 582 | |
| 550 | GAME( 199?, toursol, 0, pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo", "Tournament Solitaire", GAME_NOT_WORKING|GAME_NO_SOUND ) | |
| 583 | GAME( 1995, toursol, 0, pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", GAME_NOT_WORKING|GAME_NO_SOUND ) | |
| 584 | GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", GAME_NOT_WORKING|GAME_NO_SOUND ) | |
| 585 |
| r6428 | r6429 | |
|---|---|---|
| 324 | 324 | * |
| 325 | 325 | *************************************/ |
| 326 | 326 | |
| 327 | static READ8_DEVICE_HANDLER( hb_dma_read_byte ); | |
| 328 | static WRITE8_DEVICE_HANDLER( hb_dma_write_byte ); | |
| 329 | static READ8_DEVICE_HANDLER( dk_dma_read_byte ); | |
| 330 | static WRITE8_DEVICE_HANDLER( dk_dma_write_byte ); | |
| 327 | static READ8_HANDLER( hb_dma_read_byte ); | |
| 328 | static WRITE8_HANDLER( hb_dma_write_byte ); | |
| 331 | 329 | static READ8_DEVICE_HANDLER( p8257_ctl_r ); |
| 332 | 330 | static WRITE8_DEVICE_HANDLER( p8257_ctl_w ); |
| 333 | 331 | |
| r6428 | r6429 | |
| 337 | 335 | * |
| 338 | 336 | *************************************/ |
| 339 | 337 | |
| 340 | static | |
| 338 | static Z | |
| 341 | 339 | { |
| 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 | |
| 348 | 347 | }; |
| 349 | 348 | |
| 350 | static | |
| 349 | static I | |
| 351 | 350 | { |
| 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 } | |
| 360 | 358 | }; |
| 361 | 359 | |
| 362 | static | |
| 360 | static I | |
| 363 | 361 | { |
| 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 } | |
| 372 | 369 | }; |
| 373 | 370 | |
| 374 | 371 | /************************************* |
| r6428 | r6429 | |
| 494 | 491 | * |
| 495 | 492 | *************************************/ |
| 496 | 493 | |
| 497 | static READ8_ | |
| 494 | static READ8_ | |
| 498 | 495 | { |
| 499 | const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM); | |
| 500 | return memory_read_byte(space, offset); | |
| 501 | } | |
| 502 | ||
| 503 | static 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 | ||
| 509 | static 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; | |
| 513 | 497 | int bucket = state->rev_map[(offset>>10) & 0x1ff]; |
| 514 | 498 | int addr; |
| 515 | 499 | |
| r6428 | r6429 | |
| 521 | 505 | return memory_read_byte(space, addr); |
| 522 | 506 | } |
| 523 | 507 | |
| 524 | static WRITE8_ | |
| 508 | static WRITE8_ | |
| 525 | 509 | { |
| 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; | |
| 528 | 511 | int bucket = state->rev_map[(offset>>10) & 0x1ff]; |
| 529 | 512 | int addr; |
| 530 | 513 | |
| r6428 | r6429 | |
| 562 | 545 | |
| 563 | 546 | static WRITE8_DEVICE_HANDLER( p8257_drq_w ) |
| 564 | 547 | { |
| 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); | |
| 567 | 550 | } |
| 568 | 551 | |
| 569 | 552 | static READ8_HANDLER( dkong_in2_r ) |
| r6428 | r6429 | |
| 750 | 733 | } |
| 751 | 734 | } |
| 752 | 735 | |
| 736 | static WRITE8_DEVICE_HANDLER( dkong_z80dma_rdy_w ) | |
| 737 | { | |
| 738 | z80dma_rdy_w(device, data & 0x01); | |
| 739 | } | |
| 753 | 740 | |
| 741 | ||
| 754 | 742 | /************************************* |
| 755 | 743 | * |
| 756 | 744 | * Main CPU memory handlers |
| r6428 | r6429 | |
| 764 | 752 | AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* sprite set 1 */ |
| 765 | 753 | AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) |
| 766 | 754 | AM_BASE_MEMBER(dkong_state, video_ram) |
| 767 | AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", | |
| 755 | AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i | |
| 768 | 756 | AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls175.3d") /* IN0, sound CPU intf */ |
| 769 | 757 | AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */ |
| 770 | 758 | |
| r6428 | r6429 | |
| 788 | 776 | AM_SIZE_MEMBER(dkong_state, sprite_ram_size) /* sprite set 1 */ |
| 789 | 777 | AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) |
| 790 | 778 | AM_BASE_MEMBER(dkong_state, video_ram) |
| 791 | AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", | |
| 779 | AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i | |
| 792 | 780 | |
| 793 | 781 | AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls174.3d") /* IN0, sound interface */ |
| 794 | 782 | |
| r6428 | r6429 | |
| 828 | 816 | AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w) |
| 829 | 817 | AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ |
| 830 | 818 | 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 */ | |
| 832 | 820 | AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w) |
| 833 | 821 | AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */ |
| 834 | 822 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 865 | 853 | AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(dkong_videoram_w) |
| 866 | 854 | AM_BASE_MEMBER(dkong_state, video_ram) /* 0x7400 */ |
| 867 | 855 | AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */ |
| 868 | AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", | |
| 856 | AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i | |
| 869 | 857 | /* 0x6800 not remapped */ |
| 870 | 858 | AM_RANGE(0x2000, 0x2fff) AM_ROM |
| 871 | 859 | AM_RANGE(0x3000, 0x3fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w) |
| r6428 | r6429 | |
| 1594 | 1582 | MDRV_MACHINE_START(dkong2b) |
| 1595 | 1583 | MDRV_MACHINE_RESET(dkong) |
| 1596 | 1584 | |
| 1597 | MDRV_ | |
| 1585 | MDRV_I | |
| 1598 | 1586 | |
| 1599 | 1587 | /* video hardware */ |
| 1600 | 1588 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Appoooh memory map (preliminary) | |
| 4 | Similar to Bank Panic | |
| 3 | Appoooh memory map (preliminary) | |
| 4 | Similar to Bank Panic | |
| 5 | 5 | |
| 6 | driver by Tatsuyuki Satoh | |
| 6 | driver by Tatsuyuki Satoh | |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 0000-9fff ROM | |
| 10 | a000-dfff BANKED ROM | |
| 11 | e000-e7ff RAM | |
| 12 | e800-efff RAM?? | |
| 9 | 0000-9fff ROM | |
| 10 | a000-dfff BANKED ROM | |
| 11 | e000-e7ff RAM | |
| 12 | e800-efff RAM?? | |
| 13 | 13 | |
| 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 | |
| 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 | |
| 21 | 21 | |
| 22 | I/O | |
| 22 | I/O | |
| 23 | 23 | |
| 24 | read: | |
| 25 | 00 IN0 | |
| 26 | 01 IN1 | |
| 27 | 03 DSW | |
| 28 | 04 IN2 | |
| 24 | read: | |
| 25 | 00 IN0 | |
| 26 | 01 IN1 | |
| 27 | 03 DSW | |
| 28 | 04 IN2 | |
| 29 | 29 | |
| 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 ?? | |
| 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 ?? | |
| 42 | 42 | |
| 43 | Credits: | |
| 44 | - Tatsuyuki Satoh: MAME driver | |
| 43 | Credits: | |
| 44 | - Tatsuyuki Satoh: MAME driver | |
| 45 | 45 | |
| 46 | 16.08.2004 - TS - Added 'Robo Wres 2001' | |
| 46 | 16.08.2004 - TS - Added 'Robo Wres 2001' (see details below) | |
| 47 | 47 | |
| 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 | ----------------------------------------------------------------------------------- | |
| 67 | Coin1 | |
| 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 | ----------------------------------------------------------------------------------- | |
| 77 | Coin2 | |
| 78 | 1Coin 1Credit OFF OFF | |
| 79 | 1Coin 2Credit ON OFF | |
| 80 | 2Coin 1Credit OFF ON | |
| 81 | 3Coin 1Credit ON ON | |
| 82 | ----------------------------------------------------------------------------------- | |
| 83 | Demo Sound | |
| 84 | Off OFF | |
| 85 | On ON | |
| 86 | ----------------------------------------------------------------------------------- | |
| 87 | Not Used OFF | |
| 88 | ----------------------------------------------------------------------------------- | |
| 89 | Language | |
| 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 | ||
| 48 | 162 | ***************************************************************************/ |
| 49 | 163 | |
| 50 | 164 | #include "driver.h" |
| 51 | 165 | #include "cpu/z80/z80.h" |
| 52 | 166 | #include "appoooh.h" |
| 53 | #include "machine/segacrpt.h" | |
| 167 | #include "machine/segacrpt.h" // needed for robowres_decode | |
| 54 | 168 | #include "sound/msm5205.h" |
| 55 | 169 | #include "sound/sn76496.h" |
| 56 | 170 | |
| 57 | static UINT32 appoooh_adpcm_data; | |
| 58 | static UINT32 appoooh_adpcm_address; | |
| 59 | 171 | |
| 60 | 172 | static void appoooh_adpcm_int(const device_config *device) |
| 61 | 173 | { |
| 62 | if(appoooh_adpcm_address != 0xffffffff) | |
| 174 | appoooh_state *state = (appoooh_state *)device->machine->driver_data; | |
| 175 | ||
| 176 | if (state->adpcm_address != 0xffffffff) | |
| 63 | 177 | { |
| 64 | if(a | |
| 178 | if (state-> | |
| 65 | 179 | { |
| 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) | |
| 70 | 186 | { |
| 71 | appoooh_adpcm_address = 0xffffffff; | |
| 72 | msm5205_reset_w(device,1); | |
| 187 | state->adpcm_address = 0xffffffff; | |
| 188 | msm5205_reset_w(device, 1); | |
| 73 | 189 | } |
| 74 | 190 | } |
| 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; | |
| 79 | 195 | } |
| 80 | 196 | } |
| 81 | 197 | } |
| 198 | ||
| 82 | 199 | /* adpcm address write */ |
| 83 | 200 | static WRITE8_HANDLER( appoooh_adpcm_w ) |
| 84 | 201 | { |
| 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; | |
| 89 | 207 | } |
| 90 | 208 | |
| 91 | 209 | |
| 210 | /************************************* | |
| 211 | * | |
| 212 | * Address maps | |
| 213 | * | |
| 214 | *************************************/ | |
| 92 | 215 | |
| 93 | 216 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 94 | 217 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| r6428 | r6429 | |
| 97 | 220 | AM_RANGE(0xe000, 0xe7ff) AM_RAM |
| 98 | 221 | AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM ? */ |
| 99 | 222 | |
| 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) | |
| 106 | 229 | AM_RANGE(0xf000, 0xffff) AM_RAM |
| 107 | 230 | ADDRESS_MAP_END |
| 108 | 231 | |
| r6428 | r6429 | |
| 117 | 240 | ADDRESS_MAP_END |
| 118 | 241 | |
| 119 | 242 | |
| 243 | /************************************* | |
| 244 | * | |
| 245 | * Input ports | |
| 246 | * | |
| 247 | *************************************/ | |
| 120 | 248 | |
| 121 | 249 | static INPUT_PORTS_START( appoooh ) |
| 122 | 250 | PORT_START("P1") |
| r6428 | r6429 | |
| 171 | 299 | PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) |
| 172 | 300 | INPUT_PORTS_END |
| 173 | 301 | |
| 302 | static INPUT_PORTS_START( robowres ) | |
| 303 | PORT_INCLUDE( appoooh ) | |
| 174 | 304 | |
| 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 ) ) | |
| 310 | INPUT_PORTS_END | |
| 175 | 311 | |
| 312 | ||
| 313 | /************************************* | |
| 314 | * | |
| 315 | * Graphics definitions | |
| 316 | * | |
| 317 | *************************************/ | |
| 318 | ||
| 176 | 319 | static const gfx_layout charlayout = |
| 177 | 320 | { |
| 178 | 321 | 8,8, /* 8*8 characters */ |
| r6428 | r6429 | |
| 205 | 348 | GFXDECODE_END |
| 206 | 349 | |
| 207 | 350 | |
| 351 | static 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 | }; | |
| 208 | 361 | |
| 362 | static 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 | ||
| 376 | static 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 ) | |
| 381 | GFXDECODE_END | |
| 382 | ||
| 383 | ||
| 384 | /************************************* | |
| 385 | * | |
| 386 | * Sound interface | |
| 387 | * | |
| 388 | *************************************/ | |
| 389 | ||
| 209 | 390 | static const msm5205_interface msm5205_config = |
| 210 | 391 | { |
| 211 | 392 | appoooh_adpcm_int,/* interrupt function */ |
| r6428 | r6429 | |
| 213 | 394 | }; |
| 214 | 395 | |
| 215 | 396 | |
| 397 | /************************************* | |
| 398 | * | |
| 399 | * Machine driver | |
| 400 | * | |
| 401 | *************************************/ | |
| 216 | 402 | |
| 217 | 403 | static MACHINE_START( appoooh ) |
| 218 | 404 | { |
| 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); | |
| 222 | 411 | } |
| 223 | 412 | |
| 224 | 413 | |
| 414 | static MACHINE_RESET( appoooh ) | |
| 415 | { | |
| 416 | appoooh_state *state = (appoooh_state *)machine->driver_data; | |
| 225 | 417 | |
| 226 | static MACHINE_DRIVER_START( appoooh ) | |
| 418 | state->adpcm_address = 0xffffffff; | |
| 419 | state->adpcm_data = 0; | |
| 420 | state->scroll_x = 0; | |
| 421 | state->priority = 0; | |
| 422 | } | |
| 227 | 423 | |
| 424 | static MACHINE_DRIVER_START( appoooh_common ) | |
| 425 | ||
| 426 | /* driver data */ | |
| 427 | MDRV_DRIVER_DATA(appoooh_state) | |
| 428 | ||
| 228 | 429 | /* basic machine hardware */ |
| 229 | 430 | MDRV_CPU_ADD("maincpu", Z80,18432000/6) /* ??? the main xtal is 18.432 MHz */ |
| 230 | 431 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 231 | 432 | MDRV_CPU_IO_MAP(main_portmap) |
| 232 | 433 | MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) |
| 233 | 434 | |
| 234 | MDRV_MACHINE_START(appoooh) | |
| 435 | MDRV_MACHINE_START(appoooh) | |
| 436 | MDRV_MACHINE_RESET(appoooh) | |
| 235 | 437 | |
| 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 | ||
| 250 | 438 | /* sound hardware */ |
| 251 | 439 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 252 | 440 | |
| r6428 | r6429 | |
| 264 | 452 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 265 | 453 | MACHINE_DRIVER_END |
| 266 | 454 | |
| 267 | /* | |
| 268 | 455 | |
| 269 | Robo Wres 2001 | |
| 270 | Sega, (198x, possibly 1986?) | |
| 456 | static MACHINE_DRIVER_START( appoooh ) | |
| 271 | 457 | |
| 272 | Top Board | |
| 273 | --------- | |
| 274 | PCB No: 834-5990 SEGA 1986 | |
| 275 | CPU : NEC D315-5179 (Z80?) | |
| 276 | SOUND : OKI MSM5205 + Resonator 384kHz, SN76489 (x3) | |
| 277 | RAM : MB8128 (x1) | |
| 278 | OTHER : Volume Pot (x2, labelled VOICE and SOUND) | |
| 279 | PALs : (x1, near EPR-7542.15D, labelled 315-5056) | |
| 280 | PROMs : (x1, near EPR-7543.12B, labelled PR7571) | |
| 281 | DIPSW : 8 position (x1) | |
| 282 | DIPSW Info: | |
| 458 | /* common machine hardware */ | |
| 459 | MDRV_IMPORT_FROM(appoooh_common) | |
| 283 | 460 | |
| 284 | 1 2 3 4 5 6 7 8 | |
| 285 | ----------------------------------------------------------------------------------- | |
| 286 | Coin1 | |
| 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 | ----------------------------------------------------------------------------------- | |
| 296 | Coin2 | |
| 297 | 1Coin 1Credit OFF OFF | |
| 298 | 1Coin 2Credit ON OFF | |
| 299 | 2Coin 1Credit OFF ON | |
| 300 | 3Coin 1Credit ON ON | |
| 301 | ----------------------------------------------------------------------------------- | |
| 302 | Demo Sound | |
| 303 | Off OFF | |
| 304 | On ON | |
| 305 | ----------------------------------------------------------------------------------- | |
| 306 | Not Used OFF | |
| 307 | ----------------------------------------------------------------------------------- | |
| 308 | Language | |
| 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) | |
| 312 | 470 | |
| 471 | MDRV_PALETTE_INIT(appoooh) | |
| 472 | MDRV_VIDEO_START(appoooh) | |
| 473 | MDRV_VIDEO_UPDATE(appoooh) | |
| 474 | MACHINE_DRIVER_END | |
| 313 | 475 | |
| 314 | 476 | |
| 315 | ||
| 316 | PCB Edge Connector Pinout | |
| 317 | ------------------------- | |
| 318 | ||
| 319 | Parts Solder | |
| 320 | Side Side | |
| 321 | -------------------------------- | |
| 322 | GND A 1 GND | |
| 323 | GND B 2 GND | |
| 324 | COIN 2 C 3 - | |
| 325 | 1P HOLD D 4 2P HOLD | |
| 326 | 1P PUNCH E 5 2P PUNCH | |
| 327 | - F 6 - | |
| 328 | 1P START H 7 2P START | |
| 329 | 1P KICK J 8 2P KICK | |
| 330 | 1P UP K 9 2P UP | |
| 331 | 1P DOWN L 10 2P DOWN | |
| 332 | 1P LEFT M 11 2P LEFT | |
| 333 | 1P RIGHT N 12 2P RIGHT | |
| 334 | COUNTER 1 P 13 COIN 1 | |
| 335 | COUNTER 2 R 14 SERVICE | |
| 336 | RED S 15 GREEN | |
| 337 | BLUE T 16 SYNC | |
| 338 | - U 17 - | |
| 339 | +5 V 18 +5 | |
| 340 | +5 W 19 +5 | |
| 341 | +12 X 20 +12 | |
| 342 | SPEAKER 1 Y 21 SPEAKER 2 | |
| 343 | SPEAKER GND Z 22 SPEAKER GND | |
| 344 | ||
| 345 | ||
| 346 | ||
| 347 | Controls via 8-way Joystick and 3 buttons (Punch, Hold, Kick) | |
| 348 | ||
| 349 | ||
| 350 | ||
| 351 | Byte | |
| 352 | ROMs : C'sum (for Mike ;-) | |
| 353 | ---------------------------------------- | |
| 354 | EPR-7540.13D 27C256 6A13h | |
| 355 | EPR-7541.14D " 2723h | |
| 356 | EPR-7542.15D " 01E7h | |
| 357 | EPR-7543.12B " 6558h | |
| 358 | ||
| 359 | PR7571.10A 82s123 0A9Fh | |
| 360 | ||
| 361 | ||
| 362 | ||
| 363 | ||
| 364 | Lower Board | |
| 365 | ----------- | |
| 366 | ||
| 367 | PCB No: 837-5992 | |
| 368 | XTAL : 18.432MHz | |
| 369 | RAM : MB8128 (x2), SONY CXK5813D-55 (x2) | |
| 370 | PALs : (x3, labelled 315-5054, 315-5053, 315-5203) | |
| 371 | PROMs : (x2, one near EPR-7547.7D labelled PR7572, one near EPR-7544.7H labelled PR7573) | |
| 372 | ||
| 373 | Byte | |
| 374 | ROMs : C'Sum | |
| 375 | ------------------------------------- | |
| 376 | EPR-7544.7H 27C256 \ ED1Ah | |
| 377 | EPR-7545.6H " | E6CAh | |
| 378 | EPR-7546.5H " | 55EAh | |
| 379 | EPR-7547.7D " | Gfx EA3Fh | |
| 380 | EPR-7548.6D " | 5D1Fh | |
| 381 | EPR-7549.5D " / 16D1h | |
| 382 | ||
| 383 | PR7572.7F 82s129 06F1h \ Both have | |
| 384 | PR7573.7G 82s129 06F1h / identical contents | |
| 385 | ||
| 386 | */ | |
| 387 | ||
| 388 | static 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 ) ) | |
| 396 | INPUT_PORTS_END | |
| 397 | ||
| 398 | static 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 | ||
| 409 | static 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 | ||
| 423 | static 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 ) | |
| 428 | GFXDECODE_END | |
| 429 | ||
| 430 | 477 | static MACHINE_DRIVER_START( robowres ) |
| 431 | 478 | |
| 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) | |
| 437 | 481 | |
| 438 | MDRV_MACHINE_START(appoooh) | |
| 439 | ||
| 440 | 482 | /* video hardware */ |
| 441 | 483 | MDRV_SCREEN_ADD("screen", RASTER) |
| 442 | 484 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 450 | 492 | MDRV_PALETTE_INIT(robowres) |
| 451 | 493 | MDRV_VIDEO_START(appoooh) |
| 452 | 494 | 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) | |
| 469 | 495 | MACHINE_DRIVER_END |
| 470 | 496 | |
| 471 | /*************************************************************************** | |
| 497 | /************************************* | |
| 498 | * | |
| 499 | * ROM definition(s) | |
| 500 | * | |
| 501 | *************************************/ | |
| 472 | 502 | |
| 473 | Game driver(s) | |
| 474 | ||
| 475 | ***************************************************************************/ | |
| 476 | ||
| 477 | 503 | ROM_START( appoooh ) |
| 478 | 504 | ROM_REGION( 0x14000, "maincpu", 0 ) /* 64k for code + 16k bank */ |
| 479 | 505 | ROM_LOAD( "epr-5906.bin", 0x00000, 0x2000, CRC(fffae7fe) SHA1(b4bb60eb6331e503759bd963eafefa69331d6b86) ) |
| r6428 | r6429 | |
| 566 | 592 | |
| 567 | 593 | |
| 568 | 594 | |
| 569 | static DRIVER_INIT(robowres){ | |
| 595 | /************************************* | |
| 596 | * | |
| 597 | * Driver initialization | |
| 598 | * | |
| 599 | *************************************/ | |
| 600 | ||
| 601 | static DRIVER_INIT(robowres) | |
| 602 | { | |
| 570 | 603 | robowres_decode(machine, "maincpu"); |
| 571 | 604 | } |
| 572 | 605 | |
| 573 | static DRIVER_INIT(robowrb){ | |
| 606 | static DRIVER_INIT(robowrb) | |
| 607 | { | |
| 574 | 608 | const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); |
| 575 | 609 | memory_set_decrypted_region(space, 0x0000, 0x7fff, memory_region(machine, "maincpu") + 0x1c000); |
| 576 | 610 | } |
| 577 | 611 | |
| 578 | 612 | |
| 579 | GAME( 1984, appoooh, 0, appoooh, appoooh, 0, ROT0, "[Sanritsu] Sega", "Appoooh", GAME_SUPPORTS_SAVE ) | |
| 580 | GAME( 1986, robowres, 0, robowres, robowres, robowres, ROT0, "Sega", "Robo Wres 2001", GAME_SUPPORTS_SAVE ) | |
| 581 | GAME( 1986, robowresb,robowres, robowres, robowres, robowrb, ROT0, "bootleg", "Robo Wres 2001 (bootleg)", GAME_SUPPORTS_SAVE ) | |
| 613 | /************************************* | |
| 614 | * | |
| 615 | * Game driver(s) | |
| 616 | * | |
| 617 | *************************************/ | |
| 618 | ||
| 619 | GAME( 1984, appoooh, 0, appoooh, appoooh, 0, ROT0, "[Sanritsu] Sega", "Appoooh", GAME_SUPPORTS_SAVE ) | |
| 620 | GAME( 1986, robowres, 0, robowres, robowres, robowres, ROT0, "Sega", "Robo Wres 2001", GAME_SUPPORTS_SAVE ) | |
| 621 | GAME( 1986, robowresb, robowres, robowres, robowres, robowrb, ROT0, "bootleg", "Robo Wres 2001 (bootleg)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 49 | 49 | |
| 50 | 50 | #include "driver.h" |
| 51 | 51 | #include "cpu/z80/z80.h" |
| 52 | #include " | |
| 52 | #include "includes/iremz80.h" | |
| 53 | 53 | |
| 54 | extern UINT8 *travrusa_videoram; | |
| 55 | 54 | |
| 56 | PALETTE_INIT( travrusa ); | |
| 57 | PALETTE_INIT( shtrider ); | |
| 58 | VIDEO_START( travrusa ); | |
| 59 | WRITE8_HANDLER( travrusa_videoram_w ); | |
| 60 | WRITE8_HANDLER( travrusa_scroll_x_low_w ); | |
| 61 | WRITE8_HANDLER( travrusa_scroll_x_high_w ); | |
| 62 | WRITE8_HANDLER( travrusa_flipscreen_w ); | |
| 63 | VIDEO_UPDATE( travrusa ); | |
| 64 | ||
| 65 | ||
| 66 | ||
| 67 | 55 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 68 | 56 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 69 | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_BASE( | |
| 57 | AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_BASE_MEMBER(i | |
| 70 | 58 | AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w) |
| 71 | 59 | AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w) |
| 72 | AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE( | |
| 60 | AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size) | |
| 73 | 61 | AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w) |
| 74 | 62 | AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w) /* + coin counters - not written by shtrider */ |
| 75 | 63 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM") /* IN0 */ |
| r6428 | r6429 | |
| 300 | 288 | GFXDECODE_ENTRY( "gfx2", 0, shtrider_spritelayout, 16*8, 16 ) |
| 301 | 289 | GFXDECODE_END |
| 302 | 290 | |
| 291 | static MACHINE_RESET( travrusa ) | |
| 292 | { | |
| 293 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 303 | 294 | |
| 295 | state->scrollx[0] = 0; | |
| 296 | state->scrollx[1] = 0; | |
| 297 | } | |
| 304 | 298 | |
| 305 | 299 | static MACHINE_DRIVER_START( travrusa ) |
| 306 | 300 | |
| 301 | /* driver data */ | |
| 302 | MDRV_DRIVER_DATA(irem_z80_state) | |
| 303 | ||
| 307 | 304 | /* basic machine hardware */ |
| 308 | 305 | MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ |
| 309 | 306 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 310 | 307 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 311 | 308 | |
| 309 | MDRV_MACHINE_RESET(travrusa) | |
| 310 | ||
| 312 | 311 | /* video hardware */ |
| 313 | 312 | MDRV_SCREEN_ADD("screen", RASTER) |
| 314 | 313 | MDRV_SCREEN_REFRESH_RATE(56.75) |
| r6428 | r6429 | |
| 458 | 457 | |
| 459 | 458 | static DRIVER_INIT( motorace ) |
| 460 | 459 | { |
| 461 | int A,j; | |
| 460 | int A, j; | |
| 462 | 461 | UINT8 *rom = memory_region(machine, "maincpu"); |
| 463 | 462 | UINT8 *buffer = alloc_array_or_die(UINT8, 0x2000); |
| 464 | 463 | |
| 465 | memcpy(buffer,rom,0x2000); | |
| 464 | memcpy(buffer, rom, 0x2000); | |
| 466 | 465 | |
| 467 | 466 | /* 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++) | |
| 469 | 468 | { |
| 470 | 469 | j = BITSWAP16(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11); |
| 471 | 470 | rom[j] = BITSWAP8(buffer[A],2,7,4,1,6,3,0,5); |
| r6428 | r6429 | |
| 486 | 485 | |
| 487 | 486 | |
| 488 | 487 | |
| 489 | GAME( 1983, travrusa, 0, travrusa, travrusa, 0, ROT270, "Irem", "Traverse USA / Zippy Race", 0 ) | |
| 490 | GAME( 1983, motorace, travrusa, travrusa, motorace, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", 0 ) | |
| 491 | GAME( 1985, shtrider, 0, shtrider, shtrider, 0, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", 0 ) | |
| 492 | GAME( 1984, shtridera,shtrider, shtrider, shtrider, shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", 0 ) | |
| 488 | GAME( 1983, travrusa, 0, travrusa, travrusa, 0, ROT270, "Irem", "Traverse USA / Zippy Race", GAME_SUPPORTS_SAVE ) | |
| 489 | GAME( 1983, motorace, travrusa, travrusa, motorace, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", GAME_SUPPORTS_SAVE ) | |
| 490 | GAME( 1985, shtrider, 0, shtrider, shtrider, 0, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", GAME_SUPPORTS_SAVE ) | |
| 491 | GAME( 1984, shtridera,shtrider, shtrider, shtrider, shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 187 | 187 | AM_RANGE(0xf810, 0xf810) AM_READ_PORT("UNK1") |
| 188 | 188 | AM_RANGE(0xf811, 0xf811) AM_READ_PORT("UNK2") |
| 189 | 189 | 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) | |
| 192 | 192 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(goldstar_fa00_w) |
| 193 | 193 | AM_RANGE(0xfb00, 0xfb00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 194 | 194 | AM_RANGE(0xfd00, 0xfdff) AM_READWRITE(SMH_RAM,paletteram_BBGGGRRR_w) AM_BASE(&paletteram) |
| r6428 | r6429 | |
| 225 | 225 | AM_RANGE(0xf822, 0xf822) AM_WRITE(goldstar_fa00_w) // hack (connected to ppi output port?, needed for colour banking) |
| 226 | 226 | AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE("ppi8255_2", ppi8255_r, ppi8255_w) /* Input/Output Ports */ |
| 227 | 227 | |
| 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) | |
| 230 | 230 | // AM_RANGE(0xf850, 0xf850) AM_WRITE(ncb3_p1_flip_w) // need flip? |
| 231 | 231 | // 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.*/ | |
| 233 | 233 | ADDRESS_MAP_END |
| 234 | 234 | |
| 235 | 235 | static ADDRESS_MAP_START( ncb3_readwriteport, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 326 | 326 | |
| 327 | 327 | static ADDRESS_MAP_START( cm_portmap, ADDRESS_SPACE_IO, 8 ) |
| 328 | 328 | 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) | |
| 331 | 331 | AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 332 | 332 | AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* DIP switches */ |
| 333 | 333 | AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w) /* output port */ |
| r6428 | r6429 | |
| 342 | 342 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 343 | 343 | AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 344 | 344 | 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) | |
| 347 | 347 | ADDRESS_MAP_END |
| 348 | 348 | |
| 349 | 349 | |
| 350 | 350 | static ADDRESS_MAP_START( amcoe1_portmap, ADDRESS_SPACE_IO, 8 ) |
| 351 | 351 | 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) | |
| 354 | 354 | AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 355 | 355 | AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* DIP switches */ |
| 356 | 356 | AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w) /* output port */ |
| r6428 | r6429 | |
| 362 | 362 | |
| 363 | 363 | static ADDRESS_MAP_START( amcoe2_portmap, ADDRESS_SPACE_IO, 8 ) |
| 364 | 364 | 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) | |
| 367 | 367 | AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 368 | 368 | AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* DIP switches */ |
| 369 | 369 | AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w) /* output port */ |
| r6428 | r6429 | |
| 393 | 393 | AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 394 | 394 | AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 395 | 395 | 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 */ | |
| 398 | 398 | 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 */ | |
| 400 | 400 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 401 | 401 | ADDRESS_MAP_END |
| 402 | 402 | |
| r6428 | r6429 | |
| 418 | 418 | AM_RANGE(0xb830, 0xb830) AM_WRITENOP /* no ay8910 */ |
| 419 | 419 | AM_RANGE(0xb840, 0xb840) AM_WRITENOP /* no ay8910 */ |
| 420 | 420 | 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 */ | |
| 422 | 422 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 423 | 423 | ADDRESS_MAP_END |
| 424 | 424 | |
| r6428 | r6429 | |
| 453 | 453 | |
| 454 | 454 | AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 455 | 455 | 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 */ | |
| 458 | 458 | 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 */ | |
| 460 | 460 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 461 | 461 | ADDRESS_MAP_END |
| 462 | 462 | |
| r6428 | r6429 | |
| 475 | 475 | AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 476 | 476 | AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 477 | 477 | 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 */ | |
| 480 | 480 | 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 */ | |
| 482 | 482 | // AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", ppi8255_r, ppi8255_w) /* Other PPI initialized? */ |
| 483 | 483 | AM_RANGE(0xd000, 0xefff) AM_ROM |
| 484 | 484 | AM_RANGE(0xf000, 0xffff) AM_RAM |
| r6428 | r6429 | |
| 518 | 518 | |
| 519 | 519 | static ADDRESS_MAP_START( unkch_portmap, ADDRESS_SPACE_IO, 8 ) |
| 520 | 520 | 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) | |
| 523 | 523 | // AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 524 | 524 | // AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* DIP switches */ |
| 525 | 525 | // AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w) /* output port */ |
| r6428 | r6429 | |
| 4684 | 4684 | |
| 4685 | 4685 | /* sound hardware */ |
| 4686 | 4686 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4687 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4687 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4688 | 4688 | MDRV_SOUND_CONFIG(ay8910_config) |
| 4689 | 4689 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4690 | 4690 | |
| r6428 | r6429 | |
| 4720 | 4720 | |
| 4721 | 4721 | /* sound hardware */ |
| 4722 | 4722 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4723 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4723 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4724 | 4724 | MDRV_SOUND_CONFIG(ay8910_config) |
| 4725 | 4725 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4726 | 4726 | |
| r6428 | r6429 | |
| 4755 | 4755 | |
| 4756 | 4756 | /* sound hardware */ |
| 4757 | 4757 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4758 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4758 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4759 | 4759 | MDRV_SOUND_CONFIG(ay8910_config) |
| 4760 | 4760 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4761 | 4761 | |
| r6428 | r6429 | |
| 4858 | 4858 | /* sound hardware */ |
| 4859 | 4859 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4860 | 4860 | |
| 4861 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 4861 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 4862 | 4862 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 4863 | 4863 | |
| 4864 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4864 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4865 | 4865 | MDRV_SOUND_CONFIG(ay8910_config) |
| 4866 | 4866 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4867 | 4867 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4901 | 4901 | /* sound hardware */ |
| 4902 | 4902 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4903 | 4903 | |
| 4904 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 4904 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 4905 | 4905 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 4906 | 4906 | |
| 4907 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4907 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4908 | 4908 | MDRV_SOUND_CONFIG(ay8910_config) |
| 4909 | 4909 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4910 | 4910 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4940 | 4940 | |
| 4941 | 4941 | /* sound hardware */ |
| 4942 | 4942 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4943 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4943 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4944 | 4944 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 4945 | 4945 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4946 | 4946 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 4982 | 4982 | |
| 4983 | 4983 | /* sound hardware */ |
| 4984 | 4984 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4985 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 4985 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 4986 | 4986 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 4987 | 4987 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 4988 | 4988 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5017 | 5017 | |
| 5018 | 5018 | /* sound hardware */ |
| 5019 | 5019 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5020 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5020 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5021 | 5021 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 5022 | 5022 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5023 | 5023 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5054 | 5054 | /* sound hardware */ |
| 5055 | 5055 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5056 | 5056 | |
| 5057 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 5057 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 5058 | 5058 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 5059 | 5059 | |
| 5060 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5060 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5061 | 5061 | MDRV_SOUND_CONFIG(lucky8_ay8910_config) |
| 5062 | 5062 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5063 | 5063 | |
| r6428 | r6429 | |
| 5096 | 5096 | /* sound hardware */ |
| 5097 | 5097 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5098 | 5098 | |
| 5099 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 5099 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 5100 | 5100 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 5101 | 5101 | |
| 5102 | 5102 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5133 | 5133 | /* sound hardware */ |
| 5134 | 5134 | MDRV_SPEAKER_STANDARD_MONO("mono")//set up a standard mono speaker called 'mono' |
| 5135 | 5135 | |
| 5136 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 5136 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 5137 | 5137 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 5138 | 5138 | |
| 5139 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5139 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5140 | 5140 | MDRV_SOUND_CONFIG(ladylinr_ay8910_config) |
| 5141 | 5141 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5142 | 5142 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5174 | 5174 | /* sound hardware */ |
| 5175 | 5175 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5176 | 5176 | |
| 5177 | MDRV_SOUND_ADD("sn", SN76489, PSG_CLOCK) | |
| 5177 | MDRV_SOUND_ADD("snsnd", SN76489, PSG_CLOCK) | |
| 5178 | 5178 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 5179 | 5179 | |
| 5180 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5180 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5181 | 5181 | MDRV_SOUND_CONFIG(lucky8_ay8910_config) |
| 5182 | 5182 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5183 | 5183 | |
| r6428 | r6429 | |
| 5215 | 5215 | |
| 5216 | 5216 | /* sound hardware */ |
| 5217 | 5217 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5218 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5218 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5219 | 5219 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 5220 | 5220 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5221 | 5221 | |
| r6428 | r6429 | |
| 5256 | 5256 | |
| 5257 | 5257 | /* sound hardware */ |
| 5258 | 5258 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5259 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5259 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5260 | 5260 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 5261 | 5261 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5262 | 5262 | |
| r6428 | r6429 | |
| 5297 | 5297 | |
| 5298 | 5298 | /* sound hardware */ |
| 5299 | 5299 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5300 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5300 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5301 | 5301 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 5302 | 5302 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00) /* analyzed for clips */ |
| 5303 | 5303 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5332 | 5332 | |
| 5333 | 5333 | /* sound hardware */ |
| 5334 | 5334 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5335 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5335 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5336 | 5336 | MDRV_SOUND_CONFIG(cm_ay8910_config) |
| 5337 | 5337 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00) /* analyzed for clips */ |
| 5338 | 5338 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 5365 | 5365 | /* sound hardware */ |
| 5366 | 5366 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 5367 | 5367 | |
| 5368 | MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK) | |
| 5368 | MDRV_SOUND_ADD("aysnd", AY8910, AY_CLOCK) | |
| 5369 | 5369 | MDRV_SOUND_CONFIG(ay8910_config) |
| 5370 | 5370 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 5371 | 5371 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 8417 | 8417 | GAME( 1989, lucky8, 0, lucky8, lucky8, 0, ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 1)", 0 ) |
| 8418 | 8418 | GAME( 1989, lucky8a, lucky8, lucky8, lucky8a, lucky8a, ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 2)", 0 ) |
| 8419 | 8419 | GAME( 1989, lucky8b, lucky8, lucky8, ns8lines, 0, ROT0, "Wing Co.Ltd / GEI", "New Lucky 8 Lines (set 3, extended gfx)", 0 ) |
| 8420 | GAME( 198?, ns8lines, 0, lucky8, ns8lines, 0, ROT0, " | |
| 8420 | GAME( 198?, ns8lines, 0, lucky8, ns8lines, 0, ROT0, "<unknown>", | |
| 8421 | 8421 | GAME( 198?, ladylinr, 0, ladylinr, ladylinr, 0, ROT0, "TAB Austria", "Lady Liner", 0 ) |
| 8422 | 8422 | GAME( 198?, kkojnoli, 0, kkojnoli, kkojnoli, 0, ROT0, "south korean hack", "Kkoj Noli (Kill the Bees)", GAME_IMPERFECT_COLORS ) |
| 8423 | 8423 | GAME( 198?, wcat3, 0, wcat3, lucky8, 0, ROT0, "E.A.I.", "Wild Cat 3", GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 171 | 171 | static ADDRESS_MAP_START( dbz_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 172 | 172 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 173 | 173 | 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) | |
| 175 | 175 | AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 176 | 176 | AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_r) |
| 177 | 177 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 348 | 348 | /* sound hardware */ |
| 349 | 349 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 350 | 350 | |
| 351 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 351 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 352 | 352 | MDRV_SOUND_CONFIG(ym2151_config) |
| 353 | 353 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 354 | 354 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 377 | 377 | |
| 378 | 378 | AM_RANGE(0x20, 0x20) AM_WRITE( skylncr_coin_w ) |
| 379 | 379 | |
| 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 ) | |
| 382 | 382 | |
| 383 | 383 | AM_RANGE(0x40, 0x41) AM_WRITE( skylncr_paletteram_w ) |
| 384 | 384 | AM_RANGE(0x50, 0x51) AM_WRITE( skylncr_paletteram2_w ) |
| r6428 | r6429 | |
| 527 | 527 | PORT_DIPSETTING( 0x00, "24" ) |
| 528 | 528 | PORT_DIPNAME( 0x80, 0x00, "Key Out" ) |
| 529 | 529 | PORT_DIPSETTING( 0x80, "x100" ) |
| 530 | PORT_DIPSETTING( 0x00, "x1" ) | |
| 530 | PORT_DIPSETTING( 0x00, "x1snd" ) | |
| 531 | 531 | |
| 532 | 532 | PORT_START("DSW2") /* $10 (PPI1 port A) */ |
| 533 | 533 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) |
| r6428 | r6429 | |
| 686 | 686 | |
| 687 | 687 | /* sound hardware */ |
| 688 | 688 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 689 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8) | |
| 689 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8) | |
| 690 | 690 | MDRV_SOUND_CONFIG(ay8910_config) |
| 691 | 691 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 692 | 692 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 37 | 37 | |
| 38 | 38 | #include "driver.h" |
| 39 | 39 | #include "cpu/z180/z180.h" |
| 40 | #include "machine/eeprom.h" | |
| 40 | #include "machine/eepromdev.h" | |
| 41 | 41 | #include "sound/namco.h" |
| 42 | 42 | #include "sound/dac.h" |
| 43 | 43 | #include "20pacgal.h" |
| r6428 | r6429 | |
| 69 | 69 | cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit); |
| 70 | 70 | |
| 71 | 71 | if (!bit) |
| 72 | cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE | |
| 72 | cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE | |
| 73 | 73 | } |
| 74 | 74 | |
| 75 | 75 | |
| r6428 | r6429 | |
| 94 | 94 | * |
| 95 | 95 | *************************************/ |
| 96 | 96 | |
| 97 | static const eeprom_interface eeprom_intf = | |
| 97 | static const eeprom_interface _20pacgal_eeprom_intf = | |
| 98 | 98 | { |
| 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 */ | |
| 106 | 106 | }; |
| 107 | 107 | |
| 108 | 108 | |
| 109 | static | |
| 109 | static | |
| 110 | 110 | { |
| 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; | |
| 116 | 112 | |
| 117 | if (file) | |
| 118 | eeprom_load(file); | |
| 119 | } | |
| 113 | /* bit 7 is EEPROM data */ | |
| 114 | return eepromdev_read_bit(state->eeprom) << 7; | |
| 120 | 115 | } |
| 121 | 116 | |
| 122 | 117 | |
| 123 | static RE | |
| 118 | static WRITE | |
| 124 | 119 | { |
| 125 | /* bit 7 is EEPROM data */ | |
| 126 | return eeprom_read_bit() << 7; | |
| 127 | } | |
| 120 | _20pacgal_state *state = (_20pacgal_state *)device->machine->driver_data; | |
| 128 | 121 | |
| 129 | ||
| 130 | static WRITE8_HANDLER( eeprom_w ) | |
| 131 | { | |
| 132 | 122 | /* bit 7 is data */ |
| 133 | 123 | /* bit 6 is clock (active high) */ |
| 134 | 124 | /* 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); | |
| 138 | 128 | } |
| 139 | 129 | |
| 140 | 130 | |
| r6428 | r6429 | |
| 167 | 157 | if (state->game_selected == 0) |
| 168 | 158 | { |
| 169 | 159 | UINT8 *rom = memory_region(space->machine, "maincpu"); |
| 170 | memcpy(rom+0x48000, rom+0x8000, 0x2000); | |
| 160 | memcpy(rom + 0x48000, rom + 0x8000, 0x2000); | |
| 171 | 161 | } |
| 172 | 162 | } |
| 173 | 163 | |
| r6428 | r6429 | |
| 229 | 219 | AM_RANGE(0x81, 0x81) AM_WRITENOP /* ??? pulsed by the timer irq */ |
| 230 | 220 | AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w) |
| 231 | 221 | 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) | |
| 233 | 223 | AM_RANGE(0x88, 0x88) AM_WRITE(rom_bank_select_w) |
| 234 | 224 | AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_signed_w) |
| 235 | 225 | AM_RANGE(0x8a, 0x8a) AM_WRITENOP /* stars: bits 3-4 = active set; bit 5 = enable */ |
| r6428 | r6429 | |
| 285 | 275 | * |
| 286 | 276 | *************************************/ |
| 287 | 277 | |
| 278 | static 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 | ||
| 287 | static MACHINE_RESET( 20pacgal ) | |
| 288 | { | |
| 289 | _20pacgal_state *state = (_20pacgal_state *)machine->driver_data; | |
| 290 | ||
| 291 | state->game_selected = 0; | |
| 292 | } | |
| 293 | ||
| 288 | 294 | static MACHINE_DRIVER_START( 20pacgal ) |
| 289 | 295 | |
| 290 | 296 | MDRV_DRIVER_DATA(_20pacgal_state) |
| r6428 | r6429 | |
| 295 | 301 | MDRV_CPU_IO_MAP(20pacgal_io_map) |
| 296 | 302 | MDRV_CPU_VBLANK_INT("screen", irq0_line_assert) |
| 297 | 303 | |
| 298 | MDRV_NVRAM_HANDLER(eeprom) | |
| 304 | MDRV_MACHINE_START(20pacgal) | |
| 305 | MDRV_MACHINE_RESET(20pacgal) | |
| 299 | 306 | |
| 307 | MDRV_EEPROM_NODEFAULT_ADD("eeprom", _20pacgal_eeprom_intf) | |
| 308 | ||
| 300 | 309 | /* video hardware */ |
| 301 | 310 | MDRV_IMPORT_FROM(20pacgal_video) |
| 302 | 311 |
| r6428 | r6429 | |
|---|---|---|
| 133 | 133 | |
| 134 | 134 | static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 ) |
| 135 | 135 | 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) | |
| 138 | 138 | ADDRESS_MAP_END |
| 139 | 139 | |
| 140 | 140 | |
| r6428 | r6429 | |
| 431 | 431 | /* sound hardware */ |
| 432 | 432 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 433 | 433 | |
| 434 | MDRV_SOUND_ADD("ay", AY8910, 1536000) | |
| 434 | MDRV_SOUND_ADD("aysnd", AY8910, 1536000) | |
| 435 | 435 | MDRV_SOUND_CONFIG(ay8910_config) |
| 436 | 436 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 437 | 437 |
| r6428 | r6429 | |
|---|---|---|
| 195 | 195 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 196 | 196 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 197 | 197 | 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) | |
| 199 | 199 | |
| 200 | 200 | AM_RANGE(0xfc00, 0xfc00) AM_READNOP AM_WRITENOP /* irq ack ?? */ |
| 201 | 201 | AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 364 | 364 | /* sound hardware */ |
| 365 | 365 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 366 | 366 | |
| 367 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 367 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 368 | 368 | MDRV_SOUND_CONFIG(ym3812_config) |
| 369 | 369 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 370 | 370 |
| r6428 | r6429 | |
|---|---|---|
| 223 | 223 | |
| 224 | 224 | static ADDRESS_MAP_START( tturfbl_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 225 | 225 | 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) | |
| 227 | 227 | AM_RANGE(0x40, 0x40) AM_WRITENOP |
| 228 | 228 | AM_RANGE(0x80, 0x80) AM_NOP |
| 229 | 229 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 238 | 238 | |
| 239 | 239 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 240 | 240 | 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) | |
| 242 | 242 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| 243 | 243 | ADDRESS_MAP_END |
| 244 | 244 | |
| r6428 | r6429 | |
| 264 | 264 | |
| 265 | 265 | static ADDRESS_MAP_START( sound_7759_io_map, ADDRESS_SPACE_IO, 8 ) |
| 266 | 266 | 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) | |
| 268 | 268 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("7759", upd7759_bank_w) |
| 269 | 269 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("7759", upd7759_port_w) |
| 270 | 270 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 328 | 328 | /* sound hardware */ |
| 329 | 329 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 330 | 330 | |
| 331 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 331 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 332 | 332 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.32) |
| 333 | 333 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.32) |
| 334 | 334 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1113 | 1113 | |
| 1114 | 1114 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1115 | 1115 | |
| 1116 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 1116 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1117 | 1117 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.32) |
| 1118 | 1118 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.32) |
| 1119 | 1119 |
| r6428 | r6429 | |
|---|---|---|
| 69 | 69 | |
| 70 | 70 | static ADDRESS_MAP_START( prehisle_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 71 | 71 | 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) | |
| 74 | 74 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", D7759_write_port_0_w) |
| 75 | 75 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", D7759_upd_reset_w) |
| 76 | 76 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 240 | 240 | /* sound hardware */ |
| 241 | 241 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 242 | 242 | |
| 243 | MDRV_SOUND_ADD("ym", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 243 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ | |
| 244 | 244 | MDRV_SOUND_CONFIG(ym3812_config) |
| 245 | 245 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 246 | 246 |
| r6428 | r6429 | |
|---|---|---|
| 137 | 137 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 138 | 138 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2) |
| 139 | 139 | 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) | |
| 141 | 141 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) |
| 142 | 142 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 143 | 143 | AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w) |
| r6428 | r6429 | |
| 288 | 288 | /* sound hardware */ |
| 289 | 289 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 290 | 290 | |
| 291 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 291 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 292 | 292 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) /* only left channel is connected */ |
| 293 | 293 | MDRV_SOUND_ROUTE(0, "rspeaker", 1.0) |
| 294 | 294 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.0) |
| r6428 | r6429 | |
|---|---|---|
| 997 | 997 | AM_RANGE(0xc50000, 0xc50001) AM_DEVWRITE( "sega1", m1_snd_mpcm_bnk_w ) |
| 998 | 998 | AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8( "sega2", multipcm_r, multipcm_w, 0x00ff ) |
| 999 | 999 | 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 ) | |
| 1001 | 1001 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM |
| 1002 | 1002 | ADDRESS_MAP_END |
| 1003 | 1003 | |
| r6428 | r6429 | |
| 1474 | 1474 | |
| 1475 | 1475 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1476 | 1476 | |
| 1477 | MDRV_SOUND_ADD("ym", YM3438, 8000000) | |
| 1477 | MDRV_SOUND_ADD("ymsnd", YM3438, 8000000) | |
| 1478 | 1478 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1479 | 1479 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 1480 | 1480 | |
| r6428 | r6429 | |
| 1517 | 1517 | |
| 1518 | 1518 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1519 | 1519 | |
| 1520 | MDRV_SOUND_ADD("ym", YM3438, 8000000) | |
| 1520 | MDRV_SOUND_ADD("ymsnd", YM3438, 8000000) | |
| 1521 | 1521 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 1522 | 1522 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| 1523 | 1523 |
| r6428 | r6429 | |
|---|---|---|
| 207 | 207 | 136014-231 which matches Namco's PP1-27. The bad bit should cause a tiny gfx |
| 208 | 208 | glitch, though it's difficult to notice. |
| 209 | 209 | |
| 210 | - topracra: Use Service1 to start game | |
| 211 | 210 | |
| 212 | 211 | Todo: |
| 213 | 212 | |
| 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 | |
| 216 | 216 | |
| 217 | 217 | ***************************************************************************/ |
| 218 | 218 | |
| r6428 | r6429 | |
| 683 | 683 | INPUT_PORTS_END |
| 684 | 684 | |
| 685 | 685 | |
| 686 | static INPUT_PORTS_START( topracra ) | |
| 687 | // no coins ?! | |
| 686 | static INPUT_PORTS_START( topracern ) | |
| 688 | 687 | PORT_START("IN0") |
| 689 | 688 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 690 | 689 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 691 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_ | |
| 690 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_ | |
| 692 | 691 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 693 | 692 | 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_ | |
| 693 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_ | |
| 695 | 694 | PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) |
| 696 | 695 | |
| 697 | 696 | PORT_START("IN0L") |
| r6428 | r6429 | |
| 981 | 980 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77) |
| 982 | 981 | MACHINE_DRIVER_END |
| 983 | 982 | |
| 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 */ | |
| 985 | static 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 | ||
| 1000 | static 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) | |
| 1055 | MACHINE_DRIVER_END | |
| 1056 | ||
| 1057 | ||
| 984 | 1058 | static ADDRESS_MAP_START( sound_z80_bootleg_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 985 | 1059 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 986 | 1060 | AM_RANGE(0x2700, 0x27ff) AM_RAM |
| r6428 | r6429 | |
| 991 | 1065 | ADDRESS_MAP_END |
| 992 | 1066 | |
| 993 | 1067 | static MACHINE_DRIVER_START( polepos2bi ) |
| 994 | MDRV_IMPORT_FROM( | |
| 1068 | MDRV_IMPORT_FROM(to | |
| 995 | 1069 | |
| 996 | /* todo, remove namco devices! */ | |
| 997 | ||
| 998 | 1070 | MDRV_CPU_ADD("soundz80bl", Z80, 24576000/8) /*? MHz */ |
| 999 | 1071 | MDRV_CPU_PROGRAM_MAP(sound_z80_bootleg_map) |
| 1000 | 1072 | MDRV_CPU_IO_MAP(sound_z80_bootleg_iomap) |
| r6428 | r6429 | |
| 1427 | 1499 | ROM_LOAD( "7052-4.c14", 0x0000, 0x0100, CRC(0e742cb1) SHA1(3ae43270aab4848fdeece1648e7e040ab216b08e) ) /* sync chain */ |
| 1428 | 1500 | ROM_END |
| 1429 | 1501 | |
| 1430 | ROM_START( topracra ) | |
| 1502 | ROM_START( topracera ) | |
| 1431 | 1503 | /* Z80 memory/ROM data */ |
| 1432 | 1504 | 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 */ | |
| 1505 | ROM_END | |
| 1506 | ||
| 1507 | ROM_START( topracrb ) | |
| 1508 | /* Z80 memory/ROM data */ | |
| 1509 | ROM_REGION( 0x10000, "maincpu", 0 ) | |
| 1510 | 1505 | ROM_LOAD( "tr9.f17", 0x0000, 0x2000, CRC(94436b70) SHA1(7495c2a8c3928c59146760d19e672afee01c5b17) ) |
| 1511 | 1506 | ROM_LOAD( "tr10.f16", 0x2000, 0x1000, CRC(7174bcb7) SHA1(460326a6cea201db2df813013c95562a222ea95d) ) |
| 1512 | 1507 | |
| r6428 | r6429 | |
| 1579 | 1574 | ROM_END |
| 1580 | 1575 | |
| 1581 | 1576 | |
| 1577 | /* Top Racer (bootleg without MB8841 / MB8842) | |
| 1578 | ||
| 1579 | CPU Lower Board (label "1081-C") | |
| 1580 | 2x ZILOG Z8002PS (DIP40) | |
| 1581 | 1x NEC D708C-1 (DIP40) | |
| 1582 | ||
| 1583 | Upper Board (label "1080-C") | |
| 1584 | 1x oscillator 24.576 MHz | |
| 1585 | ROMs Lower Board (label "1081-C") | |
| 1586 | 7x HN482764G (1a,a2,a3,a4,a5,a,b) | |
| 1587 | 1x HN482732G (a6) | |
| 1588 | 1x PROM 82S129 | |
| 1589 | 2x PAL 12L6 | |
| 1590 | 1x PAL 16L8 | |
| 1591 | ||
| 1592 | Upper Board (label "1080-C") | |
| 1593 | 8x HN482764G (1,2,3,6,7,8,9,10) | |
| 1594 | 2x AM2764 (5,11) | |
| 1595 | 4x TMS2732JL (12,13,14,15) | |
| 1596 | 8x PROM 24S10 | |
| 1597 | 2x PROM 7603 | |
| 1598 | 2x PROM 7643 | |
| 1599 | Note Lower Board (label "1081-C") | |
| 1600 | 1x flat cable connector to upper | |
| 1601 | 1x 18x2 edge connector | |
| 1602 | ||
| 1603 | Upper Board (label "1080-C") | |
| 1604 | 1x flat cable connector to lower | |
| 1605 | 1x 18x2 edge connector | |
| 1606 | ||
| 1607 | */ | |
| 1608 | ||
| 1609 | ROM_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 */ | |
| 1680 | ROM_END | |
| 1681 | ||
| 1682 | ||
| 1582 | 1683 | /* |
| 1583 | Pole Position - Namco Version | |
| 1684 | Pole Position 2 - Namco Version | |
| 1584 | 1685 | */ |
| 1585 | 1686 | |
| 1586 | 1687 | ROM_START( polepos2 ) |
| r6428 | r6429 | |
| 1934 | 2035 | polepos_gear_bit = 2; |
| 1935 | 2036 | } |
| 1936 | 2037 | |
| 1937 | static DRIVER_INIT( topracr | |
| 2038 | static DRIVER_INIT( topracern ) | |
| 1938 | 2039 | { |
| 1939 | 2040 | polepos_gear_bit = 0x20; |
| 1940 | 2041 | |
| r6428 | r6429 | |
| 1961 | 2062 | GAME( 1982, polepos, 0, polepos, polepos, polepos, ROT0, "Namco", "Pole Position", 0 ) |
| 1962 | 2063 | GAME( 1982, poleposa, polepos, polepos, poleposa, polepos, ROT0, "Namco (Atari license)", "Pole Position (Atari version 2)", 0 ) |
| 1963 | 2064 | GAME( 1982, polepos1, polepos, polepos, poleposa, polepos, ROT0, "[Namco] (Atari license)", "Pole Position (Atari version 1)", 0 ) |
| 1964 | GAME( 1982, topracer, polepos, polepos, polepos, polepos, ROT0, "bootleg", "Top Racer (set 1)", 0 ) | |
| 1965 | GAME( 1982, topracra, polepos, polepos, topracra, topracra, ROT0, "bootleg", "Top Racer (set 2)", 0 ) | |
| 1966 | GAME( 1983, topracrb, polepos, polepos, polepos, polepos, ROT0, "bootleg", "Top Racer (set 3)", 0 ) | |
| 2065 | GAME( 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 | |
| 2066 | GAME( 1983, topracera, polepos, polepos, polepos, polepos, ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, set 2)", 0 ) // ^ | |
| 2067 | GAME( 1982, topracern, polepos, topracern, topracern,topracern,ROT0, "bootleg", "Top Racer (no MB8841 + MB8842)", 0 ) | |
| 2068 | ||
| 1967 | 2069 | GAME( 1983, polepos2, 0, polepos, polepos2, polepos2, ROT0, "Namco", "Pole Position II", 0 ) |
| 1968 | 2070 | GAME( 1983, polepos2a, polepos2, polepos, polepos2, polepos2, ROT0, "Namco (Atari license)", "Pole Position II (Atari)", 0 ) |
| 1969 | 2071 | GAME( 1983, polepos2b, polepos2, polepos, polepos2, polepos, ROT0, "bootleg", "Pole Position II (bootleg)", 0 ) |
| 1970 | GAME( 1983, polepos2bi, polepos2, polepos2bi, topracr | |
| 2072 | GAME( 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 |
| r6428 | r6429 | |
|---|---|---|
| 187 | 187 | |
| 188 | 188 | static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 ) |
| 189 | 189 | 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 ) | |
| 191 | 191 | AM_RANGE(0x18, 0x18) AM_READ(soundlatch_r ) // From Main CPU |
| 192 | 192 | AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w ) // M6295 |
| 193 | 193 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 609 | 609 | /* sound hardware */ |
| 610 | 610 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 611 | 611 | |
| 612 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 612 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 613 | 613 | MDRV_SOUND_CONFIG(magicbub_ym3812_intf) |
| 614 | 614 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.20) |
| 615 | 615 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20) |
| r6428 | r6429 | |
|---|---|---|
| 344 | 344 | |
| 345 | 345 | static ADDRESS_MAP_START( hustler_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 346 | 346 | 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) | |
| 349 | 349 | ADDRESS_MAP_END |
| 350 | 350 | |
| 351 | 351 | |
| 352 | 352 | static ADDRESS_MAP_START( hustlerb_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 353 | 353 | 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) | |
| 356 | 356 | ADDRESS_MAP_END |
| 357 | 357 | |
| 358 | 358 | /* stratgyx coinage DIPs are spread accross two input ports */ |
| r6428 | r6429 | |
| 1006 | 1006 | |
| 1007 | 1007 | /* sound hardware */ |
| 1008 | 1008 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1009 | MDRV_SOUND_ADD("ay", AY8910, 14318000/8) | |
| 1009 | MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8) | |
| 1010 | 1010 | MDRV_SOUND_CONFIG(hustler_ay8910_interface) |
| 1011 | 1011 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 1012 | 1012 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 967 | 967 | static ADDRESS_MAP_START( sound2203_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 968 | 968 | AM_RANGE(0x0000, 0x0000) AM_WRITENOP |
| 969 | 969 | 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) | |
| 971 | 971 | AM_RANGE(0x3000, 0x37ff) AM_RAM |
| 972 | 972 | AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 973 | 973 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 978 | 978 | static ADDRESS_MAP_START( sound2608b_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 979 | 979 | AM_RANGE(0x1000, 0x1000) AM_WRITENOP |
| 980 | 980 | 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) | |
| 982 | 982 | AM_RANGE(0x6000, 0x67ff) AM_RAM |
| 983 | 983 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 984 | 984 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 988 | 988 | static ADDRESS_MAP_START( sound3812_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 989 | 989 | AM_RANGE(0x0000, 0x0000) AM_WRITENOP |
| 990 | 990 | 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) | |
| 992 | 992 | AM_RANGE(0x3000, 0x37ff) AM_RAM |
| 993 | 993 | AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 994 | 994 | AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia", pia6821_r, pia6821_w) |
| r6428 | r6429 | |
| 1000 | 1000 | static ADDRESS_MAP_START( sound3812_external_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1001 | 1001 | AM_RANGE(0x0000, 0x0000) AM_WRITENOP |
| 1002 | 1002 | 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) | |
| 1004 | 1004 | AM_RANGE(0x3000, 0x37ff) AM_RAM |
| 1005 | 1005 | AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 1006 | 1006 | AM_RANGE(0x5000, 0x500f) AM_DEVREADWRITE("via6522_0", via_r, via_w) |
| r6428 | r6429 | |
| 1763 | 1763 | MDRV_CPU_PROGRAM_MAP(sound2203_map) |
| 1764 | 1764 | |
| 1765 | 1765 | /* sound hardware */ |
| 1766 | MDRV_SOUND_ADD("ym", YM2203, CLOCK_8MHz/2) | |
| 1766 | MDRV_SOUND_ADD("ymsnd", YM2203, CLOCK_8MHz/2) | |
| 1767 | 1767 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1768 | 1768 | MDRV_SOUND_ROUTE(0, "mono", 0.07) |
| 1769 | 1769 | MDRV_SOUND_ROUTE(1, "mono", 0.07) |
| r6428 | r6429 | |
| 1783 | 1783 | MDRV_CPU_PROGRAM_MAP(sound2608b_map) |
| 1784 | 1784 | |
| 1785 | 1785 | /* sound hardware */ |
| 1786 | MDRV_SOUND_ADD("ym", YM2608, CLOCK_8MHz) | |
| 1786 | MDRV_SOUND_ADD("ymsnd", YM2608, CLOCK_8MHz) | |
| 1787 | 1787 | MDRV_SOUND_CONFIG(ym2608b_config) |
| 1788 | 1788 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 1789 | 1789 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1798 | 1798 | MDRV_PIA6821_ADD("pia", pia_interface) |
| 1799 | 1799 | |
| 1800 | 1800 | /* sound hardware */ |
| 1801 | MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2) | |
| 1801 | MDRV_SOUND_ADD("ymsnd", YM3812, CLOCK_8MHz/2) | |
| 1802 | 1802 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1803 | 1803 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 1804 | 1804 | |
| r6428 | r6429 | |
| 1815 | 1815 | MDRV_CPU_PROGRAM_MAP(sound3812_external_map) |
| 1816 | 1816 | |
| 1817 | 1817 | /* sound hardware */ |
| 1818 | MDRV_SOUND_ADD("ym", YM3812, CLOCK_8MHz/2) | |
| 1818 | MDRV_SOUND_ADD("ymsnd", YM3812, CLOCK_8MHz/2) | |
| 1819 | 1819 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1820 | 1820 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 1821 | 1821 | |
| r6428 | r6429 | |
| 2078 | 2078 | ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(37b47b2e) SHA1(352204d3e95e6db556aacf053c42d0d5871245a7) ) |
| 2079 | 2079 | ROM_LOAD( "grom6.bin", 0xc0000, 0x20000, CRC(860ee822) SHA1(2ca821c2fa220065b99b99b7487fe9666f338c75) ) |
| 2080 | 2080 | |
| 2081 | ROM_REGION( 0x20000, "ym", 0 ) | |
| 2081 | ROM_REGION( 0x20000, "ymsnd", 0 ) | |
| 2082 | 2082 | ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(49bce954) SHA1(68a8b11c03722349d673f7383288c63054f0d6f6) ) |
| 2083 | 2083 | ROM_END |
| 2084 | 2084 |
| r6428 | r6429 | |
|---|---|---|
| 884 | 884 | /* bit 0 = WRITE */ |
| 885 | 885 | /* bit 1 = C/D */ |
| 886 | 886 | 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); | |
| 888 | 888 | break; |
| 889 | 889 | |
| 890 | 890 | case 0x100: |
| r6428 | r6429 | |
| 976 | 976 | static WRITE8_HANDLER( mshuttle_ay8910_control_w ) |
| 977 | 977 | { |
| 978 | 978 | 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); | |
| 980 | 980 | } |
| 981 | 981 | |
| 982 | 982 | |
| 983 | 983 | static WRITE8_HANDLER( mshuttle_ay8910_data_w ) |
| 984 | 984 | { |
| 985 | 985 | 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); | |
| 987 | 987 | } |
| 988 | 988 | |
| 989 | 989 | |
| 990 | 990 | static READ8_HANDLER( mshuttle_ay8910_data_r ) |
| 991 | 991 | { |
| 992 | 992 | 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); | |
| 994 | 994 | return 0xff; |
| 995 | 995 | } |
| 996 | 996 | |
| r6428 | r6429 | |
| 1387 | 1387 | AM_RANGE(0x4000, 0x47ff) AM_RAM |
| 1388 | 1388 | AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE(&videoram) |
| 1389 | 1389 | 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) | |
| 1392 | 1392 | AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") |
| 1393 | 1393 | AM_RANGE(0x6002, 0x6006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w) |
| 1394 | 1394 | AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") |
| r6428 | r6429 | |
| 1519 | 1519 | ADDRESS_MAP_UNMAP_HIGH |
| 1520 | 1520 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1521 | 1521 | 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) | |
| 1524 | 1524 | ADDRESS_MAP_END |
| 1525 | 1525 | |
| 1526 | 1526 | |
| r6428 | r6429 | |
| 1529 | 1529 | ADDRESS_MAP_UNMAP_HIGH |
| 1530 | 1530 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 1531 | 1531 | 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) | |
| 1534 | 1534 | ADDRESS_MAP_END |
| 1535 | 1535 | |
| 1536 | 1536 | |
| r6428 | r6429 | |
| 1913 | 1913 | MDRV_CPU_PROGRAM_MAP(galaxian_map_base) /* no discrete sound */ |
| 1914 | 1914 | |
| 1915 | 1915 | /* sound hardware */ |
| 1916 | MDRV_SOUND_ADD("ay", AY8910, 1789750) | |
| 1916 | MDRV_SOUND_ADD("aysnd", AY8910, 1789750) | |
| 1917 | 1917 | |
| 1918 | 1918 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1919 | 1919 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1950 | 1950 | MDRV_CPU_PROGRAM_MAP(jumpbug_map) |
| 1951 | 1951 | |
| 1952 | 1952 | /* sound hardware */ |
| 1953 | MDRV_SOUND_ADD("ay", AY8910, 1789750) | |
| 1953 | MDRV_SOUND_ADD("aysnd", AY8910, 1789750) | |
| 1954 | 1954 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1955 | 1955 | MACHINE_DRIVER_END |
| 1956 | 1956 | |
| r6428 | r6429 | |
| 1965 | 1965 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* NMIs are triggered by the main CPU */ |
| 1966 | 1966 | |
| 1967 | 1967 | /* sound hardware */ |
| 1968 | MDRV_SOUND_ADD("ay", AY8910, 1789750) | |
| 1968 | MDRV_SOUND_ADD("aysnd", AY8910, 1789750) | |
| 1969 | 1969 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1970 | 1970 | MACHINE_DRIVER_END |
| 1971 | 1971 | |
| r6428 | r6429 | |
| 1984 | 1984 | MDRV_TIMER_ADD_SCANLINE("irq0", checkmaj_irq0_gen, "screen", 0, 8) |
| 1985 | 1985 | |
| 1986 | 1986 | /* sound hardware */ |
| 1987 | MDRV_SOUND_ADD("ay", AY8910, 1620000) | |
| 1987 | MDRV_SOUND_ADD("aysnd", AY8910, 1620000) | |
| 1988 | 1988 | MDRV_SOUND_CONFIG(checkmaj_ay8910_interface) |
| 1989 | 1989 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2) |
| 1990 | 1990 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1999 | 1999 | MDRV_CPU_IO_MAP(mshuttle_portmap) |
| 2000 | 2000 | |
| 2001 | 2001 | /* sound hardware */ |
| 2002 | MDRV_SOUND_ADD("ay", AY8910, GALAXIAN_PIXEL_CLOCK/3/4) | |
| 2002 | MDRV_SOUND_ADD("aysnd", AY8910, GALAXIAN_PIXEL_CLOCK/3/4) | |
| 2003 | 2003 | MDRV_SOUND_CONFIG(cclimber_ay8910_interface) |
| 2004 | 2004 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2005 | 2005 |
| r6428 | r6429 | |
|---|---|---|
| 378 | 378 | |
| 379 | 379 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 380 | 380 | 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) | |
| 382 | 382 | AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */ |
| 383 | 383 | ADDRESS_MAP_END |
| 384 | 384 | |
| 385 | 385 | static ADDRESS_MAP_START( sounda_portmap, ADDRESS_SPACE_IO, 8 ) |
| 386 | 386 | 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) | |
| 388 | 388 | AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */ |
| 389 | 389 | ADDRESS_MAP_END |
| 390 | 390 | |
| r6428 | r6429 | |
| 735 | 735 | /* sound hardware */ |
| 736 | 736 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 737 | 737 | |
| 738 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 738 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 739 | 739 | MDRV_SOUND_CONFIG(ym2610_config) |
| 740 | 740 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 741 | 741 | MDRV_SOUND_ROUTE(0, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 772 | 772 | /* sound hardware */ |
| 773 | 773 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 774 | 774 | |
| 775 | MDRV_SOUND_ADD("ym", YM2608, 8000000) | |
| 775 | MDRV_SOUND_ADD("ymsnd", YM2608, 8000000) | |
| 776 | 776 | MDRV_SOUND_CONFIG(ym2608_config) |
| 777 | 777 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 778 | 778 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.50) |
| r6428 | r6429 | |
| 820 | 820 | ROM_LOAD( "bb-8.a14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) |
| 821 | 821 | ROM_LOAD( "bb-9.c14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) |
| 822 | 822 | |
| 823 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 823 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 824 | 824 | ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) ) |
| 825 | 825 | |
| 826 | 826 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 865 | 865 | ROM_LOAD( "bb-8.a14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) |
| 866 | 866 | ROM_LOAD( "bb-9.c14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) |
| 867 | 867 | |
| 868 | ROM_REGION( 0x80000, "ym", 0 ) | |
| 868 | ROM_REGION( 0x80000, "ymsnd", 0 ) | |
| 869 | 869 | ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) ) |
| 870 | 870 | |
| 871 | 871 | ROM_REGION( 0x80000, "ym.deltat", 0 ) |
| r6428 | r6429 | |
| 901 | 901 | ROM_REGION( 0x80000, "gfx5", 0 ) |
| 902 | 902 | ROM_LOAD( "mab289c2.bin", 0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) ) |
| 903 | 903 | |
| 904 | ROM_REGION( 0x20000, "ym", 0 ) | |
| 904 | ROM_REGION( 0x20000, "ymsnd", 0 ) | |
| 905 | 905 | ROM_LOAD( "ma2.bin", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) |
| 906 | 906 | |
| 907 | 907 | ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */ |
| r6428 | r6429 | |
| 938 | 938 | ROM_REGION( 0x80000, "gfx5", 0 ) |
| 939 | 939 | ROM_LOAD( "mab289c2.bin", 0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) ) |
| 940 | 940 | |
| 941 | ROM_REGION( 0x20000, "ym", 0 ) | |
| 941 | ROM_REGION( 0x20000, "ymsnd", 0 ) | |
| 942 | 942 | ROM_LOAD( "ma2.bin", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) |
| 943 | 943 | |
| 944 | 944 | ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */ |
| r6428 | r6429 | |
|---|---|---|
| 461 | 461 | static ADDRESS_MAP_START( hyprduel_map2, ADDRESS_SPACE_PROGRAM, 16 ) |
| 462 | 462 | AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1) /* shadow ($c00000 - $c03fff : vector) */ |
| 463 | 463 | 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 ) | |
| 465 | 465 | AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 466 | 466 | AM_RANGE(0x800000, 0x800001) AM_NOP |
| 467 | 467 | AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE(1) |
| r6428 | r6429 | |
| 508 | 508 | AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1) /* shadow ($c00000 - $c03fff : vector) */ |
| 509 | 509 | AM_RANGE(0x004000, 0x007fff) AM_RAM AM_WRITENOP AM_SHARE(3) /* shadow ($fe4000 - $fe7fff : read only) */ |
| 510 | 510 | 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) | |
| 512 | 512 | AM_RANGE(0x800004, 0x800005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 513 | 513 | AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE(1) |
| 514 | 514 | AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2) |
| r6428 | r6429 | |
| 729 | 729 | /* sound hardware */ |
| 730 | 730 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 731 | 731 | |
| 732 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 732 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 733 | 733 | MDRV_SOUND_CONFIG(ym2151_config) |
| 734 | 734 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 735 | 735 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 773 | 773 | /* sound hardware */ |
| 774 | 774 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 775 | 775 | |
| 776 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 776 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 777 | 777 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) |
| 778 | 778 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) |
| 779 | 779 |
| r6428 | r6429 | |
|---|---|---|
| 233 | 233 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 234 | 234 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 235 | 235 | 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) | |
| 237 | 237 | AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w) |
| 238 | 238 | AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("msm", sound_control_0_w) |
| 239 | 239 | AM_RANGE(0xce00, 0xce00) AM_DEVWRITE("msm", sound_control_1_w) |
| r6428 | r6429 | |
| 643 | 643 | AY8910_DEFAULT_LOADS, |
| 644 | 644 | DEVCB_NULL, |
| 645 | 645 | DEVCB_NULL, |
| 646 | DEVCB_DEVICE_HANDLER("ay", sound_control_2_w), | |
| 646 | DEVCB_DEVICE_HANDLER("aysnd", sound_control_2_w), | |
| 647 | 647 | DEVCB_HANDLER(sound_control_3_w) |
| 648 | 648 | }; |
| 649 | 649 | |
| r6428 | r6429 | |
| 689 | 689 | /* sound hardware */ |
| 690 | 690 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 691 | 691 | |
| 692 | MDRV_SOUND_ADD("ay", AY8910, XTAL_8MHz/4) /* verified on pcb */ | |
| 692 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */ | |
| 693 | 693 | MDRV_SOUND_CONFIG(ay8910_config) |
| 694 | 694 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 695 | 695 | |
| r6428 | r6429 | |
| 746 | 746 | /* sound hardware */ |
| 747 | 747 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 748 | 748 | |
| 749 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 749 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 750 | 750 | MDRV_SOUND_CONFIG(ay8910_config) |
| 751 | 751 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 752 | 752 | |
| r6428 | r6429 | |
| 803 | 803 | /* sound hardware */ |
| 804 | 804 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 805 | 805 | |
| 806 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 806 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 807 | 807 | MDRV_SOUND_CONFIG(ay8910_config) |
| 808 | 808 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 809 | 809 |
| r6428 | r6429 | |
|---|---|---|
| 165 | 165 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 166 | 166 | AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w) |
| 167 | 167 | 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) | |
| 169 | 169 | ADDRESS_MAP_END |
| 170 | 170 | |
| 171 | 171 | /*** INPUT PORTS *************************************************************/ |
| r6428 | r6429 | |
| 324 | 324 | |
| 325 | 325 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 326 | 326 | |
| 327 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 327 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 328 | 328 | MDRV_SOUND_CONFIG(ym2610_config) |
| 329 | 329 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 330 | 330 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 343 | 343 | ROM_LOAD( "eb26ic38.bin", 0x000000, 0x020000, CRC(153f2c50) SHA1(b70f248cfb18239fcd26e36fb36159f219debf2c) ) |
| 344 | 344 | ROM_RELOAD( 0x010000, 0x020000 ) |
| 345 | 345 | |
| 346 | ROM_REGION( 0x200000, "ym", 0 ) /* Samples */ | |
| 346 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */ | |
| 347 | 347 | ROM_LOAD( "eb26ic66.bin", 0x000000, 0x200000, CRC(8cb33682) SHA1(0e6189ef0673227d35b9a154e333cc6cf9b65df6) ) |
| 348 | 348 | |
| 349 | 349 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* Samples */ |
| r6428 | r6429 | |
|---|---|---|
| 78 | 78 | |
| 79 | 79 | static ADDRESS_MAP_START( pzlestar_io_map, ADDRESS_SPACE_IO, 8 ) |
| 80 | 80 | 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 ) | |
| 82 | 82 | AM_RANGE( 0x91, 0x91) AM_WRITE( pzlestar_bank_w ) |
| 83 | 83 | AM_RANGE( 0x98, 0x98) AM_READWRITE( v9938_0_vram_r, v9938_0_vram_w ) |
| 84 | 84 | AM_RANGE( 0x99, 0x99) AM_READWRITE( v9938_0_status_r, v9938_0_command_w ) |
| r6428 | r6429 | |
| 93 | 93 | |
| 94 | 94 | static ADDRESS_MAP_START( sexyboom_io_map, ADDRESS_SPACE_IO, 8 ) |
| 95 | 95 | 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 ) | |
| 97 | 97 | AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1") |
| 98 | 98 | AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2") |
| 99 | 99 | AM_RANGE( 0xf0, 0xf0) AM_READWRITE( v9938_0_vram_r,v9938_0_vram_w ) |
| r6428 | r6429 | |
| 243 | 243 | |
| 244 | 244 | |
| 245 | 245 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 246 | MDRV_SOUND_ADD("ym", YM2413, 3580000) | |
| 246 | MDRV_SOUND_ADD("ymsnd", YM2413, 3580000) | |
| 247 | 247 | |
| 248 | 248 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 249 | 249 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 275 | 275 | MDRV_VIDEO_UPDATE( generic_bitmapped ) |
| 276 | 276 | |
| 277 | 277 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 278 | MDRV_SOUND_ADD("ym", YM2413, 3580000) | |
| 278 | MDRV_SOUND_ADD("ymsnd", YM2413, 3580000) | |
| 279 | 279 | |
| 280 | 280 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 281 | 281 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 338 | 338 | AM_RANGE(0x092000, 0x09201f) AM_READWRITE(bmcbowl_via_r, bmcbowl_via_w) |
| 339 | 339 | |
| 340 | 340 | 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) | |
| 343 | 343 | AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0") |
| 344 | 344 | AM_RANGE(0x095000, 0x095fff) AM_RAM AM_BASE((UINT16 **)&stats_ram) AM_SIZE(&stats_ram_size) /* 8 bit */ |
| 345 | 345 | AM_RANGE(0x097000, 0x097001) AM_READNOP |
| r6428 | r6429 | |
| 517 | 517 | |
| 518 | 518 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 519 | 519 | |
| 520 | MDRV_SOUND_ADD("ay", AY8910, 3579545/2) | |
| 520 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545/2) | |
| 521 | 521 | MDRV_SOUND_CONFIG(ay8910_config) |
| 522 | 522 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) |
| 523 | 523 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 183 | 183 | DMA8237 Controller |
| 184 | 184 | ******************/ |
| 185 | 185 | |
| 186 | static int dma_channel; | |
| 186 | 187 | static UINT8 dma_offset[2][4]; |
| 187 | 188 | static UINT8 at_pages[0x10]; |
| 188 | 189 | |
| 189 | static | |
| 190 | static W | |
| 190 | 191 | { |
| 191 | 192 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 192 | 193 | |
| 193 | 194 | /* Assert HLDA */ |
| 194 | | |
| 195 | i | |
| 195 | 196 | } |
| 196 | 197 | |
| 197 | 198 | |
| 198 | static | |
| 199 | static READ8 | |
| 199 | 200 | { |
| 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) | |
| 202 | 202 | & 0xFF0000; |
| 203 | 203 | |
| 204 | 204 | return memory_read_byte(space, page_offset + offset); |
| 205 | 205 | } |
| 206 | 206 | |
| 207 | 207 | |
| 208 | static | |
| 208 | static | |
| 209 | 209 | { |
| 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) | |
| 212 | 211 | & 0xFF0000; |
| 213 | 212 | |
| 214 | 213 | memory_write_byte(space, page_offset + offset, data); |
| r6428 | r6429 | |
| 258 | 257 | } |
| 259 | 258 | } |
| 260 | 259 | |
| 261 | ||
| 262 | static const struct dma8237_interface dma8237_1_config = | |
| 260 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 263 | 261 | { |
| 264 | XTAL_14_31818MHz/3, | |
| 262 | if (!state) dma_channel = channel; | |
| 263 | } | |
| 265 | 264 | |
| 266 | pc_dma_hrq_changed, | |
| 267 | pc_dma_read_byte, | |
| 268 | pc_dma_write_byte, | |
| 265 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 266 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 267 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 268 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 269 | 269 | |
| 270 | { NULL, NULL, NULL, NULL }, | |
| 271 | { NULL, NULL, NULL, NULL }, | |
| 272 | NULL | |
| 270 | static 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) } | |
| 273 | 279 | }; |
| 274 | 280 | |
| 275 | static | |
| 281 | static I | |
| 276 | 282 | { |
| 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 } | |
| 286 | 290 | }; |
| 287 | 291 | |
| 288 | 292 | |
| r6428 | r6429 | |
| 424 | 428 | } |
| 425 | 429 | |
| 426 | 430 | static ADDRESS_MAP_START( pcat_io, ADDRESS_SPACE_IO, 32 ) |
| 427 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 431 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 428 | 432 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 429 | 433 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 430 | 434 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| 431 | 435 | AM_RANGE(0x0070, 0x007f) AM_RAM//READWRITE(mc146818_port32le_r, mc146818_port32le_w) |
| 432 | 436 | AM_RANGE(0x0080, 0x009f) AM_READWRITE8(dma_page_select_r,dma_page_select_w, 0xffffffff)//TODO |
| 433 | 437 | AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff) |
| 434 | AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", | |
| 438 | AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("dma8237_2", i | |
| 435 | 439 | AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2 |
| 436 | 440 | AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port |
| 437 | 441 | AM_RANGE(0x03c0, 0x03c3) AM_RAM |
| r6428 | r6429 | |
| 590 | 594 | // MDRV_IMPORT_FROM( at_kbdc8042 ) |
| 591 | 595 | MDRV_PIC8259_ADD( "pic8259_1", pic8259_1_config ) |
| 592 | 596 | 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 ) | |
| 595 | 599 | MDRV_PIT8254_ADD( "pit8254", at_pit8254_config ) |
| 596 | 600 | |
| 597 | 601 | MDRV_PALETTE_INIT(pcat_286) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /**************************************************************************** |
| 2 | 2 | |
| 3 | Blockade/Comotion/Blasto/Hustle Memory MAP | |
| 4 | Frank Palazzolo (palazzol@comcast.net) | |
| 3 | Blockade/Comotion/Blasto/Hustle Memory MAP | |
| 4 | Frank Palazzolo (palazzol@comcast.net) | |
| 5 | 5 | |
| 6 | CPU - Intel 8080A | |
| 6 | CPU - Intel 8080A | |
| 7 | 7 | |
| 8 | Memory Address (Upper/Lower) | |
| 8 | Memory Address (Upper/Lower) | |
| 9 | 9 | |
| 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 | |
| 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 | |
| 14 | 14 | |
| 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 | |
| 17 | 17 | |
| 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 | |
| 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 | |
| 24 | 24 | |
| 25 | 25 | |
| 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 | |
| 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 | |
| 28 | 28 | |
| 29 | 29 | ****************************************************************************/ |
| 30 | 30 | |
| r6428 | r6429 | |
| 39 | 39 | |
| 40 | 40 | /* These are used to simulate coin latch circuitry */ |
| 41 | 41 | |
| 42 | static UINT8 coin_latch; /* Active Low */ | |
| 43 | static UINT8 just_been_reset; | |
| 44 | ||
| 45 | static DRIVER_INIT( blockade ) | |
| 46 | { | |
| 47 | coin_latch = 1; | |
| 48 | just_been_reset = 0; | |
| 49 | } | |
| 50 | ||
| 51 | 42 | /*************************************************************/ |
| 52 | 43 | /* */ |
| 53 | 44 | /* Inserting a coin should work like this: */ |
| r6428 | r6429 | |
| 67 | 58 | |
| 68 | 59 | static INTERRUPT_GEN( blockade_interrupt ) |
| 69 | 60 | { |
| 61 | blockade_state *state = (blockade_state *)device->machine->driver_data; | |
| 70 | 62 | cpu_resume(device, SUSPEND_ANY_REASON); |
| 71 | 63 | |
| 72 | 64 | if ((input_port_read(device->machine, "IN0") & 0x80) == 0) |
| 73 | 65 | { |
| 74 | just_been_reset = 1; | |
| 66 | state->just_been_reset = 1; | |
| 75 | 67 | cpu_set_input_line(device, INPUT_LINE_RESET, PULSE_LINE); |
| 76 | 68 | } |
| 77 | 69 | } |
| 78 | 70 | |
| 71 | /************************************* | |
| 72 | * | |
| 73 | * Memory handlers | |
| 74 | * | |
| 75 | *************************************/ | |
| 76 | ||
| 79 | 77 | static READ8_HANDLER( blockade_input_port_0_r ) |
| 80 | 78 | { |
| 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); | |
| 82 | 82 | |
| 83 | UINT8 temp = (input_port_read(space->machine, "IN0") & 0x7f); | |
| 84 | return (coin_latch<<7) | (temp); | |
| 83 | return (state->coin_latch << 7) | temp; | |
| 85 | 84 | } |
| 86 | 85 | |
| 87 | 86 | static WRITE8_HANDLER( blockade_coin_latch_w ) |
| 88 | 87 | { |
| 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; | |
| 100 | 89 | |
| 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 | } | |
| 109 | 101 | |
| 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 | ||
| 110 | 111 | return; |
| 111 | 112 | } |
| 112 | 113 | |
| 113 | 114 | |
| 115 | /************************************* | |
| 116 | * | |
| 117 | * Address maps | |
| 118 | * | |
| 119 | *************************************/ | |
| 120 | ||
| 114 | 121 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 115 | 122 | AM_RANGE(0x0000, 0x07ff) AM_ROM AM_MIRROR(0x6000) |
| 116 | AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(blockade_videoram_w) AM_BASE( | |
| 123 | AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(blockade_videoram_w) AM_BASE_MEMBER(blockade_state, videoram) AM_MIRROR(0x6c00) | |
| 117 | 124 | AM_RANGE(0x9000, 0x90ff) AM_RAM AM_MIRROR(0x6f00) |
| 118 | 125 | ADDRESS_MAP_END |
| 119 | 126 | |
| r6428 | r6429 | |
| 126 | 133 | AM_RANGE(0x08, 0x08) AM_WRITE(blockade_env_off_w) |
| 127 | 134 | ADDRESS_MAP_END |
| 128 | 135 | |
| 136 | ||
| 137 | /************************************* | |
| 138 | * | |
| 139 | * Input ports | |
| 140 | * | |
| 141 | *************************************/ | |
| 142 | ||
| 129 | 143 | /* These are not dip switches, they are mapped to */ |
| 130 | 144 | /* connectors on the board. Different games had */ |
| 131 | 145 | /* different harnesses which plugged in here, and */ |
| 132 | 146 | /* some pins were unused. */ |
| 133 | 147 | |
| 134 | 148 | static INPUT_PORTS_START( blockade ) |
| 135 | PORT_START("IN0") | |
| 149 | PORT_START("IN0") | |
| 136 | 150 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 137 | 151 | 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 ) ) | |
| 141 | 155 | 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" ) | |
| 147 | 161 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) |
| 148 | 162 | /* this is really used for the coin latch, */ |
| 149 | 163 | /* see blockade_interrupt() */ |
| 150 | 164 | |
| 151 | PORT_START("IN1") | |
| 165 | PORT_START("IN1") | |
| 152 | 166 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) |
| 153 | 167 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) |
| 154 | 168 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| r6428 | r6429 | |
| 158 | 172 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) |
| 159 | 173 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) |
| 160 | 174 | |
| 161 | PORT_START("IN2") | |
| 175 | PORT_START("IN2") | |
| 162 | 176 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 163 | 177 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 164 | 178 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 168 | 182 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 169 | 183 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 170 | 184 | |
| 171 | PORT_START("IN3") | |
| 185 | PORT_START("IN3") | |
| 172 | 186 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 173 | 187 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 174 | 188 | INPUT_PORTS_END |
| 175 | 189 | |
| 176 | 190 | static INPUT_PORTS_START( comotion ) |
| 177 | PORT_START("IN0") | |
| 191 | PORT_START("IN0") | |
| 178 | 192 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 179 | 193 | 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" ) | |
| 186 | 200 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 187 | 201 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 188 | 202 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 190 | 204 | /* this is really used for the coin latch, */ |
| 191 | 205 | /* see blockade_interrupt() */ |
| 192 | 206 | |
| 193 | PORT_START("IN1") | |
| 207 | PORT_START("IN1") | |
| 194 | 208 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) |
| 195 | 209 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) |
| 196 | 210 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) |
| r6428 | r6429 | |
| 200 | 214 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3) |
| 201 | 215 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(3) |
| 202 | 216 | |
| 203 | PORT_START("IN2") | |
| 217 | PORT_START("IN2") | |
| 204 | 218 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) |
| 205 | 219 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) |
| 206 | 220 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| r6428 | r6429 | |
| 210 | 224 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4) |
| 211 | 225 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4) |
| 212 | 226 | |
| 213 | PORT_START("IN3") | |
| 227 | PORT_START("IN3") | |
| 214 | 228 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 215 | 229 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 216 | 230 | INPUT_PORTS_END |
| 217 | 231 | |
| 218 | 232 | static 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" ) | |
| 231 | 245 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 232 | 246 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 233 | 247 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 235 | 249 | /* this is really used for the coin latch, */ |
| 236 | 250 | /* see blockade_interrupt() */ |
| 237 | 251 | |
| 238 | PORT_START("IN1") | |
| 252 | PORT_START("IN1") | |
| 239 | 253 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 240 | 254 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 241 | 255 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 245 | 259 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) |
| 246 | 260 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 247 | 261 | |
| 248 | PORT_START("IN2") | |
| 262 | PORT_START("IN2") | |
| 249 | 263 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) |
| 250 | 264 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| 251 | 265 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) |
| r6428 | r6429 | |
| 255 | 269 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) |
| 256 | 270 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) |
| 257 | 271 | |
| 258 | PORT_START("IN3") | |
| 272 | PORT_START("IN3") | |
| 259 | 273 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 260 | 274 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 261 | 275 | INPUT_PORTS_END |
| 262 | 276 | |
| 263 | 277 | static 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" ) | |
| 273 | 287 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) |
| 274 | 288 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) |
| 275 | 289 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 278 | 292 | /* this is really used for the coin latch, */ |
| 279 | 293 | /* see blockade_interrupt() */ |
| 280 | 294 | |
| 281 | PORT_START("IN1") | |
| 295 | PORT_START("IN1") | |
| 282 | 296 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) |
| 283 | 297 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) |
| 284 | 298 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| r6428 | r6429 | |
| 288 | 302 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) |
| 289 | 303 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) |
| 290 | 304 | |
| 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" ) | |
| 298 | 312 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 299 | 313 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 300 | 314 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 301 | 315 | |
| 302 | PORT_START("IN3") | |
| 316 | PORT_START("IN3") | |
| 303 | 317 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 304 | 318 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 305 | 319 | INPUT_PORTS_END |
| 306 | 320 | |
| 307 | 321 | static INPUT_PORTS_START( mineswpr ) |
| 308 | PORT_START("IN0") | |
| 322 | PORT_START("IN0") | |
| 309 | 323 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 310 | 324 | 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 ) ) | |
| 314 | 328 | 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" ) | |
| 320 | 334 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) |
| 321 | 335 | /* this is really used for the coin latch, */ |
| 322 | 336 | /* see blockade_interrupt() */ |
| 323 | 337 | |
| 324 | PORT_START("IN1") | |
| 338 | PORT_START("IN1") | |
| 325 | 339 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) |
| 326 | 340 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) |
| 327 | 341 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) |
| r6428 | r6429 | |
| 331 | 345 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| 332 | 346 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) |
| 333 | 347 | |
| 334 | PORT_START("IN2") | |
| 348 | PORT_START("IN2") | |
| 335 | 349 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 336 | 350 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 337 | 351 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r6428 | r6429 | |
| 341 | 355 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 342 | 356 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 343 | 357 | |
| 344 | PORT_START("IN3") | |
| 358 | PORT_START("IN3") | |
| 345 | 359 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 346 | 360 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 347 | 361 | INPUT_PORTS_END |
| 348 | 362 | |
| 349 | 363 | static INPUT_PORTS_START( minesw4p ) |
| 350 | PORT_START("IN0") | |
| 364 | PORT_START("IN0") | |
| 351 | 365 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 352 | 366 | 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 ) ) | |
| 356 | 370 | 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" ) | |
| 362 | 376 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) |
| 363 | 377 | /* this is really used for the coin latch, */ |
| 364 | 378 | /* see blockade_interrupt() */ |
| 365 | 379 | |
| 366 | PORT_START("IN1") | |
| 380 | PORT_START("IN1") | |
| 367 | 381 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) |
| 368 | 382 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) |
| 369 | 383 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) |
| r6428 | r6429 | |
| 373 | 387 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) |
| 374 | 388 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) |
| 375 | 389 | |
| 376 | PORT_START("IN2") | |
| 390 | PORT_START("IN2") | |
| 377 | 391 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(3) |
| 378 | 392 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(3) |
| 379 | 393 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3) |
| r6428 | r6429 | |
| 383 | 397 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4) |
| 384 | 398 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4) |
| 385 | 399 | |
| 386 | PORT_START("IN3") | |
| 400 | PORT_START("IN3") | |
| 387 | 401 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 388 | 402 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) |
| 389 | 403 | INPUT_PORTS_END |
| 390 | 404 | |
| 391 | 405 | |
| 406 | /************************************* | |
| 407 | * | |
| 408 | * Graphics definitions | |
| 409 | * | |
| 410 | *************************************/ | |
| 411 | ||
| 392 | 412 | static const gfx_layout blockade_layout = |
| 393 | 413 | { |
| 394 | 414 | 8,8, /* 8*8 characters */ |
| r6428 | r6429 | |
| 438 | 458 | } |
| 439 | 459 | |
| 440 | 460 | |
| 461 | /************************************* | |
| 462 | * | |
| 463 | * Machine driver | |
| 464 | * | |
| 465 | *************************************/ | |
| 466 | ||
| 467 | static 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 | ||
| 475 | static 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 | ||
| 441 | 483 | static MACHINE_DRIVER_START( blockade ) |
| 442 | 484 | |
| 485 | /* driver data */ | |
| 486 | MDRV_DRIVER_DATA(blockade_state) | |
| 487 | ||
| 443 | 488 | /* basic machine hardware */ |
| 444 | 489 | MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK/10) |
| 445 | 490 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 446 | 491 | MDRV_CPU_IO_MAP(main_io_map) |
| 447 | 492 | MDRV_CPU_VBLANK_INT("screen", blockade_interrupt) |
| 448 | 493 | |
| 494 | MDRV_MACHINE_START(blockade) | |
| 495 | MDRV_MACHINE_RESET(blockade) | |
| 496 | ||
| 449 | 497 | /* video hardware */ |
| 450 | 498 | MDRV_SCREEN_ADD("screen", RASTER) |
| 451 | 499 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 490 | 538 | MDRV_PALETTE_INIT(yellow) |
| 491 | 539 | MACHINE_DRIVER_END |
| 492 | 540 | |
| 493 | /*************************************************************************** | |
| 541 | /************************************* | |
| 542 | * | |
| 543 | * ROM definition(s) | |
| 544 | * | |
| 545 | *************************************/ | |
| 494 | 546 | |
| 495 | Game driver(s) | |
| 496 | ||
| 497 | ***************************************************************************/ | |
| 498 | ||
| 499 | 547 | ROM_START( blockade ) |
| 500 | 548 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 501 | 549 | ROM_LOAD_NIB_HIGH( "316-04.u2", 0x0000, 0x0400, CRC(a93833e9) SHA1(e29e7b29900f8305effa700a53806a12bf9d37bd) ) |
| r6428 | r6429 | |
| 562 | 610 | ROM_LOAD_NIB_LOW( "mineswee.cls", 0x0000, 0x0200, CRC(70959755) SHA1(f62d448742da3fae8bbd96eb3a2714db500cecce) ) |
| 563 | 611 | ROM_END |
| 564 | 612 | |
| 565 | GAME( 1976, blockade, 0, blockade, blockade, blockade, ROT0, "Gremlin", "Blockade", GAME_IMPERFECT_SOUND ) | |
| 566 | GAME( 1976, comotion, 0, comotion, comotion, blockade, ROT0, "Gremlin", "Comotion", GAME_IMPERFECT_SOUND ) | |
| 567 | GAME( 1978, blasto, 0, blasto, blasto, blockade, ROT0, "Gremlin", "Blasto", GAME_IMPERFECT_SOUND ) | |
| 568 | GAME( 1977, hustle, 0, hustle, hustle, blockade, ROT0, "Gremlin", "Hustle", GAME_IMPERFECT_SOUND ) | |
| 569 | GAME( 1977, mineswpr, 0, blasto, mineswpr, blockade, ROT0, "Amutech", "Minesweeper", GAME_IMPERFECT_SOUND ) | |
| 570 | GAME( 1977, mineswpr4, mineswpr, blasto, minesw4p, blockade, ROT0, "Amutech", "Minesweeper (4-Player)", GAME_IMPERFECT_SOUND ) | |
| 613 | /************************************* | |
| 614 | * | |
| 615 | * Game driver | |
| 616 | * | |
| 617 | *************************************/ | |
| 618 | ||
| 619 | GAME( 1976, blockade, 0, blockade, blockade, 0, ROT0, "Gremlin", "Blockade", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 620 | GAME( 1976, comotion, 0, comotion, comotion, 0, ROT0, "Gremlin", "Comotion", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 621 | GAME( 1978, blasto, 0, blasto, blasto, 0, ROT0, "Gremlin", "Blasto", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 622 | GAME( 1977, hustle, 0, hustle, hustle, 0, ROT0, "Gremlin", "Hustle", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 623 | GAME( 1977, mineswpr, 0, blasto, mineswpr, 0, ROT0, "Amutech", "Minesweeper", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 624 | GAME( 1977, mineswpr4, mineswpr, blasto, minesw4p, 0, ROT0, "Amutech", "Minesweeper (4-Player)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 8 | 8 | |
| 9 | 9 | |
| 10 | 10 | CPU : 68000 |
| 11 | Custom : IGS005, IGS006, IGS007, IGS008 | |
| 11 | 12 | Sound : Z80 + M6295 [+ M6295] + YM3812 |
| 12 | 13 | NVRAM : 93C46 |
| 13 | 14 | |
| r6428 | r6429 | |
| 220 | 221 | } |
| 221 | 222 | |
| 222 | 223 | static 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 ) | |
| 224 | 225 | AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w ) |
| 225 | 226 | AM_RANGE(0x3000, 0x3000) AM_READ( soundlatch2_r ) |
| 226 | 227 | AM_RANGE(0x4000, 0x4000) AM_READ( soundlatch_r ) |
| r6428 | r6429 | |
| 233 | 234 | AM_RANGE(0x3000, 0x3000) AM_READ( soundlatch2_r ) |
| 234 | 235 | AM_RANGE(0x4000, 0x4000) AM_READ( soundlatch_r ) |
| 235 | 236 | 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 ) | |
| 237 | 238 | AM_RANGE(0x7400, 0x7400) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w ) |
| 238 | 239 | AM_RANGE(0x7800, 0x7800) AM_DEVREADWRITE( "oki2", okim6295_r, okim6295_w ) |
| 239 | 240 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 440 | 441 | // sound hardware |
| 441 | 442 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 442 | 443 | |
| 443 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 444 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 444 | 445 | MDRV_SOUND_CONFIG(lordgun_ym3812_interface) |
| 445 | 446 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 446 | 447 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 683 | 684 | |
| 684 | 685 | /* |
| 685 | 686 | |
| 686 | Huang Fei Hong | |
| 687 | Huang Fei Hong (Alien Challenge?) | |
| 687 | 688 | |
| 688 | 689 | */ |
| 689 | 690 | |
| r6428 | r6429 | |
| 717 | 718 | |
| 718 | 719 | ***************************************************************************/ |
| 719 | 720 | |
| 720 | GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun, ROT0, "IGS", "Lord of Gun (USA)", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION ) | |
| 721 | GAME( 199?, hfh, 0, hfh, lordgun, 0, ROT0, "IGS", "Huang Fei Hong", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 721 | GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun, ROT0, "IGS", "Lord of Gun (USA)", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION ) | |
| 722 | GAME( 199?, hfh, 0, hfh, lordgun, 0, ROT0, "IGS", "Huang Fei Hong (Alien Challenge?)", GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 108 | 108 | |
| 109 | 109 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 110 | 110 | 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) | |
| 112 | 112 | AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w) |
| 113 | 113 | AM_RANGE(0x1800, 0x1800) AM_READWRITE(soundlatch_r,lemmings_sound_ack_w) |
| 114 | 114 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 277 | 277 | /* sound hardware */ |
| 278 | 278 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 279 | 279 | |
| 280 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 280 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 281 | 281 | MDRV_SOUND_CONFIG(ym2151_config) |
| 282 | 282 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 283 | 283 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 14 | 14 | #include "sound/ay8910.h" |
| 15 | 15 | |
| 16 | 16 | |
| 17 | static UINT8 sound_nmi_enabled; | |
| 18 | ||
| 19 | 17 | static TIMER_CALLBACK( interrupt_disable ) |
| 20 | 18 | { |
| 21 | 19 | //interrupt_enable = 0; |
| r6428 | r6429 | |
| 24 | 22 | |
| 25 | 23 | MACHINE_RESET( espial ) |
| 26 | 24 | { |
| 25 | espial_state *state = (espial_state *)machine->driver_data; | |
| 26 | ||
| 27 | state->flipscreen = 0; | |
| 28 | ||
| 27 | 29 | /* we must start with NMI interrupts disabled */ |
| 28 | 30 | timer_call_after_resynch(machine, NULL, 0, interrupt_disable); |
| 29 | sound_nmi_enabled = FALSE; | |
| 31 | state->sound_nmi_enabled = FALSE; | |
| 30 | 32 | } |
| 31 | 33 | |
| 32 | 34 | MACHINE_START( espial ) |
| 33 | 35 | { |
| 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); | |
| 36 | 40 | } |
| 37 | 41 | |
| 38 | 42 | |
| 39 | 43 | WRITE8_HANDLER( zodiac_master_interrupt_enable_w ) |
| 40 | 44 | { |
| 41 | interrupt_enable_w(space,offset,~data & 1); | |
| 45 | interrupt_enable_w(space, offset, ~data & 1); | |
| 42 | 46 | } |
| 43 | 47 | |
| 44 | 48 | |
| 45 | 49 | WRITE8_HANDLER( espial_sound_nmi_enable_w ) |
| 46 | 50 | { |
| 47 | sound_nmi_enabled = data & 1; | |
| 51 | espial_state *state = (espial_state *)space->machine->driver_data; | |
| 52 | state->sound_nmi_enabled = data & 1; | |
| 48 | 53 | } |
| 49 | 54 | |
| 50 | 55 | |
| 51 | 56 | INTERRUPT_GEN( espial_sound_nmi_gen ) |
| 52 | 57 | { |
| 53 | if (sound_nmi_enabled) | |
| 58 | espial_state *state = (espial_state *)device->machine->driver_data; | |
| 59 | ||
| 60 | if (state->sound_nmi_enabled) | |
| 54 | 61 | nmi_line_pulse(device); |
| 55 | 62 | } |
| 56 | 63 | |
| r6428 | r6429 | |
| 82 | 89 | AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w) |
| 83 | 90 | AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w) |
| 84 | 91 | AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w) |
| 85 | AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE( | |
| 92 | AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE_MEMBER( | |
| 86 | 93 | 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) | |
| 93 | 100 | AM_RANGE(0xc000, 0xcfff) AM_ROM |
| 94 | 101 | ADDRESS_MAP_END |
| 95 | 102 | |
| r6428 | r6429 | |
| 107 | 114 | AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w) |
| 108 | 115 | AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w) |
| 109 | 116 | 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) | |
| 117 | 124 | ADDRESS_MAP_END |
| 118 | 125 | |
| 119 | 126 | |
| r6428 | r6429 | |
| 126 | 133 | |
| 127 | 134 | static ADDRESS_MAP_START( espial_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 128 | 135 | 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) | |
| 130 | 137 | ADDRESS_MAP_END |
| 131 | 138 | |
| 132 | 139 | |
| r6428 | r6429 | |
| 291 | 298 | |
| 292 | 299 | static MACHINE_DRIVER_START( espial ) |
| 293 | 300 | |
| 301 | /* driver data */ | |
| 302 | MDRV_DRIVER_DATA(espial_state) | |
| 303 | ||
| 294 | 304 | /* basic machine hardware */ |
| 295 | 305 | MDRV_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */ |
| 296 | 306 | MDRV_CPU_PROGRAM_MAP(espial_map) |
| r6428 | r6429 | |
| 321 | 331 | |
| 322 | 332 | /* sound hardware */ |
| 323 | 333 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 324 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 334 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 325 | 335 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 326 | 336 | MACHINE_DRIVER_END |
| 327 | 337 |
| r6428 | r6429 | |
|---|---|---|
| 282 | 282 | AM_RANGE(0x30, 0x30) AM_WRITE(rallybik_coin_w) /* Coin counter/lockout */ |
| 283 | 283 | AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") |
| 284 | 284 | 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) | |
| 286 | 286 | AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP") |
| 287 | 287 | ADDRESS_MAP_END |
| 288 | 288 | |
| r6428 | r6429 | |
| 294 | 294 | AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ |
| 295 | 295 | AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") |
| 296 | 296 | 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) | |
| 298 | 298 | AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP") |
| 299 | 299 | ADDRESS_MAP_END |
| 300 | 300 | |
| r6428 | r6429 | |
| 307 | 307 | AM_RANGE(0x40, 0x40) AM_READ_PORT("P1") |
| 308 | 308 | AM_RANGE(0x50, 0x50) AM_READ_PORT("P2") |
| 309 | 309 | 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) | |
| 311 | 311 | ADDRESS_MAP_END |
| 312 | 312 | |
| 313 | 313 | static ADDRESS_MAP_START( zerowing_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 319 | 319 | AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM") |
| 320 | 320 | AM_RANGE(0x88, 0x88) AM_READ_PORT("TJUMP") |
| 321 | 321 | 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) | |
| 323 | 323 | ADDRESS_MAP_END |
| 324 | 324 | |
| 325 | 325 | static ADDRESS_MAP_START( demonwld_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 326 | 326 | 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) | |
| 328 | 328 | AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP") |
| 329 | 329 | AM_RANGE(0x40, 0x40) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ |
| 330 | 330 | AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 336 | 336 | |
| 337 | 337 | static ADDRESS_MAP_START( outzone_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 338 | 338 | 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) | |
| 340 | 340 | AM_RANGE(0x04, 0x04) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ |
| 341 | 341 | AM_RANGE(0x08, 0x08) AM_READ_PORT("DSWA") |
| 342 | 342 | AM_RANGE(0x0c, 0x0c) AM_READ_PORT("DSWB") |
| r6428 | r6429 | |
| 1268 | 1268 | /* sound hardware */ |
| 1269 | 1269 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1270 | 1270 | |
| 1271 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1271 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1272 | 1272 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1273 | 1273 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1274 | 1274 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1308 | 1308 | /* sound hardware */ |
| 1309 | 1309 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1310 | 1310 | |
| 1311 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1311 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1312 | 1312 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1313 | 1313 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1314 | 1314 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1348 | 1348 | /* sound hardware */ |
| 1349 | 1349 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1350 | 1350 | |
| 1351 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1351 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1352 | 1352 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1353 | 1353 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1354 | 1354 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1388 | 1388 | /* sound hardware */ |
| 1389 | 1389 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1390 | 1390 | |
| 1391 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1391 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1392 | 1392 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1393 | 1393 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1394 | 1394 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1432 | 1432 | /* sound hardware */ |
| 1433 | 1433 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1434 | 1434 | |
| 1435 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1435 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1436 | 1436 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1437 | 1437 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1438 | 1438 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1466 | 1466 | /* sound hardware */ |
| 1467 | 1467 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1468 | 1468 | |
| 1469 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1469 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1470 | 1470 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1471 | 1471 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1472 | 1472 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1506 | 1506 | /* sound hardware */ |
| 1507 | 1507 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1508 | 1508 | |
| 1509 | MDRV_SOUND_ADD("ym", YM3812, 28000000/8) | |
| 1509 | MDRV_SOUND_ADD("ymsnd", YM3812, 28000000/8) | |
| 1510 | 1510 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1511 | 1511 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1512 | 1512 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1540 | 1540 | /* sound hardware */ |
| 1541 | 1541 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1542 | 1542 | |
| 1543 | MDRV_SOUND_ADD("ym", YM3812, XTAL_28MHz/8) /* verified on pcb */ | |
| 1543 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_28MHz/8) /* verified on pcb */ | |
| 1544 | 1544 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1545 | 1545 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1546 | 1546 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 661 | 661 | AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") |
| 662 | 662 | AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w) |
| 663 | 663 | 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) | |
| 665 | 665 | AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w) |
| 666 | 666 | AM_RANGE(0x140000, 0x140007) AM_READWRITE(K051937_word_r, K051937_word_w) |
| 667 | 667 | AM_RANGE(0x140400, 0x1407ff) AM_READWRITE(K051960_word_r, K051960_word_w) |
| r6428 | r6429 | |
| 1158 | 1158 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 1159 | 1159 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 1160 | 1160 | 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) | |
| 1162 | 1162 | ADDRESS_MAP_END |
| 1163 | 1163 | |
| 1164 | 1164 | |
| r6428 | r6429 | |
| 1168 | 1168 | AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */ |
| 1169 | 1169 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 1170 | 1170 | 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) | |
| 1172 | 1172 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_port_w) |
| 1173 | 1173 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("upd", tmnt_upd_start_w) |
| 1174 | 1174 | AM_RANGE(0xf000, 0xf000) AM_DEVREAD("upd", tmnt_upd_busy_r) |
| r6428 | r6429 | |
| 1178 | 1178 | static ADDRESS_MAP_START( punkshot_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1179 | 1179 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1180 | 1180 | 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) | |
| 1182 | 1182 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 1183 | 1183 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 1184 | 1184 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1187 | 1187 | static ADDRESS_MAP_START( lgtnfght_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1188 | 1188 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 1189 | 1189 | 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) | |
| 1191 | 1191 | AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 1192 | 1192 | ADDRESS_MAP_END |
| 1193 | 1193 | |
| r6428 | r6429 | |
| 1203 | 1203 | static ADDRESS_MAP_START( ssriders_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1204 | 1204 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 1205 | 1205 | 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) | |
| 1207 | 1207 | AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 1208 | 1208 | AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) |
| 1209 | 1209 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1212 | 1212 | static ADDRESS_MAP_START( thndrx2_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1213 | 1213 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 1214 | 1214 | 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) | |
| 1216 | 1216 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 1217 | 1217 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 1218 | 1218 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 2098 | 2098 | /* sound hardware */ |
| 2099 | 2099 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2100 | 2100 | |
| 2101 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2101 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2102 | 2102 | MDRV_SOUND_CONFIG(ym2151_interface_cbj) |
| 2103 | 2103 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 2104 | 2104 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 2133 | 2133 | /* sound hardware */ |
| 2134 | 2134 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2135 | 2135 | |
| 2136 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2136 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2137 | 2137 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 2138 | 2138 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| 2139 | 2139 | |
| r6428 | r6429 | |
| 2182 | 2182 | /* sound hardware */ |
| 2183 | 2183 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2184 | 2184 | |
| 2185 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2185 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2186 | 2186 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 2187 | 2187 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| 2188 | 2188 | |
| r6428 | r6429 | |
| 2229 | 2229 | /* sound hardware */ |
| 2230 | 2230 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2231 | 2231 | |
| 2232 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2232 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2233 | 2233 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 2234 | 2234 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| 2235 | 2235 | |
| r6428 | r6429 | |
| 2266 | 2266 | /* sound hardware */ |
| 2267 | 2267 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2268 | 2268 | |
| 2269 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2269 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2270 | 2270 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2271 | 2271 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2272 | 2272 | |
| r6428 | r6429 | |
| 2308 | 2308 | /* sound hardware */ |
| 2309 | 2309 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2310 | 2310 | |
| 2311 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2311 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2312 | 2312 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.70) |
| 2313 | 2313 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.70) |
| 2314 | 2314 | |
| r6428 | r6429 | |
| 2457 | 2457 | /* sound hardware */ |
| 2458 | 2458 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2459 | 2459 | |
| 2460 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2460 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2461 | 2461 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2462 | 2462 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2463 | 2463 | |
| r6428 | r6429 | |
| 2498 | 2498 | /* sound hardware */ |
| 2499 | 2499 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2500 | 2500 | |
| 2501 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2501 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2502 | 2502 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2503 | 2503 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2504 | 2504 | |
| r6428 | r6429 | |
| 2572 | 2572 | /* sound hardware */ |
| 2573 | 2573 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2574 | 2574 | |
| 2575 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) | |
| 2575 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) | |
| 2576 | 2576 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2577 | 2577 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 2578 | 2578 |
| r6428 | r6429 | |
|---|---|---|
| 85 | 85 | #include "includes/espial.h" |
| 86 | 86 | |
| 87 | 87 | |
| 88 | int percuss_hardware; | |
| 88 | static MACHINE_START( zodiack ) | |
| 89 | { | |
| 90 | espial_state *state = (espial_state *)machine->driver_data; | |
| 89 | 91 | |
| 92 | state_save_register_global(machine, state->percuss_hardware); | |
| 93 | MACHINE_START_CALL(espial); | |
| 94 | } | |
| 90 | 95 | |
| 91 | 96 | static MACHINE_RESET( zodiack ) |
| 92 | 97 | { |
| 93 | percuss_hardware = 0; | |
| 98 | espial_state *state = (espial_state *)machine->driver_data; | |
| 99 | ||
| 100 | state->percuss_hardware = 0; | |
| 94 | 101 | MACHINE_RESET_CALL(espial); |
| 95 | 102 | } |
| 96 | 103 | |
| 97 | 104 | static MACHINE_RESET( percuss ) |
| 98 | 105 | { |
| 99 | percuss_hardware = 1; | |
| 106 | espial_state *state = (espial_state *)machine->driver_data; | |
| 107 | ||
| 108 | state->percuss_hardware = 1; | |
| 100 | 109 | MACHINE_RESET_CALL(espial); |
| 101 | 110 | } |
| 102 | 111 | |
| r6428 | r6429 | |
| 122 | 131 | AM_RANGE(0x7000, 0x7000) AM_READWRITE(SMH_NOP,watchdog_reset_w) /* NOP??? */ |
| 123 | 132 | AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w) |
| 124 | 133 | 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) | |
| 128 | 137 | 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) | |
| 131 | 140 | AM_RANGE(0xc000, 0xcfff) AM_ROM |
| 132 | 141 | ADDRESS_MAP_END |
| 133 | 142 | |
| r6428 | r6429 | |
| 140 | 149 | |
| 141 | 150 | static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) |
| 142 | 151 | 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) | |
| 144 | 153 | ADDRESS_MAP_END |
| 145 | 154 | |
| 146 | 155 | |
| r6428 | r6429 | |
| 516 | 525 | |
| 517 | 526 | static MACHINE_DRIVER_START( zodiack ) |
| 518 | 527 | |
| 528 | /* driver data */ | |
| 529 | MDRV_DRIVER_DATA(espial_state) | |
| 530 | ||
| 519 | 531 | /* basic machine hardware */ |
| 520 | 532 | MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4.00 MHz??? */ |
| 521 | 533 | MDRV_CPU_PROGRAM_MAP(main_map) |
| r6428 | r6429 | |
| 527 | 539 | MDRV_CPU_VBLANK_INT_HACK(espial_sound_nmi_gen,8) /* IRQs are triggered by the main CPU */ |
| 528 | 540 | |
| 529 | 541 | MDRV_MACHINE_RESET(zodiack) |
| 530 | MDRV_MACHINE_START( | |
| 542 | MDRV_MACHINE_START(zodiack) | |
| 531 | 543 | |
| 532 | 544 | /* video hardware */ |
| 533 | 545 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
| 547 | 559 | /* sound hardware */ |
| 548 | 560 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 549 | 561 | |
| 550 | MDRV_SOUND_ADD("ay", AY8910, 1789750) | |
| 562 | MDRV_SOUND_ADD("aysnd", AY8910, 1789750) | |
| 551 | 563 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 552 | 564 | MACHINE_DRIVER_END |
| 553 | 565 |
| r6428 | r6429 | |
|---|---|---|
| 433 | 433 | AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") |
| 434 | 434 | AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") |
| 435 | 435 | 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 ? | |
| 437 | 437 | AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16) // palette ram |
| 438 | 438 | AM_RANGE(0x08c000, 0x08cfff) AM_RAM_WRITE(ddealer_vregs_w) AM_BASE(&ddealer_vregs) // palette ram |
| 439 | 439 | |
| r6428 | r6429 | |
| 599 | 599 | MDRV_TIMER_ADD_PERIODIC("coinsim", ddealer_mcu_sim, HZ(10000)) // not real, but for simulating the MCU |
| 600 | 600 | |
| 601 | 601 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 602 | MDRV_SOUND_ADD("ym", YM2203, 6000000 / 4)//guess | |
| 602 | MDRV_SOUND_ADD("ymsnd", YM2203, 6000000 / 4)//guess | |
| 603 | 603 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 604 | 604 | MACHINE_DRIVER_END |
| 605 | 605 |
| r6428 | r6429 | |
|---|---|---|
| 420 | 420 | |
| 421 | 421 | /* sound hardware */ |
| 422 | 422 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 423 | // MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */) | |
| 423 | // MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */) | |
| 424 | 424 | // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 425 | 425 | MACHINE_DRIVER_END |
| 426 | 426 |
| r6428 | r6429 | |
|---|---|---|
| 438 | 438 | AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( jingbell_leds_w ) |
| 439 | 439 | AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) |
| 440 | 440 | |
| 441 | AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ym", ym2413_w ) | |
| 441 | AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ymsnd", ym2413_w ) | |
| 442 | 442 | |
| 443 | 443 | AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w ) |
| 444 | 444 | |
| r6428 | r6429 | |
| 657 | 657 | |
| 658 | 658 | /* sound hardware */ |
| 659 | 659 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 660 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 660 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 661 | 661 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 662 | 662 | |
| 663 | 663 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_12MHz / 12) |
| r6428 | r6429 | |
|---|---|---|
| 375 | 375 | AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) |
| 376 | 376 | AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r,k007232_w) |
| 377 | 377 | 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) | |
| 379 | 379 | AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) |
| 380 | 380 | ADDRESS_MAP_END |
| 381 | 381 | |
| r6428 | r6429 | |
| 497 | 497 | /* sound hardware */ |
| 498 | 498 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 499 | 499 | |
| 500 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 500 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 501 | 501 | MDRV_SOUND_CONFIG(ym3812_config) |
| 502 | 502 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 503 | 503 |
| r6428 | r6429 | |
|---|---|---|
| 402 | 402 | |
| 403 | 403 | static ADDRESS_MAP_START( sngkace_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 404 | 404 | 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) | |
| 406 | 406 | AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w) |
| 407 | 407 | AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r) |
| 408 | 408 | AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w) |
| r6428 | r6429 | |
| 433 | 433 | static ADDRESS_MAP_START( gunbird_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 434 | 434 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 435 | 435 | 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) | |
| 437 | 437 | AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r) |
| 438 | 438 | AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w) |
| 439 | 439 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1213 | 1213 | /* sound hardware */ |
| 1214 | 1214 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1215 | 1215 | |
| 1216 | MDRV_SOUND_ADD("ym", YM2610, XTAL_32MHz/4) /* verified on pcb */ | |
| 1216 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_32MHz/4) /* verified on pcb */ | |
| 1217 | 1217 | MDRV_SOUND_CONFIG(sngkace_ym2610_interface) |
| 1218 | 1218 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.2) |
| 1219 | 1219 | MDRV_SOUND_ROUTE(0, "rspeaker", 1.2) |
| r6428 | r6429 | |
| 1264 | 1264 | /* sound hardware */ |
| 1265 | 1265 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1266 | 1266 | |
| 1267 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 1267 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 1268 | 1268 | MDRV_SOUND_CONFIG(gunbird_ym2610_interface) |
| 1269 | 1269 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.2) |
| 1270 | 1270 | MDRV_SOUND_ROUTE(0, "rspeaker", 1.2) |
| r6428 | r6429 | |
| 1377 | 1377 | ROM_LOAD( "u34.bin", 0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) ) |
| 1378 | 1378 | ROM_LOAD( "u35.bin", 0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) ) |
| 1379 | 1379 | |
| 1380 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples */ | |
| 1380 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples */ | |
| 1381 | 1381 | ROM_LOAD( "u68.bin", 0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) ) |
| 1382 | 1382 | |
| 1383 | 1383 | ROM_REGION( 0x040000, "user1", 0 ) /* Sprites LUT */ |
| r6428 | r6429 | |
| 1402 | 1402 | ROM_LOAD( "u34.bin", 0x000000, 0x100000, CRC(e6a75bd8) SHA1(1aa84ea54584b6c8b2846194b48bf6d2afa67fee) ) |
| 1403 | 1403 | ROM_LOAD( "u35.bin", 0x100000, 0x100000, CRC(c4ca0164) SHA1(c75422de2e0127cdc23d8c223b674a5bd85b00fb) ) |
| 1404 | 1404 | |
| 1405 | ROM_REGION( 0x100000, "ym", 0 ) /* Samples */ | |
| 1405 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* Samples */ | |
| 1406 | 1406 | ROM_LOAD( "u68.bin", 0x000000, 0x100000, CRC(9a7f6c34) SHA1(c549b209bce1d2c6eeb512db198ad20c3f5fb0ea) ) |
| 1407 | 1407 | |
| 1408 | 1408 | ROM_REGION( 0x040000, "user1", 0 ) /* Sprites LUT */ |
| r6428 | r6429 | |
| 1413 | 1413 | static DRIVER_INIT( sngkace ) |
| 1414 | 1414 | { |
| 1415 | 1415 | { |
| 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"); | |
| 1418 | 1418 | int i; |
| 1419 | 1419 | |
| 1420 | 1420 | /* Bit 6&7 of the samples are swapped. Naughty, naughty... */ |
| r6428 | r6429 | |
| 1485 | 1485 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layers 0 + 1 */ |
| 1486 | 1486 | ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) ) |
| 1487 | 1487 | |
| 1488 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM Samples */ | |
| 1488 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM Samples */ | |
| 1489 | 1489 | ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) ) |
| 1490 | 1490 | |
| 1491 | 1491 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* DELTA-T Samples */ |
| r6428 | r6429 | |
| 1515 | 1515 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layers 0 + 1 */ |
| 1516 | 1516 | ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) ) |
| 1517 | 1517 | |
| 1518 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM Samples */ | |
| 1518 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM Samples */ | |
| 1519 | 1519 | ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) ) |
| 1520 | 1520 | |
| 1521 | 1521 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* DELTA-T Samples */ |
| r6428 | r6429 | |
| 1545 | 1545 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layers 0 + 1 */ |
| 1546 | 1546 | ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(54494e6b) SHA1(f5d090d2d34d908b56b53a246def194929eba990) ) |
| 1547 | 1547 | |
| 1548 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM Samples */ | |
| 1548 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM Samples */ | |
| 1549 | 1549 | ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(9e07104d) SHA1(3bc54cb755bb3194197706965b532d62b48c4d12) ) |
| 1550 | 1550 | |
| 1551 | 1551 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* DELTA-T Samples */ |
| r6428 | r6429 | |
| 1576 | 1576 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layers 0 + 1 */ |
| 1577 | 1577 | ROM_LOAD( "u33.bin", 0x000000, 0x200000, CRC(4c8577f1) SHA1(d27043514632954a06667ac63f4a4e4a31870511) ) |
| 1578 | 1578 | |
| 1579 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM Samples */ | |
| 1579 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM Samples */ | |
| 1580 | 1580 | ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(51d73682) SHA1(562038d08e9a4389ffa39f3a659b2a29b94dc156) ) |
| 1581 | 1581 | |
| 1582 | 1582 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* DELTA-T Samples */ |
| r6428 | r6429 | |
| 1640 | 1640 | ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 0 + 1 */ |
| 1641 | 1641 | ROM_LOAD( "u34.bin", 0x000000, 0x200000, CRC(aaf83e23) SHA1(1c75d09ff42c0c215f8c66c699ca75688c95a05e) ) |
| 1642 | 1642 | |
| 1643 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM Samples */ | |
| 1643 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM Samples */ | |
| 1644 | 1644 | ROM_LOAD( "u56.bin", 0x000000, 0x100000, CRC(fe1312c2) SHA1(8339a96a0885518d6e22cb3bdb9c2f82d011d86d) ) |
| 1645 | 1645 | |
| 1646 | 1646 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* DELTA-T Samples */ |
| r6428 | r6429 | |
|---|---|---|
| 269 | 269 | |
| 270 | 270 | static ADDRESS_MAP_START( multchmp_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 271 | 271 | 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 | |
| 273 | 273 | AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) // M6295 |
| 274 | 274 | AM_RANGE(0x03, 0x03) AM_READ(esd16_sound_command_r ) // From Main CPU |
| 275 | 275 | AM_RANGE(0x04, 0x04) AM_WRITE(SMH_NOP ) // ? $00, $30 |
| r6428 | r6429 | |
| 555 | 555 | /* sound hardware */ |
| 556 | 556 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 557 | 557 | |
| 558 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 558 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 559 | 559 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 560 | 560 | |
| 561 | 561 | MDRV_SOUND_ADD("oki", OKIM6295, 1056000) |
| r6428 | r6429 | |
|---|---|---|
| 658 | 658 | { |
| 659 | 659 | case 0x14: return 0; /* ??? */ |
| 660 | 660 | default: |
| 661 | | |
| 661 | | |
| 662 | 662 | break; |
| 663 | 663 | } |
| 664 | 664 | |
| r6428 | r6429 | |
| 667 | 667 | { |
| 668 | 668 | case 0: return real3d_device_id; /* PCI Vendor ID & Device ID */ |
| 669 | 669 | default: |
| 670 | | |
| 670 | | |
| 671 | 671 | break; |
| 672 | 672 | } |
| 673 | 673 | break; |
| r6428 | r6429 | |
| 677 | 677 | { |
| 678 | 678 | case 0: return 0x00011000; /* PCI Vendor ID (0x1000 = LSI Logic) */ |
| 679 | 679 | default: |
| 680 | | |
| 680 | | |
| 681 | 681 | break; |
| 682 | 682 | } |
| 683 | 683 | break; |
| r6428 | r6429 | |
| 686 | 686 | { |
| 687 | 687 | case 0: return 0x182711db; /* PCI Vendor ID & Device ID, 315-6183 ??? */ |
| 688 | 688 | default: |
| 689 | | |
| 689 | | |
| 690 | 690 | break; |
| 691 | 691 | } |
| 692 | 692 | break; |
| 693 | 693 | |
| 694 | 694 | default: |
| 695 | | |
| 695 | | |
| 696 | 696 | break; |
| 697 | 697 | } |
| 698 | 698 | |
| r6428 | r6429 | |
| 717 | 717 | case 0x14: /* ??? */ |
| 718 | 718 | break; |
| 719 | 719 | default: |
| 720 | | |
| 720 | | |
| 721 | 721 | break; |
| 722 | 722 | } |
| 723 | 723 | break; |
| r6428 | r6429 | |
| 732 | 732 | case 0x04: /* ??? */ |
| 733 | 733 | break; |
| 734 | 734 | default: |
| 735 | | |
| 735 | | |
| 736 | 736 | break; |
| 737 | 737 | } |
| 738 | 738 | break; |
| r6428 | r6429 | |
| 747 | 747 | case 0x14/4: /* Base Address One (Memory) */ |
| 748 | 748 | break; |
| 749 | 749 | default: |
| 750 | | |
| 750 | | |
| 751 | 751 | break; |
| 752 | 752 | } |
| 753 | 753 | break; |
| r6428 | r6429 | |
| 758 | 758 | case 4: /* Base address ? (set to 0xC3000000) */ |
| 759 | 759 | break; |
| 760 | 760 | default: |
| 761 | | |
| 761 | | |
| 762 | 762 | break; |
| 763 | 763 | } |
| 764 | 764 | break; |
| 765 | 765 | |
| 766 | 766 | default: |
| 767 | | |
| 767 | | |
| 768 | 768 | break; |
| 769 | 769 | } |
| 770 | 770 | } |
| r6428 | r6429 | |
| 1114 | 1114 | } |
| 1115 | 1115 | return; |
| 1116 | 1116 | } |
| 1117 | | |
| 1117 | | |
| 1118 | 1118 | } |
| 1119 | 1119 | |
| 1120 | 1120 | static void real3d_dma_callback(running_machine *machine, UINT32 src, UINT32 dst, int length, int byteswap) |
| r6428 | r6429 | |
| 1143 | 1143 | case 0x9c: /* Unknown */ |
| 1144 | 1144 | break; |
| 1145 | 1145 | default: |
| 1146 | | |
| 1146 | | |
| 1147 | 1147 | break; |
| 1148 | 1148 | } |
| 1149 | 1149 | } |
| r6428 | r6429 | |
| 1383 | 1383 | break; |
| 1384 | 1384 | } |
| 1385 | 1385 | |
| 1386 | | |
| 1386 | | |
| 1387 | 1387 | return 0; |
| 1388 | 1388 | } |
| 1389 | 1389 | |
| r6428 | r6429 | |
| 1481 | 1481 | return; |
| 1482 | 1482 | } |
| 1483 | 1483 | |
| 1484 | | |
| 1484 | | |
| 1485 | 1485 | } |
| 1486 | 1486 | |
| 1487 | 1487 | static READ64_HANDLER( model3_sys_r ) |
| r6428 | r6429 | |
|---|---|---|
| 134 | 134 | AM_RANGE(0x5080, 0x5083) AM_DEVREAD("ppi8255", ppi8255_r) |
| 135 | 135 | AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0") |
| 136 | 136 | 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 | |
| 138 | 138 | AM_RANGE(0x50c0, 0x50c0) AM_WRITE(iqblock_irqack_w) |
| 139 | 139 | AM_RANGE(0x7000, 0x7fff) AM_READ(iqblock_bgvideoram_r) |
| 140 | 140 | AM_RANGE(0x8000, 0xffff) AM_READ(extrarom_r) |
| r6428 | r6429 | |
| 292 | 292 | /* sound hardware */ |
| 293 | 293 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 294 | 294 | |
| 295 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 295 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 296 | 296 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 297 | 297 | MACHINE_DRIVER_END |
| 298 | 298 |
| r6428 | r6429 | |
|---|---|---|
| 123 | 123 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 124 | 124 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 125 | 125 | 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) | |
| 127 | 127 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 128 | 128 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 129 | 129 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 314 | 314 | /* sound hardware */ |
| 315 | 315 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 316 | 316 | |
| 317 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 317 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 318 | 318 | MDRV_SOUND_CONFIG(ym2151_config) |
| 319 | 319 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 320 | 320 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 397 | 397 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 398 | 398 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 399 | 399 | 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) | |
| 401 | 401 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w) |
| 402 | 402 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r) |
| 403 | 403 | AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r) |
| r6428 | r6429 | |
| 476 | 476 | /* sound hardware */ |
| 477 | 477 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 478 | 478 | |
| 479 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 479 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 480 | 480 | MDRV_SOUND_ROUTE(0, "filter1l", 0.50) |
| 481 | 481 | MDRV_SOUND_ROUTE(0, "filter1r", 0.50) |
| 482 | 482 | MDRV_SOUND_ROUTE(1, "filter2l", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 155 | 155 | AM_RANGE(0xb000, 0xb000) AM_WRITENOP |
| 156 | 156 | AM_RANGE(0xb100, 0xb100) AM_WRITE(wallc_coin_counter_w) |
| 157 | 157 | 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) | |
| 160 | 160 | ADDRESS_MAP_END |
| 161 | 161 | |
| 162 | 162 | |
| r6428 | r6429 | |
| 298 | 298 | |
| 299 | 299 | /* sound hardware */ |
| 300 | 300 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 301 | MDRV_SOUND_ADD("ay", AY8910, 12288000 / 8) | |
| 301 | MDRV_SOUND_ADD("aysnd", AY8910, 12288000 / 8) | |
| 302 | 302 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 303 | 303 | MACHINE_DRIVER_END |
| 304 | 304 |
| r6428 | r6429 | |
|---|---|---|
| 84 | 84 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 85 | 85 | AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_WRITE(watchdog_reset_w) |
| 86 | 86 | 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) | |
| 88 | 88 | 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) | |
| 90 | 90 | ADDRESS_MAP_END |
| 91 | 91 | |
| 92 | 92 | static ADDRESS_MAP_START( dealer_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 387 | 387 | |
| 388 | 388 | /* sound hardware */ |
| 389 | 389 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 390 | MDRV_SOUND_ADD("ay", AY8910, 11000000/4) | |
| 390 | MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4) | |
| 391 | 391 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 392 | 392 | MACHINE_DRIVER_END |
| 393 | 393 | |
| r6428 | r6429 | |
| 415 | 415 | |
| 416 | 416 | /* sound hardware */ |
| 417 | 417 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 418 | MDRV_SOUND_ADD("ay", AY8910, 11000000/4) | |
| 418 | MDRV_SOUND_ADD("aysnd", AY8910, 11000000/4) | |
| 419 | 419 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 420 | 420 | MACHINE_DRIVER_END |
| 421 | 421 |
| r6428 | r6429 | |
|---|---|---|
| 120 | 120 | |
| 121 | 121 | AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) |
| 122 | 122 | |
| 123 | AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE( "ym", ym3812_w ) | |
| 123 | AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE( "ymsnd", ym3812_w ) | |
| 124 | 124 | |
| 125 | 125 | AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVWRITE( "oki", okim6295_w ) |
| 126 | 126 | |
| r6428 | r6429 | |
| 285 | 285 | /* sound hardware */ |
| 286 | 286 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 287 | 287 | |
| 288 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 288 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 289 | 289 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 290 | 290 | |
| 291 | 291 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_4_433619MHz / 4) |
| r6428 | r6429 | |
| 326 | 326 | /* sound hardware */ |
| 327 | 327 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 328 | 328 | |
| 329 | MDRV_SOUND_ADD("ym", YM3812, XTAL_3_579545MHz) | |
| 329 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_3_579545MHz) | |
| 330 | 330 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 331 | 331 | |
| 332 | 332 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_4_433619MHz / 4) |
| r6428 | r6429 | |
| 360 | 360 | /* sound hardware */ |
| 361 | 361 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 362 | 362 | |
| 363 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) // unknown clock | |
| 363 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) // unknown clock | |
| 364 | 364 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 365 | 365 | |
| 366 | 366 | // no OKI |
| r6428 | r6429 | |
|---|---|---|
| 492 | 492 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 493 | 493 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 494 | 494 | 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) | |
| 496 | 496 | AM_RANGE(0xa000, 0xa001) AM_WRITE(ml_sound_to_main_w) |
| 497 | 497 | AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r) |
| 498 | 498 | |
| r6428 | r6429 | |
| 753 | 753 | /* sound hardware */ |
| 754 | 754 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 755 | 755 | |
| 756 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 756 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 757 | 757 | MDRV_SOUND_CONFIG(ym2151_config) |
| 758 | 758 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 759 | 759 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | Bank Panic / Combat Hawk hardware | |
| 4 | Sega & Sanritsu | |
| 5 | 1984 - 1987 | |
| 3 | Bank Panic / Combat Hawk hardware | |
| 4 | Sega & Sanritsu | |
| 5 | 1984 - 1987 | |
| 6 | 6 | |
| 7 | PCB Layout (Comba Hawk) | |
| 8 | ----------------------- | |
| 7 | driver by Nicola Salmoria | |
| 9 | 8 | |
| 10 | C2-00170-A BANK PANIC (screened on PCB) | |
| 11 | 834-6381 COMBAT HAWK (sticker) | |
| 12 | SANRITSU VIDEO GAME - screened on PCB | |
| 13 | 9 | |
| 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 | ||
| 14 | 17 | |------------------------------------------------------------------------| |
| 15 | 18 | | PR-10902 PR-10900 | |
| 16 | 19 | | PAL (315-5073) | |
| r6428 | r6429 | |
| 34 | 37 | |15.468MHz EPR-10914 555 358 HA1377A| |
| 35 | 38 | |------------------------------------------------------------------------| |
| 36 | 39 | |
| 37 | Notes: | |
| 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 | |
| 44 | 47 | |
| 45 | ROMs | |
| 46 | ---- | |
| 48 | ROMs | |
| 49 | ---- | |
| 47 | 50 | |
| 48 | 51 | PR-10900 - ? |
| 49 | 52 | PR-10901 - 82S129 BIPOLAR PROM |
| r6428 | r6429 | |
| 57 | 60 | |
| 58 | 61 | --------------------------------------------------- |
| 59 | 62 | |
| 60 | Bank Panic memory map (preliminary) | |
| 61 | Similar to Appoooh | |
| 63 | Bank Panic memory map (preliminary) | |
| 64 | Similar to Appoooh | |
| 62 | 65 | |
| 63 | driver by Nicola Salmoria | |
| 64 | 66 | |
| 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 | |
| 65 | 73 | |
| 66 | 0000-dfff ROM | |
| 67 | e000-e7ff RAM | |
| 68 | f000-f3ff Video RAM #1 | |
| 69 | f400-f7ff Color RAM #1 | |
| 70 | f800-fbff Video RAM #2 | |
| 71 | fc00-ffff Color RAM #2 | |
| 74 | I/O | |
| 75 | read: | |
| 76 | 00 IN0 | |
| 77 | 01 IN1 | |
| 78 | 02 IN2 | |
| 79 | 04 DSW | |
| 72 | 80 | |
| 73 | I/O | |
| 74 | read: | |
| 75 | 00 IN0 | |
| 76 | 01 IN1 | |
| 77 | 02 IN2 | |
| 78 | 04 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 = ? | |
| 79 | 91 | |
| 80 | write: | |
| 81 | 00 SN76496 #1 | |
| 82 | 01 SN76496 #2 | |
| 83 | 02 SN76496 #3 | |
| 84 | 05 horizontal scroll | |
| 85 | 07 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 | ||
| 91 | 92 | ***************************************************************************/ |
| 92 | 93 | |
| 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 | ||
| 98 | 94 | #include "driver.h" |
| 99 | 95 | #include "cpu/z80/z80.h" |
| 100 | 96 | #include "sound/sn76496.h" |
| 97 | #include "bankp.h" | |
| 101 | 98 | |
| 102 | 99 | |
| 103 | extern UINT8 *bankp_videoram2; | |
| 104 | extern UINT8 *bankp_colorram2; | |
| 100 | /************************************* | |
| 101 | * | |
| 102 | * Address maps | |
| 103 | * | |
| 104 | *************************************/ | |
| 105 | 105 | |
| 106 | extern WRITE8_HANDLER( bankp_videoram_w ); | |
| 107 | extern WRITE8_HANDLER( bankp_colorram_w ); | |
| 108 | extern WRITE8_HANDLER( bankp_videoram2_w ); | |
| 109 | extern WRITE8_HANDLER( bankp_colorram2_w ); | |
| 110 | extern WRITE8_HANDLER( bankp_scroll_w ); | |
| 111 | extern WRITE8_HANDLER( bankp_out_w ); | |
| 112 | ||
| 113 | extern PALETTE_INIT( bankp ); | |
| 114 | extern VIDEO_START( bankp ); | |
| 115 | extern VIDEO_UPDATE( bankp ); | |
| 116 | ||
| 117 | ||
| 118 | ||
| 119 | 106 | static ADDRESS_MAP_START( bankp_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 120 | 107 | AM_RANGE(0x0000, 0xdfff) AM_ROM |
| 121 | 108 | 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) | |
| 126 | 113 | ADDRESS_MAP_END |
| 127 | 114 | |
| 128 | 115 | static ADDRESS_MAP_START( bankp_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 136 | 123 | ADDRESS_MAP_END |
| 137 | 124 | |
| 138 | 125 | |
| 126 | /************************************* | |
| 127 | * | |
| 128 | * Input ports | |
| 129 | * | |
| 130 | *************************************/ | |
| 139 | 131 | |
| 140 | 132 | static INPUT_PORTS_START( bankp ) |
| 141 | 133 | PORT_START("IN0") |
| r6428 | r6429 | |
| 226 | 218 | PORT_DIPSETTING( 0x80, "90 Units" ) |
| 227 | 219 | INPUT_PORTS_END |
| 228 | 220 | |
| 221 | ||
| 222 | /************************************* | |
| 223 | * | |
| 224 | * Graphics definitions | |
| 225 | * | |
| 226 | *************************************/ | |
| 227 | ||
| 229 | 228 | static const gfx_layout charlayout = |
| 230 | 229 | { |
| 231 | 230 | 8,8, /* 8*8 characters */ |
| r6428 | r6429 | |
| 254 | 253 | |
| 255 | 254 | |
| 256 | 255 | |
| 256 | /************************************* | |
| 257 | * | |
| 258 | * Machine driver | |
| 259 | * | |
| 260 | *************************************/ | |
| 261 | ||
| 262 | static 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 | ||
| 257 | 270 | static MACHINE_DRIVER_START( bankp ) |
| 258 | 271 | |
| 272 | /* driver data */ | |
| 273 | MDRV_DRIVER_DATA(bankp_state) | |
| 274 | ||
| 259 | 275 | /* basic machine hardware */ |
| 260 | ||
| 261 | 276 | MDRV_CPU_ADD("maincpu", Z80, BANKP_CPU_CLOCK) |
| 262 | 277 | MDRV_CPU_PROGRAM_MAP(bankp_map) |
| 263 | 278 | MDRV_CPU_IO_MAP(bankp_io_map) |
| 264 | 279 | MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) |
| 265 | 280 | |
| 281 | MDRV_MACHINE_RESET(bankp) | |
| 282 | ||
| 266 | 283 | /* video hardware */ |
| 267 | 284 | MDRV_SCREEN_ADD("screen", RASTER) |
| 268 | 285 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 292 | 309 | |
| 293 | 310 | |
| 294 | 311 | |
| 295 | /*************************************************************************** | |
| 312 | /************************************* | |
| 313 | * | |
| 314 | * ROM definition(s) | |
| 315 | * | |
| 316 | *************************************/ | |
| 296 | 317 | |
| 297 | Game driver(s) | |
| 298 | ||
| 299 | ***************************************************************************/ | |
| 300 | ||
| 301 | 318 | ROM_START( bankp ) |
| 302 | 319 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 303 | 320 | ROM_LOAD( "epr-6175.7e", 0x0000, 0x4000, CRC(044552b8) SHA1(8d50ba062483d4789cfd3ed86cea53dff0ff6968) ) |
| r6428 | r6429 | |
| 358 | 375 | ROM_END |
| 359 | 376 | |
| 360 | 377 | |
| 361 | GAME( 1984, bankp, 0, bankp, bankp, 0, ROT0, "[Sanritsu] Sega", "Bank Panic", 0 ) | |
| 362 | GAME( 1987, combh, 0, bankp, combh, 0, ROT270, "Sega / Sanritsu", "Combat Hawk", 0 ) | |
| 378 | /************************************* | |
| 379 | * | |
| 380 | * Game driver(s) | |
| 381 | * | |
| 382 | *************************************/ | |
| 383 | ||
| 384 | GAME( 1984, bankp, 0, bankp, bankp, 0, ROT0, "[Sanritsu] Sega", "Bank Panic", GAME_SUPPORTS_SAVE ) | |
| 385 | GAME( 1987, combh, 0, bankp, combh, 0, ROT270, "Sega / Sanritsu", "Combat Hawk", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 68 | 68 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 69 | 69 | // AM_RANGE(0x00, 0x00) AM_WRITENOP |
| 70 | 70 | 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) | |
| 73 | 73 | AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") |
| 74 | 74 | AM_RANGE(0x90, 0x96) AM_WRITE(pastelg_blitter_w) |
| 75 | 75 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r, nb1413m3_inputportsel_w) |
| r6428 | r6429 | |
| 117 | 117 | |
| 118 | 118 | static ADDRESS_MAP_START( threeds_io_map, ADDRESS_SPACE_IO, 8 ) |
| 119 | 119 | 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) | |
| 122 | 122 | AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") AM_WRITE( threeds_romsel_w ) |
| 123 | 123 | AM_RANGE(0xf0, 0xf6) AM_WRITE(pastelg_blitter_w) |
| 124 | 124 | AM_RANGE(0xa0, 0xa0) AM_READWRITE(threeds_inputport1_r, threeds_inputportsel_w) |
| r6428 | r6429 | |
| 426 | 426 | /* sound hardware */ |
| 427 | 427 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 428 | 428 | |
| 429 | MDRV_SOUND_ADD("ay", AY8910, 1250000) | |
| 429 | MDRV_SOUND_ADD("aysnd", AY8910, 1250000) | |
| 430 | 430 | MDRV_SOUND_CONFIG(ay8910_config) |
| 431 | 431 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 432 | 432 | |
| r6428 | r6429 | |
| 485 | 485 | /* sound hardware */ |
| 486 | 486 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 487 | 487 | |
| 488 | MDRV_SOUND_ADD("ay", AY8910, 1250000) | |
| 488 | MDRV_SOUND_ADD("aysnd", AY8910, 1250000) | |
| 489 | 489 | MDRV_SOUND_CONFIG(ay8910_config) |
| 490 | 490 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) |
| 491 | 491 |
| r6428 | r6429 | |
|---|---|---|
| 299 | 299 | } |
| 300 | 300 | |
| 301 | 301 | |
| 302 | ||
| 302 | 303 | /*************************************************************************** |
| 303 | 304 | |
| 304 | 305 | |
| r6428 | r6429 | |
| 312 | 313 | AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Object RAM |
| 313 | 314 | AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM |
| 314 | 315 | AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM |
| 315 | AM_RANGE(0x200000, 0x23ffff) AM_RA | |
| 316 | AM_RANGE(0x200000, 0x23ffff) AM_READ | |
| 316 | 317 | AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16) // Palette |
| 317 | 318 | AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg) // Foreground |
| 318 | 319 | AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg) // Background |
| r6428 | r6429 | |
| 369 | 370 | AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Object RAM |
| 370 | 371 | AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM |
| 371 | 372 | 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) | |
| 373 | 375 | AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16 ) // Palette |
| 374 | 376 | AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg ) // Foreground |
| 375 | 377 | AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg ) // Background |
| r6428 | r6429 | |
| 414 | 416 | AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Object RAM |
| 415 | 417 | AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM |
| 416 | 418 | AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM |
| 417 | AM_RANGE(0x200000, 0x23ffff) AM_RA | |
| 419 | AM_RANGE(0x200000, 0x23ffff) AM_READ | |
| 418 | 420 | AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16) // Palette |
| 419 | 421 | AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_BASE(&tetrisp2_vram_fg) // Foreground |
| 420 | 422 | AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_BASE(&tetrisp2_vram_bg) // Background |
| r6428 | r6429 | |
| 448 | 450 | AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Object RAM |
| 449 | 451 | AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM |
| 450 | 452 | AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM |
| 451 | AM_RANGE(0x200000, 0x23ffff) AM_RA | |
| 453 | AM_RANGE(0x200000, 0x23ffff) AM_READ | |
| 452 | 454 | AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16) // Palette |
| 453 | 455 | AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line |
| 454 | 456 | AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_BASE(&tetrisp2_vram_rot) // Rotation |
| r6428 | r6429 | |
| 482 | 484 | AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Object RAM |
| 483 | 485 | AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM |
| 484 | 486 | AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM |
| 485 | AM_RANGE(0x200000, 0x23ffff) AM_RA | |
| 487 | AM_RANGE(0x200000, 0x23ffff) AM_READ | |
| 486 | 488 | AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_BASE(&paletteram16) // Palette |
| 487 | 489 | // AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line |
| 488 | 490 | AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_BASE(&tetrisp2_vram_rot) // Rotation |
| r6428 | r6429 | |
| 1003 | 1005 | 16*16*8 |
| 1004 | 1006 | }; |
| 1005 | 1007 | |
| 1008 | ||
| 1009 | /* sprites are contained in 256x256 "tiles" */ | |
| 1010 | static GFXLAYOUT_RAW( spritelayout, 8, 256, 256, 256*8, 256*256*8 ) | |
| 1011 | ||
| 1012 | ||
| 1006 | 1013 | static GFXDECODE_START( tetrisp2 ) |
| 1007 | GFXDECODE_ENTRY( "gfx1", 0, layout | |
| 1014 | GFXDECODE_ENTRY( "gfx1", 0, spritelayout | |
| 1008 | 1015 | GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x1000, 0x10 ) // [1] Background |
| 1009 | 1016 | GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x2000, 0x10 ) // [2] Rotation |
| 1010 | 1017 | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x6000, 0x10 ) // [3] Foreground |
| 1011 | 1018 | GFXDECODE_END |
| 1012 | 1019 | |
| 1013 | 1020 | static GFXDECODE_START( rocknms ) |
| 1014 | GFXDECODE_ENTRY( "gfx1", 0, layout | |
| 1021 | GFXDECODE_ENTRY( "gfx1", 0, spritelayout | |
| 1015 | 1022 | GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x1000, 0x10 ) // [1] Background |
| 1016 | 1023 | GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x2000, 0x10 ) // [2] Rotation |
| 1017 | 1024 | GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x6000, 0x10 ) // [3] Foreground |
| 1018 | GFXDECODE_ENTRY( "gfx5", 0, layout | |
| 1025 | GFXDECODE_ENTRY( "gfx5", 0, spritelayout | |
| 1019 | 1026 | GFXDECODE_ENTRY( "gfx6", 0, layout_16x16x8, 0x9000, 0x10 ) // [1] Background |
| 1020 | 1027 | GFXDECODE_ENTRY( "gfx7", 0, layout_16x16x8, 0xa000, 0x10 ) // [2] Rotation |
| 1021 | 1028 | GFXDECODE_ENTRY( "gfx8", 0, layout_8x8x8, 0xe000, 0x10 ) // [3] Foreground |
| r6428 | r6429 | |
| 1435 | 1442 | ROM_LOAD16_BYTE( "1.1", 0x00000, 0x40000, CRC(45acea25) SHA1(f2f2e78be261c3d8c0145a639bc3771f0588401d) ) // 1xxxxxxxxxxxxxxxxx = 0xFF |
| 1436 | 1443 | ROM_LOAD16_BYTE( "3.3", 0x00001, 0x40000, CRC(0754d96a) SHA1(1da44994e8bcfd8832755e298c0125b38cfdd16e) ) // 1xxxxxxxxxxxxxxxxx = 0xFF |
| 1437 | 1444 | |
| 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. */ | |
| 1440 | 1447 | |
| 1441 | 1448 | ROM_REGION( 0x400000, "gfx2", 0 ) // 16x16x8 (Background) |
| 1442 | 1449 | ROM_LOAD( "mr97006-02.5", 0x000000, 0x200000, CRC(4793f84e) SHA1(05acba6cc8a527a6050af79a460b08c4676287aa) ) |
| r6428 | r6429 | |
|---|---|---|
| 836 | 836 | static ADDRESS_MAP_START( alpha68k_I_s_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 837 | 837 | AM_RANGE(0x0000, 0x9fff) AM_ROM |
| 838 | 838 | 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) | |
| 841 | 841 | AM_RANGE(0xf000, 0xf7ff) AM_RAM |
| 842 | 842 | AM_RANGE(0xfc00, 0xfc00) AM_RAM // unknown port |
| 843 | 843 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 867 | 867 | |
| 868 | 868 | static ADDRESS_MAP_START( jongbou_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 869 | 869 | 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) | |
| 872 | 872 | AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_clear_w) |
| 873 | 873 | AM_RANGE(0x06, 0x06) AM_WRITENOP |
| 874 | 874 | ADDRESS_MAP_END |
| 875 | 875 | |
| 876 | 876 | static ADDRESS_MAP_START( tnextspc_sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 877 | 877 | 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) | |
| 880 | 880 | AM_RANGE(0x3b, 0x3b) AM_READNOP // unknown read port |
| 881 | 881 | AM_RANGE(0x3d, 0x3d) AM_READNOP // unknown read port |
| 882 | 882 | AM_RANGE(0x7b, 0x7b) AM_READNOP // unknown read port |
| r6428 | r6429 | |
| 2040 | 2040 | /* sound hardware */ |
| 2041 | 2041 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2042 | 2042 | |
| 2043 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 2043 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 2044 | 2044 | MDRV_SOUND_CONFIG(ay8910_config) |
| 2045 | 2045 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.65) |
| 2046 | 2046 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2073 | 2073 | /* sound hardware */ |
| 2074 | 2074 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2075 | 2075 | |
| 2076 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 2076 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 2077 | 2077 | MDRV_SOUND_CONFIG(ym3812_config) |
| 2078 | 2078 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 2079 | 2079 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2280 | 2280 | /* sound hardware */ |
| 2281 | 2281 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2282 | 2282 | |
| 2283 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 2283 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 2284 | 2284 | MDRV_SOUND_CONFIG(ym3812_config) |
| 2285 | 2285 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 2286 | 2286 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 939 | 939 | device_reset(cputag_get_cpu(machine, "maincpu")); |
| 940 | 940 | } |
| 941 | 941 | |
| 942 | static UINT8 *galgames_eeprom_data = NULL; | |
| 943 | ||
| 944 | 942 | static MACHINE_DRIVER_START( galgames ) |
| 945 | 943 | MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) |
| 946 | 944 | MDRV_CPU_PROGRAM_MAP(galgames_map) |
| 947 | 945 | MDRV_CPU_VBLANK_INT_HACK(galgames_interrupt, 1+20) // ?? |
| 948 | 946 | |
| 949 | 947 | // 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) | |
| 955 | 953 | |
| 956 | 954 | MDRV_MACHINE_RESET( galgames ) |
| 957 | 955 |
| r6428 | r6429 | |
|---|---|---|
| 138 | 138 | /* sound hardware */ |
| 139 | 139 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 140 | 140 | |
| 141 | MDRV_SOUND_ADD("ay", AY8910, 12000000/6) | |
| 141 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6) | |
| 142 | 142 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 143 | 143 | MACHINE_DRIVER_END |
| 144 | 144 |
| r6428 | r6429 | |
|---|---|---|
| 635 | 635 | |
| 636 | 636 | static ADDRESS_MAP_START( ozon1_io_map, ADDRESS_SPACE_IO, 8 ) |
| 637 | 637 | 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) | |
| 639 | 639 | ADDRESS_MAP_END |
| 640 | 640 | |
| 641 | 641 | static ADDRESS_MAP_START( drivfrcg, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 686 | 686 | |
| 687 | 687 | static ADDRESS_MAP_START( bongo_io, ADDRESS_SPACE_IO, 8 ) |
| 688 | 688 | 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) | |
| 691 | 691 | ADDRESS_MAP_END |
| 692 | 692 | |
| 693 | 693 | |
| r6428 | r6429 | |
| 875 | 875 | static ADDRESS_MAP_START( hexpoola_io, ADDRESS_SPACE_IO, 8 ) |
| 876 | 876 | AM_RANGE(0x00, 0x00) AM_READNOP |
| 877 | 877 | 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) | |
| 879 | 879 | AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE") |
| 880 | 880 | ADDRESS_MAP_END |
| 881 | 881 | |
| r6428 | r6429 | |
| 2258 | 2258 | MDRV_PALETTE_LENGTH(32) |
| 2259 | 2259 | |
| 2260 | 2260 | MDRV_VIDEO_START(galaxold_plain) |
| 2261 | MDRV_SOUND_ADD("ay", AY8910, PIXEL_CLOCK/4) | |
| 2261 | MDRV_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4) | |
| 2262 | 2262 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2263 | 2263 | MACHINE_DRIVER_END |
| 2264 | 2264 | |
| r6428 | r6429 | |
| 2302 | 2302 | MDRV_VIDEO_START(bongo) |
| 2303 | 2303 | MDRV_VIDEO_UPDATE(galaxold) |
| 2304 | 2304 | |
| 2305 | MDRV_SOUND_ADD("ay", AY8910, PIXEL_CLOCK/4) | |
| 2305 | MDRV_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4) | |
| 2306 | 2306 | MDRV_SOUND_CONFIG(bongo_ay8910_interface) |
| 2307 | 2307 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2308 | 2308 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 2447 | 2447 | |
| 2448 | 2448 | /* sound hardware */ |
| 2449 | 2449 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 2450 | MDRV_SOUND_ADD("sn", SN76496, PIXEL_CLOCK/2) | |
| 2450 | MDRV_SOUND_ADD("snsnd", SN76496, PIXEL_CLOCK/2) | |
| 2451 | 2451 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 2452 | 2452 | MACHINE_DRIVER_END |
| 2453 | 2453 |
| r6428 | r6429 | |
|---|---|---|
| 494 | 494 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 495 | 495 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 496 | 496 | 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) | |
| 498 | 498 | AM_RANGE(0x1810, 0x1810) AM_READWRITE(atarigen_6502_sound_r, atarigen_6502_sound_w) |
| 499 | 499 | AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r) |
| 500 | 500 | AM_RANGE(0x1824, 0x1825) AM_WRITE(led_w) |
| r6428 | r6429 | |
| 779 | 779 | /* sound hardware */ |
| 780 | 780 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 781 | 781 | |
| 782 | MDRV_SOUND_ADD("ym", YM2151, ATARI_CLOCK_14MHz/4) | |
| 782 | MDRV_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4) | |
| 783 | 783 | MDRV_SOUND_CONFIG(ym2151_config) |
| 784 | 784 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 785 | 785 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 153 | 153 | |
| 154 | 154 | static ADDRESS_MAP_START( mightguy_audio_io_map, ADDRESS_SPACE_IO, 8 ) |
| 155 | 155 | 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) | |
| 157 | 157 | AM_RANGE(0x02, 0x02) AM_WRITENOP /* 1412M2? */ |
| 158 | 158 | AM_RANGE(0x03, 0x03) AM_WRITENOP /* 1412M2? */ |
| 159 | 159 | AM_RANGE(0x03, 0x03) AM_READ(kludge) /* 1412M2? */ |
| r6428 | r6429 | |
| 456 | 456 | /* sound hardware */ |
| 457 | 457 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 458 | 458 | |
| 459 | MDRV_SOUND_ADD("ym", YM3526, 4000000) | |
| 459 | MDRV_SOUND_ADD("ymsnd", YM3526, 4000000) | |
| 460 | 460 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 461 | 461 | MACHINE_DRIVER_END |
| 462 | 462 |
| r6428 | r6429 | |
|---|---|---|
| 92 | 92 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 93 | 93 | AM_RANGE(0x00, 0x00) AM_READWRITE(hanaawas_input_port_0_r, hanaawas_inputs_mux_w) |
| 94 | 94 | 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) | |
| 97 | 97 | ADDRESS_MAP_END |
| 98 | 98 | |
| 99 | 99 | static INPUT_PORTS_START( hanaawas ) |
| r6428 | r6429 | |
| 218 | 218 | /* sound hardware */ |
| 219 | 219 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 220 | 220 | |
| 221 | MDRV_SOUND_ADD("ay", AY8910, 18432000/12) | |
| 221 | MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12) | |
| 222 | 222 | MDRV_SOUND_CONFIG(ay8910_config) |
| 223 | 223 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 224 | 224 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 164 | 164 | /* |
| 165 | 165 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 166 | 166 | |
| 167 | MDRV_SOUND_ADD("ay", AY8912, 1500000) | |
| 167 | MDRV_SOUND_ADD("aysnd", AY8912, 1500000) | |
| 168 | 168 | MDRV_SOUND_CONFIG(ay8912_interface) |
| 169 | 169 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 170 | 170 | */ |
| r6428 | r6429 | |
|---|---|---|
| 79 | 79 | AM_RANGE(0x2041, 0x2041) AM_DEVWRITE("crtc", mc6845_register_w) |
| 80 | 80 | AM_RANGE(0x2060, 0x2060) AM_WRITE(usgames_rombank_w) |
| 81 | 81 | 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) | |
| 83 | 83 | AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(usgames_charram_w) AM_BASE(&usgames_charram) |
| 84 | 84 | AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(usgames_videoram_w) AM_BASE(&usgames_videoram) |
| 85 | 85 | AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM) |
| r6428 | r6429 | |
| 89 | 89 | |
| 90 | 90 | static ADDRESS_MAP_START( usg185_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 91 | 91 | 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) | |
| 93 | 93 | AM_RANGE(0x2400, 0x2400) AM_READ_PORT("DSW") |
| 94 | 94 | AM_RANGE(0x2410, 0x2410) AM_READ_PORT("INPUTS") |
| 95 | 95 | AM_RANGE(0x2420, 0x2420) AM_WRITE(lamps1_w) |
| r6428 | r6429 | |
| 266 | 266 | /* sound hardware */ |
| 267 | 267 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 268 | 268 | |
| 269 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 269 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 270 | 270 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 271 | 271 | MACHINE_DRIVER_END |
| 272 | 272 |
| r6428 | r6429 | |
|---|---|---|
| 536 | 536 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 537 | 537 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 538 | 538 | 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) | |
| 540 | 540 | AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 541 | 541 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 542 | 542 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w) |
| r6428 | r6429 | |
| 741 | 741 | /* sound hardware */ |
| 742 | 742 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 743 | 743 | |
| 744 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CPU_CLOCK ) /* 4 MHz */ | |
| 744 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK ) /* 4 MHz */ | |
| 745 | 745 | MDRV_SOUND_CONFIG(ym2151_config) |
| 746 | 746 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 747 | 747 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| r6428 | r6429 | |
| 793 | 793 | /* sound hardware */ |
| 794 | 794 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 795 | 795 | |
| 796 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CPU_CLOCK ) | |
| 796 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK ) | |
| 797 | 797 | MDRV_SOUND_CONFIG(ym2151_config) |
| 798 | 798 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 799 | 799 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| r6428 | r6429 | |
|---|---|---|
| 214 | 214 | static ADDRESS_MAP_START( bssoccer_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 215 | 215 | AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM |
| 216 | 216 | 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 | |
| 218 | 218 | AM_RANGE(0xfc00, 0xfc00) AM_READ(soundlatch_r) // From Main CPU |
| 219 | 219 | AM_RANGE(0xfd00, 0xfd00) AM_WRITE(soundlatch2_w) // To PCM Z80 #1 |
| 220 | 220 | AM_RANGE(0xfe00, 0xfe00) AM_WRITE(soundlatch3_w) // To PCM Z80 #2 |
| r6428 | r6429 | |
| 227 | 227 | static ADDRESS_MAP_START( uballoon_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 228 | 228 | AM_RANGE(0x0000, 0xefff) AM_ROM // ROM |
| 229 | 229 | 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 | |
| 231 | 231 | AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_r, soundlatch2_w) // To PCM Z80 |
| 232 | 232 | ADDRESS_MAP_END |
| 233 | 233 | |
| r6428 | r6429 | |
| 238 | 238 | static ADDRESS_MAP_START( sunaq_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 239 | 239 | AM_RANGE(0x0000, 0xe82f) AM_ROM // ROM |
| 240 | 240 | 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 | |
| 242 | 242 | AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_r, soundlatch2_w) // To PCM Z80 |
| 243 | 243 | ADDRESS_MAP_END |
| 244 | 244 | |
| r6428 | r6429 | |
| 248 | 248 | |
| 249 | 249 | static ADDRESS_MAP_START( bestbest_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 250 | 250 | 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 | |
| 253 | 253 | AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // RAM |
| 254 | 254 | AM_RANGE( 0xf000, 0xf000 ) AM_WRITE( soundlatch2_w ) // To PCM Z80 |
| 255 | 255 | AM_RANGE( 0xf800, 0xf800 ) AM_READ ( soundlatch_r ) // From Main CPU |
| r6428 | r6429 | |
| 796 | 796 | /* sound hardware */ |
| 797 | 797 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 798 | 798 | |
| 799 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 799 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 800 | 800 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 801 | 801 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.20) |
| 802 | 802 | |
| r6428 | r6429 | |
| 856 | 856 | /* sound hardware */ |
| 857 | 857 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 858 | 858 | |
| 859 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 859 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 860 | 860 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 861 | 861 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 862 | 862 | |
| r6428 | r6429 | |
| 905 | 905 | /* sound hardware */ |
| 906 | 906 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 907 | 907 | |
| 908 | MDRV_SOUND_ADD("ym", YM2151, 14318000/4) | |
| 908 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318000/4) | |
| 909 | 909 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 910 | 910 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 911 | 911 | |
| r6428 | r6429 | |
| 977 | 977 | /* sound hardware */ |
| 978 | 978 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 979 | 979 | |
| 980 | MDRV_SOUND_ADD("ay", AY8910, 24000000/16) | |
| 980 | MDRV_SOUND_ADD("aysnd", AY8910, 24000000/16) | |
| 981 | 981 | MDRV_SOUND_CONFIG(bestbest_ay8910_interface) |
| 982 | 982 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 983 | 983 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 984 | 984 | |
| 985 | MDRV_SOUND_ADD("ym", YM3526, 24000000/8) | |
| 985 | MDRV_SOUND_ADD("ymsnd", YM3526, 24000000/8) | |
| 986 | 986 | MDRV_SOUND_CONFIG(bestbest_ym3526_interface) |
| 987 | 987 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 988 | 988 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 417 | 417 | static ADDRESS_MAP_START( shadfrce_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 418 | 418 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 419 | 419 | 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) | |
| 421 | 421 | AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 422 | 422 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r) |
| 423 | 423 | AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("oki", oki_bankswitch_w) |
| r6428 | r6429 | |
| 593 | 593 | /* sound hardware */ |
| 594 | 594 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 595 | 595 | |
| 596 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 596 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 597 | 597 | MDRV_SOUND_CONFIG(ym2151_config) |
| 598 | 598 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 599 | 599 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 368 | 368 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 369 | 369 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 370 | 370 | 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) | |
| 372 | 372 | AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w) |
| 373 | 373 | AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP |
| 374 | 374 | AM_RANGE(0xce00, 0xce00) AM_WRITENOP |
| r6428 | r6429 | |
| 463 | 463 | /* sound hardware */ |
| 464 | 464 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 465 | 465 | |
| 466 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 466 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 467 | 467 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) /* YM2149 really */ |
| 468 | 468 | |
| 469 | 469 | MDRV_SOUND_ADD("msm", MSM5232, 8000000/4) |
| r6428 | r6429 | |
|---|---|---|
| 225 | 225 | |
| 226 | 226 | static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 ) |
| 227 | 227 | 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) | |
| 230 | 230 | //AM_RANGE(0x56, 0x56) AM_WRITENOP |
| 231 | 231 | ADDRESS_MAP_END |
| 232 | 232 | |
| r6428 | r6429 | |
| 527 | 527 | /* sound hardware */ |
| 528 | 528 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 529 | 529 | |
| 530 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 530 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 531 | 531 | MDRV_SOUND_CONFIG(ay8910_config) |
| 532 | 532 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 533 | 533 | |
| r6428 | r6429 | |
| 563 | 563 | /* sound hardware */ |
| 564 | 564 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 565 | 565 | |
| 566 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 566 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 567 | 567 | MDRV_SOUND_CONFIG(ay8910_config) |
| 568 | 568 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 569 | 569 | |
| r6428 | r6429 | |
| 618 | 618 | /* sound hardware */ |
| 619 | 619 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 620 | 620 | |
| 621 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 621 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 622 | 622 | MDRV_SOUND_CONFIG(ay8910_config) |
| 623 | 623 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 624 | 624 | |
| r6428 | r6429 | |
| 629 | 629 | |
| 630 | 630 | static MACHINE_DRIVER_START( squaitsa ) |
| 631 | 631 | MDRV_IMPORT_FROM( botanic ) |
| 632 | MDRV_SOUND_MODIFY("ay") | |
| 632 | MDRV_SOUND_MODIFY("aysnd") | |
| 633 | 633 | MDRV_SOUND_CONFIG(ay8910_dial_config) |
| 634 | 634 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 635 | 635 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 214 | 214 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 215 | 215 | AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w) |
| 216 | 216 | 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) | |
| 218 | 218 | ADDRESS_MAP_END |
| 219 | 219 | |
| 220 | 220 | /****************************************************************************** |
| r6428 | r6429 | |
| 380 | 380 | /* sound hardware */ |
| 381 | 381 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 382 | 382 | |
| 383 | MDRV_SOUND_ADD("ym", YM2610, 32000000/4) | |
| 383 | MDRV_SOUND_ADD("ymsnd", YM2610, 32000000/4) | |
| 384 | 384 | MDRV_SOUND_CONFIG(ym2610_config) |
| 385 | 385 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 386 | 386 | MDRV_SOUND_ROUTE(1, "mono", 0.75) |
| r6428 | r6429 | |
| 415 | 415 | ROM_LOAD16_WORD_SWAP( "lhmn5kua.u36", 0x0400000, 0x400000, CRC(1ac4402a) SHA1(c15acc6fce4fe0b54e92d14c31a1bd78acf2c8fc) ) |
| 416 | 416 | ROM_LOAD16_WORD_SWAP( "lhmn5ku9.u38", 0x0800000, 0x400000, CRC(e4e9b1b6) SHA1(4d4ad85fbe6a442d4f8cafad748bcae4af6245b7) ) |
| 417 | 417 | |
| 418 | ROM_REGION( 0x0400000, "ym", 0 ) // adpcm data | |
| 418 | ROM_REGION( 0x0400000, "ymsnd", 0 ) // adpcm data | |
| 419 | 419 | ROM_LOAD( "lhmn5ku6.u53", 0x0000000, 0x400000, CRC(b320c5c9) SHA1(7c99da2d85597a3c008ed61a3aa5f47ad36186ec) ) |
| 420 | 420 | ROM_END |
| 421 | 421 |
| r6428 | r6429 | |
|---|---|---|
| 417 | 417 | |
| 418 | 418 | AM_RANGE( 0x001b, 0x001b ) AM_WRITE( dunhuang_block_dest_w ) |
| 419 | 419 | |
| 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 ) | |
| 422 | 422 | |
| 423 | 423 | // AM_RANGE( 0x0082, 0x0082 ) AM_WRITE( dunhuang_82_w ) |
| 424 | 424 | |
| r6428 | r6429 | |
| 699 | 699 | /* sound hardware */ |
| 700 | 700 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 701 | 701 | |
| 702 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 702 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 703 | 703 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 704 | 704 | |
| 705 | 705 | MDRV_SOUND_ADD("ay8910", AY8910, 12000000/8) |
| r6428 | r6429 | |
|---|---|---|
| 254 | 254 | AM_RANGE(0x03, 0x03) AM_DEVWRITE("msm", ojankohs_adpcm_reset_w) |
| 255 | 255 | AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w) |
| 256 | 256 | 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) | |
| 259 | 259 | AM_RANGE(0x10, 0x10) AM_WRITENOP // unknown |
| 260 | 260 | AM_RANGE(0x11, 0x11) AM_WRITENOP // unknown |
| 261 | 261 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 267 | 267 | AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITE(ojankoy_coinctr_w) |
| 268 | 268 | AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w) |
| 269 | 269 | 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) | |
| 272 | 272 | ADDRESS_MAP_END |
| 273 | 273 | |
| 274 | 274 | static ADDRESS_MAP_START( ccasino_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 279 | 279 | AM_RANGE(0x03, 0x03) AM_READ(ccasino_dipsw3_r) AM_DEVWRITE("msm", ojankohs_adpcm_reset_w) |
| 280 | 280 | AM_RANGE(0x04, 0x04) AM_READWRITE(ccasino_dipsw4_r, ojankohs_flipscreen_w) |
| 281 | 281 | 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) | |
| 284 | 284 | AM_RANGE(0x08, 0x0f) AM_WRITE(ccasino_palette_w) // 16bit address access |
| 285 | 285 | AM_RANGE(0x10, 0x10) AM_WRITENOP |
| 286 | 286 | AM_RANGE(0x11, 0x11) AM_WRITENOP |
| r6428 | r6429 | |
| 293 | 293 | AM_RANGE(0xfb, 0xfb) AM_WRITE(ojankoc_ctrl_w) |
| 294 | 294 | AM_RANGE(0xfc, 0xfd) AM_READ(ojankoc_keymatrix_r) |
| 295 | 295 | 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) | |
| 298 | 298 | ADDRESS_MAP_END |
| 299 | 299 | |
| 300 | 300 | |
| r6428 | r6429 | |
| 843 | 843 | /* sound hardware */ |
| 844 | 844 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 845 | 845 | |
| 846 | MDRV_SOUND_ADD("ay", AY8910, 12000000/6) | |
| 846 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/6) | |
| 847 | 847 | MDRV_SOUND_CONFIG(ojankohs_ay8910_interface) |
| 848 | 848 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 849 | 849 | |
| r6428 | r6429 | |
| 881 | 881 | /* sound hardware */ |
| 882 | 882 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 883 | 883 | |
| 884 | MDRV_SOUND_ADD("ay", AY8910, 12000000/8) | |
| 884 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8) | |
| 885 | 885 | MDRV_SOUND_CONFIG(ojankoy_ay8910_interface) |
| 886 | 886 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 887 | 887 | |
| r6428 | r6429 | |
| 918 | 918 | /* sound hardware */ |
| 919 | 919 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 920 | 920 | |
| 921 | MDRV_SOUND_ADD("ay", AY8910, 12000000/8) | |
| 921 | MDRV_SOUND_ADD("aysnd", AY8910, 12000000/8) | |
| 922 | 922 | MDRV_SOUND_CONFIG(ojankoy_ay8910_interface) |
| 923 | 923 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 924 | 924 | |
| r6428 | r6429 | |
| 954 | 954 | /* sound hardware */ |
| 955 | 955 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 956 | 956 | |
| 957 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 957 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 958 | 958 | MDRV_SOUND_CONFIG(ojankoc_ay8910_interface) |
| 959 | 959 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 960 | 960 |
| r6428 | r6429 | |
|---|---|---|
| 16 | 16 | |
| 17 | 17 | #define MASTER_CLOCK XTAL_20_16MHz |
| 18 | 18 | |
| 19 | static unsigned shift_data; | |
| 20 | static unsigned shift_bits; | |
| 21 | static int inte; | |
| 22 | 19 | |
| 23 | 20 | static WRITE8_HANDLER( n8080_shift_bits_w ) |
| 24 | 21 | { |
| 25 | shift_bits = data & 7; | |
| 22 | n8080_state *state = (n8080_state *)space->machine->driver_data; | |
| 23 | state->shift_bits = data & 7; | |
| 26 | 24 | } |
| 27 | 25 | static WRITE8_HANDLER( n8080_shift_data_w ) |
| 28 | 26 | { |
| 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); | |
| 30 | 29 | } |
| 31 | 30 | |
| 32 | 31 | |
| 33 | 32 | static READ8_HANDLER( n8080_shift_r ) |
| 34 | 33 | { |
| 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); | |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | static ADDRESS_MAP_START( main_cpu_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 39 | 39 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 40 | 40 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 41 | AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE( | |
| 41 | AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(n8080_state, videoram) | |
| 42 | 42 | ADDRESS_MAP_END |
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | static ADDRESS_MAP_START( helifire_main_cpu_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 46 | 46 | 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) | |
| 49 | 49 | ADDRESS_MAP_END |
| 50 | 50 | |
| 51 | 51 | static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 63 | 63 | AM_RANGE(0x06, 0x06) AM_WRITE(n8080_video_control_w) |
| 64 | 64 | ADDRESS_MAP_END |
| 65 | 65 | |
| 66 | /* Interrupts */ | |
| 67 | 66 | |
| 68 | static TIMER_DEVICE_CALLBACK( rst1_tick ) | |
| 69 | { | |
| 70 | int state = inte ? ASSERT_LINE : CLEAR_LINE; | |
| 67 | /* Input ports */ | |
| 71 | 68 | |
| 72 | /* V7 = 1, V6 = 0 */ | |
| 73 | cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xcf); | |
| 74 | } | |
| 75 | ||
| 76 | static 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 | ||
| 84 | static WRITE_LINE_DEVICE_HANDLER( n8080_inte_callback ) | |
| 85 | { | |
| 86 | inte = state; | |
| 87 | } | |
| 88 | ||
| 89 | static 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 | ||
| 98 | static 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 | ||
| 106 | static 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 ) | |
| 131 | MACHINE_DRIVER_END | |
| 132 | ||
| 133 | ||
| 134 | static 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 ) | |
| 159 | MACHINE_DRIVER_END | |
| 160 | ||
| 161 | ||
| 162 | static 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 ) | |
| 188 | MACHINE_DRIVER_END | |
| 189 | ||
| 190 | ||
| 191 | 69 | static INPUT_PORTS_START( spacefev ) |
| 192 | 70 | PORT_START("IN0") |
| 193 | 71 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| r6428 | r6429 | |
| 487 | 365 | PORT_DIPSETTING( 0x00, DEF_STR( Cocktail )) |
| 488 | 366 | |
| 489 | 367 | /* potentiometers */ |
| 490 | ||
| 491 | PORT_START("POT0") /* 04 */ | |
| 368 | PORT_START("POT0") | |
| 492 | 369 | PORT_DIPNAME( 0xff, 0x50, "VR1 sun brightness" ) |
| 493 | 370 | PORT_DIPSETTING( 0x00, "00" ) |
| 494 | 371 | PORT_DIPSETTING( 0x10, "10" ) |
| r6428 | r6429 | |
| 499 | 376 | PORT_DIPSETTING( 0x60, "60" ) |
| 500 | 377 | PORT_DIPSETTING( 0x70, "70" ) |
| 501 | 378 | |
| 502 | PORT_START("POT1") | |
| 379 | PORT_START("POT1") | |
| 503 | 380 | PORT_DIPNAME( 0xff, 0x00, "VR2 sea brightness" ) |
| 504 | 381 | PORT_DIPSETTING( 0x00, "00" ) |
| 505 | 382 | PORT_DIPSETTING( 0x10, "10" ) |
| r6428 | r6429 | |
| 509 | 386 | PORT_DIPSETTING( 0x50, "50" ) |
| 510 | 387 | PORT_DIPSETTING( 0x60, "60" ) |
| 511 | 388 | PORT_DIPSETTING( 0x70, "70" ) |
| 512 | ||
| 513 | 389 | INPUT_PORTS_END |
| 514 | 390 | |
| 515 | 391 | |
| 392 | /* Interrupts */ | |
| 393 | ||
| 394 | static 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 | ||
| 403 | static 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 | ||
| 412 | static WRITE_LINE_DEVICE_HANDLER( n8080_inte_callback ) | |
| 413 | { | |
| 414 | n8080_state *n8080 = (n8080_state *)device->machine->driver_data; | |
| 415 | n8080->inte = state; | |
| 416 | } | |
| 417 | ||
| 418 | static 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 | ||
| 427 | static 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 | ||
| 435 | static 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 | ||
| 444 | static MACHINE_START( spacefev ) | |
| 445 | { | |
| 446 | MACHINE_START_CALL(n8080); | |
| 447 | MACHINE_START_CALL(spacefev_sound); | |
| 448 | } | |
| 449 | ||
| 450 | static MACHINE_START( sheriff ) | |
| 451 | { | |
| 452 | MACHINE_START_CALL(n8080); | |
| 453 | MACHINE_START_CALL(sheriff_sound); | |
| 454 | } | |
| 455 | ||
| 456 | static MACHINE_START( helifire ) | |
| 457 | { | |
| 458 | MACHINE_START_CALL(n8080); | |
| 459 | MACHINE_START_CALL(helifire_sound); | |
| 460 | } | |
| 461 | ||
| 462 | ||
| 463 | static 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 | ||
| 472 | static 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 | ||
| 483 | static 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 | ||
| 494 | static 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 | ||
| 507 | static 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 ) | |
| 538 | MACHINE_DRIVER_END | |
| 539 | ||
| 540 | ||
| 541 | static 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 ) | |
| 572 | MACHINE_DRIVER_END | |
| 573 | ||
| 574 | ||
| 575 | static 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 ) | |
| 607 | MACHINE_DRIVER_END | |
| 608 | ||
| 609 | ||
| 516 | 610 | /* |
| 517 | 611 | Space Fever (3 sets, Space Fever?, High Splitter?, Space Launcher?) |
| 518 | 612 | Nintendo, 1979 |
| r6428 | r6429 | |
| 824 | 918 | ROM_END |
| 825 | 919 | |
| 826 | 920 | |
| 827 | GAME( 1979, spacefev, 0, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", 0 ) | |
| 828 | GAME( 1979, spacefevo, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", 0 ) | |
| 829 | GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", 0 ) | |
| 830 | GAME( 1979, highsplt, 0, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", 0 ) | |
| 831 | GAME( 1979, highsplta, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", 0 ) | |
| 832 | GAME( 1979, highspltb, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", 0 ) | |
| 833 | GAME( 1979, spacelnc, 0, spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_NOT_WORKING ) | |
| 834 | GAME( 1979, sheriff, 0, sheriff, sheriff, 0, ROT270, "Nintendo", "Sheriff", 0 ) | |
| 835 | GAME( 1980, bandido, sheriff, sheriff, bandido, 0, ROT270, "Exidy", "Bandido", 0 ) | |
| 836 | GAME( 1980, helifire, 0, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL ) | |
| 837 | GAME( 1980, helifirea, helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL ) | |
| 921 | GAME( 1979, spacefev, 0, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", GAME_SUPPORTS_SAVE ) | |
| 922 | GAME( 1979, spacefevo, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", GAME_SUPPORTS_SAVE ) | |
| 923 | GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", GAME_SUPPORTS_SAVE ) | |
| 924 | GAME( 1979, highsplt, 0, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", GAME_SUPPORTS_SAVE ) | |
| 925 | GAME( 1979, highsplta, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", GAME_SUPPORTS_SAVE ) | |
| 926 | GAME( 1979, highspltb, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", GAME_SUPPORTS_SAVE ) | |
| 927 | GAME( 1979, spacelnc, 0, spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) | |
| 928 | GAME( 1979, sheriff, 0, sheriff, sheriff, 0, ROT270, "Nintendo", "Sheriff", GAME_SUPPORTS_SAVE ) | |
| 929 | GAME( 1980, bandido, sheriff, sheriff, bandido, 0, ROT270, "Exidy", "Bandido", GAME_SUPPORTS_SAVE ) | |
| 930 | GAME( 1980, helifire, 0, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
| 931 | GAME( 1980, helifirea, helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 120 | 120 | ADDRESS_MAP_END |
| 121 | 121 | |
| 122 | 122 | static 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) | |
| 125 | 125 | ADDRESS_MAP_END |
| 126 | 126 | |
| 127 | 127 | |
| r6428 | r6429 | |
| 286 | 286 | /* sound hardware */ |
| 287 | 287 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 288 | 288 | |
| 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 */ | |
| 290 | 290 | MDRV_SOUND_CONFIG(ay8910_config) |
| 291 | 291 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 292 | 292 |
| r6428 | r6429 | |
|---|---|---|
| 287 | 287 | static ADDRESS_MAP_START( spdodgeb_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 288 | 288 | AM_RANGE(0x0000, 0x0fff) AM_RAM |
| 289 | 289 | 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) | |
| 291 | 291 | AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w) |
| 292 | 292 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 293 | 293 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 461 | 461 | /* sound hardware */ |
| 462 | 462 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 463 | 463 | |
| 464 | MDRV_SOUND_ADD("ym", YM3812, 3000000) | |
| 464 | MDRV_SOUND_ADD("ymsnd", YM3812, 3000000) | |
| 465 | 465 | MDRV_SOUND_CONFIG(ym3812_config) |
| 466 | 466 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 467 | 467 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 785 | 785 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 786 | 786 | AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(2) |
| 787 | 787 | 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) | |
| 789 | 789 | AM_RANGE(0xc000, 0xc001) AM_READWRITE(tnzs_mcu_r, tnzs_mcu_w) /* not present in insectx */ |
| 790 | 790 | AM_RANGE(0xd000, 0xdfff) AM_RAM |
| 791 | 791 | AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1) |
| r6428 | r6429 | |
| 798 | 798 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 799 | 799 | AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(2) |
| 800 | 800 | 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) | |
| 802 | 802 | AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") |
| 803 | 803 | AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") |
| 804 | 804 | AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") |
| r6428 | r6429 | |
| 858 | 858 | |
| 859 | 859 | static ADDRESS_MAP_START( tnzsb_io_map, ADDRESS_SPACE_IO, 8 ) |
| 860 | 860 | 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) | |
| 862 | 862 | AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r) |
| 863 | 863 | ADDRESS_MAP_END |
| 864 | 864 | |
| r6428 | r6429 | |
| 914 | 914 | AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(2), SMH_ROM) |
| 915 | 915 | |
| 916 | 916 | 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) | |
| 918 | 918 | AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1") |
| 919 | 919 | AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2") |
| 920 | 920 | AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA") |
| r6428 | r6429 | |
| 1638 | 1638 | /* sound hardware */ |
| 1639 | 1639 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1640 | 1640 | |
| 1641 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1641 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1642 | 1642 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1643 | 1643 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1644 | 1644 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1677 | 1677 | /* sound hardware */ |
| 1678 | 1678 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1679 | 1679 | |
| 1680 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) | |
| 1680 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) | |
| 1681 | 1681 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1682 | 1682 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1683 | 1683 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1718 | 1718 | /* sound hardware */ |
| 1719 | 1719 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1720 | 1720 | |
| 1721 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) | |
| 1721 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) | |
| 1722 | 1722 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1723 | 1723 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1724 | 1724 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1756 | 1756 | /* sound hardware */ |
| 1757 | 1757 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1758 | 1758 | |
| 1759 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1759 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1760 | 1760 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1761 | 1761 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1762 | 1762 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1794 | 1794 | /* sound hardware */ |
| 1795 | 1795 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1796 | 1796 | |
| 1797 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1797 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1798 | 1798 | MDRV_SOUND_CONFIG(kageki_ym2203_interface) |
| 1799 | 1799 | MDRV_SOUND_ROUTE(0, "mono", 0.15) |
| 1800 | 1800 | MDRV_SOUND_ROUTE(1, "mono", 0.15) |
| r6428 | r6429 | |
| 1843 | 1843 | /* sound hardware */ |
| 1844 | 1844 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1845 | 1845 | |
| 1846 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1846 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 1847 | 1847 | MDRV_SOUND_CONFIG(ym2203b_interface) |
| 1848 | 1848 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 1849 | 1849 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 1863 | 1863 | MDRV_CPU_MODIFY("audiocpu") |
| 1864 | 1864 | MDRV_CPU_PROGRAM_MAP(kabukiz_cpu2_map) |
| 1865 | 1865 | |
| 1866 | MDRV_SOUND_MODIFY("ym") | |
| 1866 | MDRV_SOUND_MODIFY("ymsnd") | |
| 1867 | 1867 | MDRV_SOUND_CONFIG(kabukiz_ym2203_interface) |
| 1868 | 1868 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 1869 | 1869 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 1905 | 1905 | /* sound hardware */ |
| 1906 | 1906 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1907 | 1907 | |
| 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 */ | |
| 1909 | 1909 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 1910 | 1910 | MACHINE_DRIVER_END |
| 1911 | 1911 |
| r6428 | r6429 | |
|---|---|---|
| 269 | 269 | static ADDRESS_MAP_START( rohga_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 270 | 270 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 271 | 271 | 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) | |
| 273 | 273 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w) |
| 274 | 274 | AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r,okim6295_w) |
| 275 | 275 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 773 | 773 | /* sound hardware */ |
| 774 | 774 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 775 | 775 | |
| 776 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 776 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 777 | 777 | MDRV_SOUND_CONFIG(ym2151_config) |
| 778 | 778 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.78) |
| 779 | 779 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.78) |
| r6428 | r6429 | |
| 818 | 818 | /* sound hardware */ |
| 819 | 819 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 820 | 820 | |
| 821 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 821 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 822 | 822 | MDRV_SOUND_CONFIG(ym2151_config) |
| 823 | 823 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 824 | 824 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 863 | 863 | /* sound hardware */ |
| 864 | 864 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 865 | 865 | |
| 866 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 866 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 867 | 867 | MDRV_SOUND_CONFIG(ym2151_config) |
| 868 | 868 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 869 | 869 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 908 | 908 | /* sound hardware */ |
| 909 | 909 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 910 | 910 | |
| 911 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 911 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 912 | 912 | MDRV_SOUND_CONFIG(ym2151_config) |
| 913 | 913 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 914 | 914 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
|---|---|---|
| 763 | 763 | |
| 764 | 764 | /* The dsp56k occasionally executes out of mapped memory */ |
| 765 | 765 | 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); | |
| 766 | 775 | } |
| 767 | 776 | |
| 768 | 777 | |
| r6428 | r6429 | |
| 821 | 830 | ROM_END |
| 822 | 831 | |
| 823 | 832 | /* ROM parent machine inp init */ |
| 824 | GAME( 1993, plygonet, 0, plygonet, polygonet, polygonet, ROT90, "Konami", "Polygonet Commanders (ver UAA)", GAME_NOT_WORKING | GAME_NO_SOUND ) | |
| 825 | GAME( 1993, polynetw, 0, plygonet, polynetw, polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", GAME_NOT_WORKING | GAME_NO_SOUND ) | |
| 833 | GAME( 1993, plygonet, 0, plygonet, polygonet, polygonet, ROT90, "Konami", "Polygonet Commanders (ver UAA)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) | |
| 834 | GAME( 1993, polynetw, 0, plygonet, polynetw, polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) | |
| 826 | 835 |
| r6428 | r6429 | |
|---|---|---|
| 565 | 565 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 566 | 566 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 567 | 567 | 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) | |
| 569 | 569 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_data_w) |
| 570 | 570 | AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ |
| 571 | 571 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("vlm", salamand_speech_start_w) |
| r6428 | r6429 | |
| 576 | 576 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 577 | 577 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 578 | 578 | 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) | |
| 580 | 580 | AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ |
| 581 | 581 | ADDRESS_MAP_END |
| 582 | 582 | |
| r6428 | r6429 | |
| 587 | 587 | AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("konami2", k051649_frequency_w) |
| 588 | 588 | AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("konami2", k051649_volume_w) |
| 589 | 589 | 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) | |
| 591 | 591 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w) |
| 592 | 592 | AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("konami", city_sound_bank_w) /* 7232 bankswitch */ |
| 593 | 593 | AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 1849 | 1849 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.10) |
| 1850 | 1850 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 1851 | 1851 | |
| 1852 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 1852 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1853 | 1853 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1854 | 1854 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1855 | 1855 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1894 | 1894 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.10) |
| 1895 | 1895 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 1896 | 1896 | |
| 1897 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 1897 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 1898 | 1898 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1899 | 1899 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1900 | 1900 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1939 | 1939 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.30) |
| 1940 | 1940 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1941 | 1941 | |
| 1942 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 1942 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 1943 | 1943 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1944 | 1944 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1945 | 1945 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 1988 | 1988 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.30) |
| 1989 | 1989 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| 1990 | 1990 | |
| 1991 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 1991 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 1992 | 1992 | MDRV_SOUND_CONFIG(ym3812_config) |
| 1993 | 1993 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 1994 | 1994 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r6428 | r6429 | |
| 2039 | 2039 | MDRV_SOUND_ROUTE(1, "lspeaker", 0.10) |
| 2040 | 2040 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.10) |
| 2041 | 2041 | |
| 2042 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 2042 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 2043 | 2043 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2044 | 2044 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 2045 | 2045 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 297 | 297 | AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1") |
| 298 | 298 | AM_RANGE(0x5091, 0x5091) AM_WRITE( jackie_lamps_w ) |
| 299 | 299 | 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) | |
| 301 | 301 | AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) |
| 302 | 302 | AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE( bg_scroll_w ) AM_BASE( &bg_scroll ) |
| 303 | 303 | AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE( jackie_reel1_ram_w ) AM_BASE( &jackie_reel1_ram ) |
| r6428 | r6429 | |
| 481 | 481 | |
| 482 | 482 | /* sound hardware */ |
| 483 | 483 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 484 | MDRV_SOUND_ADD("ym", YM2413, 3579545) | |
| 484 | MDRV_SOUND_ADD("ymsnd", YM2413, 3579545) | |
| 485 | 485 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 486 | 486 | |
| 487 | 487 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 251 | 251 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 252 | 252 | AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(10), SMH_ROM) |
| 253 | 253 | 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) | |
| 255 | 255 | AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w) |
| 256 | 256 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 257 | 257 | AM_RANGE(0xe400, 0xe403) AM_WRITE(warriorb_pancontrol) /* pan */ |
| r6428 | r6429 | |
| 482 | 482 | /* sound hardware */ |
| 483 | 483 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 484 | 484 | |
| 485 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 485 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 486 | 486 | MDRV_SOUND_CONFIG(ym2610_config) |
| 487 | 487 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 488 | 488 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 540 | 540 | /* sound hardware */ |
| 541 | 541 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 542 | 542 | |
| 543 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 543 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 544 | 544 | MDRV_SOUND_CONFIG(ym2610_config) |
| 545 | 545 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 546 | 546 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 594 | 594 | // ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) |
| 595 | 595 | // ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) ) |
| 596 | 596 | |
| 597 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 597 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 598 | 598 | ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) ) |
| 599 | 599 | ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) ) |
| 600 | 600 | |
| r6428 | r6429 | |
| 640 | 640 | // ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) |
| 641 | 641 | // ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) ) |
| 642 | 642 | |
| 643 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 643 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 644 | 644 | ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) ) |
| 645 | 645 | ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) ) |
| 646 | 646 | |
| r6428 | r6429 | |
| 680 | 680 | ROM_LOAD( "d24-07.47", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) ) /* SCR B, screen 2 */ |
| 681 | 681 | ROM_LOAD( "d24-08.48", 0x100000, 0x100000, CRC(1e6d1528) SHA1(d6843aa67befd7db44f468be16ba2f0efb85d40f) ) |
| 682 | 682 | |
| 683 | ROM_REGION( 0x300000, "ym", 0 ) /* ADPCM samples */ | |
| 683 | ROM_REGION( 0x300000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 684 | 684 | ROM_LOAD( "d24-12.107", 0x000000, 0x100000, CRC(279203a1) SHA1(ed75e811a1f0863c134034457ce2e97372726bdb) ) |
| 685 | 685 | ROM_LOAD( "d24-10.95", 0x100000, 0x100000, CRC(0e0c716d) SHA1(5e2f334dd484678766c5a71196d9bad0ba0fe8d9) ) |
| 686 | 686 | ROM_LOAD( "d24-11.118", 0x200000, 0x100000, CRC(15362573) SHA1(8602c9f24134cac6fe1375fb189b152f0c68aeb7) ) |
| r6428 | r6429 | |
|---|---|---|
| 72 | 72 | AM_RANGE(0x800116, 0x800117) AM_WRITE(SMH_RAM) AM_BASE(&unico_scrollx_1) // |
| 73 | 73 | AM_RANGE(0x800120, 0x800121) AM_WRITE(SMH_RAM) AM_BASE(&unico_scrolly_1) // |
| 74 | 74 | 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 ) // | |
| 77 | 77 | AM_RANGE(0x80018e, 0x80018f) AM_DEVWRITE("oki", burglarx_sound_bank_w) // |
| 78 | 78 | AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP // IRQ Ack |
| 79 | 79 | AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(unico_vram_1_w) AM_BASE(&unico_vram_1 ) // Layers |
| r6428 | r6429 | |
| 167 | 167 | AM_RANGE(0x800178, 0x800179) AM_READ(unico_guny_1_msb_r ) // |
| 168 | 168 | AM_RANGE(0x80017c, 0x80017d) AM_READ(unico_gunx_1_msb_r ) // |
| 169 | 169 | 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 ) // | |
| 172 | 172 | AM_RANGE(0x80018e, 0x80018f) AM_WRITE(zeropnt_sound_bank_w ) // |
| 173 | 173 | AM_RANGE(0x8001e0, 0x8001e1) AM_WRITE(SMH_RAM ) // ? IRQ Ack |
| 174 | 174 | AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(unico_vram_1_w) AM_BASE(&unico_vram_1 ) // Layers |
| r6428 | r6429 | |
| 232 | 232 | AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM |
| 233 | 233 | AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM") |
| 234 | 234 | 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) // | |
| 236 | 236 | AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff0000 ) // |
| 237 | 237 | AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w ) // |
| 238 | 238 | AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w ) // ? |
| r6428 | r6429 | |
| 638 | 638 | /* sound hardware */ |
| 639 | 639 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 640 | 640 | |
| 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 */ | |
| 642 | 642 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) |
| 643 | 643 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) |
| 644 | 644 | |
| r6428 | r6429 | |
| 685 | 685 | /* sound hardware */ |
| 686 | 686 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 687 | 687 | |
| 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 */ | |
| 689 | 689 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) |
| 690 | 690 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) |
| 691 | 691 | |
| r6428 | r6429 | |
| 729 | 729 | /* sound hardware */ |
| 730 | 730 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 731 | 731 | |
| 732 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 732 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 733 | 733 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.70) |
| 734 | 734 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.70) |
| 735 | 735 |
| r6428 | r6429 | |
|---|---|---|
| 87 | 87 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 88 | 88 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 89 | 89 | 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) | |
| 91 | 91 | AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP /* leftover from missing 007232? */ |
| 92 | 92 | ADDRESS_MAP_END |
| 93 | 93 | |
| r6428 | r6429 | |
| 176 | 176 | /* sound hardware */ |
| 177 | 177 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 178 | 178 | |
| 179 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 179 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 180 | 180 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 181 | 181 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| 182 | 182 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 968 | 968 | MDRV_SOUND_CONFIG(zektor_samples_interface) |
| 969 | 969 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 970 | 970 | |
| 971 | MDRV_SOUND_ADD("ay", AY8910, CPU_CLOCK/2/2) | |
| 971 | MDRV_SOUND_ADD("aysnd", AY8910, CPU_CLOCK/2/2) | |
| 972 | 972 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 973 | 973 | |
| 974 | 974 | /* speech board */ |
| r6428 | r6429 | |
| 1367 | 1367 | static DRIVER_INIT( zektor ) |
| 1368 | 1368 | { |
| 1369 | 1369 | 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"); | |
| 1371 | 1371 | |
| 1372 | 1372 | /* configure security */ |
| 1373 | 1373 | sega_security(82); |
| r6428 | r6429 | |
|---|---|---|
| 42 | 42 | |
| 43 | 43 | #define MASTER_CLOCK XTAL_18MHz |
| 44 | 44 | |
| 45 | static UINT8 *ace_scoreram; | |
| 46 | static UINT8 *ace_ram2; | |
| 47 | static UINT8 *ace_characterram; | |
| 48 | 45 | |
| 46 | typedef struct _ace_state ace_state; | |
| 47 | struct _ace_state | |
| 48 | { | |
| 49 | /* video-related */ | |
| 50 | UINT8 * ram2; | |
| 51 | UINT8 * scoreram; | |
| 52 | UINT8 * characterram; | |
| 49 | 53 | |
| 50 | static int objpos[8]; | |
| 54 | /* input-related */ | |
| 55 | int objpos[8]; | |
| 56 | }; | |
| 51 | 57 | |
| 58 | ||
| 52 | 59 | static WRITE8_HANDLER( ace_objpos_w ) |
| 53 | 60 | { |
| 54 | objpos[offset]=data; | |
| 61 | ace_state *state = (ace_state *)space->machine->driver_data; | |
| 62 | state->objpos[offset] = data; | |
| 55 | 63 | } |
| 56 | 64 | |
| 57 | 65 | #if 0 |
| 58 | 66 | static READ8_HANDLER( ace_objpos_r ) |
| 59 | 67 | { |
| 60 | return objpos[offset]; | |
| 68 | ace_state *state = (ace_state *)space->machine->driver_data; | |
| 69 | return state->objpos[offset]; | |
| 61 | 70 | } |
| 62 | 71 | #endif |
| 63 | 72 | |
| 64 | 73 | static VIDEO_START( ace ) |
| 65 | 74 | { |
| 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); | |
| 70 | 80 | } |
| 71 | 81 | |
| 72 | 82 | static VIDEO_UPDATE( ace ) |
| 73 | 83 | { |
| 84 | ace_state *state = (ace_state *)screen->machine->driver_data; | |
| 74 | 85 | int offs; |
| 75 | 86 | |
| 76 | 87 | /* first of all, fill the screen with the background color */ |
| 77 | 88 | bitmap_fill(bitmap, cliprect, 0); |
| 78 | 89 | |
| 90 | drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[1], | |
| 91 | 0, | |
| 92 | 0, | |
| 93 | 0, 0, | |
| 94 | state->objpos[0], state->objpos[1]); | |
| 79 | 95 | |
| 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]); | |
| 85 | 101 | |
| 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]); | |
| 91 | 107 | |
| 92 | drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[3], | |
| 93 | 0, | |
| 94 | 0, | |
| 95 | 0,0, | |
| 96 | objpos[4],objpos[5]); | |
| 97 | ||
| 98 | 108 | for (offs = 0; offs < 8; offs++) |
| 99 | 109 | { |
| 100 | 110 | drawgfx_opaque(bitmap,/* ?? */ |
| 101 | cliprect,screen->machine->gfx[4], | |
| 111 | cliprect, screen->machine->gfx[4], | |
| 102 | 112 | offs, |
| 103 | 113 | 0, |
| 104 | 0,0, | |
| 105 | 10*8+offs*16,256-16); | |
| 114 | 0, 0, | |
| 115 | 10 * 8 + offs * 16, 256 - 16); | |
| 106 | 116 | } |
| 107 | 117 | return 0; |
| 108 | 118 | } |
| r6428 | r6429 | |
| 110 | 120 | |
| 111 | 121 | static PALETTE_INIT( ace ) |
| 112 | 122 | { |
| 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 */ | |
| 115 | 125 | } |
| 116 | 126 | |
| 117 | 127 | |
| 118 | 128 | static WRITE8_HANDLER( ace_characterram_w ) |
| 119 | 129 | { |
| 120 | if (ace_characterram[offset] != data) | |
| 130 | ace_state *state = (ace_state *)space->machine->driver_data; | |
| 131 | if (state->characterram[offset] != data) | |
| 121 | 132 | { |
| 122 | if (data& | |
| 133 | if (data & ~0x07 | |
| 123 | 134 | { |
| 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); | |
| 126 | 137 | } |
| 127 | a | |
| 138 | state->characterram[offset] = data; | |
| 128 | 139 | gfx_element_mark_dirty(space->machine->gfx[1], 0); |
| 129 | 140 | gfx_element_mark_dirty(space->machine->gfx[2], 0); |
| 130 | 141 | gfx_element_mark_dirty(space->machine->gfx[3], 0); |
| r6428 | r6429 | |
| 133 | 144 | |
| 134 | 145 | static WRITE8_HANDLER( ace_scoreram_w ) |
| 135 | 146 | { |
| 136 | ace_scoreram[offset] = data; | |
| 147 | ace_state *state = (ace_state *)space->machine->driver_data; | |
| 148 | state->scoreram[offset] = data; | |
| 137 | 149 | gfx_element_mark_dirty(space->machine->gfx[4], offset / 32); |
| 138 | 150 | } |
| 139 | 151 | |
| 140 | 152 | static READ8_HANDLER( unk_r ) |
| 141 | 153 | { |
| 142 | return mame_rand(space->machine)&0xff; | |
| 154 | return mame_rand(space->machine) & 0xff; | |
| 143 | 155 | } |
| 144 | 156 | |
| 145 | 157 | |
| r6428 | r6429 | |
| 151 | 163 | |
| 152 | 164 | AM_RANGE(0x0000, 0x09ff) AM_ROM |
| 153 | 165 | |
| 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) */ | |
| 157 | 169 | |
| 158 | 170 | AM_RANGE(0xc000, 0xc005) AM_WRITE(ace_objpos_w) |
| 159 | 171 | |
| r6428 | r6429 | |
| 304 | 316 | |
| 305 | 317 | static MACHINE_START( ace ) |
| 306 | 318 | { |
| 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); | |
| 308 | 321 | } |
| 309 | 322 | |
| 323 | static 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 | ||
| 310 | 332 | static MACHINE_DRIVER_START( ace ) |
| 311 | 333 | |
| 334 | /* driver data */ | |
| 335 | MDRV_DRIVER_DATA(ace_state) | |
| 336 | ||
| 312 | 337 | /* basic machine hardware */ |
| 313 | 338 | MDRV_CPU_ADD("maincpu", 8080, MASTER_CLOCK/9) /* 2 MHz ? */ |
| 314 | 339 | MDRV_CPU_PROGRAM_MAP(main_map) |
| 315 | MDRV_MACHINE_START(ace) | |
| 316 | 340 | |
| 341 | MDRV_MACHINE_START(ace) | |
| 342 | MDRV_MACHINE_RESET(ace) | |
| 343 | ||
| 317 | 344 | /* video hardware */ |
| 318 | 345 | MDRV_SCREEN_ADD("screen", RASTER) |
| 319 | 346 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
|---|---|---|
| 346 | 346 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 347 | 347 | AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE(&videoram) |
| 348 | 348 | 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 */ | |
| 350 | 350 | AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */ |
| 351 | 351 | ADDRESS_MAP_END |
| 352 | 352 | |
| r6428 | r6429 | |
| 465 | 465 | |
| 466 | 466 | /* sound hardware */ |
| 467 | 467 | 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 */ | |
| 469 | 469 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00) |
| 470 | 470 | MACHINE_DRIVER_END |
| 471 | 471 |
| r6428 | r6429 | |
|---|---|---|
| 69 | 69 | |
| 70 | 70 | #include "driver.h" |
| 71 | 71 | #include "cpu/z80/z80.h" |
| 72 | #include "m | |
| 72 | #include "includes/iremz80.h" | |
| 73 | 73 | #include "iremipt.h" |
| 74 | #include "audio/irem.h" | |
| 75 | 74 | |
| 76 | 75 | |
| 77 | 76 | /* Lode Runner 2 seems to have a simple protection on the bank switching */ |
| r6428 | r6429 | |
| 81 | 80 | /* Since the data written to 0x80 is always the level number, I just use */ |
| 82 | 81 | /* that to select the ROM. The only exception I make is a special case used in */ |
| 83 | 82 | /* service mode to test the ROMs. */ |
| 84 | static int ldrun2_bankswap; | |
| 85 | 83 | |
| 86 | 84 | static READ8_HANDLER( ldrun2_bankswitch_r ) |
| 87 | 85 | { |
| 88 | if (ldrun2_bankswap) | |
| 86 | irem_z80_state *state = (irem_z80_state *)space->machine->driver_data; | |
| 87 | if (state->ldrun2_bankswap) | |
| 89 | 88 | { |
| 90 | ldrun2_bankswap--; | |
| 89 | state->ldrun2_bankswap--; | |
| 91 | 90 | |
| 92 | 91 | /* swap to bank #1 on second read */ |
| 93 | if (ldrun2_bankswap == 0) | |
| 92 | if (state->ldrun2_bankswap == 0) | |
| 94 | 93 | memory_set_bank(space->machine, 1, 1); |
| 95 | 94 | } |
| 96 | 95 | return 0; |
| r6428 | r6429 | |
| 98 | 97 | |
| 99 | 98 | static WRITE8_HANDLER( ldrun2_bankswitch_w ) |
| 100 | 99 | { |
| 101 | stat | |
| 100 | irem_z80_state | |
| 102 | 101 | static const int banks[30] = |
| 103 | 102 | { |
| 104 | 103 | 0,0,0,0,0,1,0,1,0,0, |
| r6428 | r6429 | |
| 107 | 106 | }; |
| 108 | 107 | |
| 109 | 108 | |
| 110 | bankcontrol[offset] = data; | |
| 109 | state->bankcontrol[offset] = data; | |
| 110 | ||
| 111 | 111 | if (offset == 0) |
| 112 | 112 | { |
| 113 | 113 | if (data < 1 || data > 30) |
| 114 | 114 | { |
| 115 | logerror("unknown bank select %02x\n",data); | |
| 115 | logerror("unknown bank select %02x\n",data); | |
| 116 | 116 | return; |
| 117 | 117 | } |
| 118 | memory_set_bank(space->machine, 1, banks[data-1]); | |
| 118 | memory_set_bank(space->machine, 1, banks[data - 1]); | |
| 119 | 119 | } |
| 120 | 120 | else |
| 121 | 121 | { |
| 122 | if (bankcontrol[0] == 0x01 && data == 0x0d) | |
| 122 | if (state->bankcontrol[0] == 0x01 && data == 0x0d) | |
| 123 | 123 | /* 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; | |
| 126 | 127 | } |
| 127 | 128 | } |
| 128 | 129 | |
| r6428 | r6429 | |
| 160 | 161 | |
| 161 | 162 | static WRITE8_HANDLER( spelunk2_bankswitch_w ) |
| 162 | 163 | { |
| 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); | |
| 165 | 166 | } |
| 166 | 167 | |
| 167 | 168 | static WRITE8_HANDLER( youjyudn_bankswitch_w ) |
| r6428 | r6429 | |
| 174 | 175 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 175 | 176 | AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w) |
| 176 | 177 | AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w) |
| 177 | AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE( | |
| 178 | AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size) | |
| 178 | 179 | /* Kung Fu Master is the only game in this driver to have separated (but */ |
| 179 | 180 | /* contiguous) videoram and colorram. They are interleaved in all the others. */ |
| 180 | AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE( | |
| 181 | AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram) | |
| 181 | 182 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 182 | 183 | ADDRESS_MAP_END |
| 183 | 184 | |
| r6428 | r6429 | |
| 193 | 194 | static ADDRESS_MAP_START( battroad_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 194 | 195 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 195 | 196 | 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) | |
| 199 | 200 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 200 | 201 | ADDRESS_MAP_END |
| 201 | 202 | |
| r6428 | r6429 | |
| 214 | 215 | |
| 215 | 216 | static ADDRESS_MAP_START( ldrun_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 216 | 217 | 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) | |
| 219 | 220 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 220 | 221 | ADDRESS_MAP_END |
| 221 | 222 | |
| 222 | 223 | static ADDRESS_MAP_START( ldrun2_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 223 | 224 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 224 | 225 | 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) | |
| 227 | 228 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 228 | 229 | ADDRESS_MAP_END |
| 229 | 230 | |
| r6428 | r6429 | |
| 243 | 244 | AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r) |
| 244 | 245 | AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r) |
| 245 | 246 | 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) | |
| 248 | 249 | AM_RANGE(0xd000, 0xefff) AM_RAM |
| 249 | 250 | ADDRESS_MAP_END |
| 250 | 251 | |
| r6428 | r6429 | |
| 262 | 263 | static ADDRESS_MAP_START( ldrun4_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 263 | 264 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 264 | 265 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) |
| 265 | AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE( | |
| 266 | AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE(&spriteram_size) | |
| 266 | 267 | AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w) |
| 267 | AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE( | |
| 268 | AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram) | |
| 268 | 269 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 269 | 270 | ADDRESS_MAP_END |
| 270 | 271 | |
| r6428 | r6429 | |
| 281 | 282 | |
| 282 | 283 | static ADDRESS_MAP_START( lotlot_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 283 | 284 | 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) | |
| 287 | 288 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 288 | 289 | ADDRESS_MAP_END |
| 289 | 290 | |
| 290 | 291 | static ADDRESS_MAP_START( kidniki_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 291 | 292 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 292 | 293 | 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) | |
| 296 | 297 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 297 | 298 | ADDRESS_MAP_END |
| 298 | 299 | |
| r6428 | r6429 | |
| 314 | 315 | static ADDRESS_MAP_START( spelunkr_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 315 | 316 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 316 | 317 | 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) | |
| 320 | 321 | AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w) |
| 321 | 322 | AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w) |
| 322 | 323 | AM_RANGE(0xd002, 0xd002) AM_WRITE(m62_hscroll_low_w) |
| r6428 | r6429 | |
| 330 | 331 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 331 | 332 | AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(1) |
| 332 | 333 | 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) | |
| 336 | 337 | AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w) |
| 337 | 338 | AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w) |
| 338 | 339 | AM_RANGE(0xd002, 0xd002) AM_WRITE(spelunk2_gfxport_w) |
| r6428 | r6429 | |
| 343 | 344 | static ADDRESS_MAP_START( youjyudn_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 344 | 345 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 345 | 346 | 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) | |
| 349 | 350 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 350 | 351 | ADDRESS_MAP_END |
| 351 | 352 | |
| r6428 | r6429 | |
| 363 | 364 | |
| 364 | 365 | static ADDRESS_MAP_START( horizon_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 365 | 366 | 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) | |
| 369 | 370 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 370 | 371 | ADDRESS_MAP_END |
| 371 | 372 | |
| r6428 | r6429 | |
| 928 | 929 | GFXDECODE_END |
| 929 | 930 | |
| 930 | 931 | |
| 932 | static MACHINE_START( m62 ) | |
| 933 | { | |
| 934 | irem_z80_state *state = (irem_z80_state *)machine->driver_data; | |
| 931 | 935 | |
| 936 | state_save_register_global(machine, state->ldrun2_bankswap); | |
| 937 | state_save_register_global_array(machine, state->bankcontrol); | |
| 938 | } | |
| 932 | 939 | |
| 940 | static 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 | ||
| 933 | 957 | static MACHINE_DRIVER_START( ldrun ) |
| 934 | 958 | |
| 959 | /* driver data */ | |
| 960 | MDRV_DRIVER_DATA(irem_z80_state) | |
| 961 | ||
| 935 | 962 | /* basic machine hardware */ |
| 936 | 963 | MDRV_CPU_ADD("maincpu", Z80, 24000000/6) |
| 937 | 964 | MDRV_CPU_PROGRAM_MAP(ldrun_map) |
| 938 | 965 | MDRV_CPU_IO_MAP(kungfum_io_map) |
| 939 | 966 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 940 | 967 | |
| 968 | MDRV_MACHINE_START(m62) | |
| 969 | MDRV_MACHINE_RESET(m62) | |
| 970 | ||
| 941 | 971 | /* video hardware */ |
| 942 | 972 | MDRV_SCREEN_ADD("screen", RASTER) |
| 943 | 973 | MDRV_SCREEN_REFRESH_RATE(55) |
| r6428 | r6429 | |
| 1296 | 1326 | ROM_LOAD( "tbp24s10-main-1b.bin", 0x0400, 0x0100, CRC(550563e1) SHA1(11edb45acba8b28a462c49956ebb1ba0a8b2ff26) ) /* character palette blue component */ |
| 1297 | 1327 | ROM_LOAD( "tbp24s10-gfx-1p.bin", 0x0500, 0x0100, CRC(35e45021) SHA1(511b94507f41b377f38184ed9a85f34949b28d26) ) /* sprite palette blue component */ |
| 1298 | 1328 | ROM_LOAD( "18s030-gfx-8t.bin", 0x0600, 0x0020, CRC(7a601c3d) SHA1(5c5cdf51b2c9fdb2b05402d9c260208ae73fe245) ) /* sprite height, one entry per 32 */ |
| 1299 | | |
| 1329 | | |
| 1300 | 1330 | ROM_LOAD( "tbp24s10-gfx-9k.bin", 0x0620, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as battroad */ |
| 1301 | 1331 | ROM_LOAD( "18s030-gfx-10a.bin", 0x0720, 0x0020, CRC(3858acd0) SHA1(49c96467c0e7146ed89f5107bcb7908bf4ce721a) ) |
| 1302 | 1332 | ROM_LOAD( "18s030-gfx-5d.bin", 0x0740, 0x0020, CRC(51304fcd) SHA1(be4d659e526f6fa5318b4cd3b6612c5b73f24437) ) |
| r6428 | r6429 | |
| 1402 | 1432 | ROM_LOAD( "br-b-1l", 0x0500, 0x0100, CRC(5271c7d8) SHA1(1254b61133ed8fd6e032df04482fb775c3f66981) ) /* sprite palette blue component */ |
| 1403 | 1433 | ROM_LOAD( "br-c-1j", 0x0600, 0x0020, CRC(78eb5d77) SHA1(dd82f7843bea8c953f491faade6ced17e57ddf3c) ) /* character palette */ |
| 1404 | 1434 | ROM_LOAD( "br-b-5p", 0x0620, 0x0020, CRC(ce746937) SHA1(387e73a9ca684ac2e30061fca281970ff20ef0a5) ) /* sprite height, one entry per 32 */ |
| 1405 | | |
| 1435 | | |
| 1406 | 1436 | ROM_LOAD( "br-b-6f", 0x0640, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) ) /* video timing - same as kungfum */ |
| 1407 | 1437 | ROM_END |
| 1408 | 1438 | |
| r6428 | r6429 | |
| 1435 | 1465 | ROM_LOAD( "lr-e-3n", 0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ |
| 1436 | 1466 | ROM_LOAD( "lr-b-1l", 0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ |
| 1437 | 1467 | ROM_LOAD( "lr-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1438 | | |
| 1468 | | |
| 1439 | 1469 | ROM_LOAD( "lr-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1440 | 1470 | ROM_END |
| 1441 | 1471 | |
| r6428 | r6429 | |
| 1468 | 1498 | ROM_LOAD( "lr-e-3n", 0x0400, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */ |
| 1469 | 1499 | ROM_LOAD( "lr-b-1l", 0x0500, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */ |
| 1470 | 1500 | ROM_LOAD( "lr-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1471 | | |
| 1501 | | |
| 1472 | 1502 | ROM_LOAD( "lr-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1473 | 1503 | ROM_END |
| 1474 | 1504 | |
| r6428 | r6429 | |
| 1507 | 1537 | ROM_LOAD( "lr2-h-3n", 0x0400, 0x0100, CRC(2b28aec5) SHA1(946633bd7203ba1481250f900f3232c18538613b) ) /* character palette blue component */ |
| 1508 | 1538 | ROM_LOAD( "lr2-b-1l", 0x0500, 0x0100, CRC(c8fb708a) SHA1(ed38f36fa7918179c7176c762c0fcc86b5ddb218) ) /* sprite palette blue component */ |
| 1509 | 1539 | ROM_LOAD( "lr2-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1510 | | |
| 1540 | | |
| 1511 | 1541 | ROM_LOAD( "lr2-b-6f", 0x0620, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1512 | 1542 | ROM_END |
| 1513 | 1543 | |
| r6428 | r6429 | |
| 1542 | 1572 | ROM_LOAD( "lr3-n-2m", 0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ |
| 1543 | 1573 | ROM_LOAD( "lr3-b-1l", 0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ |
| 1544 | 1574 | ROM_LOAD( "lr3-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1545 | | |
| 1575 | | |
| 1546 | 1576 | ROM_LOAD( "lr3-n-4f", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ |
| 1547 | 1577 | ROM_LOAD( "lr3-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1548 | 1578 | ROM_END |
| r6428 | r6429 | |
| 1575 | 1605 | ROM_LOAD( "lr3-n-2m", 0x0400, 0x0100, CRC(69ad8678) SHA1(96134aa530cb93a5e3b56fffa996aefa08a666a2) ) /* character palette blue component */ |
| 1576 | 1606 | ROM_LOAD( "lr3-b-1l", 0x0500, 0x0100, CRC(5b11c41d) SHA1(186ca7bfa2894311fc573f3f5882da677e029f2a) ) /* sprite palette blue component */ |
| 1577 | 1607 | ROM_LOAD( "lr3-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1578 | | |
| 1608 | | |
| 1579 | 1609 | ROM_LOAD( "lr3-n-4f", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ |
| 1580 | 1610 | ROM_LOAD( "lr3-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1581 | 1611 | ROM_END |
| r6428 | r6429 | |
| 1611 | 1641 | ROM_LOAD( "lr4-v-1p", 0x0400, 0x0100, CRC(0df23ebe) SHA1(054736b762aa6698c1e6d827f8db62ae0342c83f) ) /* character palette blue component */ |
| 1612 | 1642 | ROM_LOAD( "lr4-b-1l", 0x0500, 0x0100, CRC(0d89b692) SHA1(b2854290c46c34934ff91980d72768070ebc8bf3) ) /* sprite palette blue component */ |
| 1613 | 1643 | ROM_LOAD( "lr4-b-5p", 0x0600, 0x0020, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */ |
| 1614 | | |
| 1644 | | |
| 1615 | 1645 | ROM_LOAD( "lr4-v-4h", 0x0620, 0x0100, CRC(df674be9) SHA1(4d8c5378234bc24fac62dc227d8cd72f1ab7a35c) ) /* unknown */ |
| 1616 | 1646 | ROM_LOAD( "lr4-b-6f", 0x0720, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1617 | 1647 | ROM_END |
| r6428 | r6429 | |
| 1650 | 1680 | ROM_LOAD( "lot-b-1l", 0x0700, 0x0100, CRC(8b6fcde3) SHA1(04e9ce04b77a5f8737f2ec0aaeadaccdbbdda573) ) /* sprite palette blue component */ |
| 1651 | 1681 | ROM_LOAD( "lot-k-2j", 0x0800, 0x0100, CRC(e791ef2a) SHA1(cb1236630cbbc23e2e684ad3b7f51e52389eea2e) ) /* character palette blue component */ |
| 1652 | 1682 | ROM_LOAD( "lot-b-5p", 0x0900, 0x0020, CRC(110b21fd) SHA1(a7a660ff18540e2d73a80f341cd50c5f4d184085) ) /* sprite height, one entry per 32 */ |
| 1653 | | |
| 1683 | | |
| 1654 | 1684 | ROM_LOAD( "lot-k-7e", 0x0920, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ |
| 1655 | 1685 | ROM_LOAD( "lot-k-7h", 0x0b20, 0x0200, CRC(04442bee) SHA1(37d10b605830b9355b00256af479c06cd4b97950) ) /* unknown */ |
| 1656 | 1686 | ROM_LOAD( "lot-b-6f", 0x0d20, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| r6428 | r6429 | |
| 1701 | 1731 | ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ |
| 1702 | 1732 | ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ |
| 1703 | 1733 | ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ |
| 1704 | | |
| 1734 | | |
| 1705 | 1735 | ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ |
| 1706 | 1736 | ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1707 | 1737 | ROM_END |
| r6428 | r6429 | |
| 1751 | 1781 | ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ |
| 1752 | 1782 | ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ |
| 1753 | 1783 | ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ |
| 1754 | | |
| 1784 | | |
| 1755 | 1785 | ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ |
| 1756 | 1786 | ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1757 | 1787 | ROM_END |
| r6428 | r6429 | |
| 1802 | 1832 | ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ |
| 1803 | 1833 | ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ |
| 1804 | 1834 | ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ |
| 1805 | | |
| 1835 | | |
| 1806 | 1836 | ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ |
| 1807 | 1837 | ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1808 | 1838 | ROM_END |
| r6428 | r6429 | |
| 1845 | 1875 | ROM_LOAD( "dr27.3j", 0x0400, 0x0100, CRC(70d668ef) SHA1(2cc647f2708932105bb9a5130aacc5a8a160e418) ) /* character palette blue component */ |
| 1846 | 1876 | ROM_LOAD( "dr29.1l", 0x0500, 0x0100, CRC(1173a754) SHA1(dbb7d02b72ae1842e0d17aee324a5b85ff2a2178) ) /* sprite palette blue component */ |
| 1847 | 1877 | ROM_LOAD( "dr32.5p", 0x0600, 0x0020, CRC(11cd1f2e) SHA1(45ceb84ff373127ff370610c1ce8d83fc6045bcb) ) /* sprite height, one entry per 32 */ |
| 1848 | | |
| 1878 | | |
| 1849 | 1879 | ROM_LOAD( "dr28.8f", 0x0620, 0x0200, CRC(6cef0fbd) SHA1(0c5c63a203e7bd852a3574c18f212487caf529ca) ) /* unknown */ |
| 1850 | 1880 | ROM_LOAD( "dr33.6f", 0x0820, 0x0100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */ |
| 1851 | 1881 | ROM_END |
| r6428 | r6429 | |
| 2180 | 2210 | memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "maincpu") + 0x10000, 0x4000); |
| 2181 | 2211 | } |
| 2182 | 2212 | |
| 2183 | GAME( 1984, kungfum, 0, kungfum, kungfum, 0, ROT0, "Irem", "Kung-Fu Master", 0 ) | |
| 2184 | GAME( 1984, kungfumd, kungfum, kungfum, kungfum, 0, ROT0, "Irem (Data East license)", "Kung-Fu Master (Data East)", 0 ) | |
| 2185 | GAME( 1984, spartanx, kungfum, kungfum, kungfum, 0, ROT0, "Irem", "Spartan X (Japan)", 0 ) | |
| 2186 | GAME( 1984, kungfub, kungfum, kungfum, kungfum, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 1)", 0 ) | |
| 2187 | GAME( 1984, kungfub2, kungfum, kungfum, kungfum, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 2)", 0 ) | |
| 2188 | GAME( 1984, battroad, 0, battroad, battroad, battroad, ROT90, "Irem", "The Battle-Road", GAME_IMPERFECT_COLORS ) | |
| 2189 | GAME( 1984, ldrun, 0, ldrun, ldrun, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 1)", 0 ) | |
| 2190 | GAME( 1984, ldruna, ldrun, ldrun, ldrun, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 2)", 0 ) | |
| 2191 | GAME( 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 */ | |
| 2192 | GAME( 1985, ldrun3, 0, ldrun3, ldrun3, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", 0 ) | |
| 2193 | GAME( 1985, ldrun3j, ldrun3, ldrun3, ldrun3, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu", 0 ) | |
| 2194 | GAME( 1986, ldrun4, 0, ldrun4, ldrun4, ldrun4, ROT0, "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu", 0 ) | |
| 2195 | GAME( 1985, lotlot, 0, lotlot, lotlot, 0, ROT0, "Irem (licensed from Tokuma Shoten)", "Lot Lot", 0 ) | |
| 2196 | GAME( 1986, kidniki, 0, kidniki, kidniki, kidniki, ROT0, "Irem", "Kid Niki - Radical Ninja (World)", GAME_IMPERFECT_SOUND ) | |
| 2197 | GAME( 1986, kidnikiu, kidniki, kidniki, kidniki, kidniki, ROT0, "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", GAME_IMPERFECT_SOUND ) | |
| 2198 | GAME( 1986, yanchamr, kidniki, kidniki, kidniki, kidniki, ROT0, "Irem", "Kaiketsu Yanchamaru (Japan)", GAME_IMPERFECT_SOUND ) | |
| 2199 | GAME( 1987, lithero, kidniki, kidniki, kidniki, kidniki, ROT0, "bootleg", "Little Hero", GAME_IMPERFECT_SOUND ) | |
| 2200 | GAME( 1985, spelunkr, 0, spelunkr, spelunkr, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker", 0 ) | |
| 2201 | GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker (Japan)", 0 ) | |
| 2202 | GAME( 1986, spelunk2, 0, spelunk2, spelunk2, spelunk2, ROT0, "Irem (licensed from Broderbund)", "Spelunker II", GAME_IMPERFECT_SOUND ) | |
| 2203 | GAME( 1986, youjyudn, 0, youjyudn, youjyudn, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", 0 ) | |
| 2204 | GAME( 1985, horizon, 0, horizon, horizon, 0, ROT0, "Irem", "Horizon", GAME_IMPERFECT_SOUND ) | |
| 2213 | GAME( 1984, kungfum, 0, kungfum, kungfum, 0, ROT0, "Irem", "Kung-Fu Master", GAME_SUPPORTS_SAVE ) | |
| 2214 | GAME( 1984, kungfumd, kungfum, kungfum, kungfum, 0, ROT0, "Irem (Data East license)", "Kung-Fu Master (Data East)", GAME_SUPPORTS_SAVE ) | |
| 2215 | GAME( 1984, spartanx, kungfum, kungfum, kungfum, 0, ROT0, "Irem", "Spartan X (Japan)", GAME_SUPPORTS_SAVE ) | |
| 2216 | GAME( 1984, kungfub, kungfum, kungfum, kungfum, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 1)", GAME_SUPPORTS_SAVE ) | |
| 2217 | GAME( 1984, kungfub2, kungfum, kungfum, kungfum, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 2)", GAME_SUPPORTS_SAVE ) | |
| 2218 | GAME( 1984, battroad, 0, battroad, battroad, battroad, ROT90, "Irem", "The Battle-Road", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) | |
| 2219 | GAME( 1984, ldrun, 0, ldrun, ldrun, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 1)", GAME_SUPPORTS_SAVE ) | |
| 2220 | GAME( 1984, ldruna, ldrun, ldrun, ldrun, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 2)", GAME_SUPPORTS_SAVE ) | |
| 2221 | GAME( 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 */ | |
| 2222 | GAME( 1985, ldrun3, 0, ldrun3, ldrun3, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", GAME_SUPPORTS_SAVE ) | |
| 2223 | GAME( 1985, ldrun3j, ldrun3, ldrun3, ldrun3, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu", GAME_SUPPORTS_SAVE ) | |
| 2224 | GAME( 1986, ldrun4, 0, ldrun4, ldrun4, ldrun4, ROT0, "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu", GAME_SUPPORTS_SAVE ) | |
| 2225 | GAME( 1985, lotlot, 0, lotlot, lotlot, 0, ROT0, "Irem (licensed from Tokuma Shoten)", "Lot Lot", GAME_SUPPORTS_SAVE ) | |
| 2226 | GAME( 1986, kidniki, 0, kidniki, kidniki, kidniki, ROT0, "Irem", "Kid Niki - Radical Ninja (World)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2227 | GAME( 1986, kidnikiu, kidniki, kidniki, kidniki, kidniki, ROT0, "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2228 | GAME( 1986, yanchamr, kidniki, kidniki, kidniki, kidniki, ROT0, "Irem", "Kaiketsu Yanchamaru (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2229 | GAME( 1987, lithero, kidniki, kidniki, kidniki, kidniki, ROT0, "bootleg", "Little Hero", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2230 | GAME( 1985, spelunkr, 0, spelunkr, spelunkr, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker", GAME_SUPPORTS_SAVE ) | |
| 2231 | GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker (Japan)", GAME_SUPPORTS_SAVE ) | |
| 2232 | GAME( 1986, spelunk2, 0, spelunk2, spelunk2, spelunk2, ROT0, "Irem (licensed from Broderbund)", "Spelunker II", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) | |
| 2233 | GAME( 1986, youjyudn, 0, youjyudn, youjyudn, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", GAME_SUPPORTS_SAVE ) | |
| 2234 | GAME( 1985, horizon, 0, horizon, horizon, 0, ROT0, "Irem", "Horizon", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 708 | 708 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 709 | 709 | AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("ctc", z80ctc_r, z80ctc_w) |
| 710 | 710 | 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) | |
| 714 | 714 | ADDRESS_MAP_END |
| 715 | 715 | |
| 716 | 716 | |
| r6428 | r6429 | |
| 1466 | 1466 | |
| 1467 | 1467 | /* sound hardware */ |
| 1468 | 1468 | 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 */ | |
| 1470 | 1470 | MDRV_SOUND_CONFIG(ay8912_interface) |
| 1471 | 1471 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 1472 | 1472 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 124 | 124 | |
| 125 | 125 | static ADDRESS_MAP_START( megazone_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 126 | 126 | 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) | |
| 130 | 130 | ADDRESS_MAP_END |
| 131 | 131 | |
| 132 | 132 | static ADDRESS_MAP_START( megazone_i8039_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 273 | 273 | /* sound hardware */ |
| 274 | 274 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 275 | 275 | |
| 276 | MDRV_SOUND_ADD("ay", AY8910, 14318000/8) | |
| 276 | MDRV_SOUND_ADD("aysnd", AY8910, 14318000/8) | |
| 277 | 277 | MDRV_SOUND_CONFIG(ay8910_config) |
| 278 | 278 | MDRV_SOUND_ROUTE(0, "filter.0.0", 0.30) |
| 279 | 279 | MDRV_SOUND_ROUTE(1, "filter.0.1", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 138 | 138 | static ADDRESS_MAP_START( pass_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 139 | 139 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 140 | 140 | 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) | |
| 142 | 142 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_w) |
| 143 | 143 | AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_w) |
| 144 | 144 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 269 | 269 | /* sound hardware */ |
| 270 | 270 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 271 | 271 | |
| 272 | MDRV_SOUND_ADD("ym", YM2203, 14318180/4) | |
| 272 | MDRV_SOUND_ADD("ymsnd", YM2203, 14318180/4) | |
| 273 | 273 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 274 | 274 | |
| 275 | 275 | MDRV_SOUND_ADD("oki", OKIM6295, 792000) |
| r6428 | r6429 | |
|---|---|---|
| 780 | 780 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 781 | 781 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 782 | 782 | 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) | |
| 784 | 784 | AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_w) |
| 785 | 785 | AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("msm", sound_control_0_w) |
| 786 | 786 | AM_RANGE(0xce00, 0xce00) AM_DEVWRITE("msm", sound_control_1_w) |
| r6428 | r6429 | |
| 1008 | 1008 | AY8910_DEFAULT_LOADS, |
| 1009 | 1009 | DEVCB_NULL, |
| 1010 | 1010 | DEVCB_NULL, |
| 1011 | DEVCB_DEVICE_HANDLER("ay", sound_control_2_w), | |
| 1011 | DEVCB_DEVICE_HANDLER("aysnd", sound_control_2_w), | |
| 1012 | 1012 | DEVCB_HANDLER(sound_control_3_w) |
| 1013 | 1013 | }; |
| 1014 | 1014 | |
| r6428 | r6429 | |
| 1074 | 1074 | /* sound hardware */ |
| 1075 | 1075 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1076 | 1076 | |
| 1077 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 1077 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 1078 | 1078 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1079 | 1079 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 1080 | 1080 | |
| r6428 | r6429 | |
| 1131 | 1131 | /* sound hardware */ |
| 1132 | 1132 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1133 | 1133 | |
| 1134 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 1134 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 1135 | 1135 | MDRV_SOUND_CONFIG(ay8910_config) |
| 1136 | 1136 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 1137 | 1137 |
| r6428 | r6429 | |
|---|---|---|
| 132 | 132 | |
| 133 | 133 | static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 ) |
| 134 | 134 | 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) | |
| 136 | 136 | AM_RANGE(0xbe, 0xbe) AM_READWRITE(TMS9928A_vram_r, TMS9928A_vram_w) |
| 137 | 137 | AM_RANGE(0xbf, 0xbf) AM_READWRITE(TMS9928A_register_r, TMS9928A_register_w) |
| 138 | 138 | AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("ppi8255", i8255a_r, i8255a_w) |
| r6428 | r6429 | |
| 282 | 282 | /* sound hardware */ |
| 283 | 283 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 284 | 284 | |
| 285 | MDRV_SOUND_ADD("sn", SN76489, XTAL_3_579545MHz) | |
| 285 | MDRV_SOUND_ADD("snsnd", SN76489, XTAL_3_579545MHz) | |
| 286 | 286 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 287 | 287 | MACHINE_DRIVER_END |
| 288 | 288 |
| r6428 | r6429 | |
|---|---|---|
| 386 | 386 | /* sound hardware */ |
| 387 | 387 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 388 | 388 | |
| 389 | MDRV_SOUND_ADD("ym", YM2151, SOUND_CLOCK/4) /* 3.579545 MHz */ | |
| 389 | MDRV_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) /* 3.579545 MHz */ | |
| 390 | 390 | MDRV_SOUND_CONFIG(t5182_ym2151_interface) |
| 391 | 391 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 392 | 392 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 74 | 74 | AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w) |
| 75 | 75 | AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram ? */ |
| 76 | 76 | 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) | |
| 78 | 78 | AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w) |
| 79 | 79 | AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) |
| 80 | 80 | AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK(3) /* common /backup ram ?*/ |
| r6428 | r6429 | |
| 424 | 424 | |
| 425 | 425 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 426 | 426 | |
| 427 | MDRV_SOUND_ADD("st", ST0016, 0) | |
| 427 | MDRV_SOUND_ADD("stsnd", ST0016, 0) | |
| 428 | 428 | MDRV_SOUND_CONFIG(st0016_config) |
| 429 | 429 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 430 | 430 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 187 | 187 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 188 | 188 | AM_RANGE(0x0000, 0x2fff) AM_ROM |
| 189 | 189 | 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) | |
| 192 | 192 | AM_RANGE(0xfc00, 0xffff) AM_RAM |
| 193 | 193 | ADDRESS_MAP_END |
| 194 | 194 | |
| r6428 | r6429 | |
| 351 | 351 | /* sound hardware */ |
| 352 | 352 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 353 | 353 | |
| 354 | MDRV_SOUND_ADD("ay", AY8910, 19968000 / 16) | |
| 354 | MDRV_SOUND_ADD("aysnd", AY8910, 19968000 / 16) | |
| 355 | 355 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) |
| 356 | 356 | MACHINE_DRIVER_END |
| 357 | 357 |
| r6428 | r6429 | |
|---|---|---|
| 903 | 903 | /* sound hardware */ |
| 904 | 904 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 905 | 905 | |
| 906 | MDRV_SOUND_ADD("sn", SN76477, 0) | |
| 906 | MDRV_SOUND_ADD("snsnd", SN76477, 0) | |
| 907 | 907 | MDRV_SOUND_CONFIG(schaser_sn76477_interface) |
| 908 | 908 | MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0) |
| 909 | 909 |
| r6428 | r6429 | |
|---|---|---|
| 518 | 518 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 519 | 519 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 520 | 520 | 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) | |
| 522 | 522 | AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w) |
| 523 | 523 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 524 | 524 | AM_RANGE(0xe400, 0xe403) AM_WRITE(othunder_TC0310FAM_w) /* pan */ |
| r6428 | r6429 | |
| 719 | 719 | /* sound hardware */ |
| 720 | 720 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 721 | 721 | |
| 722 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 722 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 723 | 723 | MDRV_SOUND_CONFIG(ym2610_config) |
| 724 | 724 | MDRV_SOUND_ROUTE(0, "2610.0l", 0.25) |
| 725 | 725 | MDRV_SOUND_ROUTE(0, "2610.0r", 0.25) |
| r6428 | r6429 | |
| 771 | 771 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 772 | 772 | ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) ) /* index used to create 64x64 sprites on the fly */ |
| 773 | 773 | |
| 774 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 774 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 775 | 775 | ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) ) |
| 776 | 776 | |
| 777 | 777 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 807 | 807 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 808 | 808 | ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) ) /* index used to create 64x64 sprites on the fly */ |
| 809 | 809 | |
| 810 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 810 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 811 | 811 | ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) ) |
| 812 | 812 | |
| 813 | 813 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 843 | 843 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 844 | 844 | ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) ) /* index used to create 64x64 sprites on the fly */ |
| 845 | 845 | |
| 846 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 846 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 847 | 847 | ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) ) |
| 848 | 848 | |
| 849 | 849 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 879 | 879 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 880 | 880 | ROM_LOAD16_WORD( "b67-05.43", 0x00000, 0x80000, CRC(9593e42b) SHA1(54b5538c302a1734ff4b752ab87a8c45d5c6b23d) ) /* index used to create 64x64 sprites on the fly */ |
| 881 | 881 | |
| 882 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 882 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 883 | 883 | ROM_LOAD( "b67-08", 0x00000, 0x80000, CRC(458f41fb) SHA1(acca7c95acd1ae7a1cc51fb7fe644ad6d00ff5ac) ) |
| 884 | 884 | |
| 885 | 885 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
|---|---|---|
| 24 | 24 | #include "deprecat.h" |
| 25 | 25 | #include "cpu/z80/z80.h" |
| 26 | 26 | #include "sound/2203intf.h" |
| 27 | #include "1943.h" | |
| 27 | 28 | |
| 28 | extern UINT8 *c1943_scrollx; | |
| 29 | extern UINT8 *c1943_scrolly; | |
| 30 | extern UINT8 *c1943_bgscrollx; | |
| 31 | 29 | |
| 32 | extern WRITE8_HANDLER( c1943_c804_w ); | |
| 33 | extern WRITE8_HANDLER( c1943_d806_w ); | |
| 34 | extern WRITE8_HANDLER( c1943_videoram_w ); | |
| 35 | extern WRITE8_HANDLER( c1943_colorram_w ); | |
| 36 | ||
| 37 | extern PALETTE_INIT( 1943 ); | |
| 38 | extern VIDEO_START( 1943 ); | |
| 39 | extern VIDEO_UPDATE( 1943 ); | |
| 40 | ||
| 41 | 30 | /* Read/Write Handlers */ |
| 42 | 31 | |
| 43 | 32 | static READ8_HANDLER( c1943_protection_r ) |
| r6428 | r6429 | |
| 48 | 37 | */ |
| 49 | 38 | |
| 50 | 39 | 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); | |
| 52 | 41 | return data; |
| 53 | 42 | } |
| 54 | 43 | |
| r6428 | r6429 | |
| 56 | 45 | |
| 57 | 46 | static ADDRESS_MAP_START( c1943_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 58 | 47 | 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) | |
| 60 | 52 | AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") |
| 61 | 53 | AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") |
| 62 | 54 | AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") |
| r6428 | r6429 | |
| 67 | 59 | AM_RANGE(0xc804, 0xc804) AM_WRITE(c1943_c804_w) // ROM bank switch, screen flip |
| 68 | 60 | AM_RANGE(0xc806, 0xc806) AM_WRITE(watchdog_reset_w) |
| 69 | 61 | 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) | |
| 75 | 67 | AM_RANGE(0xd806, 0xd806) AM_WRITE(c1943_d806_w) // sprites, bg1, bg2 enable |
| 76 | 68 | AM_RANGE(0xd808, 0xd808) AM_WRITENOP // ??? |
| 77 | 69 | AM_RANGE(0xd868, 0xd868) AM_WRITENOP // ??? |
| 78 | 70 | AM_RANGE(0xd888, 0xd888) AM_WRITENOP // ??? |
| 79 | 71 | AM_RANGE(0xd8a8, 0xd8a8) AM_WRITENOP // ??? |
| 80 | 72 | AM_RANGE(0xe000, 0xefff) AM_RAM |
| 81 | AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE( | |
| 73 | AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_MEMBER(_1943_state, spriteram) AM_SIZE(&spriteram_size) | |
| 82 | 74 | ADDRESS_MAP_END |
| 83 | 75 | |
| 84 | 76 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 244 | 236 | GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 32*4+16*16+16*16, 16 ) |
| 245 | 237 | GFXDECODE_END |
| 246 | 238 | |
| 239 | ||
| 247 | 240 | /* Machine Driver */ |
| 248 | 241 | |
| 242 | static 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 | ||
| 249 | 252 | static MACHINE_DRIVER_START( 1943 ) |
| 253 | ||
| 254 | MDRV_DRIVER_DATA(_1943_state) | |
| 255 | ||
| 250 | 256 | // basic machine hardware |
| 251 | 257 | MDRV_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* verified on pcb */ |
| 252 | 258 | MDRV_CPU_PROGRAM_MAP(c1943_map) |
| r6428 | r6429 | |
| 256 | 262 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 257 | 263 | MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold, 4) |
| 258 | 264 | |
| 265 | MDRV_MACHINE_RESET(1943) | |
| 266 | ||
| 259 | 267 | // video hardware |
| 260 | ||
| 261 | 268 | MDRV_SCREEN_ADD("screen", RASTER) |
| 262 | 269 | MDRV_SCREEN_REFRESH_RATE(60) |
| 263 | 270 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| r6428 | r6429 | |
| 454 | 461 | ROM_LOAD( "bmprom.06", 0x0b00, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */ |
| 455 | 462 | ROM_END |
| 456 | 463 | |
| 464 | static 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 | ||
| 457 | 473 | /* Game Drivers */ |
| 458 | ||
| 459 | GAME( 1987, 1943, 0, 1943, 1943, 0, ROT270, "Capcom", "1943: The Battle of Midway (US)", GAME_SUPPORTS_SAVE ) | |
| 460 | GAME( 1987, 1943j, 1943, 1943, 1943, 0, ROT270, "Capcom", "1943: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE ) | |
| 461 | GAME( 1987, 1943kai, 0, 1943, 1943, 0, ROT270, "Capcom", "1943 Kai: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE ) | |
| 474 | GAME( 1987, 1943, 0, 1943, 1943, 1943, ROT270, "Capcom", "1943: The Battle of Midway (US)", GAME_SUPPORTS_SAVE ) | |
| 475 | GAME( 1987, 1943j, 1943, 1943, 1943, 1943, ROT270, "Capcom", "1943: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE ) | |
| 476 | GAME( 1987, 1943kai, 0, 1943, 1943, 1943, ROT270, "Capcom", "1943 Kai: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 1 | /* | |
| 2 | Popper | |
| 1 | /*************************************************************************** | |
| 3 | 2 | |
| 4 | ||
| 3 | ||
| 5 | 4 | |
| 5 | Omori Electric CAD (OEC) 1983 | |
| 6 | 6 | |
| 7 | PPR-12 | |
| 8 | 7 | |
| 8 | PPR-12 | |
| 9 | 9 | |
| 10 | 18.432MHz 6148 6148 | |
| 11 | 6148 4148 | |
| 12 | 2128 | |
| 13 | 2128 | |
| 14 | 2128 | |
| 15 | 2128 | |
| 16 | p3 p6 | |
| 17 | z80A p2 p5 | |
| 18 | p0 p1 p4 | |
| 19 | z80A | |
| 20 | 8910 | |
| 21 | 8910 SW2 SW1 p.m4 p.m3 | |
| 22 | 10 | |
| 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 | ||
| 23 | 25 | Notes: |
| 24 | 26 | |
| 25 | 27 | - a lower interleave causes some sounds to miss, different interleave values |
| r6428 | r6429 | |
| 76 | 78 | - the game freezes in much the same way as the stop dip switch when the coin |
| 77 | 79 | inputs are high (a short PORT_IMPULSE duration will still cause a hitch), |
| 78 | 80 | so potentially there's a coin lockout mechanism |
| 79 | */ | |
| 80 | 81 | |
| 82 | ***************************************************************************/ | |
| 83 | ||
| 81 | 84 | #include "driver.h" |
| 82 | 85 | #include "cpu/z80/z80.h" |
| 83 | 86 | #include "deprecat.h" |
| 84 | 87 | #include "sound/ay8910.h" |
| 88 | #include "popper.h" | |
| 85 | 89 | |
| 86 | extern UINT8 *popper_videoram, *popper_attribram, *popper_ol_videoram, *popper_ol_attribram, *popper_spriteram; | |
| 87 | extern size_t popper_spriteram_size; | |
| 88 | 90 | |
| 89 | WRITE8_HANDLER( popper_videoram_w ); | |
| 90 | WRITE8_HANDLER( popper_attribram_w ); | |
| 91 | WRITE8_HANDLER( popper_ol_videoram_w ); | |
| 92 | WRITE8_HANDLER( popper_ol_attribram_w ); | |
| 93 | WRITE8_HANDLER( popper_flipscreen_w ); | |
| 94 | WRITE8_HANDLER( popper_e002_w ); | |
| 95 | WRITE8_HANDLER( popper_gfx_bank_w ); | |
| 91 | /************************************* | |
| 92 | * | |
| 93 | * Memory handlers | |
| 94 | * | |
| 95 | *************************************/ | |
| 96 | 96 | |
| 97 | PALETTE_INIT( popper ); | |
| 98 | VIDEO_START( popper ); | |
| 99 | VIDEO_UPDATE( popper ); | |
| 100 | ||
| 101 | ||
| 102 | 97 | //e000 e001 e002 e003 |
| 103 | 98 | //76543210 76543210 76543210 76543210 |
| 104 | 99 | //x------- unused x------- unused x------- unused x------- unused |
| r6428 | r6429 | |
| 128 | 123 | // -------x sound |
| 129 | 124 | static READ8_HANDLER( popper_input_ports_r ) |
| 130 | 125 | { |
| 131 | UINT8 data=0; | |
| 126 | UINT8 data = 0; | |
| 132 | 127 | switch (offset) |
| 133 | 128 | { |
| 134 | 129 | // 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; | |
| 143 | 138 | } |
| 144 | 139 | return data; |
| 145 | 140 | } |
| r6428 | r6429 | |
| 150 | 145 | return 0; |
| 151 | 146 | } |
| 152 | 147 | |
| 148 | /************************************* | |
| 149 | * | |
| 150 | * Memory maps | |
| 151 | * | |
| 152 | *************************************/ | |
| 153 | ||
| 153 | 154 | static ADDRESS_MAP_START( popper_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 154 | 155 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 155 | 156 | 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) | |
| 158 | 159 | 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) | |
| 161 | 162 | AM_RANGE(0xce20, 0xcfff) AM_RAM |
| 162 | AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE( | |
| 163 | AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER( | |
| 163 | 164 | AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1) |
| 164 | 165 | AM_RANGE(0xe000, 0xe007) AM_READ(popper_input_ports_r) |
| 165 | 166 | AM_RANGE(0xe000, 0xe000) AM_WRITE(interrupt_enable_w) |
| r6428 | r6429 | |
| 185 | 186 | AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1) |
| 186 | 187 | ADDRESS_MAP_END |
| 187 | 188 | |
| 189 | /************************************* | |
| 190 | * | |
| 191 | * Input ports | |
| 192 | * | |
| 193 | *************************************/ | |
| 194 | ||
| 188 | 195 | static INPUT_PORTS_START( popper ) |
| 189 | 196 | PORT_START("IN0") |
| 190 | 197 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| r6428 | r6429 | |
| 258 | 265 | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 259 | 266 | INPUT_PORTS_END |
| 260 | 267 | |
| 268 | /************************************* | |
| 269 | * | |
| 270 | * Graphics definitions | |
| 271 | * | |
| 272 | *************************************/ | |
| 273 | ||
| 261 | 274 | static const gfx_layout popper_charlayout = |
| 262 | 275 | { |
| 263 | 276 | 8,8, |
| r6428 | r6429 | |
| 285 | 298 | GFXDECODE_ENTRY( "gfx2", 0, popper_spritelayout, 0, 16 ) |
| 286 | 299 | GFXDECODE_END |
| 287 | 300 | |
| 301 | /************************************* | |
| 302 | * | |
| 303 | * Machine driver | |
| 304 | * | |
| 305 | *************************************/ | |
| 306 | ||
| 307 | static 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 | ||
| 288 | 316 | static MACHINE_DRIVER_START( popper ) |
| 289 | 317 | |
| 318 | /* driver data */ | |
| 319 | MDRV_DRIVER_DATA(popper_state) | |
| 320 | ||
| 290 | 321 | /* basic machine hardware */ |
| 291 | 322 | MDRV_CPU_ADD("maincpu", Z80,18432000/6) |
| 292 | 323 | MDRV_CPU_PROGRAM_MAP(popper_map) |
| r6428 | r6429 | |
| 298 | 329 | |
| 299 | 330 | MDRV_QUANTUM_TIME(HZ(1800)) |
| 300 | 331 | |
| 332 | MDRV_MACHINE_RESET(popper) | |
| 333 | ||
| 301 | 334 | /* video hardware */ |
| 302 | 335 | MDRV_SCREEN_ADD("screen", RASTER) |
| 303 | 336 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 324 | 357 | MACHINE_DRIVER_END |
| 325 | 358 | |
| 326 | 359 | |
| 360 | /************************************* | |
| 361 | * | |
| 362 | * ROM definition | |
| 363 | * | |
| 364 | *************************************/ | |
| 365 | ||
| 327 | 366 | ROM_START( popper ) |
| 328 | 367 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 329 | 368 | ROM_LOAD( "p1", 0x0000, 0x2000, CRC(56881b70) SHA1(d3ade7a54a6cb8a0babf0d667a6b27f492a739dc) ) |
| r6428 | r6429 | |
| 346 | 385 | ROM_END |
| 347 | 386 | |
| 348 | 387 | |
| 349 | GAME( 1983, popper, 0, popper, popper, 0, ROT90, "Omori Electric Co., Ltd.", "Popper", GAME_IMPERFECT_COLORS ) | |
| 388 | /************************************* | |
| 389 | * | |
| 390 | * Game driver | |
| 391 | * | |
| 392 | *************************************/ | |
| 393 | ||
| 394 | GAME( 1983, popper, 0, popper, popper, 0, ROT90, "Omori Electric Co., Ltd.", "Popper", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 1 | 1 | /* |
| 2 | 2 | Lady Frog (c) 1990 Mondial Games |
| 3 | 3 | (there's "(c) Alfa Tecnology" in the ROM) |
| 4 | ||
| 5 | Touche Me - Unknown Manfacturer (likely the same as Lady Frog) | |
| 6 | ||
| 4 | 7 | driver by Tomasz Slanina |
| 5 | 8 | |
| 6 | 9 | 'N.Y. Captor' (TAITO) hardware , without sub cpu. |
| r6428 | r6429 | |
| 43 | 46 | |
| 44 | 47 | */ |
| 45 | 48 | |
| 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 | ||
| 49 | 49 | #include "driver.h" |
| 50 | 50 | #include "cpu/z80/z80.h" |
| 51 | 51 | #include "deprecat.h" |
| r6428 | r6429 | |
| 53 | 53 | #include "sound/msm5232.h" |
| 54 | 54 | |
| 55 | 55 | VIDEO_START( ladyfrog ); |
| 56 | VIDEO_START( toucheme ); | |
| 56 | 57 | VIDEO_UPDATE( ladyfrog ); |
| 57 | 58 | |
| 58 | 59 | extern UINT8 *ladyfrog_scrlram; |
| r6428 | r6429 | |
| 167 | 168 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 168 | 169 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 169 | 170 | 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) | |
| 171 | 172 | AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_w) |
| 172 | 173 | AM_RANGE(0xca00, 0xca00) AM_WRITENOP |
| 173 | 174 | AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP |
| r6428 | r6429 | |
| 181 | 182 | |
| 182 | 183 | |
| 183 | 184 | static INPUT_PORTS_START( ladyfrog ) |
| 185 | ||
| 184 | 186 | PORT_START("DSW1") |
| 185 | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) | |
| 187 | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") | |
| 186 | 188 | PORT_DIPSETTING( 0x00, "4" ) |
| 189 | PORT_DIPSETTING( 0x02, "3" ) | |
| 187 | 190 | PORT_DIPSETTING( 0x01, "2" ) |
| 188 | PORT_DIPSETTING( 0x02, "3" ) | |
| 189 | 191 | 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") | |
| 191 | 193 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 192 | 194 | 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") | |
| 194 | 197 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 195 | 198 | 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") | |
| 197 | 200 | PORT_DIPSETTING( 0x20, DEF_STR( No ) ) |
| 198 | 201 | 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") | |
| 200 | 203 | PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) |
| 201 | 204 | PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) |
| 202 | 205 | PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) |
| 203 | 206 | PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ) ) |
| 204 | 207 | |
| 205 | 208 | PORT_START("DSW2") |
| 206 | PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) ) | |
| 209 | PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2") | |
| 207 | 210 | PORT_DIPSETTING( 0x03, DEF_STR( Easy ) ) |
| 208 | 211 | PORT_DIPSETTING( 0x01, DEF_STR( Normal ) ) |
| 209 | 212 | PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) |
| 210 | 213 | 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") | |
| 212 | 216 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 213 | 217 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 214 | 218 | |
| 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 | ||
| 215 | 224 | PORT_START("INPUTS") |
| 216 | 225 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 217 | 226 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r6428 | r6429 | |
| 226 | 235 | INPUT_PORTS_END |
| 227 | 236 | |
| 228 | 237 | |
| 238 | static 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" ) | |
| 260 | INPUT_PORTS_END | |
| 261 | ||
| 262 | ||
| 229 | 263 | static const gfx_layout charlayout = |
| 230 | 264 | { |
| 231 | 265 | 8,8, |
| r6428 | r6429 | |
| 275 | 309 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 276 | 310 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 277 | 311 | 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 | |
| 283 | 313 | |
| 314 | ||
| 284 | 315 | MDRV_GFXDECODE(ladyfrog) |
| 285 | 316 | MDRV_PALETTE_LENGTH(512) |
| 286 | 317 | |
| r6428 | r6429 | |
| 290 | 321 | /* sound hardware */ |
| 291 | 322 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 292 | 323 | |
| 293 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4) | |
| 324 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4) | |
| 294 | 325 | MDRV_SOUND_CONFIG(ay8910_config) |
| 295 | 326 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 296 | 327 | |
| r6428 | r6429 | |
| 309 | 340 | // pin 22 Noise Output not mapped |
| 310 | 341 | MACHINE_DRIVER_END |
| 311 | 342 | |
| 343 | static MACHINE_DRIVER_START( toucheme ) | |
| 344 | MDRV_IMPORT_FROM(ladyfrog) | |
| 345 | MDRV_VIDEO_START(toucheme) | |
| 346 | MACHINE_DRIVER_END | |
| 312 | 347 | |
| 348 | ||
| 313 | 349 | ROM_START( ladyfrog ) |
| 314 | 350 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 315 | 351 | ROM_LOAD( "2.107", 0x0000, 0x10000, CRC(fa4466e6) SHA1(08e5cc8e1d3c845bc9c253267f2683671bffa9f2) ) |
| r6428 | r6429 | |
| 326 | 362 | ROM_LOAD( "8.10", 0x20000, 0x10000, CRC(8c73baa1) SHA1(50fb408be181ef3c125dee23b04daeb010c9f276) ) |
| 327 | 363 | ROM_END |
| 328 | 364 | |
| 329 | GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", 0) | |
| 365 | ROM_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) ) | |
| 379 | ROM_END | |
| 380 | ||
| 381 | GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", 0) | |
| 382 | GAME( 19??, toucheme, 0, toucheme, toucheme, 0, ORIENTATION_SWAP_XY, "Unknown", "Touche Me", 0) // art style is similar, so it's probably the same manufacturer |
| r6428 | r6429 | |
|---|---|---|
| 789 | 789 | static ADDRESS_MAP_START( cpu2_port_am, ADDRESS_SPACE_IO, 8 ) |
| 790 | 790 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 791 | 791 | 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) | |
| 793 | 793 | AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r) |
| 794 | 794 | AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 795 | 795 | AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| r6428 | r6429 | |
| 941 | 941 | |
| 942 | 942 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 943 | 943 | |
| 944 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 944 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 945 | 945 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 946 | 946 | |
| 947 | 947 | MDRV_SOUND_ADD("oki1", OKIM6295, 12000000 / 8) |
| r6428 | r6429 | |
|---|---|---|
| 185 | 185 | |
| 186 | 186 | static ADDRESS_MAP_START( whizz_io_map, ADDRESS_SPACE_IO, 8 ) |
| 187 | 187 | 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) | |
| 189 | 189 | AM_RANGE(0x40, 0x40) AM_WRITENOP |
| 190 | 190 | AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r) |
| 191 | 191 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 790 | 790 | /* sound hardware */ |
| 791 | 791 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 792 | 792 | |
| 793 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 793 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 794 | 794 | MDRV_SOUND_CONFIG(whizz_ym2151_interface) |
| 795 | 795 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 796 | 796 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 477 | 477 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 478 | 478 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2) |
| 479 | 479 | 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) | |
| 481 | 481 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 482 | 482 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 483 | 483 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 491 | 491 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 492 | 492 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2) |
| 493 | 493 | 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) | |
| 495 | 495 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 496 | 496 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 497 | 497 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 931 | 931 | /* sound hardware */ |
| 932 | 932 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 933 | 933 | |
| 934 | MDRV_SOUND_ADD("ym", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 934 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */ | |
| 935 | 935 | MDRV_SOUND_CONFIG(ym2610_config) |
| 936 | 936 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 937 | 937 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 970 | 970 | /* sound hardware */ |
| 971 | 971 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 972 | 972 | |
| 973 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 973 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 974 | 974 | MDRV_SOUND_CONFIG(ym2151_config) |
| 975 | 975 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 976 | 976 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
| 1007 | 1007 | /* sound hardware */ |
| 1008 | 1008 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1009 | 1009 | |
| 1010 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 1010 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 1011 | 1011 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1012 | 1012 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1013 | 1013 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1046 | 1046 | /* sound hardware */ |
| 1047 | 1047 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1048 | 1048 | |
| 1049 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 1049 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 1050 | 1050 | MDRV_SOUND_CONFIG(ym2610_config) |
| 1051 | 1051 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 1052 | 1052 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 1120 | 1120 | ROM_LOAD( "j01_16.bin", 0x100000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */ |
| 1121 | 1121 | ROM_LOAD( "k01_17.bin", 0x180000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) ) |
| 1122 | 1122 | |
| 1123 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1123 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1124 | 1124 | ROM_LOAD( "e18_01.bin", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) ) |
| 1125 | 1125 | ROM_END |
| 1126 | 1126 | |
| r6428 | r6429 | |
| 1141 | 1141 | ROM_LOAD( "j01_16.bin", 0x100000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */ |
| 1142 | 1142 | ROM_LOAD( "k01_17.bin", 0x180000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) ) |
| 1143 | 1143 | |
| 1144 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1144 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1145 | 1145 | ROM_LOAD( "e18_01.bin", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) ) |
| 1146 | 1146 | ROM_END |
| 1147 | 1147 | |
| r6428 | r6429 | |
| 1213 | 1213 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| 1214 | 1214 | ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) ) |
| 1215 | 1215 | |
| 1216 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1216 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1217 | 1217 | ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) ) |
| 1218 | 1218 | ROM_END |
| 1219 | 1219 | |
| r6428 | r6429 | |
| 1237 | 1237 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| 1238 | 1238 | ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) ) |
| 1239 | 1239 | |
| 1240 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1240 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1241 | 1241 | ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) ) |
| 1242 | 1242 | ROM_END |
| 1243 | 1243 | |
| r6428 | r6429 | |
| 1259 | 1259 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| 1260 | 1260 | ROM_LOAD( "m-8-5.u2", 0x00000, 0x20000, CRC(d9d90e0a) SHA1(1011548b4fb5f1a194c93ded512e74cda2c06ceb) ) |
| 1261 | 1261 | |
| 1262 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1262 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1263 | 1263 | ROM_LOAD( "m-8-4.u1", 0x00000, 0x20000, CRC(d3f6047a) SHA1(0db6d762bbe2d68cddf30e06125b904e1021b96d) ) |
| 1264 | 1264 | ROM_END |
| 1265 | 1265 | |
| r6428 | r6429 | |
| 1281 | 1281 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| 1282 | 1282 | ROM_LOAD( "east-11", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) ) |
| 1283 | 1283 | |
| 1284 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1284 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1285 | 1285 | ROM_LOAD( "east-10", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) ) |
| 1286 | 1286 | ROM_END |
| 1287 | 1287 |
| r6428 | r6429 | |
|---|---|---|
| 130 | 130 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 131 | 131 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 132 | 132 | 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) | |
| 134 | 134 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 135 | 135 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 136 | 136 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 309 | 309 | /* sound hardware */ |
| 310 | 310 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 311 | 311 | |
| 312 | MDRV_SOUND_ADD("ym", YM2151, 32220000/9) | |
| 312 | MDRV_SOUND_ADD("ymsnd", YM2151, 32220000/9) | |
| 313 | 313 | MDRV_SOUND_CONFIG(ym2151_config) |
| 314 | 314 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 315 | 315 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| r6428 | r6429 | |
|---|---|---|
| 35 | 35 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 36 | 36 | AM_RANGE(0x000000, 0x00ffff) AM_ROM |
| 37 | 37 | 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) | |
| 39 | 39 | AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 40 | 40 | AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ |
| 41 | 41 | AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 198 | 198 | /* sound hardware */ |
| 199 | 199 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 200 | 200 | |
| 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 */ | |
| 202 | 202 | MDRV_SOUND_CONFIG(ym2151_config) |
| 203 | 203 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) |
| 204 | 204 |
| r6428 | r6429 | |
|---|---|---|
| 112 | 112 | static ADDRESS_MAP_START( kingobox_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 113 | 113 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 114 | 114 | 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) | |
| 117 | 117 | ADDRESS_MAP_END |
| 118 | 118 | |
| 119 | 119 | /* Ring King */ |
| r6428 | r6429 | |
| 157 | 157 | static ADDRESS_MAP_START( ringking_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 158 | 158 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 159 | 159 | 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) | |
| 162 | 162 | ADDRESS_MAP_END |
| 163 | 163 | |
| 164 | 164 | |
| r6428 | r6429 | |
| 510 | 510 | /* sound hardware */ |
| 511 | 511 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 512 | 512 | |
| 513 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 513 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 514 | 514 | MDRV_SOUND_CONFIG(ay8910_config) |
| 515 | 515 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 516 | 516 | |
| r6428 | r6429 | |
| 560 | 560 | /* sound hardware */ |
| 561 | 561 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 562 | 562 | |
| 563 | MDRV_SOUND_ADD("ay", AY8910, 1500000) | |
| 563 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000) | |
| 564 | 564 | MDRV_SOUND_CONFIG(ay8910_config) |
| 565 | 565 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 566 | 566 |
| r6428 | r6429 | |
|---|---|---|
| 414 | 414 | AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux_ctrl_r,mux_ctrl_w)// mux status register |
| 415 | 415 | AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch ( MC6850 / timer ) |
| 416 | 416 | |
| 417 | AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay", ay8910_data_w) | |
| 417 | AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd", ay8910_data_w) | |
| 418 | 418 | 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) | |
| 420 | 420 | |
| 421 | 421 | AM_RANGE(0x3402, 0x3402) AM_DEVWRITE("acia6850_0", acia6850_ctrl_w) |
| 422 | 422 | AM_RANGE(0x3403, 0x3403) AM_DEVWRITE("acia6850_0", acia6850_data_w) |
| r6428 | r6429 | |
| 443 | 443 | MDRV_ACIA6850_ADD("acia6850_0", m6809_acia_if) |
| 444 | 444 | |
| 445 | 445 | 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 | |
| 447 | 447 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 448 | 448 | |
| 449 | 449 | MDRV_NVRAM_HANDLER(generic_0fill) // load/save nv RAM |
| r6428 | r6429 | |
|---|---|---|
| 66 | 66 | static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 67 | 67 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 68 | 68 | 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) | |
| 70 | 70 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 71 | 71 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 72 | 72 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 205 | 205 | /* sound hardware */ |
| 206 | 206 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 207 | 207 | |
| 208 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 208 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 209 | 209 | MDRV_SOUND_CONFIG(ym2151_config) |
| 210 | 210 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 211 | 211 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 202 | 202 | |
| 203 | 203 | static ADDRESS_MAP_START( z80_io_map, ADDRESS_SPACE_IO, 8 ) |
| 204 | 204 | 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) | |
| 206 | 206 | ADDRESS_MAP_END |
| 207 | 207 | |
| 208 | 208 | static ADDRESS_MAP_START( z80_m660_io_map, ADDRESS_SPACE_IO, 8 ) |
| r6428 | r6429 | |
| 214 | 214 | |
| 215 | 215 | static ADDRESS_MAP_START( vsgongf_audio_io_map, ADDRESS_SPACE_IO, 8 ) |
| 216 | 216 | 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) | |
| 218 | 218 | ADDRESS_MAP_END |
| 219 | 219 | |
| 220 | 220 | static READ8_HANDLER( sound_command1_r ) |
| r6428 | r6429 | |
| 283 | 283 | |
| 284 | 284 | static ADDRESS_MAP_START( sound3_m660_io_map, ADDRESS_SPACE_IO, 8 ) |
| 285 | 285 | 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) | |
| 287 | 287 | ADDRESS_MAP_END |
| 288 | 288 | |
| 289 | 289 | /*******************************************************************************/ |
| r6428 | r6429 | |
| 690 | 690 | /* sound hardware */ |
| 691 | 691 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 692 | 692 | |
| 693 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 693 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 694 | 694 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 695 | 695 | |
| 696 | 696 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 738 | 738 | /* sound hardware */ |
| 739 | 739 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 740 | 740 | |
| 741 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 741 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 742 | 742 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 743 | 743 | |
| 744 | 744 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
| 779 | 779 | /* sound hardware */ |
| 780 | 780 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 781 | 781 | |
| 782 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 782 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 783 | 783 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) |
| 784 | 784 | |
| 785 | 785 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 156 | 156 | AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp |
| 157 | 157 | AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2 |
| 158 | 158 | 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) | |
| 160 | 160 | ADDRESS_MAP_END |
| 161 | 161 | |
| 162 | 162 | static WRITE16_HANDLER( f1gpb_misc_w ) |
| r6428 | r6429 | |
| 455 | 455 | /* sound hardware */ |
| 456 | 456 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 457 | 457 | |
| 458 | MDRV_SOUND_ADD("ym", YM2610, XTAL_8MHz) | |
| 458 | MDRV_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) | |
| 459 | 459 | MDRV_SOUND_CONFIG(ym2610_config) |
| 460 | 460 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 461 | 461 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 563 | 563 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */ |
| 564 | 564 | ROM_LOAD( "rom14-a.09", 0x000000, 0x100000, CRC(b4c1ac31) SHA1(acab2e1b5ce4ca3a5c4734562481b54db4b46995) ) |
| 565 | 565 | |
| 566 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 566 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 567 | 567 | ROM_LOAD( "rom17-a.08", 0x000000, 0x100000, CRC(ea70303d) SHA1(8de1a0e6d47cd80a622663c1745a1da54cd0ea05) ) |
| 568 | 568 | ROM_END |
| 569 | 569 | |
| r6428 | r6429 | |
| 659 | 659 | ROM_REGION( 0x080000, "ym.deltat", 0 ) /* sound samples */ |
| 660 | 660 | ROM_LOAD( "rom4", 0x000000, 0x080000, CRC(c2d3d7ad) SHA1(3178096741583cfef1ca8f53e6efa0a59e1d5cb6) ) |
| 661 | 661 | |
| 662 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 662 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 663 | 663 | ROM_LOAD( "rom3", 0x000000, 0x100000, CRC(7f8f066f) SHA1(5e051d5feb327ac818e9c7f7ac721dada3a102b6) ) |
| 664 | 664 | ROM_END |
| 665 | 665 |
| r6428 | r6429 | |
|---|---|---|
| 58 | 58 | AM_RANGE(0x8006, 0x8006) AM_READ_PORT("IN5") //dips? |
| 59 | 59 | AM_RANGE(0x9000, 0x90ff) AM_RAM |
| 60 | 60 | 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) | |
| 62 | 62 | ADDRESS_MAP_END |
| 63 | 63 | |
| 64 | 64 | static INPUT_PORTS_START( supdrapo ) |
| r6428 | r6429 | |
| 266 | 266 | |
| 267 | 267 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 268 | 268 | |
| 269 | MDRV_SOUND_ADD("ay", AY8910, 8000000/2) /* ??? */ | |
| 269 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/2) /* ??? */ | |
| 270 | 270 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 271 | 271 | MACHINE_DRIVER_END |
| 272 | 272 |
| r6428 | r6429 | |
|---|---|---|
| 177 | 177 | |
| 178 | 178 | static ADDRESS_MAP_START( lvcards_io_map, ADDRESS_SPACE_IO, 8 ) |
| 179 | 179 | 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) | |
| 182 | 182 | ADDRESS_MAP_END |
| 183 | 183 | |
| 184 | 184 | static ADDRESS_MAP_START( lvpoker_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| r6428 | r6429 | |
| 495 | 495 | // sound hardware |
| 496 | 496 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 497 | 497 | |
| 498 | MDRV_SOUND_ADD("ay", AY8910, 18432000/12) | |
| 498 | MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12) | |
| 499 | 499 | MDRV_SOUND_CONFIG(lcay8910_interface) |
| 500 | 500 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 501 | 501 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 729 | 729 | |
| 730 | 730 | static ADDRESS_MAP_START( sound_default_am, ADDRESS_SPACE_PROGRAM, 8 ) |
| 731 | 731 | 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) | |
| 733 | 733 | AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w) |
| 734 | 734 | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram) |
| 735 | 735 | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */ |
| r6428 | r6429 | |
| 1625 | 1625 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1626 | 1626 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1627 | 1627 | |
| 1628 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1628 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1629 | 1629 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1630 | 1630 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1631 | 1631 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1649 | 1649 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.45) |
| 1650 | 1650 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.45) |
| 1651 | 1651 | |
| 1652 | MDRV_SOUND_REPLACE("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1652 | MDRV_SOUND_REPLACE("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1653 | 1653 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1654 | 1654 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1655 | 1655 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1699 | 1699 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1700 | 1700 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1701 | 1701 | |
| 1702 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1702 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1703 | 1703 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1704 | 1704 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1705 | 1705 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1749 | 1749 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1750 | 1750 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1751 | 1751 | |
| 1752 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1752 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1753 | 1753 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1754 | 1754 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1755 | 1755 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1799 | 1799 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1800 | 1800 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1801 | 1801 | |
| 1802 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1802 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1803 | 1803 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1804 | 1804 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1805 | 1805 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1849 | 1849 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.75) |
| 1850 | 1850 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.75) |
| 1851 | 1851 | |
| 1852 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1852 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1853 | 1853 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1854 | 1854 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1855 | 1855 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1899 | 1899 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1900 | 1900 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1901 | 1901 | |
| 1902 | MDRV_SOUND_ADD("ym", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1902 | MDRV_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */ | |
| 1903 | 1903 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1904 | 1904 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 1905 | 1905 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 204 | 204 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 205 | 205 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 206 | 206 | 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) | |
| 208 | 208 | AM_RANGE(0xa000, 0xa000) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 209 | 209 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 210 | 210 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 330 | 330 | /* sound hardware */ |
| 331 | 331 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 332 | 332 | |
| 333 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 333 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 334 | 334 | MDRV_SOUND_CONFIG(ym2151_config) |
| 335 | 335 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 336 | 336 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 548 | 548 | |
| 549 | 549 | static ADDRESS_MAP_START( tx1_sound_io, ADDRESS_SPACE_IO, 8 ) |
| 550 | 550 | 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) | |
| 552 | 552 | ADDRESS_MAP_END |
| 553 | 553 | |
| 554 | 554 | |
| r6428 | r6429 | |
| 742 | 742 | MDRV_SPEAKER_STANDARD_STEREO("frontleft", "frontright") |
| 743 | 743 | // MDRV_SPEAKER_STANDARD_STEREO("rearleft", "rearright") |
| 744 | 744 | |
| 745 | MDRV_SOUND_ADD("ay", AY8910, TX1_PIXEL_CLOCK / 8) | |
| 745 | MDRV_SOUND_ADD("aysnd", AY8910, TX1_PIXEL_CLOCK / 8) | |
| 746 | 746 | MDRV_SOUND_CONFIG(tx1_ay8910_interface) |
| 747 | 747 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "frontleft", 0.1) |
| 748 | 748 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "frontright", 0.1) |
| r6428 | r6429 | |
|---|---|---|
| 405 | 405 | ADDRESS_MAP_END |
| 406 | 406 | |
| 407 | 407 | static 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) | |
| 410 | 410 | ADDRESS_MAP_END |
| 411 | 411 | |
| 412 | 412 | |
| r6428 | r6429 | |
| 426 | 426 | ADDRESS_MAP_END |
| 427 | 427 | |
| 428 | 428 | static 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) | |
| 431 | 431 | ADDRESS_MAP_END |
| 432 | 432 | |
| 433 | 433 | |
| r6428 | r6429 | |
| 447 | 447 | ADDRESS_MAP_END |
| 448 | 448 | |
| 449 | 449 | static 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) | |
| 452 | 452 | ADDRESS_MAP_END |
| 453 | 453 | |
| 454 | 454 | |
| r6428 | r6429 | |
| 1197 | 1197 | /* sound hardware */ |
| 1198 | 1198 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1199 | 1199 | |
| 1200 | MDRV_SOUND_ADD("ay", AY8910, CRTC_CLOCK) | |
| 1200 | MDRV_SOUND_ADD("aysnd", AY8910, CRTC_CLOCK) | |
| 1201 | 1201 | MDRV_SOUND_CONFIG(merit_ay8912_interface) |
| 1202 | 1202 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 1203 | 1203 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 104 | 104 | AM_RANGE(0xa980, 0xa980) AM_READ_PORT("DSW2") |
| 105 | 105 | AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w) /* coin counters + irq enables */ |
| 106 | 106 | 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 */ | |
| 108 | 108 | AM_RANGE(0xa600, 0xa600) AM_WRITE(watchdog_reset_w) |
| 109 | 109 | ADDRESS_MAP_END |
| 110 | 110 | |
| r6428 | r6429 | |
| 125 | 125 | AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN2") |
| 126 | 126 | AM_RANGE(0xa180, 0xa180) AM_READ_PORT("IN3") |
| 127 | 127 | 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 */ | |
| 129 | 129 | AM_RANGE(0xa600, 0xa600) AM_WRITE(watchdog_reset_w) |
| 130 | 130 | ADDRESS_MAP_END |
| 131 | 131 | |
| r6428 | r6429 | |
| 478 | 478 | /* sound hardware */ |
| 479 | 479 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 480 | 480 | |
| 481 | MDRV_SOUND_ADD("sn", SN76496, 18432000/8) | |
| 481 | MDRV_SOUND_ADD("snsnd", SN76496, 18432000/8) | |
| 482 | 482 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 483 | 483 | MACHINE_DRIVER_END |
| 484 | 484 |
| r6428 | r6429 | |
|---|---|---|
| 72 | 72 | AM_RANGE(0xf001, 0xf001) AM_READ(ssrj_wheel_r) |
| 73 | 73 | AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2") |
| 74 | 74 | 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) | |
| 77 | 77 | AM_RANGE(0xf800, 0xf800) AM_WRITENOP /* wheel ? */ |
| 78 | 78 | AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP /* unknown */ |
| 79 | 79 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 176 | 176 | /* sound hardware */ |
| 177 | 177 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 178 | 178 | |
| 179 | MDRV_SOUND_ADD("ay", AY8910, 8000000/5) | |
| 179 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/5) | |
| 180 | 180 | MDRV_SOUND_CONFIG(ay8910_config) |
| 181 | 181 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 182 | 182 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 74 | 74 | AM_RANGE(0xf000, 0xf000) AM_READNOP AM_WRITENOP //??? |
| 75 | 75 | AM_RANGE(0xf001, 0xf001) AM_READ(input_1_r) AM_WRITE(output_0_w) |
| 76 | 76 | 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) | |
| 79 | 79 | ADDRESS_MAP_END |
| 80 | 80 | |
| 81 | 81 | |
| r6428 | r6429 | |
| 202 | 202 | |
| 203 | 203 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 204 | 204 | |
| 205 | MDRV_SOUND_ADD("ay", AY8910, 1500000/2) | |
| 205 | MDRV_SOUND_ADD("aysnd", AY8910, 1500000/2) | |
| 206 | 206 | MDRV_SOUND_CONFIG(ay8910_config) |
| 207 | 207 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 208 | 208 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 502 | 502 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 503 | 503 | AM_RANGE(0x2000, 0x27ff) AM_RAM |
| 504 | 504 | 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) | |
| 506 | 506 | AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r) |
| 507 | 507 | AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w) |
| 508 | 508 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 564 | 564 | /* sound hardware */ |
| 565 | 565 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 566 | 566 | |
| 567 | MDRV_SOUND_ADD("ay", AY8910, XTAL_16MHz/8) | |
| 567 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_16MHz/8) | |
| 568 | 568 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 569 | 569 | MACHINE_DRIVER_END |
| 570 | 570 |
| r6428 | r6429 | |
|---|---|---|
| 208 | 208 | AM_RANGE( 0x6492, 0x6492 ) AM_WRITE( spoker_leds_w ) |
| 209 | 209 | AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) |
| 210 | 210 | |
| 211 | AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ym", ym2413_w ) | |
| 211 | AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE( "ymsnd", ym2413_w ) | |
| 212 | 212 | |
| 213 | 213 | AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE( "oki", okim6295_r, okim6295_w ) |
| 214 | 214 | |
| r6428 | r6429 | |
| 381 | 381 | |
| 382 | 382 | /* sound hardware */ |
| 383 | 383 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 384 | MDRV_SOUND_ADD("ym", YM2413, XTAL_3_579545MHz) | |
| 384 | MDRV_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) | |
| 385 | 385 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 386 | 386 | |
| 387 | 387 | MDRV_SOUND_ADD("oki", OKIM6295, XTAL_12MHz / 12) |
| r6428 | r6429 | |
|---|---|---|
| 399 | 399 | AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ |
| 400 | 400 | AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ |
| 401 | 401 | 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) | |
| 404 | 404 | ADDRESS_MAP_END |
| 405 | 405 | |
| 406 | 406 | |
| r6428 | r6429 | |
| 421 | 421 | AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_cchip_status_0_r) /* custom chip status ??? */ |
| 422 | 422 | AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w) /* ADPCM number */ |
| 423 | 423 | 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) | |
| 426 | 426 | AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ |
| 427 | 427 | AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE(&spriteram16) /* Sprites Y */ |
| 428 | 428 | AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */ |
| r6428 | r6429 | |
| 558 | 558 | AM_RANGE(0xa1, 0xa1) AM_READ(srmp3_cchip_status_0_r) /* custom chip status ??? */ |
| 559 | 559 | AM_RANGE(0xc0, 0xc0) AM_READWRITE(srmp3_input_r, srmp3_input_1_w) /* key matrix | I/O ??? */ |
| 560 | 560 | 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) | |
| 563 | 563 | ADDRESS_MAP_END |
| 564 | 564 | |
| 565 | 565 | |
| r6428 | r6429 | |
| 1049 | 1049 | /* sound hardware */ |
| 1050 | 1050 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1051 | 1051 | |
| 1052 | MDRV_SOUND_ADD("ay", AY8910, 20000000/16) | |
| 1052 | MDRV_SOUND_ADD("aysnd", AY8910, 20000000/16) | |
| 1053 | 1053 | MDRV_SOUND_CONFIG(srmp2_ay8910_interface) |
| 1054 | 1054 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 1055 | 1055 | |
| r6428 | r6429 | |
| 1089 | 1089 | /* sound hardware */ |
| 1090 | 1090 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1091 | 1091 | |
| 1092 | MDRV_SOUND_ADD("ay", AY8910, 16000000/16) | |
| 1092 | MDRV_SOUND_ADD("aysnd", AY8910, 16000000/16) | |
| 1093 | 1093 | MDRV_SOUND_CONFIG(srmp2_ay8910_interface) |
| 1094 | 1094 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 1095 | 1095 | |
| r6428 | r6429 | |
| 1125 | 1125 | /* sound hardware */ |
| 1126 | 1126 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1127 | 1127 | |
| 1128 | MDRV_SOUND_ADD("ay", AY8910, 16000000/16) | |
| 1128 | MDRV_SOUND_ADD("aysnd", AY8910, 16000000/16) | |
| 1129 | 1129 | MDRV_SOUND_CONFIG(srmp2_ay8910_interface) |
| 1130 | 1130 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 1131 | 1131 |
| r6428 | r6429 | |
|---|---|---|
| 187 | 187 | |
| 188 | 188 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 189 | 189 | 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) | |
| 192 | 192 | AM_RANGE(0x40, 0x40) AM_DEVWRITE("upd", D7759_write_port_0_w) |
| 193 | 193 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", D7759_upd_reset_w) |
| 194 | 194 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 625 | 625 | /* sound hardware */ |
| 626 | 626 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 627 | 627 | |
| 628 | MDRV_SOUND_ADD("ym", YM3812, XTAL_8MHz/2) /* verified on pcb */ | |
| 628 | MDRV_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2) /* verified on pcb */ | |
| 629 | 629 | MDRV_SOUND_CONFIG(ym3812_config) |
| 630 | 630 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 631 | 631 |
| r6428 | r6429 | |
|---|---|---|
| 112 | 112 | AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM |
| 113 | 113 | AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_RAM /* unknown device in an epoxy block, might be tilt detection */ |
| 114 | 114 | 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) | |
| 116 | 116 | AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x1ffc) AM_WRITE(soundlatch2_w) |
| 117 | 117 | AM_RANGE(0xf800, 0xffff) AM_ROM |
| 118 | 118 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 188 | 188 | /* audio hardware */ |
| 189 | 189 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 190 | 190 | |
| 191 | MDRV_SOUND_ADD("ay", AY8910, SOUND_CLOCK / 4) | |
| 191 | MDRV_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK / 4) | |
| 192 | 192 | MDRV_SOUND_CONFIG(ay8910_config) |
| 193 | 193 | MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0) |
| 194 | 194 | MDRV_SOUND_ROUTE_EX(1, "discrete", 1.0, 1) |
| r6428 | r6429 | |
|---|---|---|
| 25 | 25 | #include "driver.h" |
| 26 | 26 | #include "cpu/m6809/m6809.h" |
| 27 | 27 | #include "sound/ay8910.h" |
| 28 | #include "aeroboto.h" | |
| 28 | 29 | |
| 29 | 30 | |
| 30 | extern UINT8 *aeroboto_videoram; | |
| 31 | extern UINT8 *aeroboto_hscroll, *aeroboto_vscroll, *aeroboto_tilecolor; | |
| 32 | extern UINT8 *aeroboto_starx, *aeroboto_stary, *aeroboto_bgcolor; | |
| 33 | ||
| 34 | VIDEO_START( aeroboto ); | |
| 35 | VIDEO_UPDATE( aeroboto ); | |
| 36 | ||
| 37 | READ8_HANDLER( aeroboto_in0_r ); | |
| 38 | WRITE8_HANDLER( aeroboto_3000_w ); | |
| 39 | WRITE8_HANDLER( aeroboto_videoram_w ); | |
| 40 | WRITE8_HANDLER( aeroboto_tilecolor_w ); | |
| 41 | ||
| 42 | static UINT8 *aeroboto_mainram; | |
| 43 | static int disable_irq = 0; | |
| 44 | ||
| 45 | ||
| 46 | 31 | static READ8_HANDLER( aeroboto_201_r ) |
| 47 | 32 | { |
| 33 | aeroboto_state *state = (aeroboto_state *)space->machine->driver_data; | |
| 48 | 34 | /* if you keep a button pressed during boot, the game will expect this */ |
| 49 | 35 | /* 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]; | |
| 54 | 40 | } |
| 55 | 41 | |
| 56 | 42 | |
| 57 | 43 | static INTERRUPT_GEN( aeroboto_interrupt ) |
| 58 | 44 | { |
| 59 | if (!disable_irq) | |
| 45 | aeroboto_state *state = (aeroboto_state *)device->machine->driver_data; | |
| 46 | ||
| 47 | if (!state->disable_irq) | |
| 60 | 48 | cpu_set_input_line(device, 0, HOLD_LINE); |
| 61 | 49 | else |
| 62 | disable_irq--; | |
| 50 | state->disable_irq--; | |
| 63 | 51 | } |
| 64 | 52 | |
| 65 | 53 | static READ8_HANDLER( aeroboto_2973_r ) |
| 66 | 54 | { |
| 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; | |
| 69 | 59 | } |
| 70 | 60 | |
| 71 | 61 | static WRITE8_HANDLER ( aeroboto_1a2_w ) |
| 72 | 62 | { |
| 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; | |
| 75 | 68 | } |
| 76 | 69 | |
| 77 | 70 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 78 | 71 | AM_RANGE(0x01a2, 0x01a2) AM_WRITE(aeroboto_1a2_w) // affects IRQ line (more protection?) |
| 79 | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE( | |
| 72 | AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_MEMBER( | |
| 80 | 73 | AM_RANGE(0x0800, 0x08ff) AM_RAM // tile color buffer; copied to 0x2000 |
| 81 | 74 | 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 | |
| 85 | 78 | AM_RANGE(0x1840, 0x27ff) AM_WRITENOP // cleared during custom LSI test |
| 86 | AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE( | |
| 79 | AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(aeroboto_state, spriteram) AM_SIZE(&spriteram_size) // sprite RAM | |
| 87 | 80 | AM_RANGE(0x2900, 0x2fff) AM_WRITENOP // cleared along with sprite RAM |
| 88 | 81 | AM_RANGE(0x2973, 0x2973) AM_READ(aeroboto_2973_r) // protection read |
| 89 | 82 | AM_RANGE(0x3000, 0x3000) AM_READWRITE(aeroboto_in0_r, aeroboto_3000_w) |
| 90 | 83 | AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_WRITE(soundlatch_w) |
| 91 | 84 | 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) | |
| 96 | 89 | AM_RANGE(0x3800, 0x3800) AM_READNOP // watchdog or IRQ ack |
| 97 | 90 | AM_RANGE(0x4000, 0xffff) AM_ROM // main ROM |
| 98 | 91 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 229 | 222 | |
| 230 | 223 | static MACHINE_START( formatz ) |
| 231 | 224 | { |
| 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); | |
| 233 | 232 | } |
| 234 | 233 | |
| 234 | static 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 | ||
| 235 | 249 | static MACHINE_DRIVER_START( formatz ) |
| 236 | 250 | |
| 251 | /* driver data */ | |
| 252 | MDRV_DRIVER_DATA(aeroboto_state) | |
| 253 | ||
| 237 | 254 | /* basic machine hardware */ |
| 238 | 255 | MDRV_CPU_ADD("maincpu", M6809, XTAL_10MHz/8) /* verified on pcb */ |
| 239 | 256 | MDRV_CPU_PROGRAM_MAP(main_map) |
| r6428 | r6429 | |
| 243 | 260 | MDRV_CPU_PROGRAM_MAP(sound_map) |
| 244 | 261 | MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) |
| 245 | 262 | |
| 246 | MDRV_MACHINE_START(formatz) | |
| 263 | MDRV_MACHINE_START(formatz) | |
| 264 | MDRV_MACHINE_RESET(formatz) | |
| 247 | 265 | |
| 248 | 266 | /* video hardware */ |
| 249 | 267 | MDRV_SCREEN_ADD("screen", RASTER) |
| r6428 | r6429 | |
|---|---|---|
| 284 | 284 | |
| 285 | 285 | static void scsi_irq(running_machine *machine) |
| 286 | 286 | { |
| 287 | psx_irq_set(machine, | |
| 287 | psx_irq_set(machine, 0x400 | |
| 288 | 288 | } |
| 289 | 289 | |
| 290 | 290 | static const SCSIConfigTable dev_table = |
| r6428 | r6429 | |
|---|---|---|
| 299 | 299 | |
| 300 | 300 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 301 | 301 | 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) | |
| 303 | 303 | AM_RANGE(0x2000, 0x2000) AM_WRITE(firetrap_adpcm_data_w) /* ADPCM data for the MSM5205 chip */ |
| 304 | 304 | AM_RANGE(0x2400, 0x2400) AM_WRITE(firetrap_sound_2400_w) |
| 305 | 305 | AM_RANGE(0x2800, 0x2800) AM_WRITE(firetrap_sound_bankselect_w) |
| r6428 | r6429 | |
| 588 | 588 | /* sound hardware */ |
| 589 | 589 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 590 | 590 | |
| 591 | MDRV_SOUND_ADD("ym", YM3526, 3000000) | |
| 591 | MDRV_SOUND_ADD("ymsnd", YM3526, 3000000) | |
| 592 | 592 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 593 | 593 | |
| 594 | 594 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
| 626 | 626 | /* sound hardware */ |
| 627 | 627 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 628 | 628 | |
| 629 | MDRV_SOUND_ADD("ym", YM3526, 3000000) | |
| 629 | MDRV_SOUND_ADD("ymsnd", YM3526, 3000000) | |
| 630 | 630 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 631 | 631 | |
| 632 | 632 | MDRV_SOUND_ADD("msm", MSM5205, 384000) |
| r6428 | r6429 | |
|---|---|---|
| 179 | 179 | |
| 180 | 180 | static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 181 | 181 | 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 ) // | |
| 183 | 183 | AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r ) // From Main CPU |
| 184 | 184 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 185 | 185 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 382 | 382 | /* sound hardware */ |
| 383 | 383 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 384 | 384 | |
| 385 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 385 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ | |
| 386 | 386 | MDRV_SOUND_CONFIG(thedeep_ym2203_intf) |
| 387 | 387 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 388 | 388 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 134 | 134 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 135 | 135 | AM_RANGE(0x8000, 0x8000) AM_READWRITE(soundlatch_r,soundlatch_w) |
| 136 | 136 | 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) | |
| 138 | 138 | AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w) |
| 139 | 139 | ADDRESS_MAP_END |
| 140 | 140 | |
| r6428 | r6429 | |
| 372 | 372 | |
| 373 | 373 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 374 | 374 | |
| 375 | MDRV_SOUND_ADD("ym", YM3812, 3500000) | |
| 375 | MDRV_SOUND_ADD("ymsnd", YM3812, 3500000) | |
| 376 | 376 | MDRV_SOUND_CONFIG(ym3812_config) |
| 377 | 377 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 378 | 378 | |
| r6428 | r6429 | |
| 439 | 439 | /* no samples for this game */ |
| 440 | 440 | |
| 441 | 441 | 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? | |
| 443 | 443 | ROM_END |
| 444 | 444 | |
| 445 | 445 | ROM_START( maddonnb ) |
| r6428 | r6429 | |
| 465 | 465 | /* no samples for this game */ |
| 466 | 466 | |
| 467 | 467 | 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? | |
| 469 | 469 | ROM_END |
| 470 | 470 | |
| 471 | 471 |
| r6428 | r6429 | |
|---|---|---|
| 122 | 122 | AM_RANGE(0x0000, 0xbfff) AM_READWRITE(SMH_ROM, SMH_NOP) // there are some garbage writes to ROM |
| 123 | 123 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 124 | 124 | |
| 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) | |
| 127 | 127 | AM_RANGE(0xd008, 0xd008) AM_WRITE(dominob_d008_w) |
| 128 | 128 | AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("IN0") |
| 129 | 129 | AM_RANGE(0xd010, 0xd010) AM_READ_PORT("IN1") AM_WRITENOP |
| r6428 | r6429 | |
| 266 | 266 | |
| 267 | 267 | /* sound hardware */ |
| 268 | 268 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 269 | MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */) | |
| 269 | MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */) | |
| 270 | 270 | MDRV_SOUND_CONFIG(ay8910_config) |
| 271 | 271 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 272 | 272 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 644 | 644 | atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO | ATAPI_INTREASON_COMMAND; |
| 645 | 645 | } |
| 646 | 646 | |
| 647 | psx_irq_set(machine, | |
| 647 | psx_irq_set(machine, 0x400 | |
| 648 | 648 | |
| 649 | 649 | verboselog( machine, 2, "atapi_xfer_end: %d %d\n", atapi_xferlen, atapi_xfermod ); |
| 650 | 650 | } |
| r6428 | r6429 | |
| 695 | 695 | atapi_regs[ATAPI_REG_COUNTLOW] = atapi_xferlen & 0xff; |
| 696 | 696 | atapi_regs[ATAPI_REG_COUNTHIGH] = (atapi_xferlen>>8)&0xff; |
| 697 | 697 | |
| 698 | psx_irq_set(space->machine, | |
| 698 | psx_irq_set(space->machine, 0x400 | |
| 699 | 699 | } |
| 700 | 700 | |
| 701 | 701 | if( atapi_data_ptr < atapi_data_len ) |
| r6428 | r6429 | |
| 712 | 712 | { |
| 713 | 713 | atapi_regs[ATAPI_REG_CMDSTATUS] = 0; |
| 714 | 714 | atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO; |
| 715 | psx_irq_set(space->machine, | |
| 715 | psx_irq_set(space->machine, 0x400 | |
| 716 | 716 | } |
| 717 | 717 | } |
| 718 | 718 | } |
| r6428 | r6429 | |
| 795 | 795 | SCSIWriteData( inserted_cdrom, atapi_data, atapi_cdata_wait ); |
| 796 | 796 | |
| 797 | 797 | // assert IRQ |
| 798 | psx_irq_set(space->machine, | |
| 798 | psx_irq_set(space->machine, 0x400 | |
| 799 | 799 | |
| 800 | 800 | // not sure here, but clear DRQ at least? |
| 801 | 801 | atapi_regs[ATAPI_REG_CMDSTATUS] = 0; |
| r6428 | r6429 | |
| 868 | 868 | } |
| 869 | 869 | |
| 870 | 870 | // assert IRQ |
| 871 | psx_irq_set(space->machine, | |
| 871 | psx_irq_set(space->machine, 0x400 | |
| 872 | 872 | } |
| 873 | 873 | else |
| 874 | 874 | { |
| r6428 | r6429 | |
| 985 | 985 | atapi_regs[ATAPI_REG_COUNTLOW] = 0; |
| 986 | 986 | atapi_regs[ATAPI_REG_COUNTHIGH] = 2; |
| 987 | 987 | |
| 988 | psx_irq_set(space->machine, | |
| 988 | psx_irq_set(space->machine, 0x400 | |
| 989 | 989 | break; |
| 990 | 990 | |
| 991 | 991 | case 0xef: // SET FEATURES |
| r6428 | r6429 | |
| 994 | 994 | atapi_data_ptr = 0; |
| 995 | 995 | atapi_data_len = 0; |
| 996 | 996 | |
| 997 | psx_irq_set(space->machine, | |
| 997 | psx_irq_set(space->machine, 0x400 | |
| 998 | 998 | break; |
| 999 | 999 | |
| 1000 | 1000 | default: |
| r6428 | r6429 | |
| 1338 | 1338 | if( ( m_p_n_root_mode[ n_counter ] & RC_IRQOVERFLOW ) != 0 || |
| 1339 | 1339 | ( m_p_n_root_mode[ n_counter ] & RC_IRQTARGET ) != 0 ) |
| 1340 | 1340 | { |
| 1341 | psx_irq_set( machine, | |
| 1341 | psx_irq_set( machine, | |
| 1342 | 1342 | } |
| 1343 | 1343 | } |
| 1344 | 1344 |
| r6428 | r6429 | |
|---|---|---|
| 568 | 568 | *************************************/ |
| 569 | 569 | |
| 570 | 570 | GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 571 | GAMEL( 1978, sbrkout3, | |
| 571 | GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| r6428 | r6429 | |
|---|---|---|
| 132 | 132 | |
| 133 | 133 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 134 | 134 | 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 */ | |
| 136 | 136 | AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("upd", bladestl_speech_ctrl_w) /* UPD7759 */ |
| 137 | 137 | AM_RANGE(0x4000, 0x4000) AM_DEVREAD("upd", bladestl_speech_busy_r) /* UPD7759 */ |
| 138 | 138 | AM_RANGE(0x5000, 0x5000) AM_WRITENOP /* ??? */ |
| r6428 | r6429 | |
| 304 | 304 | MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) |
| 305 | 305 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) |
| 306 | 306 | |
| 307 | MDRV_SOUND_ADD("ym", YM2203, 3579545) | |
| 307 | MDRV_SOUND_ADD("ymsnd", YM2203, 3579545) | |
| 308 | 308 | MDRV_SOUND_CONFIG(ym2203_config) |
| 309 | 309 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) |
| 310 | 310 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 266 | 266 | ADDRESS_MAP_END |
| 267 | 267 | |
| 268 | 268 | static 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) | |
| 270 | 270 | AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("konami1", k053260_r,k053260_w) |
| 271 | 271 | AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("konami2", k053260_r,k053260_w) |
| 272 | 272 | AM_RANGE(0x0800, 0x0fff) AM_RAM |
| r6428 | r6429 | |
| 371 | 371 | /* sound hardware */ |
| 372 | 372 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 373 | 373 | |
| 374 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 374 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 375 | 375 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 376 | 376 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 377 | 377 |
| r6428 | r6429 | |
|---|---|---|
| 9 | 9 | this is actually the m68k C compiler used for doing this game. |
| 10 | 10 | |
| 11 | 11 | TODO: |
| 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; | |
| 16 | 15 | |
| 17 | 16 | *******************************************************************************************/ |
| 18 | 17 | |
| r6428 | r6429 | |
| 20 | 19 | #include "cpu/m68000/m68000.h" |
| 21 | 20 | #include "sound/okim6295.h" |
| 22 | 21 | #include "machine/eeprom.h" |
| 23 | #include "rendlay.h" | |
| 24 | 22 | |
| 25 | 23 | |
| 26 | static UINT16 *sc0_vram; | |
| 27 | static UINT16 *sc1_vram; | |
| 28 | static UINT16 *sc2_vram; | |
| 29 | static UINT16 *sc3_vram; | |
| 30 | ||
| 24 | static UINT16 *jackpool_vram; | |
| 25 | static UINT8 map_vreg; | |
| 31 | 26 | static UINT16 *jackpool_io; |
| 32 | 27 | |
| 28 | ||
| 33 | 29 | static VIDEO_START(jackpool) |
| 34 | 30 | { |
| 35 | 31 | } |
| 36 | 32 | |
| 37 | 33 | static VIDEO_UPDATE(jackpool) |
| 38 | 34 | { |
| 39 | const device_config *left_screen = devtag_get_device(screen->machine, "lscreen"); | |
| 40 | const device_config *right_screen = devtag_get_device(screen->machine, "rscreen"); | |
| 41 | 35 | const gfx_element *gfx = screen->machine->gfx[0]; |
| 42 | 36 | int count;// = 0x00000/2; |
| 43 | 37 | |
| 44 | 38 | int y,x; |
| 45 | 39 | |
| 46 | if(screen == left_screen) | |
| 47 | 40 | { |
| 48 | count = 0x000 | |
| 41 | count = map_vreg*(0x4000 | |
| 49 | 42 | for (y=0;y<32;y++) |
| 50 | 43 | { |
| 51 | 44 | for (x=0;x<64;x++) |
| 52 | 45 | { |
| 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; | |
| 58 | 48 | |
| 49 | drawgfx_opaque(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8); | |
| 59 | 50 | count++; |
| 60 | 51 | } |
| 61 | 52 | } |
| 62 | 53 | |
| 63 | count = 0x000 | |
| 54 | count = map_vreg*(0x4000 | |
| 64 | 55 | for (y=0;y<32;y++) |
| 65 | 56 | { |
| 66 | 57 | for (x=0;x<64;x++) |
| 67 | 58 | { |
| 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); | |
| 78 | 60 | |
| 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); | |
| 91 | 65 | |
| 92 | count++; | |
| 93 | } | |
| 94 | } | |
| 66 | drawgfx_transpen(bitmap,cliprect,gfx,tile,attr,0,0,x*8,y*8,(t_pen) ? 0 : -1); | |
| 67 | } | |
| 95 | 68 | |
| 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); | |
| 107 | 69 | count++; |
| 108 | 70 | } |
| 109 | 71 | } |
| r6428 | r6429 | |
| 122 | 84 | { |
| 123 | 85 | switch(offset*2) |
| 124 | 86 | { |
| 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"); | |
| 130 | 94 | case 0x10: return input_port_read(space->machine,"HOLD3"); |
| 131 | 95 | case 0x12: return input_port_read(space->machine,"HOLD4"); |
| 132 | 96 | case 0x14: return input_port_read(space->machine,"HOLD2"); |
| r6428 | r6429 | |
| 134 | 98 | case 0x18: return input_port_read(space->machine,"HOLD5"); |
| 135 | 99 | case 0x1a: return input_port_read(space->machine,"START1"); |
| 136 | 100 | 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; | |
| 139 | 106 | } |
| 140 | 107 | |
| 141 | 108 | // printf("R %02x\n",offset*2); |
| r6428 | r6429 | |
| 144 | 111 | |
| 145 | 112 | static WRITE16_HANDLER( jackpool_io_w ) |
| 146 | 113 | { |
| 147 | // printf("W %02x %02x\n",offset*2,data); | |
| 148 | 114 | COMBINE_DATA(&jackpool_io[offset]); |
| 149 | 115 | |
| 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 | ||
| 150 | 140 | #if 0 |
| 151 | 141 | if(offset*2 == 0x54) |
| 152 | 142 | { |
| r6428 | r6429 | |
| 170 | 160 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 171 | 161 | AM_RANGE(0x100000, 0x10ffff) AM_RAM |
| 172 | 162 | 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? | |
| 182 | 165 | |
| 183 | 166 | AM_RANGE(0x360000, 0x3603ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16) |
| 184 | 167 | AM_RANGE(0x380000, 0x380061) AM_READWRITE(jackpool_io_r,jackpool_io_w) AM_BASE(&jackpool_io)//AM_READ(jackpool_io_r) |
| 185 | 168 | |
| 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 | |
| 187 | 170 | AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 188 | 171 | ADDRESS_MAP_END |
| 189 | 172 | |
| r6428 | r6429 | |
| 202 | 185 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) |
| 203 | 186 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 204 | 187 | PORT_START("START1") |
| 205 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_ | |
| 188 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_G | |
| 206 | 189 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 207 | 190 | PORT_START("START2") |
| 208 | 191 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) |
| 209 | 192 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 210 | 193 | 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") | |
| 212 | 195 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 213 | 196 | PORT_START("HOLD1") |
| 214 | 197 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) |
| 215 | 198 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 216 | 199 | 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") | |
| 218 | 201 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 219 | 202 | PORT_START("HOLD3") |
| 220 | 203 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) |
| 221 | 204 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 222 | 205 | 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") | |
| 224 | 207 | PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 225 | 208 | PORT_START("HOLD5") |
| 226 | 209 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) |
| 227 | 210 | 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 ) | |
| 228 | 216 | INPUT_PORTS_END |
| 229 | 217 | |
| 230 | 218 | |
| r6428 | r6429 | |
| 254 | 242 | static MACHINE_DRIVER_START( jackpool ) |
| 255 | 243 | MDRV_CPU_ADD("maincpu", M68000, 12000000) // ? |
| 256 | 244 | MDRV_CPU_PROGRAM_MAP(jackpool_mem) |
| 257 | MDRV_CPU_VBLANK_INT(" | |
| 245 | MDRV_CPU_VBLANK_INT(" | |
| 258 | 246 | |
| 259 | 247 | MDRV_GFXDECODE(jackpool) |
| 260 | MDRV_DEFAULT_LAYOUT(layout_dualhsxs) | |
| 261 | 248 | |
| 262 | MDRV_SCREEN_ADD(" | |
| 249 | MDRV_SCREEN_ADD(" | |
| 263 | 250 | MDRV_SCREEN_REFRESH_RATE(60) |
| 264 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) | |
| 251 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) | |
| 265 | 252 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 266 | 253 | MDRV_SCREEN_SIZE(64*8, 64*8) |
| 267 | 254 | MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) |
| 268 | 255 | |
| 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 | ||
| 276 | 256 | MDRV_NVRAM_HANDLER(93C46) |
| 277 | 257 | |
| 278 | 258 | MDRV_PALETTE_LENGTH(0x200) |
| r6428 | r6429 | |
| 303 | 283 | ROM_LOAD( "jpc7", 0xc0000, 0x40000, CRC(b1d40623) SHA1(fb76ae6b53474bd4bee19dbce9537da0f2b63ff4) ) |
| 304 | 284 | ROM_END |
| 305 | 285 | |
| 306 | GAME( 1997, jackpool, 0, jackpool, jackpool, 0, ROT0, "Electronic Projects", "Jackpot Cards / Jackpot Pool (Italy)",GAME_NOT_WORKING ) | |
| 286 | static DRIVER_INIT( jackpool ) | |
| 287 | { | |
| 288 | UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu"); | |
| 289 | ||
| 290 | /* patch NVRAM routine */ | |
| 291 | rom[0x9040/2] = 0x6602; | |
| 292 | } | |
| 293 | ||
| 294 | GAME( 1997, jackpool, 0, jackpool, jackpool, jackpool, ROT0, "Electronic Projects", "Jackpot Cards / Jackpot Pool (Italy)",GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 347 | 347 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 348 | 348 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 349 | 349 | 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) | |
| 351 | 351 | AM_RANGE(0x18, 0x18) AM_READ(soundlatch_r) |
| 352 | 352 | AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 353 | 353 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1009 | 1009 | /* sound hardware */ |
| 1010 | 1010 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1011 | 1011 | |
| 1012 | MDRV_SOUND_ADD("ym", YM3812, 4000000) /* 4MHz */ | |
| 1012 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) /* 4MHz */ | |
| 1013 | 1013 | MDRV_SOUND_CONFIG(ym3812_intf) |
| 1014 | 1014 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1015 | 1015 |
| r6428 | r6429 | |
|---|---|---|
| 185 | 185 | AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM) |
| 186 | 186 | AM_RANGE(0xc000, 0xdfff) AM_RAM |
| 187 | 187 | 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) | |
| 189 | 189 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w) |
| 190 | 190 | AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r) |
| 191 | 191 | AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) |
| r6428 | r6429 | |
| 378 | 378 | /* sound hardware */ |
| 379 | 379 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 380 | 380 | |
| 381 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 381 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 382 | 382 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 383 | 383 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 384 | 384 | |
| r6428 | r6429 | |
| 454 | 454 | /* sound hardware */ |
| 455 | 455 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 456 | 456 | |
| 457 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 457 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 458 | 458 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 459 | 459 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| 460 | 460 |
| r6428 | r6429 | |
|---|---|---|
| 95 | 95 | |
| 96 | 96 | #include "mario.h" |
| 97 | 97 | |
| 98 | static READ8_DEVICE_HANDLER(mario_dma_read_byte); | |
| 99 | static WRITE8_DEVICE_HANDLER(mario_dma_write_byte); | |
| 100 | ||
| 101 | 98 | /************************************* |
| 102 | 99 | * |
| 103 | 100 | * statics |
| 104 | 101 | * |
| 105 | 102 | *************************************/ |
| 106 | 103 | |
| 107 | static | |
| 104 | static Z | |
| 108 | 105 | { |
| 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 | |
| 115 | 113 | }; |
| 116 | 114 | |
| 117 | /************************************* | |
| 118 | * | |
| 119 | * Machine setup | |
| 120 | * | |
| 121 | *************************************/ | |
| 122 | ||
| 123 | /************************************* | |
| 124 | * | |
| 125 | * DMA handling | |
| 126 | * | |
| 127 | *************************************/ | |
| 128 | ||
| 129 | static READ8_DEVICE_HANDLER(mario_dma_read_byte) | |
| 115 | static WRITE8_DEVICE_HANDLER( mario_z80dma_rdy_w ) | |
| 130 | 116 | { |
| 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); | |
| 133 | 118 | } |
| 134 | 119 | |
| 135 | static 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 | } | |
| 140 | 120 | |
| 141 | 121 | /************************************* |
| 142 | 122 | * |
| r6428 | r6429 | |
| 156 | 136 | AM_RANGE(0x7e82, 0x7e82) AM_WRITE(mario_flip_w) |
| 157 | 137 | AM_RANGE(0x7e83, 0x7e83) AM_WRITE(mario_palettebank_w) |
| 158 | 138 | 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 */ | |
| 160 | 140 | AM_RANGE(0x7f00, 0x7f07) AM_WRITE(mario_sh3_w) /* Sound port */ |
| 161 | 141 | AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */ |
| 162 | 142 | AM_RANGE(0x7e00, 0x7e00) AM_WRITE(mario_sh_tuneselect_w) |
| r6428 | r6429 | |
| 176 | 156 | AM_RANGE(0x7e82, 0x7e82) AM_WRITE(mario_flip_w) |
| 177 | 157 | AM_RANGE(0x7e83, 0x7e83) AM_WRITE(mario_palettebank_w) |
| 178 | 158 | 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 */ | |
| 180 | 160 | AM_RANGE(0x7f00, 0x7f00) AM_WRITE(masao_sh_irqtrigger_w) |
| 181 | 161 | AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */ |
| 182 | 162 | AM_RANGE(0xf000, 0xffff) AM_ROM |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 10 | Notes: | |
| 11 | ||
| 12 | TODO: | |
| 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 | ||
| 43 | extern VIDEO_UPDATE( nbmj8900 ); | |
| 44 | extern VIDEO_START( nbmj8900_2layer ); | |
| 45 | ||
| 46 | extern READ8_HANDLER( nbmj8900_palette_type1_r ); | |
| 47 | extern WRITE8_HANDLER( nbmj8900_palette_type1_w ); | |
| 48 | extern WRITE8_HANDLER( nbmj8900_blitter_w ); | |
| 49 | extern WRITE8_HANDLER( nbmj8900_scrolly_w ); | |
| 50 | extern WRITE8_HANDLER( nbmj8900_vramsel_w ); | |
| 51 | extern WRITE8_HANDLER( nbmj8900_romsel_w ); | |
| 52 | extern WRITE8_HANDLER( nbmj8900_clutsel_w ); | |
| 53 | extern READ8_HANDLER( nbmj8900_clut_r ); | |
| 54 | extern WRITE8_HANDLER( nbmj8900_clut_w ); | |
| 55 | ||
| 56 | ||
| 57 | static 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 | ||
| 90 | static 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 | ||
| 123 | static 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 | |
| 128 | ADDRESS_MAP_END | |
| 129 | ||
| 130 | static 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 | |
| 135 | ADDRESS_MAP_END | |
| 136 | ||
| 137 | static 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) | |
| 158 | ADDRESS_MAP_END | |
| 159 | ||
| 160 | ||
| 161 | INPUT_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 ) | |
| 243 | INPUT_PORTS_END | |
| 244 | ||
| 245 | INPUT_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 ) | |
| 327 | INPUT_PORTS_END | |
| 328 | ||
| 329 | ||
| 330 | ||
| 331 | static 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) | |
| 361 | MACHINE_DRIVER_END | |
| 362 | ||
| 363 | ||
| 364 | static 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) | |
| 370 | MACHINE_DRIVER_END | |
| 371 | ||
| 372 | ||
| 373 | ||
| 374 | ROM_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 | |
| 394 | ROM_END | |
| 395 | ||
| 396 | ROM_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 | |
| 419 | ROM_END | |
| 420 | ||
| 421 | // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS) | |
| 422 | GAME( 1989, ohpaipee, 0, ohpaipee, ohpaipee, ohpaipee, ROT270, "Nichibutsu", "Oh! Paipee (Japan 890227)", GAME_IMPERFECT_GRAPHICS ) | |
| 423 | GAME( 1989, togenkyo, 0, togenkyo, togenkyo, togenkyo, ROT0, "Nichibutsu", "Tougenkyou (Japan 890418)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 112 | 112 | #include "atarifb4.lh" |
| 113 | 113 | #include "abaseb.lh" |
| 114 | 114 | |
| 115 | ||
| 116 | ||
| 117 | 115 | /************************************* |
| 118 | 116 | * |
| 119 | 117 | * Palette generation |
| r6428 | r6429 | |
| 123 | 121 | static PALETTE_INIT( atarifb ) |
| 124 | 122 | { |
| 125 | 123 | /* 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 */ | |
| 128 | 126 | |
| 129 | 127 | /* 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 */ | |
| 134 | 132 | |
| 135 | 133 | /* 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 */ | |
| 142 | 140 | } |
| 143 | 141 | |
| 144 | 142 | |
| r6428 | r6429 | |
| 152 | 150 | static ADDRESS_MAP_START( atarifb_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 153 | 151 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 154 | 152 | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 155 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE( | |
| 153 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER( | |
| 156 | 154 | 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 */ | |
| 161 | 159 | AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb_out1_w) /* OUT 1 */ |
| 162 | 160 | AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ |
| 163 | 161 | AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ |
| r6428 | r6429 | |
| 172 | 170 | static ADDRESS_MAP_START( atarifb4_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 173 | 171 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 174 | 172 | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 175 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE( | |
| 173 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER( | |
| 176 | 174 | 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 */ | |
| 181 | 179 | AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb4_out1_w) /* OUT 1 */ |
| 182 | 180 | AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ |
| 183 | 181 | AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ |
| r6428 | r6429 | |
| 193 | 191 | static ADDRESS_MAP_START( abaseb_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 194 | 192 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
| 195 | 193 | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 196 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE( | |
| 194 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER( | |
| 197 | 195 | 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 */ | |
| 202 | 200 | AM_RANGE(0x2001, 0x2001) AM_WRITE(abaseb_out1_w) /* OUT 1 */ |
| 203 | 201 | AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ |
| 204 | 202 | AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ |
| r6428 | r6429 | |
| 213 | 211 | static ADDRESS_MAP_START( soccer_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 214 | 212 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 215 | 213 | AM_RANGE(0x0000, 0x01ff) AM_RAM |
| 216 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE( | |
| 214 | AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_BASE_MEMBER( | |
| 217 | 215 | 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 */ | |
| 222 | 220 | AM_RANGE(0x1001, 0x1001) AM_WRITE(soccer_out1_w) /* OUT 1 */ |
| 223 | 221 | AM_RANGE(0x1002, 0x1002) AM_WRITE(soccer_out2_w) /* OUT 2 */ |
| 224 | 222 | AM_RANGE(0x1004, 0x1004) AM_WRITENOP /* Interrupt Acknowledge */ |
| r6428 | r6429 | |
| 507 | 505 | * |
| 508 | 506 | *************************************/ |
| 509 | 507 | |
| 508 | static 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 | ||
| 531 | static 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 | ||
| 510 | 554 | static MACHINE_DRIVER_START( atarifb ) |
| 511 | 555 | |
| 556 | /* driver data */ | |
| 557 | MDRV_DRIVER_DATA(atarifb_state) | |
| 558 | ||
| 512 | 559 | /* basic machine hardware */ |
| 513 | 560 | MDRV_CPU_ADD("maincpu", M6502, 750000) |
| 514 | 561 | MDRV_CPU_PROGRAM_MAP(atarifb_map) |
| 515 | 562 | MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) |
| 516 | 563 | |
| 564 | MDRV_MACHINE_START(atarifb) | |
| 565 | MDRV_MACHINE_RESET(atarifb) | |
| 566 | ||
| 517 | 567 | /* video hardware */ |
| 518 | 568 | MDRV_SCREEN_ADD("screen", RASTER) |
| 519 | 569 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 735 | 785 | *************************************/ |
| 736 | 786 | |
| 737 | 787 | /* YEAR NAME PARENT MACHINE INPUT */ |
| 738 | GAMEL( 1978, atarifb, 0, atarifb, atarifb, 0, ROT0, "Atari", "Atari Football (revision 2)", 0, layout_atarifb ) | |
| 739 | GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, 0, ROT0, "Atari", "Atari Football (revision 1)", 0, layout_atarifb ) | |
| 740 | GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, 0, ROT0, "Atari", "Atari Football (4 players)", 0, layout_atarifb4 ) | |
| 741 | GAMEL( 1979, abaseb, 0, abaseb, abaseb, 0, ROT0, "Atari", "Atari Baseball (set 1)", 0, layout_abaseb ) | |
| 742 | GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, 0, ROT0, "Atari", "Atari Baseball (set 2)", 0, layout_abaseb ) | |
| 743 | GAME ( 1980, soccer, 0, soccer, soccer, 0, ROT0, "Atari", "Atari Soccer", 0 ) | |
| 788 | GAMEL( 1978, atarifb, 0, atarifb, atarifb, 0, ROT0, "Atari", "Atari Football (revision 2)", GAME_SUPPORTS_SAVE, layout_atarifb ) | |
| 789 | GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, 0, ROT0, "Atari", "Atari Football (revision 1)", GAME_SUPPORTS_SAVE, layout_atarifb ) | |
| 790 | GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, 0, ROT0, "Atari", "Atari Football (4 players)", GAME_SUPPORTS_SAVE, layout_atarifb4 ) | |
| 791 | GAMEL( 1979, abaseb, 0, abaseb, abaseb, 0, ROT0, "Atari", "Atari Baseball (set 1)", GAME_SUPPORTS_SAVE, layout_abaseb ) | |
| 792 | GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, 0, ROT0, "Atari", "Atari Baseball (set 2)", GAME_SUPPORTS_SAVE, layout_abaseb ) | |
| 793 | GAME ( 1980, soccer, 0, soccer, soccer, 0, ROT0, "Atari", "Atari Soccer", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 169 | 169 | AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS") |
| 170 | 170 | AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW") |
| 171 | 171 | 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) | |
| 173 | 173 | AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff0000) |
| 174 | 174 | AM_RANGE(0xc00034, 0xc00037) AM_DEVWRITE("oki1", silk_6295_bank_w) |
| 175 | 175 | AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w) |
| r6428 | r6429 | |
| 309 | 309 | /* sound hardware */ |
| 310 | 310 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 311 | 311 | |
| 312 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 312 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 313 | 313 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 314 | 314 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 315 | 315 |
| r6428 | r6429 | |
|---|---|---|
| 133 | 133 | |
| 134 | 134 | static ADDRESS_MAP_START( wink_sound_io, ADDRESS_SPACE_IO, 8 ) |
| 135 | 135 | 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) | |
| 138 | 138 | ADDRESS_MAP_END |
| 139 | 139 | |
| 140 | 140 | static INPUT_PORTS_START( wink ) |
| r6428 | r6429 | |
| 351 | 351 | |
| 352 | 352 | /* sound hardware */ |
| 353 | 353 | 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 | |
| 355 | 355 | MDRV_SOUND_CONFIG(ay8912_interface) |
| 356 | 356 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 357 | 357 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 120 | 120 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 121 | 121 | AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */ |
| 122 | 122 | 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) | |
| 124 | 124 | AM_RANGE(0xfc08, 0xfc08) AM_READ(soundlatch_r) |
| 125 | 125 | AM_RANGE(0xfc0c, 0xfc0c) AM_NOP |
| 126 | 126 | AM_RANGE(0xfffe, 0xffff) AM_RAM |
| r6428 | r6429 | |
| 427 | 427 | /* sound hardware */ |
| 428 | 428 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 429 | 429 | |
| 430 | MDRV_SOUND_ADD("ym", YM2151, 8000000/2) | |
| 430 | MDRV_SOUND_ADD("ymsnd", YM2151, 8000000/2) | |
| 431 | 431 | MDRV_SOUND_CONFIG(ym2151_config) |
| 432 | 432 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 433 | 433 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 233 | 233 | AM_RANGE(0x400000, 0x4fffff) AM_RAM AM_BASE(&unkram)// video stuff, 460000 - video regs ? |
| 234 | 234 | AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16) |
| 235 | 235 | 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) | |
| 237 | 237 | AM_RANGE(0x60000c, 0x60000d) AM_RAM |
| 238 | 238 | AM_RANGE(0x60000e, 0x60000f) AM_RAM |
| 239 | 239 | AM_RANGE(0x700000, 0x70000f) AM_READWRITE(drill_io_r,drill_io_w) AM_BASE(&iodata) // i/o |
| r6428 | r6429 | |
| 419 | 419 | |
| 420 | 420 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 421 | 421 | |
| 422 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 422 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 423 | 423 | MDRV_SOUND_CONFIG(ym2610_config) |
| 424 | 424 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 425 | 425 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 433 | 433 | ROM_LOAD16_BYTE( "d58-38.ic11", 0x00000, 0x40000, CRC(c58e8e4f) SHA1(648db679c3bfb5de1cd6c1b1217773a2fe56f11b) ) |
| 434 | 434 | ROM_LOAD16_BYTE( "d58-37.ic9", 0x00001, 0x40000, CRC(19e5cc3c) SHA1(04ac0eef893c579fe90d91d7fd55c5741a2b7460) ) |
| 435 | 435 | |
| 436 | ROM_REGION( 0x200000, "ym", 0 ) /* Samples */ | |
| 436 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */ | |
| 437 | 437 | ROM_LOAD( "d58-11.ic31", 0x000000, 0x200000, CRC(dc26d58d) SHA1(cffb18667da18f5367b02af85a2f7674dd61ae97) ) |
| 438 | 438 | |
| 439 | 439 | ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 ) |
| r6428 | r6429 | |
|---|---|---|
| 97 | 97 | |
| 98 | 98 | static READ8_DEVICE_HANDLER(at_dma8237_2_r) |
| 99 | 99 | { |
| 100 | return | |
| 100 | return i | |
| 101 | 101 | } |
| 102 | 102 | |
| 103 | 103 | static WRITE8_DEVICE_HANDLER(at_dma8237_2_w) |
| 104 | 104 | { |
| 105 | | |
| 105 | i | |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | static READ32_DEVICE_HANDLER(at32_dma8237_2_r) |
| r6428 | r6429 | |
| 316 | 316 | * |
| 317 | 317 | *************************************************************************/ |
| 318 | 318 | |
| 319 | static int dma_channel; | |
| 319 | 320 | static UINT8 dma_offset[2][4]; |
| 320 | 321 | static UINT8 at_pages[0x10]; |
| 321 | 322 | |
| r6428 | r6429 | |
| 365 | 366 | } |
| 366 | 367 | |
| 367 | 368 | |
| 368 | static | |
| 369 | static W | |
| 369 | 370 | { |
| 370 | 371 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 371 | 372 | |
| 372 | 373 | /* Assert HLDA */ |
| 373 | | |
| 374 | i | |
| 374 | 375 | } |
| 375 | 376 | |
| 376 | 377 | |
| 377 | static | |
| 378 | static READ8 | |
| 378 | 379 | { |
| 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) | |
| 381 | 381 | & 0xFF0000; |
| 382 | 382 | |
| 383 | 383 | return memory_read_byte(space, page_offset + offset); |
| 384 | 384 | } |
| 385 | 385 | |
| 386 | 386 | |
| 387 | static | |
| 387 | static | |
| 388 | 388 | { |
| 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) | |
| 391 | 390 | & 0xFF0000; |
| 392 | 391 | |
| 393 | 392 | memory_write_byte(space, page_offset + offset, data); |
| 394 | 393 | } |
| 395 | 394 | |
| 396 | 395 | |
| 397 | static const struct dma8237_interface dma8237_1_config = | |
| 398 | { | |
| 399 | XTAL_14_31818MHz/3, | |
| 396 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { if (state) dma_channel = 0; } | |
| 397 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { if (state) dma_channel = 1; } | |
| 398 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { if (state) dma_channel = 2; } | |
| 399 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { if (state) dma_channel = 3; } | |
| 400 | 400 | |
| 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 | |
| 401 | static 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) } | |
| 408 | 410 | }; |
| 409 | 411 | |
| 410 | ||
| 411 | static const struct dma8237_interface dma8237_2_config = | |
| 412 | static I8237_INTERFACE( dma8237_2_config ) | |
| 412 | 413 | { |
| 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 } | |
| 422 | 421 | }; |
| 423 | 422 | |
| 424 | 423 | static READ32_HANDLER(at_page32_r) |
| r6428 | r6429 | |
| 447 | 446 | ADDRESS_MAP_END |
| 448 | 447 | |
| 449 | 448 | static ADDRESS_MAP_START(taitowlf_io, ADDRESS_SPACE_IO, 32) |
| 450 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 449 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 451 | 450 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 452 | 451 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 453 | 452 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| r6428 | r6429 | |
| 622 | 621 | |
| 623 | 622 | MDRV_PIT8254_ADD( "pit8254", taitowlf_pit8254_config ) |
| 624 | 623 | |
| 625 | MDRV_ | |
| 624 | MDRV_I | |
| 626 | 625 | |
| 627 | MDRV_ | |
| 626 | MDRV_I | |
| 628 | 627 | |
| 629 | 628 | MDRV_PIC8259_ADD( "pic8259_1", taitowlf_pic8259_1_config ) |
| 630 | 629 |
| r6428 | r6429 | |
|---|---|---|
| 101 | 101 | |
| 102 | 102 | static ADDRESS_MAP_START( scotrsht_sound_port, ADDRESS_SPACE_IO, 8 ) |
| 103 | 103 | 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) | |
| 105 | 105 | ADDRESS_MAP_END |
| 106 | 106 | |
| 107 | 107 | |
| r6428 | r6429 | |
| 218 | 218 | /* sound hardware */ |
| 219 | 219 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 220 | 220 | |
| 221 | MDRV_SOUND_ADD("ym", YM2203, 18432000/6) | |
| 221 | MDRV_SOUND_ADD("ymsnd", YM2203, 18432000/6) | |
| 222 | 222 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
| 223 | 223 | MACHINE_DRIVER_END |
| 224 | 224 |
| r6428 | r6429 | |
|---|---|---|
| 1606 | 1606 | AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE(1) |
| 1607 | 1607 | AM_RANGE(0x400000, 0x400007) AM_WRITE(spacegun_pancontrol) /* pan */ |
| 1608 | 1608 | // 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) | |
| 1610 | 1610 | AM_RANGE(0x60000c, 0x60000d) AM_NOP // interrupt controller? |
| 1611 | 1611 | AM_RANGE(0x60000e, 0x60000f) AM_NOP |
| 1612 | 1612 | AM_RANGE(0x800000, 0x801fff) AM_READWRITE(TC0150ROD_word_r, TC0150ROD_word_w) /* "root ram" */ |
| r6428 | r6429 | |
| 1701 | 1701 | AM_RANGE(0x20c000, 0x20ffff) AM_RAM |
| 1702 | 1702 | AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE(1) |
| 1703 | 1703 | 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) | |
| 1705 | 1705 | AM_RANGE(0xc0000c, 0xc0000d) AM_NOP // interrupt controller? |
| 1706 | 1706 | AM_RANGE(0xc0000e, 0xc0000f) AM_NOP |
| 1707 | 1707 | AM_RANGE(0xc20000, 0xc20007) AM_WRITE(spacegun_pancontrol) /* pan */ |
| r6428 | r6429 | |
| 1765 | 1765 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 1766 | 1766 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 1767 | 1767 | 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) | |
| 1769 | 1769 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 1770 | 1770 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 1771 | 1771 | AM_RANGE(0xe400, 0xe403) AM_WRITE(taitoz_pancontrol) /* pan */ |
| r6428 | r6429 | |
| 2919 | 2919 | MDRV_SPEAKER_ADD("rear", 0.0, 0.0, 1.3) |
| 2920 | 2920 | MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0) |
| 2921 | 2921 | |
| 2922 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 2922 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 2923 | 2923 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2924 | 2924 | MDRV_SOUND_ROUTE(0, "subwoofer", 0.20) |
| 2925 | 2925 | MDRV_SOUND_ROUTE(1, "2610.1.l", 2.0) |
| r6428 | r6429 | |
| 2975 | 2975 | MDRV_SPEAKER_ADD("rear", 0.0, 0.0, 1.3) |
| 2976 | 2976 | MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0) |
| 2977 | 2977 | |
| 2978 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 2978 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 2979 | 2979 | MDRV_SOUND_CONFIG(ym2610_config) |
| 2980 | 2980 | MDRV_SOUND_ROUTE(0, "subwoofer", 0.20) |
| 2981 | 2981 | MDRV_SOUND_ROUTE(1, "2610.1.l", 1.0) |
| r6428 | r6429 | |
| 3029 | 3029 | /* sound hardware */ |
| 3030 | 3030 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3031 | 3031 | |
| 3032 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3032 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3033 | 3033 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3034 | 3034 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3035 | 3035 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3083 | 3083 | /* sound hardware */ |
| 3084 | 3084 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3085 | 3085 | |
| 3086 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3086 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3087 | 3087 | MDRV_SOUND_CONFIG(ym2610_interfaceb) |
| 3088 | 3088 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3089 | 3089 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3138 | 3138 | /* sound hardware */ |
| 3139 | 3139 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3140 | 3140 | |
| 3141 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3141 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3142 | 3142 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3143 | 3143 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3144 | 3144 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3195 | 3195 | MDRV_SPEAKER_ADD("rear", 0.0, 0.0, 1.3) |
| 3196 | 3196 | MDRV_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0) |
| 3197 | 3197 | |
| 3198 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3198 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3199 | 3199 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3200 | 3200 | MDRV_SOUND_ROUTE(0, "subwoofer", 0.20) |
| 3201 | 3201 | MDRV_SOUND_ROUTE(1, "2610.1.l", 2.0) |
| r6428 | r6429 | |
| 3249 | 3249 | /* sound hardware */ |
| 3250 | 3250 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3251 | 3251 | |
| 3252 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3252 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3253 | 3253 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3254 | 3254 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3255 | 3255 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3301 | 3301 | /* sound hardware */ |
| 3302 | 3302 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3303 | 3303 | |
| 3304 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3304 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3305 | 3305 | MDRV_SOUND_CONFIG(ym2610_interfaceb) |
| 3306 | 3306 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3307 | 3307 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3356 | 3356 | /* sound hardware */ |
| 3357 | 3357 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3358 | 3358 | |
| 3359 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3359 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3360 | 3360 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3361 | 3361 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3362 | 3362 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3410 | 3410 | /* sound hardware */ |
| 3411 | 3411 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3412 | 3412 | |
| 3413 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 3413 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 3414 | 3414 | MDRV_SOUND_CONFIG(ym2610_config) |
| 3415 | 3415 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 3416 | 3416 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 3468 | 3468 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3469 | 3469 | ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ |
| 3470 | 3470 | |
| 3471 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 3471 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3472 | 3472 | ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) |
| 3473 | 3473 | ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) |
| 3474 | 3474 | |
| r6428 | r6429 | |
| 3510 | 3510 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3511 | 3511 | ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ |
| 3512 | 3512 | |
| 3513 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 3513 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3514 | 3514 | ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) |
| 3515 | 3515 | ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) |
| 3516 | 3516 | |
| r6428 | r6429 | |
| 3552 | 3552 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3553 | 3553 | ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ |
| 3554 | 3554 | |
| 3555 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 3555 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3556 | 3556 | ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) |
| 3557 | 3557 | ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) |
| 3558 | 3558 | |
| r6428 | r6429 | |
| 3602 | 3602 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3603 | 3603 | ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) ) /* STY spritemap */ |
| 3604 | 3604 | |
| 3605 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 3605 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3606 | 3606 | ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) ) |
| 3607 | 3607 | ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) ) |
| 3608 | 3608 | ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) ) |
| r6428 | r6429 | |
| 3682 | 3682 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3683 | 3683 | ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) ) /* STY spritemap */ |
| 3684 | 3684 | |
| 3685 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 3685 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3686 | 3686 | ROM_LOAD( "b52-41.71", 0x000000, 0x80000, CRC(8204880c) SHA1(4dfd6454b4a4c04db3593e98648afbfe8d1f59ed) ) |
| 3687 | 3687 | ROM_LOAD( "b52-40.72", 0x080000, 0x80000, CRC(f0551055) SHA1(4498cd058a52d5e87c6d502e844908a5df3abf2a) ) |
| 3688 | 3688 | ROM_LOAD( "b52-39.73", 0x100000, 0x80000, CRC(ac9cbbd3) SHA1(792f41fef37ff35067fd0173d944f90279176649) ) |
| r6428 | r6429 | |
| 3762 | 3762 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3763 | 3763 | ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) ) /* STY spritemap */ |
| 3764 | 3764 | |
| 3765 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 3765 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3766 | 3766 | ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) ) |
| 3767 | 3767 | ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) ) |
| 3768 | 3768 | ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) ) |
| r6428 | r6429 | |
| 3901 | 3901 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3902 | 3902 | ROM_LOAD16_WORD( "b58-05.71", 0x00000, 0x80000, CRC(d1f4991b) SHA1(f1c5a9b8dce994d013290e98fda7bedf73e95900) ) /* STY spritemap */ |
| 3903 | 3903 | |
| 3904 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 3904 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3905 | 3905 | ROM_LOAD( "b58-07.11", 0x000000, 0x080000, CRC(eeb5ba08) SHA1(fe40333e09339c76e503ce87b42a89b48d487016) ) |
| 3906 | 3906 | ROM_LOAD( "b58-08.12", 0x080000, 0x080000, CRC(049243cf) SHA1(1f3099b6d764114dc4161ed308369d0f3148dc4e) ) |
| 3907 | 3907 | |
| r6428 | r6429 | |
| 3945 | 3945 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3946 | 3946 | ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) ) /* STY spritemap */ |
| 3947 | 3947 | |
| 3948 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3948 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3949 | 3949 | ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) ) |
| 3950 | 3950 | |
| 3951 | 3951 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 3987 | 3987 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 3988 | 3988 | ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) ) /* STY spritemap */ |
| 3989 | 3989 | |
| 3990 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 3990 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 3991 | 3991 | ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) ) |
| 3992 | 3992 | |
| 3993 | 3993 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4031 | 4031 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4032 | 4032 | ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ |
| 4033 | 4033 | |
| 4034 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4034 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4035 | 4035 | ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) |
| 4036 | 4036 | ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) |
| 4037 | 4037 | ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) |
| r6428 | r6429 | |
| 4080 | 4080 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4081 | 4081 | ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ |
| 4082 | 4082 | |
| 4083 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4083 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4084 | 4084 | ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) |
| 4085 | 4085 | ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) |
| 4086 | 4086 | ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) |
| r6428 | r6429 | |
| 4124 | 4124 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4125 | 4125 | ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ |
| 4126 | 4126 | |
| 4127 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4127 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4128 | 4128 | ROM_LOAD( "c09-10.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) |
| 4129 | 4129 | ROM_LOAD( "c09-09.43", 0x080000, 0x080000, CRC(6a655c00) SHA1(5ae1ee422226e386550b69a1f35668c10d3bdcc2) ) |
| 4130 | 4130 | ROM_LOAD( "c09-08.44", 0x100000, 0x080000, CRC(7ddfc316) SHA1(47f0ed8eecd4719b4c5cb8762ee6b8bb01686812) ) |
| r6428 | r6429 | |
| 4168 | 4168 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4169 | 4169 | ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ |
| 4170 | 4170 | |
| 4171 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4171 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4172 | 4172 | ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) |
| 4173 | 4173 | ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) |
| 4174 | 4174 | ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) |
| r6428 | r6429 | |
| 4212 | 4212 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4213 | 4213 | ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ |
| 4214 | 4214 | |
| 4215 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4215 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4216 | 4216 | ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) |
| 4217 | 4217 | ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) |
| 4218 | 4218 | ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) |
| r6428 | r6429 | |
| 4262 | 4262 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4263 | 4263 | ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) ) /* STY spritemap */ |
| 4264 | 4264 | |
| 4265 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4265 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4266 | 4266 | ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) ) |
| 4267 | 4267 | ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) ) |
| 4268 | 4268 | |
| r6428 | r6429 | |
| 4316 | 4316 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4317 | 4317 | ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) ) /* STY spritemap */ |
| 4318 | 4318 | |
| 4319 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4319 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4320 | 4320 | ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) ) |
| 4321 | 4321 | ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) ) |
| 4322 | 4322 | |
| r6428 | r6429 | |
| 4369 | 4369 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4370 | 4370 | ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) ) /* STY spritemap */ |
| 4371 | 4371 | |
| 4372 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 4372 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4373 | 4373 | ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) ) |
| 4374 | 4374 | ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) ) |
| 4375 | 4375 | |
| r6428 | r6429 | |
| 4415 | 4415 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4416 | 4416 | ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) ) /* STY spritemap */ |
| 4417 | 4417 | |
| 4418 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4418 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4419 | 4419 | ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) ) |
| 4420 | 4420 | |
| 4421 | 4421 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4456 | 4456 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4457 | 4457 | ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) ) /* STY spritemap */ |
| 4458 | 4458 | |
| 4459 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4459 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4460 | 4460 | ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) ) |
| 4461 | 4461 | |
| 4462 | 4462 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4492 | 4492 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4493 | 4493 | ROM_LOAD16_WORD( "c57-05.36", 0x00000, 0x80000, CRC(6a70eb2e) SHA1(307dd876af65204e86e094b4015ffb4a655824f8) ) /* STY spritemap */ |
| 4494 | 4494 | |
| 4495 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 4495 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4496 | 4496 | ROM_LOAD( "c57-07.76", 0x00000, 0x80000, CRC(ad653dc1) SHA1(2ec440f793b0a686233fbe61c9462f8365c42b65) ) |
| 4497 | 4497 | |
| 4498 | 4498 | ROM_REGION( 0x80000, "ym.deltat", 0 ) /* Delta-T samples */ |
| r6428 | r6429 | |
| 4540 | 4540 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4541 | 4541 | ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) ) /* STY spritemap */ |
| 4542 | 4542 | |
| 4543 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4543 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4544 | 4544 | ROM_LOAD( "c78-12.33", 0x000000, 0x100000, CRC(b0267404) SHA1(ffd337336ff9b096e3725f733364762f6e6d3fab) ) |
| 4545 | 4545 | ROM_LOAD( "c78-13.46", 0x100000, 0x080000, CRC(1b363aa2) SHA1(0aae3988024654e98cc0c784307b1c329c8f0783) ) |
| 4546 | 4546 | |
| r6428 | r6429 | |
| 4586 | 4586 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4587 | 4587 | ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) ) /* STY spritemap */ |
| 4588 | 4588 | |
| 4589 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4589 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4590 | 4590 | ROM_LOAD( "c78-01.33", 0x000000, 0x100000, CRC(90ff1e72) SHA1(6115e3683bc701922953b644427d1ddb471bf037) ) |
| 4591 | 4591 | ROM_LOAD( "c78-02.46", 0x100000, 0x080000, CRC(8882d2b7) SHA1(4d3abac1e50cd5ae79a562f430563032a11e8390) ) |
| 4592 | 4592 | |
| r6428 | r6429 | |
| 4632 | 4632 | ROM_REGION16_LE( 0x80000, "user1", 0 ) |
| 4633 | 4633 | ROM_LOAD16_WORD( "c84-88.3", 0x00000, 0x80000, CRC(edd1f49c) SHA1(f11c419dcc7da03ef1f1665c1344c27ff35fe867) ) /* STY spritemap */ |
| 4634 | 4634 | |
| 4635 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 4635 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 4636 | 4636 | ROM_LOAD( "c84-86.33", 0x000000, 0x100000, CRC(98d9771e) SHA1(0cbb6b08e1fa5e632309962d7ad7dca448ef4d78) ) |
| 4637 | 4637 | ROM_LOAD( "c84-87.46", 0x100000, 0x080000, CRC(9c1dd80c) SHA1(e1bae4e02fd94413fac4683e39e530f9d508d658) ) |
| 4638 | 4638 |
| r6428 | r6429 | |
|---|---|---|
| 248 | 248 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 249 | 249 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 250 | 250 | 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) | |
| 252 | 252 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 253 | 253 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 254 | 254 | AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w) |
| r6428 | r6429 | |
| 412 | 412 | /* sound hardware */ |
| 413 | 413 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 414 | 414 | |
| 415 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 415 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 416 | 416 | MDRV_SOUND_CONFIG(ym2151_config) |
| 417 | 417 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 418 | 418 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 715 | 715 | static ADDRESS_MAP_START( st0016_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 716 | 716 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 717 | 717 | 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) | |
| 719 | 719 | AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) |
| 720 | 720 | AM_RANGE(0xf000, 0xffff) AM_RAM |
| 721 | 721 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 774 | 774 | |
| 775 | 775 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 776 | 776 | |
| 777 | MDRV_SOUND_ADD("st", ST0016, 0) | |
| 777 | MDRV_SOUND_ADD("stsnd", ST0016, 0) | |
| 778 | 778 | MDRV_SOUND_CONFIG(st0016_config) |
| 779 | 779 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 780 | 780 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 516 | 516 | |
| 517 | 517 | static ADDRESS_MAP_START( saklove_io, ADDRESS_SPACE_IO, 8 ) |
| 518 | 518 | 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 ) | |
| 520 | 520 | |
| 521 | 521 | AM_RANGE(0x0060, 0x0062) AM_WRITE( colordac_w ) |
| 522 | 522 | |
| r6428 | r6429 | |
| 883 | 883 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) |
| 884 | 884 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 885 | 885 | |
| 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 | |
| 887 | 887 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 888 | 888 | MACHINE_DRIVER_END |
| 889 | 889 |
| r6428 | r6429 | |
|---|---|---|
| 760 | 760 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 761 | 761 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) |
| 762 | 762 | 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) | |
| 764 | 764 | AM_RANGE(0xc0b0, 0xc0b0) AM_WRITENOP // n.c. |
| 765 | 765 | AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(equites_cymbal_ctrl_w) |
| 766 | 766 | AM_RANGE(0xc0d0, 0xc0d0) AM_WRITE(equites_dac_latch_w) // followed by 1 (and usually 0) on 8155 port B |
| r6428 | r6429 | |
| 1180 | 1180 | MDRV_SOUND_ROUTE(9, "mono", 1.0) // pin 2 SOLO 16' (this actually feeds an analog section) |
| 1181 | 1181 | MDRV_SOUND_ROUTE(10,"mono", 0.12) // pin 22 Noise Output (this actually feeds an analog section) |
| 1182 | 1182 | |
| 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 */ | |
| 1184 | 1184 | MDRV_SOUND_CONFIG(equites_8910intf) |
| 1185 | 1185 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 1186 | 1186 |
| r6428 | r6429 | |
|---|---|---|
| 210 | 210 | AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", sound_bank_w) /* 007232 bankswitch */ |
| 211 | 211 | AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_r) |
| 212 | 212 | 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) | |
| 214 | 214 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 215 | 215 | ADDRESS_MAP_END |
| 216 | 216 | |
| r6428 | r6429 | |
| 324 | 324 | /* sound hardware */ |
| 325 | 325 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 326 | 326 | |
| 327 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 327 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 328 | 328 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 329 | 329 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 330 | 330 |
| r6428 | r6429 | |
|---|---|---|
| 25 | 25 | #include "deprecat.h" |
| 26 | 26 | |
| 27 | 27 | #include "video/konamiic.h" |
| 28 | #include " | |
| 28 | #include " | |
| 29 | 29 | #include "cpu/m68000/m68000.h" |
| 30 | 30 | #include "cpu/z80/z80.h" |
| 31 | 31 | #include "machine/eeprom.h" |
| r6428 | r6429 | |
|---|---|---|
| 376 | 376 | static ADDRESS_MAP_START( dlus_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 377 | 377 | AM_RANGE(0x0000, 0x9fff) AM_ROM |
| 378 | 378 | 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) | |
| 380 | 380 | AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("CONTROLS") |
| 381 | 381 | AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SERVICE") |
| 382 | 382 | 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) | |
| 384 | 384 | 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) | |
| 386 | 386 | AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE(laserdisc_w) |
| 387 | 387 | AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE(led_den2_w) |
| 388 | 388 | AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE(led_den1_w) |
| r6428 | r6429 | |
| 708 | 708 | /* sound hardware */ |
| 709 | 709 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 710 | 710 | |
| 711 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK_US/8) | |
| 711 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK_US/8) | |
| 712 | 712 | MDRV_SOUND_CONFIG(ay8910_config) |
| 713 | 713 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33) |
| 714 | 714 |
| r6428 | r6429 | |
|---|---|---|
| 151 | 151 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 152 | 152 | AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1") |
| 153 | 153 | 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) | |
| 156 | 156 | AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2") |
| 157 | 157 | AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w) |
| 158 | 158 | AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w) |
| r6428 | r6429 | |
| 420 | 420 | /* sound hardware */ |
| 421 | 421 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 422 | 422 | |
| 423 | MDRV_SOUND_ADD("ay", AY8910, 3579545) | |
| 423 | MDRV_SOUND_ADD("aysnd", AY8910, 3579545) | |
| 424 | 424 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) |
| 425 | 425 | MACHINE_DRIVER_END |
| 426 | 426 |
| r6428 | r6429 | |
|---|---|---|
| 36 | 36 | Ribbon cable connector to M57-A-A PCB |
| 37 | 37 | |
| 38 | 38 | New Tropical Angel: |
| 39 | Roms w | |
| 39 | Roms w | |
| 40 | 40 | license seal and genuine IREM serial number sticker. |
| 41 | 41 | The "new" roms have hand written labels, while those that match the current |
| 42 | 42 | Tropical Angel set look to be factory labeled chips. |
| r6428 | r6429 | |
| 50 | 50 | #include "driver.h" |
| 51 | 51 | #include "cpu/z80/z80.h" |
| 52 | 52 | #include "iremipt.h" |
| 53 | #include "m57.h" | |
| 54 | #include "audio/irem.h" | |
| 53 | #include "includes/iremz80.h" | |
| 55 | 54 | |
| 56 | 55 | |
| 57 | 56 | #define MASTER_CLOCK XTAL_18_432MHz |
| r6428 | r6429 | |
| 66 | 65 | |
| 67 | 66 | static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 68 | 67 | 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) | |
| 72 | 71 | AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w) |
| 73 | 72 | AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w) /* + coin counters */ |
| 74 | 73 | AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") |
| r6428 | r6429 | |
| 225 | 224 | |
| 226 | 225 | static MACHINE_DRIVER_START( m57 ) |
| 227 | 226 | |
| 227 | /* driver data */ | |
| 228 | MDRV_DRIVER_DATA(irem_z80_state) | |
| 229 | ||
| 228 | 230 | /* basic machine hardware */ |
| 229 | 231 | MDRV_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ |
| 230 | 232 | MDRV_CPU_PROGRAM_MAP(main_map) |
| r6428 | r6429 | |
| 327 | 329 | * |
| 328 | 330 | *************************************/ |
| 329 | 331 | |
| 330 | GAME( 1983, troangel, 0, m57, troangel, 0, ROT0, "Irem", "Tropical Angel", 0 ) | |
| 331 | GAME( 1983, newtangl, troangel, m57, troangel, 0, ROT0, "Irem", "New Tropical Angel", 0 ) | |
| 332 | GAME( 1983, troangel, 0, m57, troangel, 0, ROT0, "Irem", "Tropical Angel", GAME_SUPPORTS_SAVE ) | |
| 333 | GAME( 1983, newtangl, troangel, m57, troangel, 0, ROT0, "Irem", "New Tropical Angel", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 375 | 375 | |
| 376 | 376 | static WRITE8_HANDLER( peplus_cmos_w ) |
| 377 | 377 | { |
| 378 | char bank_name[ | |
| 378 | char bank_name[6]; | |
| 379 | 379 | |
| 380 | 380 | /* Test for Wingboard PAL Trigger Condition */ |
| 381 | 381 | if (offset == 0x1fff && wingboard && data < 5) |
| r6428 | r6429 | |
| 741 | 741 | AM_RANGE(0x3000, 0x3fff) AM_READWRITE(peplus_s3000_r, peplus_s3000_w) AM_BASE(&s3000_ram) |
| 742 | 742 | |
| 743 | 743 | // 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) | |
| 746 | 746 | |
| 747 | 747 | // Superboard Data |
| 748 | 748 | AM_RANGE(0x5000, 0x5fff) AM_READWRITE(peplus_s5000_r, peplus_s5000_w) AM_BASE(&s5000_ram) |
| r6428 | r6429 | |
| 1045 | 1045 | // sound hardware |
| 1046 | 1046 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1047 | 1047 | |
| 1048 | MDRV_SOUND_ADD("ay", AY8912, SOUND_CLOCK) | |
| 1048 | MDRV_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK) | |
| 1049 | 1049 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 1050 | 1050 | MACHINE_DRIVER_END |
| 1051 | 1051 |
| r6428 | r6429 | |
|---|---|---|
| 693 | 693 | cputag_set_input_line(machine, "sub", INPUT_LINE_HALT, ASSERT_LINE); |
| 694 | 694 | } |
| 695 | 695 | if(changed & 4) |
| 696 | devtag_reset(machine, "ym"); | |
| 696 | devtag_reset(machine, "ymsnd"); | |
| 697 | 697 | prev_resetcontrol = resetcontrol; |
| 698 | 698 | } |
| 699 | 699 | |
| r6428 | r6429 | |
| 1007 | 1007 | AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_READWRITE(sys24_mixer_r, sys24_mixer_w) |
| 1008 | 1008 | AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_READWRITE(sys24_sprite_r, sys24_sprite_w) |
| 1009 | 1009 | 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) | |
| 1011 | 1011 | AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) |
| 1012 | 1012 | AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) |
| 1013 | 1013 | AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) |
| r6428 | r6429 | |
| 1044 | 1044 | AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_READWRITE(sys24_mixer_r, sys24_mixer_w) |
| 1045 | 1045 | AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_READWRITE(sys24_sprite_r, sys24_sprite_w) |
| 1046 | 1046 | 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) | |
| 1048 | 1048 | AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) |
| 1049 | 1049 | AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) |
| 1050 | 1050 | AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) |
| r6428 | r6429 | |
| 1800 | 1800 | |
| 1801 | 1801 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1802 | 1802 | |
| 1803 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 1803 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1804 | 1804 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1805 | 1805 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 1806 | 1806 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.50) |
| r6428 | r6429 | |
|---|---|---|
| 103 | 103 | #include "cpu/tms57002/tms57002.h" |
| 104 | 104 | #include "machine/eeprom.h" |
| 105 | 105 | #include "sound/k054539.h" |
| 106 | #include " | |
| 106 | #include " | |
| 107 | 107 | #include "machine/adc083x.h" |
| 108 | #include "rendlay.h" | |
| 108 | 109 | |
| 109 | 110 | #define GX_DEBUG 0 |
| 110 | 111 | |
| r6428 | r6429 | |
| 113 | 114 | VIDEO_START(konamigx_6bpp_2); |
| 114 | 115 | VIDEO_START(konamigx_type3); |
| 115 | 116 | VIDEO_START(konamigx_type4); |
| 117 | VIDEO_START(konamigx_type4_sd2); | |
| 116 | 118 | VIDEO_START(le2); |
| 117 | 119 | VIDEO_START(dragoonj); |
| 118 | 120 | VIDEO_START(winspike); |
| r6428 | r6429 | |
| 700 | 702 | dmastart_callback(0); |
| 701 | 703 | } |
| 702 | 704 | |
| 705 | extern int konamigx_current_frame; | |
| 706 | ||
| 703 | 707 | static INTERRUPT_GEN(konamigx_vbinterrupt_type4) |
| 704 | 708 | { |
| 705 | 709 | // lift idle suspension |
| r6428 | r6429 | |
| 708 | 712 | // IRQ 1 is the main 60hz vblank interrupt |
| 709 | 713 | // the gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board |
| 710 | 714 | // 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) | |
| 711 | 719 | if (1) // gx_syncen & 0x20) |
| 712 | 720 | { |
| 713 | 721 | gx_syncen &= ~0x20; |
| r6428 | r6429 | |
| 716 | 724 | { |
| 717 | 725 | gx_syncen &= ~1; |
| 718 | 726 | cpu_set_input_line(device, 1, HOLD_LINE); |
| 727 | ||
| 719 | 728 | } |
| 720 | 729 | } |
| 721 | 730 | |
| 731 | ||
| 722 | 732 | dmastart_callback(0); |
| 723 | 733 | } |
| 724 | 734 | |
| r6428 | r6429 | |
| 783 | 793 | if (cpu_get_pc(space->cpu) == 0x2026fe) rv = 0xc0c0c0c0; |
| 784 | 794 | break; |
| 785 | 795 | case 3: // Run'n Gun 2 |
| 796 | if (cpu_get_pc(space->cpu) == 0x24f0b6) rv = 0xffffffff; | |
| 786 | 797 | if (cpu_get_pc(space->cpu) == 0x24f122) rv = 0xc0c0c0c0; |
| 787 | 798 | break; |
| 788 | 799 | case 4: // Rushing Heroes |
| 789 | 800 | if (cpu_get_pc(space->cpu) == 0x20eda6) rv = 0xc0c0c0c0; |
| 790 | 801 | break; |
| 791 | 802 | case 5: // Vs. Net Soccer ver. UAB |
| 803 | if (cpu_get_pc(space->cpu) == 0x24c5d2) rv = 0xffffffff; | |
| 792 | 804 | if (cpu_get_pc(space->cpu) == 0x24c63e) rv = 0xc0c0c0c0; |
| 793 | 805 | break; |
| 794 | 806 | case 6: // Slam Dunk 2 |
| 807 | if (cpu_get_pc(space->cpu) == 0x24f1b0) rv = 0xffffffff; | |
| 795 | 808 | if (cpu_get_pc(space->cpu) == 0x24f21c) rv = 0xc0c0c0c0; |
| 796 | 809 | break; |
| 797 | 810 | case 7: // Vs. Net Soccer ver. AAA |
| 811 | if (cpu_get_pc(space->cpu) == 0x24c6b6) rv = 0xffffffff; | |
| 798 | 812 | if (cpu_get_pc(space->cpu) == 0x24c722) rv = 0xc0c0c0c0; |
| 799 | 813 | break; |
| 800 | 814 | case 8: // Vs. Net Soccer ver. EAD |
| 815 | if (cpu_get_pc(space->cpu) == 0x24c416) rv = 0xffffffff; | |
| 801 | 816 | if (cpu_get_pc(space->cpu) == 0x24c482) rv = 0xc0c0c0c0; |
| 802 | 817 | break; |
| 803 | 818 | case 9: // Vs. Net Soccer ver. EAB |
| 819 | if (cpu_get_pc(space->cpu) == 0x24c400) rv = 0xffffffff; | |
| 804 | 820 | if (cpu_get_pc(space->cpu) == 0x24c46c) rv = 0xc0c0c0c0; |
| 805 | 821 | break; |
| 806 | 822 | case 10: // Vs. Net Soccer ver. JAB |
| 823 | if (cpu_get_pc(space->cpu) == 0x24c584) rv = 0xffffffff; | |
| 807 | 824 | if (cpu_get_pc(space->cpu) == 0x24c5f0) rv = 0xc0c0c0c0; |
| 808 | 825 | break; |
| 809 | 826 | case 11: // Racin' Force |
| r6428 | r6429 | |
| 821 | 838 | rv |= 0x4000; |
| 822 | 839 | } |
| 823 | 840 | 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; | |
| 824 | 859 | } |
| 825 | 860 | |
| 826 | 861 | return(rv); |
| r6428 | r6429 | |
| 957 | 992 | return ROM[offset]; |
| 958 | 993 | } |
| 959 | 994 | |
| 960 | static int sync_frame = 0; | |
| 995 | //static int sync_frame = 0; | |
| 961 | 996 | |
| 962 | 997 | static READ32_HANDLER( type3_sync_r ) |
| 963 | 998 | { |
| 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; | |
| 967 | 1003 | } |
| 968 | ||
| 969 | 1004 | static int last_prot_op, last_prot_clk; |
| 970 | 1005 | |
| 971 | 1006 | /* |
| r6428 | r6429 | |
| 1102 | 1137 | src -= 0x10; |
| 1103 | 1138 | dst += 0x10; |
| 1104 | 1139 | } |
| 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)); | |
| 1105 | 1146 | } |
| 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 | } | |
| 1106 | 1172 | else |
| 1107 | 1173 | { |
| 1108 | | |
| 1174 | p | |
| 1109 | 1175 | } |
| 1110 | 1176 | |
| 1111 | 1177 | if (konamigx_wrport1_1 & 0x10) |
| r6428 | r6429 | |
| 1190 | 1256 | AM_IMPORT_FROM(gx_base_memmap) |
| 1191 | 1257 | ADDRESS_MAP_END |
| 1192 | 1258 | |
| 1259 | extern WRITE32_HANDLER( konamigx_type3_psac2_bank_w ); | |
| 1260 | extern UINT32* konamigx_type3_psac2_bank; | |
| 1261 | ||
| 1193 | 1262 | static ADDRESS_MAP_START( gx_type3_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 1194 | 1263 | 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) | |
| 1202 | 1271 | AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) |
| 1203 | AM_RANGE(0xf00000, 0xf07fff) AM_RAM | |
| 1272 | //AM_RANGE(0xf00000, 0xf07fff) AM_RAM | |
| 1204 | 1273 | AM_IMPORT_FROM(gx_base_memmap) |
| 1205 | 1274 | ADDRESS_MAP_END |
| 1206 | 1275 | |
| 1207 | 1276 | static ADDRESS_MAP_START( gx_type4_map, ADDRESS_SPACE_PROGRAM, 32 ) |
| 1208 | 1277 | AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w) |
| 1209 | 1278 | AM_RANGE(0xd90000, 0xd97fff) AM_RAM |
| 1210 | AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_ | |
| 1279 | AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_BASE((UINT32**)&K053936_0_ctrl) | |
| 1211 | 1280 | AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP |
| 1212 | 1281 | 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) | |
| 1216 | 1285 | AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) // type 4 polls this too |
| 1217 | 1286 | AM_RANGE(0xf00000, 0xf07fff) AM_RAM_WRITE(konamigx_t4_psacmap_w) AM_BASE(&gx_psacram) // PSAC2 tilemap |
| 1287 | // AM_RANGE(0xf00000, 0xf07fff) AM_RAM | |
| 1218 | 1288 | AM_IMPORT_FROM(gx_base_memmap) |
| 1219 | 1289 | ADDRESS_MAP_END |
| 1220 | 1290 | |
| r6428 | r6429 | |
| 1318 | 1388 | RGN_FRAC(1,1), |
| 1319 | 1389 | 8, |
| 1320 | 1390 | { 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 }, | |
| 1322 | 1391 | { 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 | |
| 1324 | 1394 | }; |
| 1325 | 1395 | |
| 1326 | 1396 | // for scanrows on tilemap |
| r6428 | r6429 | |
| 1388 | 1458 | |
| 1389 | 1459 | /* type 3 & 4 games use a simple 8bpp decode for the 53936 */ |
| 1390 | 1460 | static GFXDECODE_START( type34 ) |
| 1391 | GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x | |
| 1461 | GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x1000, 8 ) | |
| 1392 | 1462 | GFXDECODE_END |
| 1393 | 1463 | |
| 1464 | static GFXDECODE_START( type4 ) | |
| 1465 | GFXDECODE_ENTRY( "gfx3", 0, bglayout_8bpp, 0x1800, 8 ) | |
| 1466 | GFXDECODE_END | |
| 1467 | ||
| 1394 | 1468 | static MACHINE_DRIVER_START( konamigx ) |
| 1395 | 1469 | /* basic machine hardware */ |
| 1396 | 1470 | MDRV_CPU_ADD("maincpu", M68EC020, 24000000) |
| r6428 | r6429 | |
| 1499 | 1573 | MDRV_CPU_PROGRAM_MAP(gx_type3_map) |
| 1500 | 1574 | MDRV_CPU_VBLANK_INT_HACK(konamigx_hbinterrupt, 262) |
| 1501 | 1575 | |
| 1576 | MDRV_DEFAULT_LAYOUT(layout_dualhsxs) | |
| 1577 | MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE) | |
| 1578 | ||
| 1502 | 1579 | MDRV_VIDEO_START(konamigx_type3) |
| 1503 | 1580 | MDRV_PALETTE_LENGTH(16384) |
| 1504 | 1581 | 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 | ||
| 1507 | 1592 | MDRV_GFXDECODE(type34) |
| 1508 | 1593 | MACHINE_DRIVER_END |
| 1509 | 1594 | |
| r6428 | r6429 | |
| 1514 | 1599 | MDRV_CPU_PROGRAM_MAP(gx_type4_map) |
| 1515 | 1600 | MDRV_CPU_VBLANK_INT_HACK(konamigx_hbinterrupt, 262) |
| 1516 | 1601 | |
| 1602 | MDRV_DEFAULT_LAYOUT(layout_dualhsxs) | |
| 1603 | MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE) | |
| 1604 | ||
| 1517 | 1605 | 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) | |
| 1522 | 1618 | MDRV_VIDEO_START(konamigx_type4) |
| 1523 | 1619 | MACHINE_DRIVER_END |
| 1524 | 1620 | |
| 1621 | static 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) | |
| 1633 | MACHINE_DRIVER_END | |
| 1634 | ||
| 1635 | static MACHINE_DRIVER_START( gxtype4sd2 ) | |
| 1636 | MDRV_IMPORT_FROM(gxtype4) | |
| 1637 | ||
| 1638 | MDRV_VIDEO_START(konamigx_type4_sd2) | |
| 1639 | MACHINE_DRIVER_END | |
| 1640 | ||
| 1641 | ||
| 1525 | 1642 | static MACHINE_DRIVER_START( winspike ) |
| 1526 | 1643 | MDRV_IMPORT_FROM(konamigx) |
| 1527 | 1644 | |
| r6428 | r6429 | |
| 2114 | 2231 | ROM_LOAD( "533a23.7g", 0x200000, 2*1024*1024, CRC(1bb7552b) SHA1(3c6f96b4ab97737c3634c08b94dd304d5517d88d) ) |
| 2115 | 2232 | ROM_END |
| 2116 | 2233 | |
| 2117 | /* Run and Gun 2 */ | |
| 2118 | 2234 | ROM_START( rungun2 ) |
| 2119 | 2235 | /* main program */ |
| 2120 | 2236 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2121 | 2237 | GX_BIOS |
| 2238 | ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9)) | |
| 2122 | 2239 | 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)) | |
| 2124 | 2240 | |
| 2125 | 2241 | /* 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) ) | |
| 2128 | 2244 | |
| 2129 | 2245 | /* sound program */ |
| 2130 | 2246 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2138 | 2254 | |
| 2139 | 2255 | /* sprites */ |
| 2140 | 2256 | 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) ) | |
| 2153 | 2269 | |
| 2154 | 2270 | /* PSAC2 tiles */ |
| 2155 | 2271 | ROM_REGION( 0x200000, "gfx3", 0 ) |
| r6428 | r6429 | |
| 2166 | 2282 | /* main program */ |
| 2167 | 2283 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2168 | 2284 | GX_BIOS |
| 2285 | ROM_LOAD32_WORD_SWAP( "505jaa03.29m", 0x200000, 512*1024, CRC(52513794) SHA1(8a8fadb0eb582db53163620982dd53d1e5f8ca4c) ) | |
| 2169 | 2286 | 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) ) | |
| 2171 | 2287 | |
| 2172 | 2288 | /* 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) ) | |
| 2175 | 2291 | |
| 2176 | 2292 | /* sound program */ |
| 2177 | 2293 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2185 | 2301 | |
| 2186 | 2302 | /* sprites */ |
| 2187 | 2303 | 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) ) | |
| 2200 | 2316 | |
| 2317 | ||
| 2201 | 2318 | /* PSAC2 tiles */ |
| 2202 | 2319 | ROM_REGION( 0x200000, "gfx3", 0 ) |
| 2203 | 2320 | ROM_LOAD("505a24.22h", 0x000000, 2*1024*1024, CRC(70e906da) SHA1(4b1a412a71910633f48c6a0b9fd6949dcc82e365) ) |
| r6428 | r6429 | |
| 2213 | 2330 | /* main program */ |
| 2214 | 2331 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2215 | 2332 | GX_BIOS |
| 2333 | ROM_LOAD32_WORD_SWAP( "605b03.29m", 0x200000, 512*1024, CRC(c5b8d31d) SHA1(6c5b359e1fcf511c50d6a876946631fc38a6dade) ) | |
| 2216 | 2334 | 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) ) | |
| 2218 | 2335 | |
| 2219 | 2336 | /* 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)) | |
| 2222 | 2339 | |
| 2223 | 2340 | /* sound program */ |
| 2224 | 2341 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2232 | 2349 | |
| 2233 | 2350 | /* sprites */ |
| 2234 | 2351 | 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) ) | |
| 2247 | 2364 | |
| 2248 | 2365 | /* PSAC2 tiles */ |
| 2249 | 2366 | 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) | |
| 2251 | 2369 | |
| 2252 | 2370 | /* sound data */ |
| 2253 | 2371 | 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 | |
| 2255 | 2373 | ROM_END |
| 2256 | 2374 | |
| 2257 | 2375 | /* Taisen Tokkae-dama */ |
| r6428 | r6429 | |
| 2537 | 2655 | |
| 2538 | 2656 | /* sprites */ |
| 2539 | 2657 | 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) ) | |
| 2546 | 2664 | |
| 2547 | 2665 | /* PSAC2 tiles */ |
| 2548 | 2666 | ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 ) |
| 2549 | 2667 | ROM_LOAD( "427a18.145", 0x000000, 0x100000, CRC(bb6e6ec6) SHA1(aa1365a4318866d9e7e74461a6e6c113f83b6771) ) |
| 2550 | 2668 | |
| 2551 | 2669 | /* 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 */ | |
| 2554 | 2675 | |
| 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 | ||
| 2555 | 2685 | /* sound data */ |
| 2556 | 2686 | ROM_REGION( 0x400000, "shared", 0 ) |
| 2557 | 2687 | ROM_LOAD( "427a16.9r", 0x000000, 2*1024*1024, CRC(39547265) SHA1(c0efd68c0c1ea59141045150842f36d43e1f01d8) ) |
| r6428 | r6429 | |
| 2581 | 2711 | |
| 2582 | 2712 | /* sprites */ |
| 2583 | 2713 | 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) ) | |
| 2590 | 2720 | |
| 2591 | 2721 | /* PSAC2 tiles */ |
| 2592 | 2722 | ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 ) |
| r6428 | r6429 | |
| 2625 | 2755 | |
| 2626 | 2756 | /* sprites */ |
| 2627 | 2757 | 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) ) | |
| 2634 | 2764 | |
| 2635 | 2765 | /* PSAC2 tiles */ |
| 2636 | 2766 | ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 ) |
| r6428 | r6429 | |
| 2669 | 2799 | |
| 2670 | 2800 | /* sprites */ |
| 2671 | 2801 | 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) ) | |
| 2678 | 2808 | |
| 2679 | 2809 | /* PSAC2 tiles */ |
| 2680 | 2810 | ROM_REGION( 0x100000, "gfx3", ROMREGION_ERASE00 ) |
| r6428 | r6429 | |
| 2694 | 2824 | /* main program */ |
| 2695 | 2825 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2696 | 2826 | 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) ) | |
| 2699 | 2829 | |
| 2700 | 2830 | /* 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) ) | |
| 2703 | 2833 | |
| 2704 | 2834 | /* sound program */ |
| 2705 | 2835 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2713 | 2843 | |
| 2714 | 2844 | /* sprites */ |
| 2715 | 2845 | 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) ) | |
| 2722 | 2852 | |
| 2723 | 2853 | /* PSAC2 tiles */ |
| 2724 | 2854 | ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00) |
| r6428 | r6429 | |
| 2734 | 2864 | /* main program */ |
| 2735 | 2865 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2736 | 2866 | 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) ) | |
| 2739 | 2869 | |
| 2740 | 2870 | /* 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) ) | |
| 2743 | 2873 | |
| 2744 | 2874 | /* sound program */ |
| 2745 | 2875 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2753 | 2883 | |
| 2754 | 2884 | /* sprites */ |
| 2755 | 2885 | 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) ) | |
| 2762 | 2892 | |
| 2763 | 2893 | /* PSAC2 tiles */ |
| 2764 | 2894 | ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00) |
| r6428 | r6429 | |
| 2778 | 2908 | ROM_LOAD32_WORD_SWAP( "627uab02.31m", 0x200002, 512*1024, CRC(c352cc6f) SHA1(d8d0d802eb6bd0910e35dcc6b81b7ac9036e32ea) ) |
| 2779 | 2909 | |
| 2780 | 2910 | /* 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) ) | |
| 2783 | 2913 | |
| 2784 | 2914 | /* sound program */ |
| 2785 | 2915 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2793 | 2923 | |
| 2794 | 2924 | /* sprites */ |
| 2795 | 2925 | 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) ) | |
| 2802 | 2932 | |
| 2803 | 2933 | /* PSAC2 tiles */ |
| 2804 | 2934 | ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00) |
| r6428 | r6429 | |
| 2944 | 3074 | ROM_LOAD32_WORD_SWAP( "627jab02.31m", 0x200002, 512*1024, CRC(f10929d7) SHA1(304001d44ed762682a4606a849305a9352e9bec3) ) |
| 2945 | 3075 | |
| 2946 | 3076 | /* 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) ) | |
| 2949 | 3079 | |
| 2950 | 3080 | /* sound program */ |
| 2951 | 3081 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2959 | 3089 | |
| 2960 | 3090 | /* sprites */ |
| 2961 | 3091 | 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) ) | |
| 2968 | 3098 | |
| 2969 | 3099 | /* PSAC2 tiles */ |
| 2970 | 3100 | ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00) |
| r6428 | r6429 | |
| 2980 | 3110 | /* main program */ |
| 2981 | 3111 | ROM_REGION( 0x800000, "maincpu", 0 ) |
| 2982 | 3112 | 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) ) | |
| 2985 | 3115 | |
| 2986 | 3116 | /* 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) ) | |
| 2989 | 3119 | |
| 2990 | 3120 | /* sound program */ |
| 2991 | 3121 | ROM_REGION( 0x40000, "soundcpu", 0 ) |
| r6428 | r6429 | |
| 2999 | 3129 | |
| 3000 | 3130 | /* sprites */ |
| 3001 | 3131 | 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) ) | |
| 3008 | 3138 | |
| 3009 | 3139 | /* PSAC2 tiles */ |
| 3010 | 3140 | ROM_REGION( 0x200000, "gfx3", ROMREGION_ERASE00) |
| r6428 | r6429 | |
| 3487 | 3617 | { "salmndr2a", 7, 0, 6, BPP66 }, |
| 3488 | 3618 | { "winspike", 8, 2, 7, BPP4 }, |
| 3489 | 3619 | { "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 }, | |
| 3493 | 3624 | { "vsnetscr", 7, 8, 0, BPP4 }, |
| 3494 | 3625 | { "vsnetscru", 7, 5, 0, BPP4 }, |
| 3495 | 3626 | { "vsnetscrj", 7, 10, 0, BPP4 }, |
| r6428 | r6429 | |
| 3643 | 3774 | GAME( 1997, winspikej,winspike, winspike, konamigx, konamigx, ROT0, "Konami", "Winning Spike (ver JAA)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS ) |
| 3644 | 3775 | |
| 3645 | 3776 | /* Type 3: dual monitor output and 53936 on the ROM board, external palette RAM */ |
| 3646 | GAME( 1994, soccerss, konamigx, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver EAA)", GAME_NOT_WORKING ) | |
| 3647 | GAME( 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 | |
| 3648 | GAME( 1994, soccerssja,soccerss, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAA)", GAME_NOT_WORKING ) | |
| 3649 | GAME( 1994, soccerssa,soccerss, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver AAA)", GAME_NOT_WORKING ) | |
| 3777 | GAME( 1994, soccerss, konamigx, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver EAA)", GAME_IMPERFECT_GRAPHICS ) | |
| 3778 | GAME( 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 | |
| 3779 | GAME( 1994, soccerssja,soccerss, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver JAA)", GAME_IMPERFECT_GRAPHICS ) | |
| 3780 | GAME( 1994, soccerssa,soccerss, gxtype3, type3, konamigx, ROT0, "Konami", "Soccer Superstars (ver AAA)", GAME_IMPERFECT_GRAPHICS ) | |
| 3650 | 3781 | |
| 3651 | 3782 | /* Type 4: dual monitor output and 53936 on the ROM board, external palette RAM, DMA protection */ |
| 3652 | GAME( 1996, vsnetscr, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAD)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3653 | GAME( 1996, vsnetscreb,vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3654 | GAME( 1996, vsnetscru, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver UAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3655 | GAME( 1996, vsnetscra, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver AAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3656 | GAME( 1996, vsnetscrj, vsnetscr, gxtype4, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver JAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3657 | GAME( 1996, rungun2, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Run and Gun 2 (ver UAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3658 | GAME( 1996, slamdnk2, rungun2, gxtype4, type3, konamigx, ROT0, "Konami", "Slam Dunk 2 (ver JAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3659 | GAME( 1996, rushhero, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Rushing Heroes (ver UAB)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 3783 | GAME( 1996, vsnetscr, konamigx, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAD)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3784 | GAME( 1996, vsnetscreb,vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver EAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3785 | GAME( 1996, vsnetscru, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver UAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3786 | GAME( 1996, vsnetscra, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver AAA)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3787 | GAME( 1996, vsnetscrj, vsnetscr, gxtype4vsnet, type3, konamigx, ROT0, "Konami", "Versus Net Soccer (ver JAB)", GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION ) | |
| 3788 | GAME( 1996, rungun2, konamigx, gxtype4sd2, type3, konamigx, ROT0, "Konami", "Run and Gun 2 (ver UAA)", GAME_IMPERFECT_GRAPHICS ) | |
| 3789 | GAME( 1996, slamdnk2, rungun2, gxtype4sd2, type3, konamigx, ROT0, "Konami", "Slam Dunk 2 (ver JAA)", GAME_IMPERFECT_GRAPHICS ) | |
| 3790 | GAME( 1996, rushhero, konamigx, gxtype4, type3, konamigx, ROT0, "Konami", "Rushing Heroes (ver UAB)", GAME_IMPERFECT_GRAPHICS ) |
| r6428 | r6429 | |
|---|---|---|
| 152 | 152 | static ADDRESS_MAP_START( parodius_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 153 | 153 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 154 | 154 | 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) | |
| 156 | 156 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) |
| 157 | 157 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r,k053260_w) |
| 158 | 158 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 254 | 254 | /* sound hardware */ |
| 255 | 255 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 256 | 256 | |
| 257 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 257 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 258 | 258 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 259 | 259 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 260 | 260 |
| r6428 | r6429 | |
|---|---|---|
| 308 | 308 | AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ |
| 309 | 309 | AM_RANGE(0x8000, 0x87ef) AM_RAM /* RAM */ |
| 310 | 310 | 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) /* ??? */ | |
| 313 | 313 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) /* soundlatch_r? */ |
| 314 | 314 | AM_RANGE(0x8800, 0xfffb) AM_ROM /* ROM? */ |
| 315 | 315 | AM_RANGE(0xfffc, 0xffff) AM_RAM /* ??? */ |
| r6428 | r6429 | |
| 326 | 326 | AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("upd", combasc_voice_reset_w) /* upd7759 reset? */ |
| 327 | 327 | |
| 328 | 328 | 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 */ | |
| 330 | 330 | ADDRESS_MAP_END |
| 331 | 331 | |
| 332 | 332 | |
| r6428 | r6429 | |
| 576 | 576 | /* sound hardware */ |
| 577 | 577 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 578 | 578 | |
| 579 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 579 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 580 | 580 | MDRV_SOUND_CONFIG(ym2203_config) |
| 581 | 581 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 582 | 582 | |
| r6428 | r6429 | |
| 617 | 617 | /* We are using the original sound subsystem */ |
| 618 | 618 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 619 | 619 | |
| 620 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 620 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 621 | 621 | MDRV_SOUND_CONFIG(ym2203_config) |
| 622 | 622 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 623 | 623 |
| r6428 | r6429 | |
|---|---|---|
| 328 | 328 | AM_RANGE( 0x00, 0x00 ) AM_WRITE( SMH_NOP ) // IRQ end |
| 329 | 329 | AM_RANGE( 0x20, 0x20 ) AM_WRITE( SMH_NOP ) // NMI end |
| 330 | 330 | 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 ) | |
| 332 | 332 | ADDRESS_MAP_END |
| 333 | 333 | |
| 334 | 334 | |
| r6428 | r6429 | |
| 447 | 447 | /* sound hardware */ |
| 448 | 448 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 449 | 449 | |
| 450 | MDRV_SOUND_ADD("ym", YM2203, XTAL_8MHz / 4 ) // 2 MHz? | |
| 450 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_8MHz / 4 ) // 2 MHz? | |
| 451 | 451 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 452 | 452 | MACHINE_DRIVER_END |
| 453 | 453 |
| r6428 | r6429 | |
|---|---|---|
| 125 | 125 | AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r) /* VLM5030 */ |
| 126 | 126 | AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w) /* VLM5030 */ |
| 127 | 127 | 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 */ | |
| 129 | 129 | AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */ |
| 130 | 130 | AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ |
| 131 | 131 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 294 | 294 | /* sound hardware */ |
| 295 | 295 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 296 | 296 | |
| 297 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 297 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 298 | 298 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 299 | 299 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| 300 | 300 |
| r6428 | r6429 | |
|---|---|---|
| 625 | 625 | AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x13fdfe) AM_READWRITE(prot_r, prot_w) |
| 626 | 626 | AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x13fdfe) AM_WRITE(control_w) |
| 627 | 627 | 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) | |
| 629 | 629 | AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE(counter_timer_w) |
| 630 | 630 | AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_BASE(&paletteram16) |
| 631 | 631 | AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_READWRITE(megadriv_vdp_r, megadriv_vdp_w) |
| r6428 | r6429 | |
| 1389 | 1389 | /* sound hardware */ |
| 1390 | 1390 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1391 | 1391 | |
| 1392 | MDRV_SOUND_ADD("ym", YM3438, XL2_CLOCK/7) | |
| 1392 | MDRV_SOUND_ADD("ymsnd", YM3438, XL2_CLOCK/7) | |
| 1393 | 1393 | MDRV_SOUND_CONFIG(ym3438_intf) |
| 1394 | 1394 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 1395 | 1395 | /* right channel not connected */ |
| 1396 | 1396 | |
| 1397 | MDRV_SOUND_ADD("sn", SN76496, XL2_CLOCK/15) | |
| 1397 | MDRV_SOUND_ADD("snsnd", SN76496, XL2_CLOCK/15) | |
| 1398 | 1398 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1399 | 1399 | MACHINE_DRIVER_END |
| 1400 | 1400 | |
| r6428 | r6429 | |
| 1618 | 1618 | |
| 1619 | 1619 | ROM_START( puyoj ) /* Puyo Puyo (c)1992 Sega / Compile */ |
| 1620 | 1620 | 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) ) | |
| 1623 | 1623 | /* 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) ) | |
| 1626 | 1626 | |
| 1627 | 1627 | 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) ) | |
| 1629 | 1629 | ROM_END |
| 1630 | 1630 | |
| 1631 | 1631 | ROM_START( puyoja ) /* Puyo Puyo (Rev A) (c)1992 Sega / Compile */ |
| 1632 | 1632 | 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) ) | |
| 1635 | 1635 | /* 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) ) | |
| 1638 | 1638 | |
| 1639 | 1639 | 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) ) | |
| 1641 | 1641 | ROM_END |
| 1642 | 1642 | |
| 1643 | 1643 | ROM_START( puyobl ) /* Puyo Puyo (c)1992 Sega / Compile Bootleg */ |
| r6428 | r6429 | |
| 1645 | 1645 | ROM_LOAD16_BYTE( "puyopuyb.4bo", 0x000000, 0x020000, CRC(89ea4d33) SHA1(bef9d011524e71c072d309f6da3c2ebc38878e0e) ) |
| 1646 | 1646 | ROM_LOAD16_BYTE( "puyopuyb.3bo", 0x000001, 0x020000, CRC(c002e545) SHA1(7a59ac764d60e9955830d9617b0bd122b44e7b2f) ) |
| 1647 | 1647 | /* 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 | |
| 1650 | 1650 | |
| 1651 | 1651 | 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 | |
| 1653 | 1653 | ROM_END |
| 1654 | 1654 | |
| 1655 | 1655 | ROM_START( ichir ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (World) */ |
| r6428 | r6429 | |
| 2244 | 2244 | GAME( 1991, ribbit, 0, segac2, ribbit, ribbit, ROT0, "Sega", "Ribbit!", 0 ) |
| 2245 | 2245 | GAME( 1992, puyo, 0, segac2, puyo, puyo, ROT0, "Sega / Compile", "Puyo Puyo (World)", 0 ) |
| 2246 | 2246 | GAME( 1992, puyobl, puyo, segac2, puyo, puyo, ROT0, "bootleg", "Puyo Puyo (World, bootleg)", 0 ) |
| 2247 | GAME( 1992, puyoj, puyo, segac2, puyo, puyo, ROT0, "Sega / Compile", "Puyo Puyo (Japan)", 0 ) | |
| 2247 | GAME( 1992, puyoj, puyo, segac2, puyo, puyo, ROT0, "Sega / Compile", "Puyo Puyo (Japan, Rev B)", 0 ) | |
| 2248 | 2248 | GAME( 1992, puyoja, puyo, segac2, puyo, puyo, ROT0, "Sega / Compile", "Puyo Puyo (Japan, Rev A)", 0 ) |
| 2249 | 2249 | GAME( 1992, tantr, 0, segac2, ichir, tantr, ROT0, "Sega", "Puzzle & Action: Tant-R (Japan)", 0 ) |
| 2250 | 2250 | GAME( 1993, tantrkor, tantr, segac2, ichir, tantrkor, ROT0, "Sega", "Puzzle & Action: Tant-R (Korea)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 225 | 225 | MDRV_VIDEO_UPDATE(bigstrkb) |
| 226 | 226 | |
| 227 | 227 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 228 | // MDRV_SOUND_ADD("ym", YM2151, ym2151_config) | |
| 228 | // MDRV_SOUND_ADD("ymsnd", YM2151, ym2151_config) | |
| 229 | 229 | |
| 230 | 230 | MDRV_SOUND_ADD("oki1", OKIM6295, 4000000) |
| 231 | 231 | MDRV_SOUND_CONFIG(okim6295_interface_pin7high) |
| r6428 | r6429 | |
|---|---|---|
| 159 | 159 | AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w) |
| 160 | 160 | AM_RANGE(0xf000, 0xf000) AM_WRITE(gberet_coin_counter_w) |
| 161 | 161 | 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. | |
| 163 | 163 | AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") |
| 164 | 164 | AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2") |
| 165 | 165 | AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") |
| r6428 | r6429 | |
| 179 | 179 | AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) |
| 180 | 180 | AM_RANGE(0xf000, 0xf000) AM_WRITENOP // coin counter not supported |
| 181 | 181 | 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) | |
| 183 | 183 | AM_RANGE(0xf600, 0xf600) AM_READ_PORT("P2") |
| 184 | 184 | AM_RANGE(0xf601, 0xf601) AM_READ_PORT("DSW1") |
| 185 | 185 | AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") |
| r6428 | r6429 | |
| 201 | 201 | AM_RANGE(0xe044, 0xe044) AM_WRITE(mrgoemon_flipscreen_w) |
| 202 | 202 | AM_RANGE(0xf000, 0xf000) AM_WRITE(mrgoemon_coin_counter_w) |
| 203 | 203 | 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. | |
| 205 | 205 | AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset_w) |
| 206 | 206 | AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2") |
| 207 | 207 | AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") |
| r6428 | r6429 | |
| 379 | 379 | // sound hardware |
| 380 | 380 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 381 | 381 | |
| 382 | MDRV_SOUND_ADD("sn", SN76496, 18432000/12) | |
| 382 | MDRV_SOUND_ADD("snsnd", SN76496, 18432000/12) | |
| 383 | 383 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 384 | 384 | MACHINE_DRIVER_END |
| 385 | 385 |
| r6428 | r6429 | |
|---|---|---|
| 272 | 272 | static ADDRESS_MAP_START( sandscrp_soundport, ADDRESS_SPACE_IO, 8 ) |
| 273 | 273 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 274 | 274 | 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 | |
| 276 | 276 | AM_RANGE(0x04, 0x04) AM_DEVWRITE("oki", okim6295_w) // OKIM6295 |
| 277 | 277 | AM_RANGE(0x06, 0x06) AM_WRITE(sandscrp_soundlatch_w) // |
| 278 | 278 | AM_RANGE(0x07, 0x07) AM_READ(sandscrp_soundlatch_r) // |
| r6428 | r6429 | |
| 469 | 469 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) |
| 470 | 470 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) |
| 471 | 471 | |
| 472 | MDRV_SOUND_ADD("ym", YM2203, 4000000) | |
| 472 | MDRV_SOUND_ADD("ymsnd", YM2203, 4000000) | |
| 473 | 473 | MDRV_SOUND_CONFIG(ym2203_intf_sandscrp) |
| 474 | 474 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) |
| 475 | 475 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 372 | 372 | |
| 373 | 373 | if (BIT(upd7807_portc,5) && !BIT(data,5)) /* write clock 1->0 */ |
| 374 | 374 | { |
| 375 | const device_config *device = devtag_get_device(space->machine, "ym"); | |
| 375 | const device_config *device = devtag_get_device(space->machine, "ymsnd"); | |
| 376 | 376 | ym2203_w(device, BIT(data,3), upd7807_porta); |
| 377 | 377 | } |
| 378 | 378 | |
| 379 | 379 | if (BIT(upd7807_portc,4) && !BIT(data,4)) /* read clock 1->0 */ |
| 380 | 380 | { |
| 381 | const device_config *device = devtag_get_device(space->machine, "ym"); | |
| 381 | const device_config *device = devtag_get_device(space->machine, "ymsnd"); | |
| 382 | 382 | upd7807_porta = ym2203_r(device, BIT(data,3)); |
| 383 | 383 | } |
| 384 | 384 | |
| r6428 | r6429 | |
| 527 | 527 | coin_counter_w(0,~data & 0x80); |
| 528 | 528 | |
| 529 | 529 | 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); | |
| 531 | 531 | |
| 532 | 532 | upd7807_portc = data; |
| 533 | 533 | } |
| r6428 | r6429 | |
| 579 | 579 | AM_RANGE(0x8000, 0x8000) AM_WRITE(mrokumei_blitter_start_w) // in some games also ROM bank switch to access service ROM |
| 580 | 580 | AM_RANGE(0x8001, 0x8001) AM_WRITE(mrokumei_keyboard_select_w) |
| 581 | 581 | 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) | |
| 583 | 583 | AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w) |
| 584 | 584 | AM_RANGE(0x8007, 0x8007) AM_WRITE(mrokumei_blitter_bank_w) |
| 585 | 585 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| r6428 | r6429 | |
| 1198 | 1198 | /* sound hardware */ |
| 1199 | 1199 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1200 | 1200 | |
| 1201 | MDRV_SOUND_ADD("sn", SN76489A, 16000000/4) // SN76489AN actually | |
| 1201 | MDRV_SOUND_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually | |
| 1202 | 1202 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1203 | 1203 | |
| 1204 | 1204 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
| 1266 | 1266 | /* sound hardware */ |
| 1267 | 1267 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1268 | 1268 | |
| 1269 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 1269 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 1270 | 1270 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1271 | 1271 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 1272 | 1272 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
| 1317 | 1317 | /* sound hardware */ |
| 1318 | 1318 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1319 | 1319 | |
| 1320 | MDRV_SOUND_ADD("sn", SN76489A, 16000000/4) // SN76489AN actually | |
| 1320 | MDRV_SOUND_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually | |
| 1321 | 1321 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1322 | 1322 | |
| 1323 | 1323 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 202 | 202 | static ADDRESS_MAP_START( mugsmash_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 203 | 203 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 204 | 204 | 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) | |
| 206 | 206 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w) |
| 207 | 207 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 208 | 208 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 429 | 429 | |
| 430 | 430 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 431 | 431 | |
| 432 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 432 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 433 | 433 | MDRV_SOUND_CONFIG(ym2151_config) |
| 434 | 434 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.00) /* music */ |
| 435 | 435 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.00) |
| r6428 | r6429 | |
|---|---|---|
| 452 | 452 | #include "deprecat.h" |
| 453 | 453 | #include "cpu/mips/mips3.h" |
| 454 | 454 | |
| 455 | static int hng64_boothack = 0; | |
| 455 | static int hng64_mcu_type = 0; | |
| 456 | static 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 | ||
| 456 | 462 | static UINT32 *rombase; |
| 457 | 463 | static UINT32 *hng_mainram; |
| 458 | 464 | static UINT32 *hng_cart; |
| r6428 | r6429 | |
| 619 | 625 | // popmessage("Alpha is not zero!") ; |
| 620 | 626 | |
| 621 | 627 | // sams64 / sams64_2 never write a palette, why not? |
| 622 | if (hng64_ | |
| 628 | if (hng64_m | |
| 623 | 629 | palette_set_color(space->machine,offset,MAKE_RGB(r,g,b)); |
| 624 | 630 | } |
| 625 | 631 | |
| r6428 | r6429 | |
| 727 | 733 | COMBINE_DATA (&hng64_sram[offset]); |
| 728 | 734 | } |
| 729 | 735 | |
| 730 | static WRITE32_HANDLER( hng64_dualport_w ) | |
| 736 | /************************************** | |
| 737 | * MCU simulations | |
| 738 | **************************************/ | |
| 739 | ||
| 740 | /* Fatal Fury Wild Ambition / Buriki One */ | |
| 741 | static READ32_HANDLER( fight_io_r ) | |
| 731 | 742 | { |
| 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]; | |
| 734 | 752 | } |
| 735 | 753 | |
| 736 | ||
| 737 | static READ32_HANDLER( hng64_dualport_r ) | |
| 754 | /* Samurai Shodown 64 / Samurai Shodown 64 2 */ | |
| 755 | static READ32_HANDLER( samsho_io_r ) | |
| 738 | 756 | { |
| 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); | |
| 740 | 763 | |
| 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++; | |
| 742 | 766 | |
| 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? */ | |
| 784 | static READ32_HANDLER( shoot_io_r ) | |
| 785 | { | |
| 744 | 786 | switch (offset*4) |
| 745 | 787 | { |
| 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: | |
| 748 | 797 | { |
| 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; | |
| 749 | 803 | |
| 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; | |
| 758 | 811 | |
| 759 | return | |
| 812 | return p3_x<<24 | p3_y<<16 | p3_x<<8 | p3_y; //FIXME: see what's the right bank h | |
| 760 | 813 | } |
| 814 | case 0x600: return no_machine_error_code; | |
| 815 | } | |
| 761 | 816 | |
| 762 | //RoadsEdge | |
| 763 | // case 0x00: return input_port_read(space->machine, "IPT_TEST"); | |
| 817 | return hng64_dualport[offset]; | |
| 818 | } | |
| 764 | 819 | |
| 820 | /* Roads Edge / Xtreme Rally */ | |
| 821 | static 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 | } | |
| 765 | 830 | |
| 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 | } | |
| 768 | 833 | |
| 769 | // This takes care of the 'machine' error code | |
| 770 | case 0x600: return no_machine_error_code; | |
| 834 | static 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); | |
| 771 | 844 | } |
| 772 | 845 | |
| 773 | 846 | return mame_rand(space->machine)&0xffffffff; |
| 774 | //return hng64_dualport[offset]; | |
| 775 | 847 | } |
| 776 | 848 | |
| 849 | static 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 | ||
| 777 | 855 | // Hardware calls these '3d buffers' |
| 778 | 856 | // They're only read during the startup check of fatfurwa. Z-buffer memory? Front buffer, back buffer? |
| 779 | 857 | // They're definitely mirrored in the startup test. Elsemi says: |
| r6428 | r6429 | |
| 879 | 957 | return hng64_tcram[offset] ; |
| 880 | 958 | } |
| 881 | 959 | |
| 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?). */ | |
| 961 | static READ32_HANDLER( unk_vreg_r ) | |
| 962 | { | |
| 963 | static UINT32 toggle; | |
| 964 | ||
| 965 | toggle^=0x8000; | |
| 966 | return toggle; | |
| 967 | } | |
| 968 | ||
| 969 | ||
| 882 | 970 | /* |
| 883 | 971 | <ElSemi> 0xE0000000 sound |
| 884 | 972 | <ElSemi> 0xD0100000 3D bank A |
| r6428 | r6429 | |
| 944 | 1032 | AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_BASE(&hng64_tcram) // Transition Control |
| 945 | 1033 | AM_RANGE(0x20300000, 0x203001ff) AM_WRITE(dl_w) AM_BASE(&hng64_dl) // 3d Display List |
| 946 | 1034 | AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w) |
| 1035 | AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r) | |
| 947 | 1036 | |
| 948 | 1037 | // 3d? |
| 949 | 1038 | // AM_RANGE(0x30000000, 0x3000002f) AM_READWRITE(q2_r, q2_w) AM_BASE(&hng64_q2) |
| r6428 | r6429 | |
| 1332 | 1421 | PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 1333 | 1422 | INPUT_PORTS_END |
| 1334 | 1423 | |
| 1424 | static 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 ) | |
| 1335 | 1451 | |
| 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) | |
| 1336 | 1454 | |
| 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) | |
| 1469 | INPUT_PORTS_END | |
| 1470 | ||
| 1471 | ||
| 1337 | 1472 | static const gfx_layout hng64_8x8x4_tilelayout = |
| 1338 | 1473 | { |
| 1339 | 1474 | 8,8, |
| r6428 | r6429 | |
| 1498 | 1633 | static DRIVER_INIT( fatfurwa ) |
| 1499 | 1634 | { |
| 1500 | 1635 | DRIVER_INIT_CALL(hng64_fght); |
| 1501 | hng64_ | |
| 1636 | hng64_m | |
| 1502 | 1637 | } |
| 1503 | 1638 | |
| 1504 | 1639 | static DRIVER_INIT( ss64 ) |
| 1505 | 1640 | { |
| 1506 | 1641 | DRIVER_INIT_CALL(hng64_fght); |
| 1507 | hng64_ | |
| 1642 | hng64_m | |
| 1508 | 1643 | } |
| 1509 | 1644 | |
| 1510 | 1645 | |
| 1511 | 1646 | static DRIVER_INIT(hng64_race) |
| 1512 | 1647 | { |
| 1513 | 1648 | no_machine_error_code=0x02000000; |
| 1649 | hng64_mcu_type = RACING_MCU; | |
| 1514 | 1650 | DRIVER_INIT_CALL(hng64); |
| 1515 | 1651 | } |
| 1516 | 1652 | |
| 1517 | 1653 | static DRIVER_INIT(hng64_shoot) |
| 1518 | 1654 | { |
| 1519 | hng64_ | |
| 1655 | hng64_m | |
| 1520 | 1656 | no_machine_error_code=0x03000000; |
| 1521 | 1657 | DRIVER_INIT_CALL(hng64); |
| 1522 | 1658 | } |
| r6428 | r6429 | |
| 1601 | 1737 | |
| 1602 | 1738 | // "Display List" init - ugly |
| 1603 | 1739 | activeBuffer = 0 ; |
| 1740 | ||
| 1741 | /* For simulate MCU stepping */ | |
| 1742 | fake_mcu_time = 0; | |
| 1604 | 1743 | } |
| 1605 | 1744 | |
| 1745 | static PALETTE_INIT( hng64 ) | |
| 1746 | { | |
| 1747 | #if 0 | |
| 1606 | 1748 | |
| 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 | ||
| 1607 | 1762 | static MACHINE_DRIVER_START( hng64 ) |
| 1608 | 1763 | /* basic machine hardware */ |
| 1609 | 1764 | MDRV_CPU_ADD("maincpu", VR4300BE, MASTER_CLOCK) // actually R4300 |
| r6428 | r6429 | |
| 1618 | 1773 | MDRV_CPU_PROGRAM_MAP(hng_comm_map) |
| 1619 | 1774 | MDRV_CPU_IO_MAP(hng_comm_io_map) |
| 1620 | 1775 | |
| 1776 | MDRV_PALETTE_INIT(hng64) | |
| 1777 | ||
| 1621 | 1778 | MDRV_GFXDECODE(hng64) |
| 1622 | 1779 | MDRV_MACHINE_START(hyperneo) |
| 1623 | 1780 | MDRV_MACHINE_RESET(hyperneo) |
| r6428 | r6429 | |
| 2107 | 2264 | GAME( 1997, roadedge, hng64, hng64, hng64, hng64_race, ROT0, "SNK", "Roads Edge / Round Trip (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 001 */ |
| 2108 | 2265 | GAME( 1998, sams64, hng64, hng64, hng64, ss64, ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 002 */ |
| 2109 | 2266 | GAME( 1998, xrally, hng64, hng64, hng64, hng64_race, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 003 */ |
| 2110 | GAME( 1998, bbust2, hng64, hng64, | |
| 2267 | GAME( 1998, bbust2, hng64, hng64, bbust2, | |
| 2111 | 2268 | GAME( 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 */ |
| 2112 | 2269 | GAME( 1998, fatfurwa, hng64, hng64, hng64, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 006 */ |
| 2113 | 2270 | GAME( 1999, buriki, hng64, hng64, hng64, fatfurwa, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */ |
| r6428 | r6429 | |
|---|---|---|
| 411 | 411 | |
| 412 | 412 | static ADDRESS_MAP_START( ppking_cpu2_io, ADDRESS_SPACE_IO, 8 ) |
| 413 | 413 | 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) | |
| 415 | 415 | AM_RANGE(0x20, 0x21) AM_READ(qx1_r) AM_WRITE(qx1_w) |
| 416 | 416 | AM_RANGE(0x40, 0x40) AM_READNOP |
| 417 | 417 | AM_RANGE(0x60, 0x61) AM_READ(qx2_r) AM_WRITE(qx2_w) |
| r6428 | r6429 | |
| 458 | 458 | |
| 459 | 459 | static ADDRESS_MAP_START( gladiatr_cpu2_io, ADDRESS_SPACE_IO, 8 ) |
| 460 | 460 | 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) | |
| 462 | 462 | AM_RANGE(0x20, 0x21) AM_READWRITE(TAITO8741_1_r, TAITO8741_1_w) |
| 463 | 463 | AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w) |
| 464 | 464 | AM_RANGE(0x60, 0x61) AM_READWRITE(TAITO8741_2_r, TAITO8741_2_w) |
| r6428 | r6429 | |
| 712 | 712 | /* sound hardware */ |
| 713 | 713 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 714 | 714 | |
| 715 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 715 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 716 | 716 | MDRV_SOUND_CONFIG(ppking_ym2203_interface) |
| 717 | 717 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 718 | 718 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
| 761 | 761 | /* sound hardware */ |
| 762 | 762 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 763 | 763 | |
| 764 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 764 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 765 | 765 | MDRV_SOUND_CONFIG(gladiatr_ym2203_interface) |
| 766 | 766 | MDRV_SOUND_ROUTE(0, "mono", 0.60) |
| 767 | 767 | MDRV_SOUND_ROUTE(1, "mono", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 327 | 327 | AM_RANGE(0x2802, 0x2802) AM_READ(steerlatch_r) AM_WRITENOP |
| 328 | 328 | /* AM_RANGE(0x2803, 0x2803) ? */ |
| 329 | 329 | 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) | |
| 331 | 331 | /* AM_RANGE(0x37f7, 0x37f7) ? */ |
| 332 | 332 | 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) | |
| 334 | 334 | AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSWA") /* DSWA */ |
| 335 | 335 | AM_RANGE(0x5000, 0x50ff) AM_WRITE(imola_ledram_w) |
| 336 | 336 | AM_RANGE(0x47ff, 0x4800) AM_WRITE(transmit_data_w) |
| r6428 | r6429 | |
| 430 | 430 | MDRV_VIDEO_START(imolagp) |
| 431 | 431 | MDRV_VIDEO_UPDATE(imolagp) |
| 432 | 432 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 433 | MDRV_SOUND_ADD("ay", AY8910, 2000000) | |
| 433 | MDRV_SOUND_ADD("aysnd", AY8910, 2000000) | |
| 434 | 434 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 435 | 435 | MACHINE_DRIVER_END |
| 436 | 436 |
| r6428 | r6429 | |
|---|---|---|
| 134 | 134 | AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1") |
| 135 | 135 | AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2") |
| 136 | 136 | 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) | |
| 138 | 138 | AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(megadriv_vdp_r, megadriv_vdp_w) |
| 139 | 139 | AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_BASE(&megadrive_ram) |
| 140 | 140 |
| r6428 | r6429 | |
|---|---|---|
| 124 | 124 | |
| 125 | 125 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 126 | 126 | 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) | |
| 128 | 128 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 129 | 129 | AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_r) |
| 130 | 130 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 261 | 261 | /* sound hardware */ |
| 262 | 262 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 263 | 263 | |
| 264 | MDRV_SOUND_ADD("ym", YM2203, 2000000) | |
| 264 | MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) | |
| 265 | 265 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 266 | 266 | MACHINE_DRIVER_END |
| 267 | 267 |
| r6428 | r6429 | |
|---|---|---|
| 152 | 152 | |
| 153 | 153 | static READ8_DEVICE_HANDLER(at_dma8237_2_r) |
| 154 | 154 | { |
| 155 | return | |
| 155 | return i | |
| 156 | 156 | } |
| 157 | 157 | |
| 158 | 158 | static WRITE8_DEVICE_HANDLER(at_dma8237_2_w) |
| 159 | 159 | { |
| 160 | | |
| 160 | i | |
| 161 | 161 | } |
| 162 | 162 | |
| 163 | 163 | static READ32_DEVICE_HANDLER(at32_dma8237_2_r) |
| r6428 | r6429 | |
| 371 | 371 | * |
| 372 | 372 | *************************************************************************/ |
| 373 | 373 | |
| 374 | static int dma_channel; | |
| 374 | 375 | static UINT8 dma_offset[2][4]; |
| 375 | 376 | static UINT8 at_pages[0x10]; |
| 376 | 377 | |
| r6428 | r6429 | |
| 420 | 421 | } |
| 421 | 422 | |
| 422 | 423 | |
| 423 | static | |
| 424 | static W | |
| 424 | 425 | { |
| 425 | 426 | cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); |
| 426 | 427 | |
| 427 | 428 | /* Assert HLDA */ |
| 428 | | |
| 429 | i | |
| 429 | 430 | } |
| 430 | 431 | |
| 431 | 432 | |
| 432 | static | |
| 433 | static READ8 | |
| 433 | 434 | { |
| 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) | |
| 436 | 436 | & 0xFF0000; |
| 437 | 437 | |
| 438 | 438 | return memory_read_byte(space, page_offset + offset); |
| 439 | 439 | } |
| 440 | 440 | |
| 441 | 441 | |
| 442 | static | |
| 442 | static | |
| 443 | 443 | { |
| 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) | |
| 446 | 445 | & 0xFF0000; |
| 447 | 446 | |
| 448 | 447 | memory_write_byte(space, page_offset + offset, data); |
| 449 | 448 | } |
| 450 | 449 | |
| 451 | ||
| 452 | static const struct dma8237_interface dma8237_1_config = | |
| 450 | static void set_dma_channel(const device_config *device, int channel, int state) | |
| 453 | 451 | { |
| 454 | XTAL_14_31818MHz/3, | |
| 452 | if (!state) dma_channel = channel; | |
| 453 | } | |
| 455 | 454 | |
| 456 | pc_dma_hrq_changed, | |
| 457 | pc_dma_read_byte, | |
| 458 | pc_dma_write_byte, | |
| 455 | static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { set_dma_channel(device, 0, state); } | |
| 456 | static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { set_dma_channel(device, 1, state); } | |
| 457 | static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { set_dma_channel(device, 2, state); } | |
| 458 | static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { set_dma_channel(device, 3, state); } | |
| 459 | 459 | |
| 460 | { NULL, NULL, NULL, NULL }, | |
| 461 | { NULL, NULL, NULL, NULL }, | |
| 462 | NULL | |
| 460 | static 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) } | |
| 463 | 469 | }; |
| 464 | 470 | |
| 465 | ||
| 466 | static const struct dma8237_interface dma8237_2_config = | |
| 471 | static I8237_INTERFACE( dma8237_2_config ) | |
| 467 | 472 | { |
| 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 } | |
| 477 | 480 | }; |
| 478 | 481 | |
| 479 | 482 | static READ32_HANDLER(at_page32_r) |
| r6428 | r6429 | |
| 502 | 505 | ADDRESS_MAP_END |
| 503 | 506 | |
| 504 | 507 | static ADDRESS_MAP_START(gamecstl_io, ADDRESS_SPACE_IO, 32) |
| 505 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", | |
| 508 | AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", i | |
| 506 | 509 | AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) |
| 507 | 510 | AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) |
| 508 | 511 | AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) |
| r6428 | r6429 | |
| 677 | 680 | |
| 678 | 681 | MDRV_PIT8254_ADD( "pit8254", gamecstl_pit8254_config ) |
| 679 | 682 | |
| 680 | MDRV_ | |
| 683 | MDRV_I | |
| 681 | 684 | |
| 682 | MDRV_ | |
| 685 | MDRV_I | |
| 683 | 686 | |
| 684 | 687 | MDRV_PIC8259_ADD( "pic8259_1", gamecstl_pic8259_1_config ) |
| 685 | 688 |
| r6428 | r6429 | |
|---|---|---|
| 275 | 275 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 276 | 276 | AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM |
| 277 | 277 | 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) | |
| 280 | 280 | ADDRESS_MAP_END |
| 281 | 281 | |
| 282 | 282 | |
| r6428 | r6429 | |
| 285 | 285 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 286 | 286 | AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM |
| 287 | 287 | 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) | |
| 290 | 290 | ADDRESS_MAP_END |
| 291 | 291 | |
| 292 | 292 | |
| r6428 | r6429 | |
| 453 | 453 | |
| 454 | 454 | /* sound hardware */ |
| 455 | 455 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 456 | MDRV_SOUND_ADD("ay", AY8910, MASTER_CLOCK/8) | |
| 456 | MDRV_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8) | |
| 457 | 457 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 458 | 458 | MACHINE_DRIVER_END |
| 459 | 459 |
| r6428 | r6429 | |
|---|---|---|
| 189 | 189 | AM_RANGE(0x4002, 0x4002) AM_WRITE(seibu_rst10_ack_w) |
| 190 | 190 | AM_RANGE(0x4003, 0x4003) AM_WRITE(seibu_rst18_ack_w) |
| 191 | 191 | 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) | |
| 193 | 193 | AM_RANGE(0x4010, 0x4011) AM_READ(seibu_soundlatch_r) |
| 194 | 194 | AM_RANGE(0x4012, 0x4012) AM_READ(seibu_main_data_pending_r) |
| 195 | 195 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| r6428 | r6429 | |
| 211 | 211 | AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r) |
| 212 | 212 | AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r) |
| 213 | 213 | 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) | |
| 215 | 215 | AM_RANGE(0x6000, 0x6000) AM_WRITENOP /* ??? */ |
| 216 | 216 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 217 | 217 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 513 | 513 | /* sound hardware */ |
| 514 | 514 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 515 | 515 | |
| 516 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 516 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 517 | 517 | MDRV_SOUND_CONFIG(seibu_ym2151_interface) |
| 518 | 518 | MDRV_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80) |
| 519 | 519 | |
| r6428 | r6429 | |
| 568 | 568 | /* sound hardware */ |
| 569 | 569 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 570 | 570 | |
| 571 | MDRV_SOUND_ADD("ym", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 571 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */ | |
| 572 | 572 | MDRV_SOUND_CONFIG(cabalbl_ym2151_interface) |
| 573 | 573 | MDRV_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80) |
| 574 | 574 |
| r6428 | r6429 | |
|---|---|---|
| 109 | 109 | static ADDRESS_MAP_START( hotblock_io, ADDRESS_SPACE_IO, 8 ) |
| 110 | 110 | AM_RANGE(0x0000, 0x0000) AM_WRITE(hotblock_port0_w) |
| 111 | 111 | 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) | |
| 114 | 114 | ADDRESS_MAP_END |
| 115 | 115 | |
| 116 | 116 | |
| r6428 | r6429 | |
| 211 | 211 | /* sound hardware */ |
| 212 | 212 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 213 | 213 | |
| 214 | MDRV_SOUND_ADD("ay", AY8910, 1000000) | |
| 214 | MDRV_SOUND_ADD("aysnd", AY8910, 1000000) | |
| 215 | 215 | MDRV_SOUND_CONFIG(ay8910_config) |
| 216 | 216 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 217 | 217 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 321 | 321 | static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 322 | 322 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 323 | 323 | 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) | |
| 325 | 325 | AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) |
| 326 | 326 | AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r, k053260_w) |
| 327 | 327 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 470 | 470 | /* sound hardware */ |
| 471 | 471 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 472 | 472 | |
| 473 | MDRV_SOUND_ADD("ym", YM2151, 3579545) /* verified with PCB */ | |
| 473 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) /* verified with PCB */ | |
| 474 | 474 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 475 | 475 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 476 | 476 |
| r6428 | r6429 | |
|---|---|---|
| 1558 | 1558 | |
| 1559 | 1559 | static WRITE16_HANDLER( atomicp_sound_w ) |
| 1560 | 1560 | { |
| 1561 | ym2413_w(devtag_get_device(space->machine, "ym"), offset, data >> 8); | |
| 1561 | ym2413_w(devtag_get_device(space->machine, "ymsnd"), offset, data >> 8); | |
| 1562 | 1562 | } |
| 1563 | 1563 | |
| 1564 | 1564 | |
| r6428 | r6429 | |
| 1785 | 1785 | static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) |
| 1786 | 1786 | ADDRESS_MAP_UNMAP_HIGH |
| 1787 | 1787 | 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) | |
| 1789 | 1789 | AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE("upd", upd7759_control_w) |
| 1790 | 1790 | AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_DEVREADWRITE("upd", upd7759_status_r, upd7759_port_w) |
| 1791 | 1791 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 3264 | 3264 | /* sound hardware */ |
| 3265 | 3265 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3266 | 3266 | |
| 3267 | MDRV_SOUND_ADD("ym", YM2151, MASTER_CLOCK_8MHz/2) | |
| 3267 | MDRV_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2) | |
| 3268 | 3268 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43) |
| 3269 | 3269 | |
| 3270 | 3270 | MDRV_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) |
| r6428 | r6429 | |
| 3299 | 3299 | MDRV_MACHINE_RESET(atomicp) |
| 3300 | 3300 | |
| 3301 | 3301 | /* 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) */ | |
| 3303 | 3303 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3304 | 3304 | |
| 3305 | 3305 | MDRV_DEVICE_REMOVE("upd") |
| r6428 | r6429 | |
|---|---|---|
| 43 | 43 | |
| 44 | 44 | static MACHINE_RESET( marineb ) |
| 45 | 45 | { |
| 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; | |
| 47 | 53 | MACHINE_RESET_CALL(espial); |
| 48 | 54 | } |
| 49 | 55 | |
| 50 | 56 | static MACHINE_RESET( springer ) |
| 51 | 57 | { |
| 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; | |
| 53 | 65 | MACHINE_RESET_CALL(espial); |
| 54 | 66 | } |
| 55 | 67 | |
| 68 | static 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 | ||
| 56 | 75 | static ADDRESS_MAP_START( marineb_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 57 | 76 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 58 | 77 | 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) | |
| 62 | 81 | AM_RANGE(0x9800, 0x9800) AM_WRITE(marineb_column_scroll_w) |
| 63 | 82 | AM_RANGE(0x9a00, 0x9a00) AM_WRITE(marineb_palette_bank_0_w) |
| 64 | 83 | AM_RANGE(0x9c00, 0x9c00) AM_WRITE(marineb_palette_bank_1_w) |
| r6428 | r6429 | |
| 505 | 524 | |
| 506 | 525 | static MACHINE_DRIVER_START( marineb ) |
| 507 | 526 | |
| 527 | /* driver data */ | |
| 528 | MDRV_DRIVER_DATA(espial_state) | |
| 529 | ||
| 508 | 530 | /* basic machine hardware */ |
| 509 | 531 | MDRV_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */ |
| 510 | 532 | MDRV_CPU_PROGRAM_MAP(marineb_map) |
| 511 | 533 | MDRV_CPU_IO_MAP(marineb_io_map) |
| 512 | 534 | MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) |
| 513 | 535 | |
| 536 | MDRV_MACHINE_START(marineb) | |
| 514 | 537 | MDRV_MACHINE_RESET(marineb) |
| 515 | 538 | |
| 516 | 539 | /* video hardware */ |
| r6428 | r6429 | |
| 841 | 864 | |
| 842 | 865 | |
| 843 | 866 | /* year name parent machine inputs */ |
| 844 | GAME( 1982, marineb, 0, marineb, marineb, 0, ROT0, "Orca", "Marine Boy", 0 ) | |
| 845 | GAME( 1982, changes, 0, changes, changes, 0, ROT0, "Orca", "Changes", 0 ) | |
| 846 | GAME( 1982, changesa, changes, changes, changes, 0, ROT0, "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", 0) | |
| 847 | GAME( 1982, looper, changes, changes, changes, 0, ROT0, "Orca", "Looper", 0 ) | |
| 848 | GAME( 1982, springer, 0, springer, marineb, 0, ROT270, "Orca", "Springer", 0 ) | |
| 849 | GAME( 1983, hoccer, 0, hoccer, hoccer, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", 0 ) | |
| 850 | GAME( 1983, hoccer2, hoccer, hoccer, hoccer, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , 0) /* earlier */ | |
| 851 | GAME( 1983, bcruzm12, 0, bcruzm12, bcruzm12,0, ROT90, "Sigma Enterprises Inc.", "Battle Cruiser M-12", 0 ) | |
| 852 | GAME( 1983, hopprobo, 0, hopprobo, marineb, 0, ROT90, "Sega", "Hopper Robo", 0 ) | |
| 853 | GAME( 1984, wanted, 0, wanted, wanted, 0, ROT90, "Sigma Enterprises Inc.", "Wanted", 0 ) | |
| 867 | GAME( 1982, marineb, 0, marineb, marineb, 0, ROT0, "Orca", "Marine Boy", GAME_SUPPORTS_SAVE ) | |
| 868 | GAME( 1982, changes, 0, changes, changes, 0, ROT0, "Orca", "Changes", GAME_SUPPORTS_SAVE ) | |
| 869 | GAME( 1982, changesa, changes, changes, changes, 0, ROT0, "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", GAME_SUPPORTS_SAVE ) | |
| 870 | GAME( 1982, looper, changes, changes, changes, 0, ROT0, "Orca", "Looper", GAME_SUPPORTS_SAVE ) | |
| 871 | GAME( 1982, springer, 0, springer, marineb, 0, ROT270, "Orca", "Springer", GAME_SUPPORTS_SAVE ) | |
| 872 | GAME( 1983, hoccer, 0, hoccer, hoccer, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", GAME_SUPPORTS_SAVE ) | |
| 873 | GAME( 1983, hoccer2, hoccer, hoccer, hoccer, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , GAME_SUPPORTS_SAVE ) /* earlier */ | |
| 874 | GAME( 1983, bcruzm12, 0, bcruzm12, bcruzm12,0, ROT90, "Sigma Enterprises Inc.", "Battle Cruiser M-12", GAME_SUPPORTS_SAVE ) | |
| 875 | GAME( 1983, hopprobo, 0, hopprobo, marineb, 0, ROT90, "Sega", "Hopper Robo", GAME_SUPPORTS_SAVE ) | |
| 876 | GAME( 1984, wanted, 0, wanted, wanted, 0, ROT90, "Sigma Enterprises Inc.", "Wanted", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 909 | 909 | static ADDRESS_MAP_START( sound_memmap, ADDRESS_SPACE_PROGRAM, 16 ) |
| 910 | 910 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 911 | 911 | 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 */ | |
| 913 | 913 | AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w) |
| 914 | 914 | AM_RANGE(0x600000, 0x600001) AM_NOP |
| 915 | 915 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1073 | 1073 | |
| 1074 | 1074 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1075 | 1075 | |
| 1076 | MDRV_SOUND_ADD("rf", RF5C400, 16934400) // as per Guru readme above | |
| 1076 | MDRV_SOUND_ADD("rfsnd", RF5C400, 16934400) // as per Guru readme above | |
| 1077 | 1077 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1078 | 1078 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1079 | 1079 | |
| r6428 | r6429 | |
| 1124 | 1124 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program roms */ |
| 1125 | 1125 | ROM_LOAD16_WORD_SWAP( "676gna08.7s", 0x000000, 0x080000, CRC(8973f6f2) SHA1(f5648a7e0205f7e979ccacbb52936809ce14a184) ) |
| 1126 | 1126 | |
| 1127 | ROM_REGION(0x1000000, "rf", 0) /* other roms (textures?) */ | |
| 1127 | ROM_REGION(0x1000000, "rfsnd", 0) /* other roms (textures?) */ | |
| 1128 | 1128 | ROM_LOAD( "676a09.16p", 0x000000, 0x400000, CRC(f85c8dc6) SHA1(8b302c80be309b5cc68b75945fcd7b87a56a4c9b) ) |
| 1129 | 1129 | ROM_LOAD( "676a10.14p", 0x400000, 0x400000, CRC(7b5b7828) SHA1(aec224d62e4b1e8fdb929d7947ce70d84ba676cf) ) |
| 1130 | 1130 | |
| r6428 | r6429 | |
| 1148 | 1148 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program roms */ |
| 1149 | 1149 | ROM_LOAD16_WORD_SWAP( "888a08.7s", 0x000000, 0x080000, CRC(55fbea65) SHA1(ad953f758181731efccadcabc4326e6634c359e8) ) |
| 1150 | 1150 | |
| 1151 | ROM_REGION(0x1000000, "rf", 0) /* PCM sample roms */ | |
| 1151 | ROM_REGION(0x1000000, "rfsnd", 0) /* PCM sample roms */ | |
| 1152 | 1152 | ROM_LOAD( "888a09.16p", 0x000000, 0x400000, CRC(11e2fed2) SHA1(24b8a367b59fedb62c56f066342f2fa87b135fc5) ) |
| 1153 | 1153 | ROM_LOAD( "888a10.14p", 0x400000, 0x400000, CRC(328ce610) SHA1(dbbc779a1890c53298c0db129d496df048929496) ) |
| 1154 | 1154 | |
| r6428 | r6429 | |
| 1171 | 1171 | ROM_REGION(0x80000, "audiocpu", 0) /* 68k program roms */ |
| 1172 | 1172 | ROM_LOAD16_WORD_SWAP( "713a08.7s", 0x000000, 0x080000, CRC(6a72a825) SHA1(abeac99c5343efacabcb0cdff6d34f9f967024db) ) |
| 1173 | 1173 | |
| 1174 | ROM_REGION(0x1000000, "rf", 0) /* PCM sample roms */ | |
| 1174 | ROM_REGION(0x1000000, "rfsnd", 0) /* PCM sample roms */ | |
| 1175 | 1175 | ROM_LOAD( "713a09.16p", 0x000000, 0x400000, CRC(058f250a) SHA1(63b8e60004ec49009633e86b4992c00083def9a8) ) |
| 1176 | 1176 | ROM_LOAD( "713a10.14p", 0x400000, 0x400000, CRC(27f9833e) SHA1(1540f00d2571ecb81b914c553682b67fca94bbbd) ) |
| 1177 | 1177 |
| r6428 | r6429 | |
|---|---|---|
| 137 | 137 | |
| 138 | 138 | static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 ) |
| 139 | 139 | 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) | |
| 141 | 141 | AM_RANGE(0x04, 0x04) AM_WRITE(taotaido_sh_bankswitch_w) |
| 142 | 142 | AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w) |
| 143 | 143 | AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_r) |
| r6428 | r6429 | |
| 358 | 358 | /* sound hardware */ |
| 359 | 359 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 360 | 360 | |
| 361 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 361 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 362 | 362 | MDRV_SOUND_CONFIG(ym2610_config) |
| 363 | 363 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 364 | 364 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 379 | 379 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */ |
| 380 | 380 | ROM_LOAD( "u104.bin", 0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) ) |
| 381 | 381 | |
| 382 | ROM_REGION( 0x200000, "ym", 0 ) /* sound samples */ | |
| 382 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* sound samples */ | |
| 383 | 383 | ROM_LOAD( "u127.bin", 0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) ) |
| 384 | 384 | |
| 385 | 385 | ROM_REGION( 0x600000, "gfx1", 0 ) /* Sprites */ |
| r6428 | r6429 | |
| 403 | 403 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */ |
| 404 | 404 | ROM_LOAD( "u104.bin", 0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) ) |
| 405 | 405 | |
| 406 | ROM_REGION( 0x200000, "ym", 0 ) /* sound samples */ | |
| 406 | ROM_REGION( 0x200000, "ymsnd", 0 ) /* sound samples */ | |
| 407 | 407 | ROM_LOAD( "u127.bin", 0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) ) |
| 408 | 408 | |
| 409 | 409 | ROM_REGION( 0x600000, "gfx1", 0 ) /* Sprites */ |
| r6428 | r6429 | |
|---|---|---|
| 148 | 148 | ADDRESS_MAP_UNMAP_HIGH |
| 149 | 149 | ADDRESS_MAP_GLOBAL_MASK(0x3fffff) |
| 150 | 150 | 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) | |
| 152 | 152 | AM_RANGE(0x140010, 0x140011) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) |
| 153 | 153 | AM_RANGE(0x140020, 0x140021) AM_WRITE(audio_volume_w) |
| 154 | 154 | AM_RANGE(0x140030, 0x140031) AM_WRITE(audio_control_w) |
| r6428 | r6429 | |
| 322 | 322 | MDRV_SOUND_CONFIG(okim6295_interface_pin7low) |
| 323 | 323 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 324 | 324 | |
| 325 | MDRV_SOUND_ADD("ym", YM2413, ATARI_CLOCK_14MHz/4) | |
| 325 | MDRV_SOUND_ADD("ymsnd", YM2413, ATARI_CLOCK_14MHz/4) | |
| 326 | 326 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 327 | 327 | MACHINE_DRIVER_END |
| 328 | 328 |
| r6428 | r6429 | |
|---|---|---|
| 1306 | 1306 | ROM_LOAD16_BYTE("d49-05", 0x600000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) ) // -std- |
| 1307 | 1307 | ROM_END |
| 1308 | 1308 | |
| 1309 | ROM_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- | |
| 1338 | ROM_END | |
| 1339 | ||
| 1309 | 1340 | ROM_START( dungeonm ) |
| 1310 | 1341 | ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */ |
| 1311 | 1342 | ROM_LOAD32_BYTE("d69-20.bin", 0x000000, 0x80000, CRC(33650fe4) SHA1(df8b775749b1f0f02d0df6141597cc49fb3ae227) ) |
| r6428 | r6429 | |
| 1428 | 1459 | D69-18/D69-19 27C1001 EPROM (DIP32) |
| 1429 | 1460 | */ |
| 1430 | 1461 | |
| 1431 | ROM_START( lightbr ) | |
| 1462 | ROM_START( lightbrj ) | |
| 1432 | 1463 | ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */ |
| 1433 | 1464 | ROM_LOAD32_BYTE("d69-20.bin", 0x000000, 0x80000, CRC(33650fe4) SHA1(df8b775749b1f0f02d0df6141597cc49fb3ae227) ) |
| 1434 | 1465 | ROM_LOAD32_BYTE("d69-13.bin", 0x000001, 0x80000, CRC(dec2ec17) SHA1(8472a5aaea9e4e4fb5f7f4b5eda356b590d1541d) ) |
| r6428 | r6429 | |
| 3831 | 3862 | GAME( 1993, rayforcej,gunlock, f3_224a, f3, gunlock, ROT90, "Taito Corporation", "Ray Force (Ver 2.3J 1994/01/20)", 0 ) |
| 3832 | 3863 | GAME( 1993, rayforce, gunlock, f3_224a, f3, gunlock, ROT90, "Taito America Corporation", "Ray Force (Ver 2.3A 1994/01/20)", 0 ) |
| 3833 | 3864 | GAME( 1993, scfinals, 0, f3_224a, f3, scfinals, ROT0, "Taito Corporation Japan", "Super Cup Finals (Ver 2.1O 1993/11/19)", 0 ) |
| 3834 | GAME( 1993, dungeonm, 0, f3_224a, f3, lightbr, ROT0, "Taito Corporation Japan", "Dungeon Magic (Ver 2.1O 1994/02/18)", 0 ) | |
| 3835 | GAME( 1993, lightbr, dungeonm, f3_224a, f3, lightbr, ROT0, "Taito Corporation", "Light Bringer (Ver 2.1J 1994/02/18)", 0 ) | |
| 3836 | GAME( 1993, dungeonmu,dungeonm, f3_224a, f3, lightbr, ROT0, "Taito America Corporation", "Dungeon Magic (Ver 2.1A 1994/02/18)", 0 ) | |
| 3865 | GAME( 1993, lightbr, 0, f3_224a, f3, lightbr, ROT0, "Taito Corporation Japan", "Light Bringer (Ver 2.20 1994/04/08)", 0 ) | |
| 3866 | GAME( 1993, lightbrj, lightbr, f3_224a, f3, lightbr, ROT0, "Taito Corporation", "Light Bringer (Ver 2.1J 1994/02/18)", 0 ) | |
| 3867 | GAME( 1993, dungeonm, lightbr, f3_224a, f3, lightbr, ROT0, "Taito Corporation Japan", "Dungeon Magic (Ver 2.1O 1994/02/18)", 0 ) | |
| 3868 | GAME( 1993, dungeonmu,lightbr, f3_224a, f3, lightbr, ROT0, "Taito America Corporation", "Dungeon Magic (Ver 2.1A 1994/02/18)", 0 ) | |
| 3837 | 3869 | GAME( 1994, intcup94, 0, f3_224a, f3, intcup94, ROT0, "Taito Corporation Japan", "International Cup '94 (Ver 2.2O 1994/05/26)", 0 ) |
| 3838 | 3870 | GAME( 1994, hthero94, intcup94, f3_224a, f3, intcup94, ROT0, "Taito America Corporation", "Hat Trick Hero '94 (Ver 2.2A 1994/05/26)", 0 ) |
| 3839 | 3871 | GAME( 1994, kaiserkn, 0, f3_224a, kn, kaiserkn, ROT0, "Taito Corporation Japan", "Kaiser Knuckle (Ver 2.1O 1994/07/29)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 1024 | 1024 | -----------------------------------------------------------------------------| |
| 1025 | 1025 | */ |
| 1026 | 1026 | |
| 1027 | ROM_START( snowboar ) | |
| 1027 | ROM_START( snowboara ) | |
| 1028 | 1028 | 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 */ | |
| 1031 | 1031 | |
| 1032 | 1032 | ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ |
| 1033 | 1033 | /* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */ |
| r6428 | r6429 | |
| 1040 | 1040 | ROM_LOAD( "sb46", 0x0800000, 0x0400000, CRC(22e7c648) SHA1(baddb9bc13accd83bea61533d7286cf61cd89279) ) /* GFX only */ |
| 1041 | 1041 | ROM_END |
| 1042 | 1042 | |
| 1043 | ROM_START( snowboar | |
| 1043 | ROM_START( snowboar | |
| 1044 | 1044 | 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 */ | |
| 1047 | 1047 | |
| 1048 | 1048 | ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */ |
| 1049 | 1049 | ROM_LOAD( "sb.a0", 0x0000000, 0x0080000, CRC(aa476e44) SHA1(2b87689489b9619e9e5ca32c3e3d2aec8ef31c88) ) /* GFX only */ |
| r6428 | r6429 | |
| 1406 | 1406 | ROM_LOAD16_BYTE( "1.u40", 0x000001, 0x020000, BAD_DUMP CRC(311c2f94) SHA1(963d6b5f479598145146fcb8b7c6ce77fbc92b07) ) |
| 1407 | 1407 | |
| 1408 | 1408 | 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) ) | |
| 1414 | 1414 | |
| 1415 | 1415 | ROM_REGION( 0x0600, "plds", 0 ) |
| 1416 | 1416 | ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) ) |
| r6428 | r6429 | |
| 1423 | 1423 | GAME( 1995, touchgoe, touchgo, touchgo, touchgo, touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 1424 | 1424 | GAME( 1995, wrally2, 0, wrally2, wrally2, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| 1425 | 1425 | GAME( 1996, maniacsq, 0, maniacsq, maniacsq, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) |
| 1426 | GAME( 1996, snowboar, 0, snowboar, snowboar, snowboar, ROT0, "Gaelco", "Snow Board Championship (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 1427 | GAME( 1996, snowboara,snowboar, snowboar, snowboar, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 1426 | GAME( 1996, snowboar, 0, snowboar, snowboar, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 1427 | GAME( 1996, snowboara,snowboar, snowboar, snowboar, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) | |
| 1428 | 1428 | GAME( 1998, bang, 0, bang, bang, bang, ROT0, "Gaelco", "Bang!", 0 ) |
| 1429 | 1429 | GAME( 1998, bangj, bang, bang, bang, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 ) |
| 1430 | 1430 | GAME( 1999, grtesoro, 0, maniacsq, maniacsq, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) |
| r6428 | r6429 | |
|---|---|---|
| 101 | 101 | AM_RANGE(0x40, 0x40) AM_READ_PORT("IN0") |
| 102 | 102 | AM_RANGE(0x50, 0x50) AM_READ_PORT("IN2") |
| 103 | 103 | 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) | |
| 105 | 105 | ADDRESS_MAP_END |
| 106 | 106 | |
| 107 | 107 | static const ym2203_interface ym2203_config = |
| r6428 | r6429 | |
| 210 | 210 | /* sound hardware */ |
| 211 | 211 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 212 | 212 | |
| 213 | MDRV_SOUND_ADD("ym", YM2203, 6000000/2) | |
| 213 | MDRV_SOUND_ADD("ymsnd", YM2203, 6000000/2) | |
| 214 | 214 | MDRV_SOUND_CONFIG(ym2203_config) |
| 215 | 215 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 216 | 216 |
| r6428 | r6429 | |
|---|---|---|
| 213 | 213 | static ADDRESS_MAP_START( talbot_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 214 | 214 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 215 | 215 | 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) | |
| 217 | 217 | AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram) |
| 218 | 218 | AM_RANGE(0x8800, 0x8fef) AM_RAM |
| 219 | 219 | AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) |
| r6428 | r6429 | |
| 240 | 240 | static ADDRESS_MAP_START( champbas_main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 241 | 241 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 242 | 242 | 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) | |
| 244 | 244 | AM_RANGE(0x7800, 0x7fff) AM_ROM // champbb2 only |
| 245 | 245 | AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram) |
| 246 | 246 | AM_RANGE(0x8800, 0x8fef) AM_RAM |
| r6428 | r6429 | |
| 272 | 272 | static ADDRESS_MAP_START( exctsccb_main_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 273 | 273 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 274 | 274 | // 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) | |
| 276 | 276 | // AM_RANGE(0x7800, 0x7fff) AM_ROM // champbb2 only |
| 277 | 277 | AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE(&champbas_bg_videoram) |
| 278 | 278 | AM_RANGE(0x8800, 0x8fff) AM_RAM AM_BASE(&spriteram_2) /* ??? */ |
| r6428 | r6429 | |
| 576 | 576 | |
| 577 | 577 | /* sound hardware */ |
| 578 | 578 | 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) | |
| 580 | 580 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) |
| 581 | 581 | MACHINE_DRIVER_END |
| 582 | 582 | |
| r6428 | r6429 | |
| 610 | 610 | /* sound hardware */ |
| 611 | 611 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 612 | 612 | |
| 613 | MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12) | |
| 613 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12) | |
| 614 | 614 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 615 | 615 | |
| 616 | 616 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
| 716 | 716 | /* sound hardware */ |
| 717 | 717 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 718 | 718 | |
| 719 | MDRV_SOUND_ADD("ay", AY8910, XTAL_18_432MHz/12) | |
| 719 | MDRV_SOUND_ADD("aysnd", AY8910, XTAL_18_432MHz/12) | |
| 720 | 720 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 721 | 721 | |
| 722 | 722 | MDRV_SOUND_ADD("dac", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 194 | 194 | AM_RANGE(0x9ff00, 0x9ffff) AM_WRITENOP /* Irq controller? */ |
| 195 | 195 | AM_RANGE(0xa0000, 0xa3fff) AM_RAM |
| 196 | 196 | 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) | |
| 198 | 198 | AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m107_soundlatch_r, m107_sound_irq_ack_w) |
| 199 | 199 | AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m107_sound_status_w) |
| 200 | 200 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| r6428 | r6429 | |
| 466 | 466 | /* sound hardware */ |
| 467 | 467 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 468 | 468 | |
| 469 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) | |
| 469 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) | |
| 470 | 470 | MDRV_SOUND_CONFIG(ym2151_config) |
| 471 | 471 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 472 | 472 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.40) |
| r6428 | r6429 | |
|---|---|---|
| 477 | 477 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 478 | 478 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10) |
| 479 | 479 | 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) | |
| 481 | 481 | AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w) |
| 482 | 482 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w) |
| 483 | 483 | AM_RANGE(0xe400, 0xe403) AM_WRITE(ninjaw_pancontrol) /* pan */ |
| r6428 | r6429 | |
| 732 | 732 | /* sound hardware */ |
| 733 | 733 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 734 | 734 | |
| 735 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 735 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 736 | 736 | MDRV_SOUND_CONFIG(ym2610_config) |
| 737 | 737 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 738 | 738 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 805 | 805 | /* sound hardware */ |
| 806 | 806 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 807 | 807 | |
| 808 | MDRV_SOUND_ADD("ym", YM2610, 16000000/2) | |
| 808 | MDRV_SOUND_ADD("ymsnd", YM2610, 16000000/2) | |
| 809 | 809 | MDRV_SOUND_CONFIG(ym2610_config) |
| 810 | 810 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 811 | 811 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 874 | 874 | // ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) ) /* SCR (screen 3) */ |
| 875 | 875 | // ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) ) |
| 876 | 876 | |
| 877 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 877 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 878 | 878 | ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) ) |
| 879 | 879 | ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) ) |
| 880 | 880 | ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) ) |
| r6428 | r6429 | |
| 930 | 930 | // ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) ) /* SCR (screen 3) */ |
| 931 | 931 | // ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) ) |
| 932 | 932 | |
| 933 | ROM_REGION( 0x180000, "ym", 0 ) /* ADPCM samples */ | |
| 933 | ROM_REGION( 0x180000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 934 | 934 | ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) ) |
| 935 | 935 | ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) ) |
| 936 | 936 | ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) ) |
| r6428 | r6429 | |
| 978 | 978 | ROM_REGION( 0x100000, "gfx3", 0 ) |
| 979 | 979 | ROM_COPY( "gfx1", 0x000000, 0x000000, 0x100000 ) /* SCR (screens 2+) */ |
| 980 | 980 | |
| 981 | ROM_REGION( 0x100000, "ym", 0 ) /* ADPCM samples */ | |
| 981 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 982 | 982 | ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) ) |
| 983 | 983 | ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) ) |
| 984 | 984 |
| r6428 | r6429 | |
|---|---|---|
| 509 | 509 | #include "sound/ay8910.h" |
| 510 | 510 | #include "cpu/m6805/m6805.h" |
| 511 | 511 | |
| 512 | int arkanoid_bootleg_id; | |
| 513 | ||
| 514 | ||
| 515 | 512 | /***************************************************************************/ |
| 516 | 513 | |
| 517 | 514 | /* Memory Maps */ |
| r6428 | r6429 | |
| 519 | 516 | static ADDRESS_MAP_START( arkanoid_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 520 | 517 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 521 | 518 | 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) | |
| 524 | 521 | AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) /* gfx bank, flip screen etc. */ |
| 525 | 522 | AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM") /* 2 bits from the 68705 */ |
| 526 | 523 | AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w) |
| 527 | 524 | 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) | |
| 530 | 527 | AM_RANGE(0xe840, 0xefff) AM_RAM |
| 531 | 528 | AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */ |
| 532 | 529 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 534 | 531 | static ADDRESS_MAP_START( bootleg_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 535 | 532 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 536 | 533 | 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) | |
| 539 | 536 | AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) /* gfx bank, flip screen etc. */ |
| 540 | 537 | AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM") |
| 541 | 538 | AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w) |
| 542 | 539 | 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) | |
| 545 | 542 | AM_RANGE(0xe840, 0xefff) AM_RAM |
| 546 | 543 | AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */ |
| 547 | 544 | ADDRESS_MAP_END |
| 548 | 545 | |
| 549 | 546 | static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 550 | 547 | ADDRESS_MAP_GLOBAL_MASK(0x7ff) |
| 551 | AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_port | |
| 548 | AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_port | |
| 552 | 549 | 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) | |
| 556 | 553 | AM_RANGE(0x0010, 0x007f) AM_RAM |
| 557 | 554 | AM_RANGE(0x0080, 0x07ff) AM_ROM |
| 558 | 555 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 800 | 797 | |
| 801 | 798 | /* Machine Drivers */ |
| 802 | 799 | |
| 800 | static 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 | ||
| 823 | static 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 | ||
| 803 | 843 | static MACHINE_DRIVER_START( arkanoid ) |
| 844 | ||
| 845 | /* driver data */ | |
| 846 | MDRV_DRIVER_DATA(arkanoid_state) | |
| 847 | ||
| 804 | 848 | // basic machine hardware |
| 805 | 849 | MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ |
| 806 | 850 | MDRV_CPU_PROGRAM_MAP(arkanoid_map) |
| r6428 | r6429 | |
| 815 | 859 | MDRV_MACHINE_RESET(arkanoid) |
| 816 | 860 | |
| 817 | 861 | // video hardware |
| 818 | ||
| 819 | 862 | MDRV_SCREEN_ADD("screen", RASTER) |
| 820 | 863 | MDRV_SCREEN_REFRESH_RATE(60) |
| 821 | 864 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| r6428 | r6429 | |
| 832 | 875 | // sound hardware |
| 833 | 876 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 834 | 877 | |
| 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 */ | |
| 836 | 879 | MDRV_SOUND_CONFIG(ay8910_config) |
| 837 | 880 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 838 | 881 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
| 1195 | 1238 | |
| 1196 | 1239 | static DRIVER_INIT( arkangc ) |
| 1197 | 1240 | { |
| 1198 | arkanoid_bootleg_id = ARKANGC; | |
| 1241 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1242 | state->bootleg_id = ARKANGC; | |
| 1199 | 1243 | arkanoid_bootleg_init(machine); |
| 1200 | 1244 | } |
| 1201 | 1245 | |
| 1202 | 1246 | static DRIVER_INIT( arkangc2 ) |
| 1203 | 1247 | { |
| 1204 | arkanoid_bootleg_id = ARKANGC2; | |
| 1248 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1249 | state->bootleg_id = ARKANGC2; | |
| 1205 | 1250 | arkanoid_bootleg_init(machine); |
| 1206 | 1251 | } |
| 1207 | 1252 | |
| 1208 | 1253 | static DRIVER_INIT( block2 ) |
| 1209 | 1254 | { |
| 1255 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1210 | 1256 | // the graphics on this bootleg have the data scrambled |
| 1211 | 1257 | int tile; |
| 1212 | 1258 | UINT8* srcgfx = memory_region(machine,"gfx1"); |
| 1213 | 1259 | UINT8* buffer = alloc_array_or_die(UINT8, 0x18000); |
| 1214 | 1260 | |
| 1215 | for (tile=0;tile<0x3000;tile++) | |
| 1261 | for (tile = 0; tile < 0x3000; tile++) | |
| 1216 | 1262 | { |
| 1217 | 1263 | int srctile; |
| 1218 | 1264 | |
| r6428 | r6429 | |
| 1227 | 1273 | 7,6,8,4, |
| 1228 | 1274 | 3,2,1,0); |
| 1229 | 1275 | |
| 1230 | srctile = srctile^0xd4; | |
| 1276 | srctile = srctile ^ 0xd4; | |
| 1231 | 1277 | |
| 1232 | memcpy(&buffer[tile*8], &srcgfx[srctile*8], 8); | |
| 1278 | memcpy(&buffer[tile * 8], &srcgfx[srctile * 8], 8); | |
| 1233 | 1279 | } |
| 1234 | 1280 | |
| 1235 | memcpy(srcgfx,buffer,0x18000); | |
| 1281 | memcpy(srcgfx, buffer, 0x18000); | |
| 1236 | 1282 | |
| 1237 | a | |
| 1283 | state-> | |
| 1238 | 1284 | arkanoid_bootleg_init(machine); |
| 1239 | 1285 | } |
| 1240 | 1286 | |
| 1241 | 1287 | static DRIVER_INIT( arkblock ) |
| 1242 | 1288 | { |
| 1243 | arkanoid_bootleg_id = ARKBLOCK; | |
| 1289 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1290 | state->bootleg_id = ARKBLOCK; | |
| 1244 | 1291 | arkanoid_bootleg_init(machine); |
| 1245 | 1292 | } |
| 1246 | 1293 | |
| 1247 | 1294 | static DRIVER_INIT( arkbloc2 ) |
| 1248 | 1295 | { |
| 1249 | arkanoid_bootleg_id = ARKBLOC2; | |
| 1296 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1297 | state->bootleg_id = ARKBLOC2; | |
| 1250 | 1298 | arkanoid_bootleg_init(machine); |
| 1251 | 1299 | } |
| 1252 | 1300 | |
| 1253 | 1301 | static DRIVER_INIT( arkgcbl ) |
| 1254 | 1302 | { |
| 1255 | arkanoid_bootleg_id = ARKGCBL; | |
| 1303 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1304 | state->bootleg_id = ARKGCBL; | |
| 1256 | 1305 | arkanoid_bootleg_init(machine); |
| 1257 | 1306 | } |
| 1258 | 1307 | |
| 1259 | 1308 | static DRIVER_INIT( paddle2 ) |
| 1260 | 1309 | { |
| 1261 | arkanoid_bootleg_id = PADDLE2; | |
| 1310 | arkanoid_state *state = (arkanoid_state *)machine->driver_data; | |
| 1311 | state->bootleg_id = PADDLE2; | |
| 1262 | 1312 | arkanoid_bootleg_init(machine); |
| 1263 | 1313 | } |
| 1264 | 1314 | |
| r6428 | r6429 | |
| 1268 | 1318 | UINT8 *ROM = memory_region(machine, "maincpu"); |
| 1269 | 1319 | int x; |
| 1270 | 1320 | |
| 1271 | for (x=0;x<0x8000;x++) | |
| 1321 | for (x = 0; x < 0x8000; x++) | |
| 1272 | 1322 | { |
| 1273 | ROM[x]=ROM[x]^0x94; | |
| 1323 | ROM[x] = ROM[x] ^ 0x94; | |
| 1274 | 1324 | } |
| 1275 | 1325 | |
| 1276 | 1326 | memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd008, 0xd008, 0, 0, tetrsark_d008_w ); |
| r6428 | r6429 | |
|---|---|---|
| 231 | 231 | AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", twin16_upd_reset_w) |
| 232 | 232 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) |
| 233 | 233 | 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) | |
| 235 | 235 | AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_port_w) |
| 236 | 236 | AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("upd", twin16_upd_start_w) |
| 237 | 237 | AM_RANGE(0xf000, 0xf000) AM_DEVREAD("upd", twin16_upd_busy_r) // miaj writes 0 to it |
| r6428 | r6429 | |
| 752 | 752 | // sound hardware |
| 753 | 753 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 754 | 754 | |
| 755 | MDRV_SOUND_ADD("ym", YM2151, 7159160/2) | |
| 755 | MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2) | |
| 756 | 756 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 757 | 757 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 758 | 758 | |
| r6428 | r6429 | |
| 807 | 807 | /* sound hardware */ |
| 808 | 808 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 809 | 809 | |
| 810 | MDRV_SOUND_ADD("ym", YM2151, 7159160/2) | |
| 810 | MDRV_SOUND_ADD("ymsnd", YM2151, 7159160/2) | |
| 811 | 811 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 812 | 812 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 813 | 813 |
| r6428 | r6429 | |
|---|---|---|
| 394 | 394 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 395 | 395 | AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r) |
| 396 | 396 | 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) | |
| 398 | 398 | AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff) |
| 399 | 399 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff) |
| 400 | 400 | AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff) |
| r6428 | r6429 | |
| 412 | 412 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
| 413 | 413 | AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w) /* from/to main cpu */ |
| 414 | 414 | 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) | |
| 416 | 416 | AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff) |
| 417 | 417 | AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff) |
| 418 | 418 | AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff) |
| r6428 | r6429 | |
| 436 | 436 | |
| 437 | 437 | static ADDRESS_MAP_START( z80_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 438 | 438 | 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) | |
| 440 | 440 | ADDRESS_MAP_END |
| 441 | 441 | |
| 442 | 442 | |
| r6428 | r6429 | |
| 1487 | 1487 | /* sound hardware */ |
| 1488 | 1488 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1489 | 1489 | |
| 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 */ | |
| 1491 | 1491 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1492 | 1492 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.80) |
| 1493 | 1493 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.80) |
| r6428 | r6429 | |
| 1655 | 1655 | /* sound hardware */ |
| 1656 | 1656 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1657 | 1657 | |
| 1658 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 1658 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 1659 | 1659 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1660 | 1660 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 1661 | 1661 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 220 | 220 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 221 | 221 | AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w) |
| 222 | 222 | 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) | |
| 224 | 224 | ADDRESS_MAP_END |
| 225 | 225 | |
| 226 | 226 | |
| r6428 | r6429 | |
| 468 | 468 | /* sound hardware */ |
| 469 | 469 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 470 | 470 | |
| 471 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 471 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 472 | 472 | MDRV_SOUND_CONFIG(ym2610_config) |
| 473 | 473 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 474 | 474 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.25) |
| r6428 | r6429 | |
| 507 | 507 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */ |
| 508 | 508 | ROM_LOAD( "h894", 0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) ) |
| 509 | 509 | |
| 510 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 510 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 511 | 511 | ROM_LOAD( "h893", 0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) ) |
| 512 | 512 | ROM_END |
| 513 | 513 | |
| r6428 | r6429 | |
| 541 | 541 | ROM_REGION( 0x100000, "ym.deltat", 0 ) /* sound samples */ |
| 542 | 542 | ROM_LOAD( "h894", 0x000000, 0x100000, CRC(d53300c1) SHA1(4c3ff7d3156791cb960c28845a5f1906605bce55) ) // IC73.BIN |
| 543 | 543 | |
| 544 | ROM_REGION( 0x100000, "ym", 0 ) /* sound samples */ | |
| 544 | ROM_REGION( 0x100000, "ymsnd", 0 ) /* sound samples */ | |
| 545 | 545 | ROM_LOAD( "h893", 0x000000, 0x100000, CRC(32513b63) SHA1(c4ede4aaa2611cedb53d47448422a1926acf3052) ) // IC69.BIN |
| 546 | 546 | ROM_END |
| 547 | 547 |
| r6428 | r6429 | |
|---|---|---|
| 418 | 418 | static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 419 | 419 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 420 | 420 | 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) | |
| 422 | 422 | AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 423 | 423 | AM_RANGE(0x06, 0x06) AM_READWRITE(soundcommand_r, soundcommand2_w) |
| 424 | 424 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 650 | 650 | // sound hardware |
| 651 | 651 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 652 | 652 | |
| 653 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 653 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 654 | 654 | MDRV_SOUND_CONFIG(ym2203_config) |
| 655 | 655 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 656 | 656 | MDRV_SOUND_ROUTE(1, "mono", 0.25) |
| r6428 | r6429 | |
|---|---|---|
| 3673 | 3673 | ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ |
| 3674 | 3674 | ROM_END |
| 3675 | 3675 | |
| 3676 | ROM_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 */ | |
| 3700 | ROM_END | |
| 3701 | ||
| 3676 | 3702 | ROM_START( puckmanh ) |
| 3677 | 3703 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3678 | 3704 | ROM_LOAD( "pm01.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) ) |
| r6428 | r6429 | |
| 5721 | 5747 | GAME( 1981, hangly, puckman, pacman, pacman, 0, ROT90, "hack", "Hangly-Man (set 1)", GAME_SUPPORTS_SAVE ) |
| 5722 | 5748 | GAME( 1981, hangly2, puckman, pacman, pacman, 0, ROT90, "hack", "Hangly-Man (set 2)", GAME_SUPPORTS_SAVE ) |
| 5723 | 5749 | GAME( 1981, hangly3, puckman, pacman, pacman, 0, ROT90, "hack", "Hangly-Man (set 3)", GAME_SUPPORTS_SAVE ) |
| 5750 | GAME( 1981, popeyeman,puckman, pacman, pacman, 0, ROT90, "hack", "Popeye-Man", GAME_SUPPORTS_SAVE ) | |
| 5724 | 5751 | GAME( 1981, piranhah, puckman, pacman, mspacman, 0, ROT90, "hack", "Piranha (hack)", GAME_SUPPORTS_SAVE ) |
| 5725 | 5752 | GAME( 1981, crush, 0, pacman, maketrax, maketrax, ROT90, "Kural Samno Electric", "Crush Roller (Kural Samno)", GAME_SUPPORTS_SAVE ) |
| 5726 | 5753 | GAME( 1981, crushbl, crush, pacman, maketrax, 0, ROT90, "bootleg", "Crush Roller (bootleg)", GAME_SUPPORTS_SAVE ) |
| r0 | r6429 | |
|---|---|---|
| 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 | ||
| 9 | CPU : 68000 | |
| 10 | Sound : M6295 + Optional FM or ICS2115 | |
| 11 | Custom : IGS011 (blitter), IGS003 (8255), IGS012 (optional, near CPU) | |
| 12 | NVRAM : Battery for main RAM | |
| 13 | ||
| 14 | --------------------------------------------------------------------------- | |
| 15 | Year + Game PCB Sound Chips | |
| 16 | --------------------------------------------------------------------------- | |
| 17 | 95 Da Ban Cheng NO-T0084-1 M6295 IGS011 8255 | |
| 18 | 95 Long Hu Bang NO-T0093 M6295 IGS011 8255 | |
| 19 | 95 Mahjong Ryukobou NO-T0094 M6295 IGS011 8255 | |
| 20 | 95 Dragon World NO-0105-1 M6295 YM3812 IGS011 IGS003 IGS012 | |
| 21 | 96 Virtua Bowling NO-0101-1 ICS2115 IGS011 IGS003e IGS012 | |
| 22 | 96 Long Hu Bang II NO-0115 M6295 YM2413 IGS011 8255 | |
| 23 | 96 Wan Li Chang Cheng ? | |
| 24 | 96 Xing Yen Man Guan ? | |
| 25 | 98 Mj Nenrikishu SP NO-0115-5 M6295 YM2413 IGS011 8255 | |
| 26 | --------------------------------------------------------------------------- | |
| 27 | ||
| 28 | To 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 | ||
| 43 | Notes: | |
| 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 | ||
| 72 | static UINT8 *layer[8]; | |
| 73 | ||
| 74 | static UINT16 igs011_priority, *igs011_priority_ram; | |
| 75 | ||
| 76 | static UINT8 lhb2_pen_hi; // high 3 bits of pens (lhb2 only) | |
| 77 | ||
| 78 | ||
| 79 | static 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 | ||
| 90 | static 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 | ||
| 102 | static 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 | ||
| 178 | static 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 | ||
| 191 | static 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 | ||
| 218 | static 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 | ||
| 234 | static 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 | ||
| 246 | static WRITE16_HANDLER( igs011_blit_x_w ) { COMBINE_DATA(&blitter.x); } | |
| 247 | static WRITE16_HANDLER( igs011_blit_y_w ) { COMBINE_DATA(&blitter.y); } | |
| 248 | static WRITE16_HANDLER( igs011_blit_gfx_lo_w ) { COMBINE_DATA(&blitter.gfx_lo); } | |
| 249 | static WRITE16_HANDLER( igs011_blit_gfx_hi_w ) { COMBINE_DATA(&blitter.gfx_hi); } | |
| 250 | static WRITE16_HANDLER( igs011_blit_w_w ) { COMBINE_DATA(&blitter.w); } | |
| 251 | static WRITE16_HANDLER( igs011_blit_h_w ) { COMBINE_DATA(&blitter.h); } | |
| 252 | static WRITE16_HANDLER( igs011_blit_depth_w ) { COMBINE_DATA(&blitter.depth); } | |
| 253 | static WRITE16_HANDLER( igs011_blit_pen_w ) { COMBINE_DATA(&blitter.pen); } | |
| 254 | ||
| 255 | ||
| 256 | static 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 | ||
| 368 | static UINT16 igs_dips_sel, igs_input_sel, igs_hopper; | |
| 369 | ||
| 370 | static 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 | ||
| 375 | static WRITE16_HANDLER( igs_dips_w ) | |
| 376 | { | |
| 377 | COMBINE_DATA(&igs_dips_sel); | |
| 378 | } | |
| 379 | ||
| 380 | #define IGS_DIPS_R( NUM ) \ | |
| 381 | static 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 | |
| 396 | IGS_DIPS_R( 3 ) | |
| 397 | IGS_DIPS_R( 4 ) | |
| 398 | IGS_DIPS_R( 5 ) | |
| 399 | ||
| 400 | /*************************************************************************** | |
| 401 | ||
| 402 | Code Decryption | |
| 403 | ||
| 404 | ***************************************************************************/ | |
| 405 | ||
| 406 | static 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 | ||
| 430 | static 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 | ||
| 455 | static 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 | ||
| 483 | static 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 | ||
| 516 | static 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 | ||
| 545 | static 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?) | |
| 577 | static 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 | ||
| 617 | static 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 | ||
| 651 | static 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 | ||
| 701 | static 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 | ||
| 732 | static 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 | ||
| 747 | static 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 | ||
| 770 | static UINT16 igs_magic[2]; | |
| 771 | ||
| 772 | static 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 | ||
| 816 | static 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 | ||
| 865 | static 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 | ||
| 890 | static 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 | ||
| 929 | static 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 | ||
| 959 | static 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 | ||
| 996 | static 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 | ||
| 1009 | static 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 | ||
| 1026 | static 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 | ||
| 1047 | static 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 | ||
| 1074 | static 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 | ||
| 1112 | static 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 | ||
| 1141 | static 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 | ||
| 1193 | static 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 ) | |
| 1215 | ADDRESS_MAP_END | |
| 1216 | ||
| 1217 | ||
| 1218 | static 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 ) | |
| 1241 | ADDRESS_MAP_END | |
| 1242 | ||
| 1243 | ||
| 1244 | static 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 ) | |
| 1266 | ADDRESS_MAP_END | |
| 1267 | ||
| 1268 | ||
| 1269 | // Only values 0 and 7 are written (1 bit per irq source?) | |
| 1270 | static UINT16 lhb_irq_enable; | |
| 1271 | static WRITE16_HANDLER( lhb_irq_enable_w ) | |
| 1272 | { | |
| 1273 | COMBINE_DATA( &lhb_irq_enable ); | |
| 1274 | } | |
| 1275 | ||
| 1276 | static 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 ) | |
| 1300 | ADDRESS_MAP_END | |
| 1301 | ||
| 1302 | ||
| 1303 | ||
| 1304 | ||
| 1305 | static 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 | ||
| 1316 | static 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 | ||
| 1330 | static READ16_HANDLER( vbowl_unk_r ) | |
| 1331 | { | |
| 1332 | return 0xffff; | |
| 1333 | } | |
| 1334 | ||
| 1335 | static UINT16 *vbowl_trackball; | |
| 1336 | static 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 | ||
| 1342 | static 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 | ||
| 1353 | static WRITE16_HANDLER( vbowl_link_0_w ) { } | |
| 1354 | static WRITE16_HANDLER( vbowl_link_1_w ) { } | |
| 1355 | static WRITE16_HANDLER( vbowl_link_2_w ) { } | |
| 1356 | static WRITE16_HANDLER( vbowl_link_3_w ) { } | |
| 1357 | ||
| 1358 | static 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 ) | |
| 1392 | ADDRESS_MAP_END | |
| 1393 | ||
| 1394 | ||
| 1395 | ||
| 1396 | static 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 | |
| 1419 | ADDRESS_MAP_END | |
| 1420 | ||
| 1421 | ||
| 1422 | ||
| 1423 | /*************************************************************************** | |
| 1424 | ||
| 1425 | Input Ports | |
| 1426 | ||
| 1427 | ***************************************************************************/ | |
| 1428 | ||
| 1429 | static 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) | |
| 1522 | INPUT_PORTS_END | |
| 1523 | ||
| 1524 | ||
| 1525 | static 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) | |
| 1614 | INPUT_PORTS_END | |
| 1615 | ||
| 1616 | ||
| 1617 | static 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 ) | |
| 1745 | INPUT_PORTS_END | |
| 1746 | ||
| 1747 | ||
| 1748 | static 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) | |
| 1839 | INPUT_PORTS_END | |
| 1840 | ||
| 1841 | ||
| 1842 | static 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 ) | |
| 1924 | INPUT_PORTS_END | |
| 1925 | ||
| 1926 | ||
| 1927 | static 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 ) | |
| 2100 | INPUT_PORTS_END | |
| 2101 | ||
| 2102 | ||
| 2103 | static 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) | |
| 2208 | INPUT_PORTS_END | |
| 2209 | ||
| 2210 | ||
| 2211 | static 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) | |
| 2314 | INPUT_PORTS_END | |
| 2315 | ||
| 2316 | ||
| 2317 | static 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 ) | |
| 2427 | INPUT_PORTS_END | |
| 2428 | ||
| 2429 | ||
| 2430 | ||
| 2431 | /*************************************************************************** | |
| 2432 | ||
| 2433 | Machine Drivers | |
| 2434 | ||
| 2435 | ***************************************************************************/ | |
| 2436 | ||
| 2437 | // for debugging | |
| 2438 | ||
| 2439 | #if 0 | |
| 2440 | static 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 | }; | |
| 2450 | static 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 | }; | |
| 2461 | static 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 | }; | |
| 2471 | static 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 | }; | |
| 2481 | static 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 | ||
| 2492 | static 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 ) | |
| 2497 | GFXDECODE_END | |
| 2498 | static 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 ) | |
| 2504 | GFXDECODE_END | |
| 2505 | #endif | |
| 2506 | ||
| 2507 | static 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) | |
| 2531 | MACHINE_DRIVER_END | |
| 2532 | ||
| 2533 | ||
| 2534 | static 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 | ||
| 2544 | static 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) | |
| 2554 | MACHINE_DRIVER_END | |
| 2555 | ||
| 2556 | ||
| 2557 | static 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) | |
| 2565 | MACHINE_DRIVER_END | |
| 2566 | ||
| 2567 | ||
| 2568 | static 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 | ||
| 2577 | static 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) | |
| 2582 | MACHINE_DRIVER_END | |
| 2583 | ||
| 2584 | ||
| 2585 | ||
| 2586 | static 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 | ||
| 2601 | static 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) | |
| 2606 | MACHINE_DRIVER_END | |
| 2607 | ||
| 2608 | ||
| 2609 | ||
| 2610 | static void sound_irq(const device_config *device, int state) | |
| 2611 | { | |
| 2612 | // cputag_set_input_line(machine, "maincpu", 3, state); | |
| 2613 | } | |
| 2614 | ||
| 2615 | static const ics2115_interface vbowl_ics2115_interface = { | |
| 2616 | sound_irq | |
| 2617 | }; | |
| 2618 | ||
| 2619 | static 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 | ||
| 2631 | static 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) | |
| 2644 | MACHINE_DRIVER_END | |
| 2645 | ||
| 2646 | ||
| 2647 | ||
| 2648 | static 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) | |
| 2653 | MACHINE_DRIVER_END | |
| 2654 | ||
| 2655 | ||
| 2656 | ||
| 2657 | static 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 | ||
| 2679 | static DRIVER_INIT( nkishusp ) | |
| 2680 | { | |
| 2681 | nkishusp_decrypt(machine); | |
| 2682 | ||
| 2683 | // PROTECTION CHECKS (similar to lhb2?) | |
| 2684 | } | |
| 2685 | ||
| 2686 | static 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 | ||
| 2709 | static 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 | ||
| 2733 | static 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 | ||
| 2759 | static 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 | ||
| 2783 | static 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 | ||
| 2792 | static 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 | ||
| 2818 | static 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 | ||
| 2845 | static 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 | ||
| 2867 | static 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 | ||
| 2877 | static 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 | ||
| 2887 | static 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 | ||
| 2908 | static 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 | ||
| 2926 | static 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 | ||
| 2959 | static 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 | ||
| 2986 | static 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 | ||
| 3005 | Dragon World (World, V0400) | |
| 3006 | (C) 1997 IGS / ALTA | |
| 3007 | ||
| 3008 | Chips: | |
| 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 | ||
| 3017 | ROMs: | |
| 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 | ||
| 3022 | Notes: | |
| 3023 | 1x JAMMA edge connector | |
| 3024 | 1x trimmer (volume) | |
| 3025 | 3x 8 switches dips | |
| 3026 | PCB serial number is: 0105-5 | |
| 3027 | ||
| 3028 | ***************************************************************************/ | |
| 3029 | ||
| 3030 | ROM_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) ) | |
| 3039 | ROM_END | |
| 3040 | ||
| 3041 | /*************************************************************************** | |
| 3042 | ||
| 3043 | Dragon World (World, V0300) | |
| 3044 | (C) 1995 IGS | |
| 3045 | ||
| 3046 | Chips: | |
| 3047 | 1x MC68HC000P10 (main) | |
| 3048 | 1x CUSTOM IGS011 | |
| 3049 | ||
| 3050 | ROMs: | |
| 3051 | 1x MX27C4096 (main) | |
| 3052 | ||
| 3053 | ***************************************************************************/ | |
| 3054 | ||
| 3055 | ROM_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) ) | |
| 3064 | ROM_END | |
| 3065 | ||
| 3066 | ROM_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) ) | |
| 3075 | ROM_END | |
| 3076 | ||
| 3077 | /*************************************************************************** | |
| 3078 | ||
| 3079 | Zhong Guo Long (China, V0303) | |
| 3080 | (C) 1995 IGS | |
| 3081 | ||
| 3082 | Chips: | |
| 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 | ||
| 3094 | ROMs: | |
| 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 | ||
| 3103 | Notes: | |
| 3104 | 1x JAMMA edge connector | |
| 3105 | 1x trimmer (volume) | |
| 3106 | 3x 8x2 switches DIP | |
| 3107 | ||
| 3108 | The PCB is perfectly working, empty spaces and empty sockets are clearly intended to be empty. | |
| 3109 | 25/07/2007 f205v Corrado Tomaselli Gnoppi | |
| 3110 | ||
| 3111 | ***************************************************************************/ | |
| 3112 | ||
| 3113 | ROM_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) ) | |
| 3129 | ROM_END | |
| 3130 | ||
| 3131 | /*************************************************************************** | |
| 3132 | ||
| 3133 | Chuugokuryuu (china dragon jpn ver.) | |
| 3134 | (c)IGS | |
| 3135 | Distributed by ALTA | |
| 3136 | ||
| 3137 | MAIN CPU : 68000 | |
| 3138 | I/O : IGS003 (=8255) | |
| 3139 | SOUND ? : 6564L (=OPL?) , AR17961 (=M6295?) | |
| 3140 | CRTC ? : IGS011 | |
| 3141 | SOUND CPU? : IGSD0301 (DIP 42P) | |
| 3142 | OSC : 22Mhz , 3.579545Mhz | |
| 3143 | DIPSW : 8bitx 3 (SW3 is not used) | |
| 3144 | OTHER : IGS012 | |
| 3145 | ||
| 3146 | MAIN PRG : "CHINA DRAGON U020J" (japan) | |
| 3147 | SOUND PRG? : "CHINA DRAGON SP" | |
| 3148 | SOUND DATA?: "CHINA DRAGON U44" | |
| 3149 | ||
| 3150 | ***************************************************************************/ | |
| 3151 | ||
| 3152 | ROM_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" | |
| 3163 | ROM_END | |
| 3164 | ||
| 3165 | ROM_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" | |
| 3175 | ROM_END | |
| 3176 | ||
| 3177 | /*************************************************************************** | |
| 3178 | ||
| 3179 | Dong Fang Zhi Zhu (Hong Kong version of Zhong Guo Long, V011H) | |
| 3180 | ||
| 3181 | ***************************************************************************/ | |
| 3182 | ||
| 3183 | ROM_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) ) | |
| 3192 | ROM_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 | ||
| 3207 | ROM_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 | |
| 3219 | ROM_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 | ||
| 3234 | ROM_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 | |
| 3246 | ROM_END | |
| 3247 | ||
| 3248 | /*************************************************************************** | |
| 3249 | ||
| 3250 | Long Hu Bang (V033C) | |
| 3251 | ||
| 3252 | PCB Layout | |
| 3253 | ---------- | |
| 3254 | ||
| 3255 | IGS 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 | |---------------------------------------| | |
| 3281 | Notes: | |
| 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 | ||
| 3297 | ROM_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 | ||
| 3308 | ROM_END | |
| 3309 | ||
| 3310 | /*************************************************************************** | |
| 3311 | ||
| 3312 | Da Ban Cheng | |
| 3313 | ||
| 3314 | PCB Layout | |
| 3315 | ---------- | |
| 3316 | ||
| 3317 | IGS 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 | |---------------------------------------| | |
| 3343 | Notes: | |
| 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 | ||
| 3359 | ROM_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 | |
| 3369 | ROM_END | |
| 3370 | ||
| 3371 | /*************************************************************************** | |
| 3372 | ||
| 3373 | Mahjong Ryukobou | |
| 3374 | Alta, 1995 | |
| 3375 | ||
| 3376 | PCB Layout | |
| 3377 | ---------- | |
| 3378 | ||
| 3379 | IGS 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 | |------------------------------------| | |
| 3397 | Notes: | |
| 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 | ||
| 3405 | ROM_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) ) | |
| 3415 | ROM_END | |
| 3416 | ||
| 3417 | /*************************************************************************** | |
| 3418 | ||
| 3419 | Long Hu Bang II | |
| 3420 | IGS, 1996 | |
| 3421 | ||
| 3422 | PCB Layout | |
| 3423 | ---------- | |
| 3424 | ||
| 3425 | IGS 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 | ||
| 3444 | Notes: | |
| 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 | ||
| 3454 | ROM_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 | |
| 3468 | ROM_END | |
| 3469 | ||
| 3470 | /*************************************************************************** | |
| 3471 | ||
| 3472 | Mahjong Nenrikishu SP | |
| 3473 | IGS/Alta, 1998 | |
| 3474 | ||
| 3475 | PCB Layout | |
| 3476 | ---------- | |
| 3477 | ||
| 3478 | IGS 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 | |----------------------------------| | |
| 3496 | Notes: | |
| 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 | ||
| 3505 | ROM_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) ) | |
| 3518 | ROM_END | |
| 3519 | ||
| 3520 | /*************************************************************************** | |
| 3521 | ||
| 3522 | Virtua Bowling by IGS | |
| 3523 | ||
| 3524 | PCB # 0101 | |
| 3525 | ||
| 3526 | U45 (27c240) is probably program | |
| 3527 | next to 68000 processor | |
| 3528 | U68,U69 probably images (27c800 - mask) | |
| 3529 | U67, U66 sound and ???? (27c040) | |
| 3530 | ||
| 3531 | ASIC chip used | |
| 3532 | ||
| 3533 | SMD - custom chip IGS 011 F5XD 174 | |
| 3534 | SMD - custom --near sound section - unknown -- i.d. rubbed off | |
| 3535 | SMD - custom -- near inputs and 68000 IGS 012 9441EK001 | |
| 3536 | ||
| 3537 | XTL near sound 33.868mhz | |
| 3538 | XTL near 68000 22.0000mhz | |
| 3539 | ||
| 3540 | there are 4 banks of 8 dip switches | |
| 3541 | ||
| 3542 | ***************************************************************************/ | |
| 3543 | ||
| 3544 | ROM_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) | |
| 3561 | ROM_END | |
| 3562 | ||
| 3563 | ROM_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) | |
| 3580 | ROM_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 | ||
| 3594 | ROM_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 | |
| 3606 | ROM_END | |
| 3607 | ||
| 3608 | ||
| 3609 | /*************************************************************************** | |
| 3610 | ||
| 3611 | Game Drivers | |
| 3612 | ||
| 3613 | ***************************************************************************/ | |
| 3614 | ||
| 3615 | GAME( 1995, lhb, 0, lhb, lhb, lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", 0 ) | |
| 3616 | GAME( 1995, lhba, lhb, lhb, lhb, lhba, ROT0, "IGS", "Long Hu Bang (China, V033C)", 0 ) | |
| 3617 | GAME( 1995, dbc, lhb, lhb, lhb, dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", 0 ) | |
| 3618 | GAME( 1995, ryukobou, lhb, lhb, lhb, ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", 0 ) | |
| 3619 | GAME( 1996, lhb2, 0, lhb2, lhb2, lhb2, ROT0, "IGS", "Long Hu Bang II (Hong Kong, V185H)", 0 ) | |
| 3620 | GAME( 1996, xymg, 0, xymg, xymg, xymg, ROT0, "IGS", "Xing Yun Man Guan (China, V651C)", 0 ) | |
| 3621 | GAME( 1996, wlcc, xymg, wlcc, wlcc, wlcc, ROT0, "IGS", "Wan Li Chang Cheng (China, V638C)", 0 ) | |
| 3622 | GAME( 1996, vbowl, 0, vbowl, vbowl, vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", GAME_IMPERFECT_SOUND ) | |
| 3623 | GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", GAME_IMPERFECT_SOUND ) | |
| 3624 | GAME( 1998, nkishusp, 0, lhb2, lhb2, nkishusp, ROT0, "IGS / Alta", "Mahjong Nenrikishu SP", 0 ) | |
| 3625 | ||
| 3626 | GAME( 1997, drgnwrld, 0, drgnwrld, drgnwrld, drgnwrld, ROT0, "IGS", "Dragon World (World, V040O)", 0 ) | |
| 3627 | GAME( 1995, drgnwrldv30, drgnwrld, drgnwrld, drgnwrld, drgnwrldv30, ROT0, "IGS", "Dragon World (World, V030O)", 0 ) | |
| 3628 | GAME( 1995, drgnwrldv21, drgnwrld, drgnwrld, drgnwrld, drgnwrldv21, ROT0, "IGS", "Dragon World (World, V021O)", 0 ) | |
| 3629 | GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld, drgnwrldj, drgnwrldv21j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)", 0 ) | |
| 3630 | GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld, drgnwrldj, drgnwrldv20j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", 0 ) | |
| 3631 | GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, drgnwrldv10c, ROT0, "IGS", "Zhong Guo Long (China, V010C)", 0 ) | |
| 3632 | GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, drgnwrldv11h, ROT0, "IGS", "Dong Fang Zhi Zhu (Hong Kong, V011H)", 0 ) |
| r6428 | r6429 | |
|---|---|---|
| 258 | 258 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 259 | 259 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
| 260 | 260 | 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) | |
| 262 | 262 | ADDRESS_MAP_END |
| 263 | 263 | |
| 264 | 264 | /* Yes, _no_ ram */ |
| r6428 | r6429 | |
| 835 | 835 | /* sound hardware */ |
| 836 | 836 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 837 | 837 | |
| 838 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 838 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 839 | 839 | MDRV_SOUND_CONFIG(ym2151_config) |
| 840 | 840 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.60) |
| 841 | 841 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.60) |
| r6428 | r6429 | |
|---|---|---|
| 987 | 987 | AM_RANGE(0x00, 0x00) AM_WRITE(hotdogst_rombank_w) // ROM bank |
| 988 | 988 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 989 | 989 | 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) // | |
| 991 | 991 | AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) // M6295 |
| 992 | 992 | AM_RANGE(0x70, 0x70) AM_WRITE(hotdogst_okibank_w) // Samples bank |
| 993 | 993 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1018 | 1018 | AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w) // ROM bank |
| 1019 | 1019 | AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU |
| 1020 | 1020 | 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 | |
| 1023 | 1023 | AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w) // M6295 |
| 1024 | 1024 | AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w) // Samples bank |
| 1025 | 1025 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 1068 | 1068 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1069 | 1069 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1070 | 1070 | 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 | |
| 1072 | 1072 | AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w) // M6295 #0 |
| 1073 | 1073 | AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w) // Samples Bank #0 |
| 1074 | 1074 | AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w) // M6295 #1 |
| r6428 | r6429 | |
| 1100 | 1100 | AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) // M6295 |
| 1101 | 1101 | AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) // |
| 1102 | 1102 | 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) // | |
| 1104 | 1104 | AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w) // To Main CPU |
| 1105 | 1105 | // AM_RANGE(0x51, 0x51) AM_WRITE(SMH_NOP) // ?? volume |
| 1106 | 1106 | AM_RANGE(0x80, 0x80) AM_WRITE(pwrinst2_rombank_w) // ROM bank |
| r6428 | r6429 | |
| 1164 | 1164 | AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication |
| 1165 | 1165 | AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU |
| 1166 | 1166 | 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 | |
| 1168 | 1168 | AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) // M6295 #0 |
| 1169 | 1169 | AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w) // Samples Bank #0 |
| 1170 | 1170 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) // M6295 #1 |
| r6428 | r6429 | |
| 1973 | 1973 | /* sound hardware */ |
| 1974 | 1974 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1975 | 1975 | |
| 1976 | MDRV_SOUND_ADD("ym", YM2203, XTAL_4MHz) | |
| 1976 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz) | |
| 1977 | 1977 | MDRV_SOUND_CONFIG(ym2203_config) |
| 1978 | 1978 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 1979 | 1979 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.20) |
| r6428 | r6429 | |
| 2068 | 2068 | /* sound hardware */ |
| 2069 | 2069 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2070 | 2070 | |
| 2071 | MDRV_SOUND_ADD("ym", YM2203, XTAL_4MHz) | |
| 2071 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz) | |
| 2072 | 2072 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2073 | 2073 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.20) |
| 2074 | 2074 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.20) |
| r6428 | r6429 | |
| 2124 | 2124 | /* sound hardware */ |
| 2125 | 2125 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2126 | 2126 | |
| 2127 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz / 4) | |
| 2127 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4) | |
| 2128 | 2128 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2129 | 2129 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.20) |
| 2130 | 2130 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.20) |
| r6428 | r6429 | |
| 2179 | 2179 | /* sound hardware */ |
| 2180 | 2180 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2181 | 2181 | |
| 2182 | MDRV_SOUND_ADD("ym", YM2203, XTAL_16MHz / 4) | |
| 2182 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4) | |
| 2183 | 2183 | MDRV_SOUND_CONFIG(ym2203_config) |
| 2184 | 2184 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.40) |
| 2185 | 2185 | MDRV_SOUND_ROUTE(0, "rspeaker", 0.40) |
| r6428 | r6429 | |
| 2239 | 2239 | |
| 2240 | 2240 | /* sound hardware */ |
| 2241 | 2241 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 2242 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) | |
| 2242 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) | |
| 2243 | 2243 | MDRV_SOUND_CONFIG(ym2151_config) |
| 2244 | 2244 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 2245 | 2245 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 174 | 174 | AM_RANGE(0x7000, 0xafff) AM_ROM // spielbud |
| 175 | 175 | |
| 176 | 176 | |
| 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) | |
| 179 | 179 | |
| 180 | 180 | AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ |
| 181 | 181 | AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */ |
| r6428 | r6429 | |
| 196 | 196 | |
| 197 | 197 | // spielbud - is the ay mirrored, or are there now 2? |
| 198 | 198 | static 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) | |
| 201 | 201 | ADDRESS_MAP_END |
| 202 | 202 | |
| 203 | 203 | /******************************** |
| r6428 | r6429 | |
| 619 | 619 | /* sound hardware */ |
| 620 | 620 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 621 | 621 | |
| 622 | MDRV_SOUND_ADD("ay",AY8910, SND_CLOCK) | |
| 622 | MDRV_SOUND_ADD("aysnd",AY8910, SND_CLOCK) | |
| 623 | 623 | MDRV_SOUND_CONFIG(scarn_ay8910_config) |
| 624 | 624 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 625 | 625 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 12 | 12 | #include "driver.h" |
| 13 | 13 | #include "cpu/m6809/m6809.h" |
| 14 | 14 | #include "sound/3526intf.h" |
| 15 | #include "battlane.h" | |
| 15 | 16 | |
| 16 | extern UINT8 *battlane_spriteram; | |
| 17 | extern UINT8 *battlane_tileram; | |
| 17 | /************************************* | |
| 18 | * | |
| 19 | * Memory handlers | |
| 20 | * | |
| 21 | *************************************/ | |
| 18 | 22 | |
| 19 | extern WRITE8_HANDLER( battlane_palette_w ); | |
| 20 | extern WRITE8_HANDLER( battlane_scrollx_w ); | |
| 21 | extern WRITE8_HANDLER( battlane_scrolly_w ); | |
| 22 | extern WRITE8_HANDLER( battlane_tileram_w ); | |
| 23 | extern WRITE8_HANDLER( battlane_spriteram_w ); | |
| 24 | extern WRITE8_HANDLER( battlane_bitmap_w ); | |
| 25 | extern WRITE8_HANDLER( battlane_video_ctrl_w ); | |
| 26 | ||
| 27 | extern VIDEO_START( battlane ); | |
| 28 | extern VIDEO_UPDATE( battlane ); | |
| 29 | ||
| 30 | ||
| 31 | /* CPU interrupt control register */ | |
| 32 | int battlane_cpu_control; | |
| 33 | ||
| 34 | 23 | static WRITE8_HANDLER( battlane_cpu_command_w ) |
| 35 | 24 | { |
| 36 | battlane_ | |
| 25 | battlane_s | |
| 37 | 26 | |
| 27 | state->cpu_control = data; | |
| 28 | ||
| 38 | 29 | /* |
| 39 | CPU control register | |
| 30 | CPU control register | |
| 40 | 31 | |
| 41 | 32 | 0x80 = Video Flip |
| 42 | 33 | 0x08 = NMI |
| r6428 | r6429 | |
| 56 | 47 | */ |
| 57 | 48 | |
| 58 | 49 | /* |
| 59 | if (~ | |
| 50 | if (~s | |
| 60 | 51 | { |
| 61 | 52 | cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE); |
| 62 | 53 | cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE); |
| r6428 | r6429 | |
| 88 | 79 | cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE); |
| 89 | 80 | } |
| 90 | 81 | |
| 82 | static 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 | ||
| 91 | 101 | static ADDRESS_MAP_START( battlane_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 92 | 102 | 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) | |
| 95 | 105 | AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("P1") AM_WRITE(battlane_video_ctrl_w) |
| 96 | 106 | AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P2") AM_WRITE(battlane_scrollx_w) |
| 97 | 107 | AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("DSW1") AM_WRITE(battlane_scrolly_w) |
| 98 | 108 | 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) | |
| 100 | 110 | AM_RANGE(0x1e00, 0x1e3f) AM_WRITE(battlane_palette_w) |
| 101 | 111 | AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(battlane_bitmap_w) AM_SHARE(4) |
| 102 | 112 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| 103 | 113 | ADDRESS_MAP_END |
| 104 | 114 | |
| 105 | static INTERRUPT_GEN( battlane_cpu1_interrupt ) | |
| 106 | { | |
| 107 | /* See note in battlane_cpu_command_w */ | |
| 108 | 115 | |
| 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 | *************************************/ | |
| 115 | 121 | |
| 116 | ||
| 117 | 122 | static INPUT_PORTS_START( battlane ) |
| 118 | 123 | PORT_START("P1") |
| 119 | 124 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| r6428 | r6429 | |
| 176 | 181 | INPUT_PORTS_END |
| 177 | 182 | |
| 178 | 183 | |
| 184 | /************************************* | |
| 185 | * | |
| 186 | * Graphics definitions | |
| 187 | * | |
| 188 | *************************************/ | |
| 189 | ||
| 179 | 190 | static const gfx_layout spritelayout = |
| 180 | 191 | { |
| 181 | 192 | 16, 16, |
| r6428 | r6429 | |
| 239 | 250 | GFXDECODE_END |
| 240 | 251 | |
| 241 | 252 | |
| 242 | static void irqhandler(const device_config *device, int irq) | |
| 253 | /************************************* | |
| 254 | * | |
| 255 | * Sound interface | |
| 256 | * | |
| 257 | *************************************/ | |
| 258 | ||
| 259 | static void irqhandler( const device_config *device, int irq ) | |
| 243 | 260 | { |
| 244 | 261 | cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE); |
| 245 | 262 | } |
| r6428 | r6429 | |
| 250 | 267 | }; |
| 251 | 268 | |
| 252 | 269 | |
| 270 | /************************************* | |
| 271 | * | |
| 272 | * Machine driver | |
| 273 | * | |
| 274 | *************************************/ | |
| 275 | ||
| 276 | static 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 | ||
| 253 | 284 | static MACHINE_DRIVER_START( battlane ) |
| 254 | 285 | |
| 286 | /* driver data */ | |
| 287 | MDRV_DRIVER_DATA(battlane_state) | |
| 288 | ||
| 255 | 289 | /* basic machine hardware */ |
| 256 | 290 | MDRV_CPU_ADD("maincpu", M6809, 1250000) /* 1.25 MHz ? */ |
| 257 | 291 | MDRV_CPU_PROGRAM_MAP(battlane_map) |
| r6428 | r6429 | |
| 262 | 296 | |
| 263 | 297 | MDRV_QUANTUM_TIME(HZ(6000)) |
| 264 | 298 | |
| 299 | MDRV_MACHINE_RESET(battlane) | |
| 300 | ||
| 265 | 301 | /* video hardware */ |
| 266 | 302 | MDRV_SCREEN_ADD("screen", RASTER) |
| 267 | 303 | MDRV_SCREEN_REFRESH_RATE(60) |
| r6428 | r6429 | |
| 278 | 314 | /* sound hardware */ |
| 279 | 315 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 280 | 316 | |
| 281 | MDRV_SOUND_ADD("ym", YM3526, 3000000) | |
| 317 | MDRV_SOUND_ADD("ymsnd", YM3526, 3000000) | |
| 282 | 318 | MDRV_SOUND_CONFIG(ym3526_config) |
| 283 | 319 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 284 | 320 | MACHINE_DRIVER_END |
| 285 | 321 | |
| 286 | 322 | |
| 287 | /*************************************************************************** | |
| 323 | /************************************* | |
| 324 | * | |
| 325 | * ROM definition(s) | |
| 326 | * | |
| 327 | *************************************/ | |
| 288 | 328 | |
| 289 | Game driver(s) | |
| 290 | ||
| 291 | ***************************************************************************/ | |
| 292 | ||
| 293 | 329 | ROM_START( battlane ) |
| 294 | 330 | ROM_REGION( 0x8000, "user1", 0 ) /* */ |
| 295 | 331 | ROM_LOAD( "da00-5", 0x0000, 0x8000, CRC(85b4ed73) SHA1(b8e61eedf8fb75bb07f1df91a7465cee2b6ff372) ) |
| r6428 | r6429 | |
| 375 | 411 | ROM_END |
| 376 | 412 | |
| 377 | 413 | |
| 378 | GAME( 1986, battlane, 0, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", 0 ) | |
| 379 | GAME( 1986, battlane2, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", 0 ) | |
| 380 | GAME( 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 | ||
| 420 | GAME( 1986, battlane, 0, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", GAME_SUPPORTS_SAVE ) | |
| 421 | GAME( 1986, battlane2, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", GAME_SUPPORTS_SAVE ) | |
| 422 | GAME( 1986, battlane3, battlane, battlane, battlane, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", GAME_SUPPORTS_SAVE ) |
| r6428 | r6429 | |
|---|---|---|
| 365 | 365 | |
| 366 | 366 | static ADDRESS_MAP_START( soundport, ADDRESS_SPACE_IO, 8 ) |
| 367 | 367 | 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) | |
| 369 | 369 | AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w) |
| 370 | 370 | AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_signed_w) |
| 371 | 371 | AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) |
| r6428 | r6429 | |
| 448 | 448 | /* sound hardware */ |
| 449 | 449 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 450 | 450 | |
| 451 | MDRV_SOUND_ADD("ym", YM3812, 4000000) | |
| 451 | MDRV_SOUND_ADD("ymsnd", YM3812, 4000000) | |
| 452 | 452 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 453 | 453 | |
| 454 | 454 | MDRV_SOUND_ADD("dac1", DAC, 0) |
| r6428 | r6429 | |
|---|---|---|
| 73 | 73 | static ADDRESS_MAP_START( crimfght_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 74 | 74 | AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 821l01.h4 */ |
| 75 | 75 | 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 */ | |
| 77 | 77 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 78 | 78 | AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w) /* 007232 registers */ |
| 79 | 79 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 242 | 242 | /* sound hardware */ |
| 243 | 243 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 244 | 244 | |
| 245 | MDRV_SOUND_ADD("ym", YM2151, 3579545) /* verified with PCB */ | |
| 245 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) /* verified with PCB */ | |
| 246 | 246 | MDRV_SOUND_CONFIG(ym2151_config) |
| 247 | 247 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 248 | 248 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 276 | 276 | } |
| 277 | 277 | else |
| 278 | 278 | { |
| 279 | adpcm_data = memory_region(device->machine, "ym")[adpcm_pos]; | |
| 279 | adpcm_data = memory_region(device->machine, "ymsnd")[adpcm_pos]; | |
| 280 | 280 | adpcm_pos = (adpcm_pos + 1) & 0xffff; |
| 281 | 281 | msm5205_data_w(device, adpcm_data >> 4); |
| 282 | 282 | } |
| r6428 | r6429 | |
| 391 | 391 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 392 | 392 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 393 | 393 | 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) | |
| 395 | 395 | AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w) |
| 396 | 396 | AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 397 | 397 | AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ |
| r6428 | r6429 | |
| 405 | 405 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 406 | 406 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 407 | 407 | 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) | |
| 409 | 409 | // AM_RANGE(0x9002, 0x9100) AM_READNOP |
| 410 | 410 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 411 | 411 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| r6428 | r6429 | |
| 419 | 419 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 420 | 420 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1) |
| 421 | 421 | 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) | |
| 423 | 423 | AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w) |
| 424 | 424 | AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w) |
| 425 | 425 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 820 | 820 | /* sound hardware */ |
| 821 | 821 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 822 | 822 | |
| 823 | MDRV_SOUND_ADD("ym", YM2610, 8000000) | |
| 823 | MDRV_SOUND_ADD("ymsnd", YM2610, 8000000) | |
| 824 | 824 | MDRV_SOUND_CONFIG(ym2610_config) |
| 825 | 825 | MDRV_SOUND_ROUTE(0, "mono", 0.25) |
| 826 | 826 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
| 859 | 859 | /* sound hardware */ |
| 860 | 860 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 861 | 861 | |
| 862 | MDRV_SOUND_ADD("ym", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 862 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */ | |
| 863 | 863 | MDRV_SOUND_CONFIG(ym2151_config) |
| 864 | 864 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 865 | 865 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 901 | 901 | /* sound hardware */ |
| 902 | 902 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 903 | 903 | |
| 904 | MDRV_SOUND_ADD("ym", YM2151, XTAL_8MHz/2) /* verified on pcb */ | |
| 904 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_8MHz/2) /* verified on pcb */ | |
| 905 | 905 | MDRV_SOUND_CONFIG(ym2151_config) |
| 906 | 906 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 907 | 907 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 939 | 939 | /* sound hardware */ |
| 940 | 940 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 941 | 941 | |
| 942 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 942 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 943 | 943 | MDRV_SOUND_CONFIG(ym2151_config) |
| 944 | 944 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 945 | 945 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 981 | 981 | /* sound hardware */ |
| 982 | 982 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 983 | 983 | |
| 984 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 984 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 985 | 985 | MDRV_SOUND_CONFIG(ym2151_config) |
| 986 | 986 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 987 | 987 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 1019 | 1019 | /* sound hardware */ |
| 1020 | 1020 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 1021 | 1021 | |
| 1022 | MDRV_SOUND_ADD("ym", YM2151, 4000000) | |
| 1022 | MDRV_SOUND_ADD("ymsnd", YM2151, 4000000) | |
| 1023 | 1023 | MDRV_SOUND_CONFIG(ym2151_config) |
| 1024 | 1024 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 1025 | 1025 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 1051 | 1051 | |
| 1052 | 1052 | /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */ |
| 1053 | 1053 | |
| 1054 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1054 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1055 | 1055 | ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) ) |
| 1056 | 1056 | ROM_END |
| 1057 | 1057 | |
| r6428 | r6429 | |
| 1076 | 1076 | |
| 1077 | 1077 | /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */ |
| 1078 | 1078 | |
| 1079 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1079 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1080 | 1080 | ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) ) |
| 1081 | 1081 | ROM_END |
| 1082 | 1082 | |
| r6428 | r6429 | |
| 1101 | 1101 | |
| 1102 | 1102 | /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */ |
| 1103 | 1103 | |
| 1104 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1104 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1105 | 1105 | ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) ) |
| 1106 | 1106 | ROM_END |
| 1107 | 1107 | |
| r6428 | r6429 | |
| 1126 | 1126 | |
| 1127 | 1127 | /* CPU3 - CCHIP aka TC0030CMD marked b41-05.43 */ |
| 1128 | 1128 | |
| 1129 | ROM_REGION( 0x80000, "ym", 0 ) /* ADPCM samples */ | |
| 1129 | ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1130 | 1130 | ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) ) |
| 1131 | 1131 | ROM_END |
| 1132 | 1132 | |
| r6428 | r6429 | |
| 1149 | 1149 | ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) ) |
| 1150 | 1150 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 1151 | 1151 | |
| 1152 | ROM_REGION( 0x10000, "ym", 0 ) /* ADPCM samples */ | |
| 1152 | ROM_REGION( 0x10000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1153 | 1153 | ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) ) |
| 1154 | 1154 | ROM_END |
| 1155 | 1155 | |
| r6428 | r6429 | |
| 1172 | 1172 | ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) ) |
| 1173 | 1173 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 1174 | 1174 | |
| 1175 | ROM_REGION( 0x10000, "ym", 0 ) /* ADPCM samples */ | |
| 1175 | ROM_REGION( 0x10000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1176 | 1176 | ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) ) |
| 1177 | 1177 | ROM_END |
| 1178 | 1178 | |
| r6428 | r6429 | |
| 1195 | 1195 | ROM_LOAD( "c17-07.bin", 0x00000, 0x04000, CRC(cdb7bc2c) SHA1(5113055c954a39918436db75cc06b53c29c60728) ) |
| 1196 | 1196 | ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ |
| 1197 | 1197 | |
| 1198 | ROM_REGION( 0x10000, "ym", 0 ) /* ADPCM samples */ | |
| 1198 | ROM_REGION( 0x10000, "ymsnd", 0 ) /* ADPCM samples */ | |
| 1199 | 1199 | ROM_LOAD( "c17-06.bin", 0x00000, 0x10000, CRC(5c332125) SHA1(408f42df18b38347c8a4e177a9484162a66877e1) ) |
| 1200 | 1200 | ROM_END |
| 1201 | 1201 |
| r6428 | r6429 | |
|---|---|---|
| 106 | 106 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 107 | 107 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 108 | 108 | 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) | |
| 110 | 110 | AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) |
| 111 | 111 | ADDRESS_MAP_END |
| 112 | 112 | |
| r6428 | r6429 | |
| 247 | 247 | /* sound hardware */ |
| 248 | 248 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 249 | 249 | |
| 250 | MDRV_SOUND_ADD("ym", YM3812, 3579545) | |
| 250 | MDRV_SOUND_ADD("ymsnd", YM3812, 3579545) | |
| 251 | 251 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 252 | 252 | |
| 253 | 253 | MDRV_SOUND_ADD("konami", K053260, 3579545) |
| r6428 | r6429 | |
|---|---|---|
| 428 | 428 | static ADDRESS_MAP_START(sound_io, ADDRESS_SPACE_IO, 8 ) |
| 429 | 429 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 430 | 430 | 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) | |
| 432 | 432 | AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r) |
| 433 | 433 | ADDRESS_MAP_END |
| 434 | 434 | |
| r6428 | r6429 | |
| 668 | 668 | /* sound hardware */ |
| 669 | 669 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 670 | 670 | |
| 671 | MDRV_SOUND_ADD("ym", YM2203, 3000000) | |
| 671 | MDRV_SOUND_ADD("ymsnd", YM2203, 3000000) | |
| 672 | 672 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 673 | 673 | MACHINE_DRIVER_END |
| 674 | 674 |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | |
| 6 | 6 | driver by Zsolt Vasvari, Nicola Salmoria, Luca Elia |
| 7 | 7 | |
| 8 | CPU: Z80 | |
| 8 | CPU: Z80 or TLCS-90 | |
| 9 | 9 | Video: Framebuffer |
| 10 | 10 | Sound: AY-3-8910 |
| 11 | 11 | OSC: 18.432MHz and 8MHz |
| r6428 | r6429 | |
| 441 | 441 | |
| 442 | 442 | static ADDRESS_MAP_START( royalmah_iomap, ADDRESS_SPACE_IO, 8 ) |
| 443 | 443 | 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 ) | |
| 446 | 446 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 447 | 447 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 448 | 448 | ADDRESS_MAP_END |
| 449 | 449 | |
| 450 | 450 | static ADDRESS_MAP_START( ippatsu_iomap, ADDRESS_SPACE_IO, 8 ) |
| 451 | 451 | 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 ) | |
| 454 | 454 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 455 | 455 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 456 | 456 | AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2") |
| r6428 | r6429 | |
| 459 | 459 | |
| 460 | 460 | static ADDRESS_MAP_START( suzume_iomap, ADDRESS_SPACE_IO, 8 ) |
| 461 | 461 | 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 ) | |
| 464 | 464 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 465 | 465 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 466 | 466 | AM_RANGE( 0x80, 0x80 ) AM_READ( suzume_dsw_r ) |
| r6428 | r6429 | |
| 469 | 469 | |
| 470 | 470 | static ADDRESS_MAP_START( dondenmj_iomap, ADDRESS_SPACE_IO, 8 ) |
| 471 | 471 | 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) | |
| 474 | 474 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 475 | 475 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 476 | 476 | AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW2") // DSW2 |
| r6428 | r6429 | |
| 480 | 480 | |
| 481 | 481 | static ADDRESS_MAP_START( makaijan_iomap, ADDRESS_SPACE_IO, 8 ) |
| 482 | 482 | 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) | |
| 485 | 485 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 486 | 486 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 487 | 487 | AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("DSW2") // DSW2 |
| r6428 | r6429 | |
| 491 | 491 | |
| 492 | 492 | static ADDRESS_MAP_START( daisyari_iomap, ADDRESS_SPACE_IO, 8 ) |
| 493 | 493 | 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) | |
| 496 | 496 | AM_RANGE( 0x10, 0x10 ) AM_WRITE( royalmah_palbank_w ) |
| 497 | 497 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 498 | 498 | AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE( daisyari_dsw_r, daisyari_bank_w ) |
| r6428 | r6429 | |
| 501 | 501 | static ADDRESS_MAP_START( mjclub_iomap, ADDRESS_SPACE_IO, 8 ) |
| 502 | 502 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 503 | 503 | 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) | |
| 506 | 506 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 507 | 507 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 508 | 508 | ADDRESS_MAP_END |
| 509 | 509 | |
| 510 | 510 | static ADDRESS_MAP_START( mjdiplob_iomap, ADDRESS_SPACE_IO, 8 ) |
| 511 | 511 | 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 ) | |
| 514 | 514 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 515 | 515 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 516 | 516 | AM_RANGE( 0x61, 0x61 ) AM_WRITE(tontonb_bank_w) |
| r6428 | r6429 | |
| 520 | 520 | |
| 521 | 521 | static ADDRESS_MAP_START( tontonb_iomap, ADDRESS_SPACE_IO, 8 ) |
| 522 | 522 | 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 ) | |
| 525 | 525 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 526 | 526 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 527 | 527 | AM_RANGE( 0x44, 0x44 ) AM_WRITE( tontonb_bank_w ) |
| r6428 | r6429 | |
| 531 | 531 | |
| 532 | 532 | static ADDRESS_MAP_START( majs101b_iomap, ADDRESS_SPACE_IO, 8 ) |
| 533 | 533 | 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 ) | |
| 536 | 536 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( royalmah_palbank_w ) |
| 537 | 537 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 538 | 538 | AM_RANGE( 0x00, 0x00 ) AM_READWRITE( majs101b_dsw_r, dynax_bank_w ) |
| r6428 | r6429 | |
| 540 | 540 | |
| 541 | 541 | static ADDRESS_MAP_START( mjderngr_iomap, ADDRESS_SPACE_IO, 8 ) |
| 542 | 542 | 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 ) | |
| 545 | 545 | // AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") |
| 546 | 546 | AM_RANGE( 0x10, 0x10 ) AM_WRITE( mjderngr_coin_w ) // palette bank is set separately |
| 547 | 547 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| r6428 | r6429 | |
| 554 | 554 | static ADDRESS_MAP_START( mjapinky_iomap, ADDRESS_SPACE_IO, 8 ) |
| 555 | 555 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 556 | 556 | 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 ) | |
| 559 | 559 | AM_RANGE( 0x04, 0x04 ) AM_READ_PORT("DSW2") |
| 560 | 560 | AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE( mjapinky_palbank_w ) |
| 561 | 561 | AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| r6428 | r6429 | |
| 767 | 767 | AM_RANGE( 0x20, 0x20 ) AM_READWRITE( janptr96_unknown_r, janptr96_rambank_w ) |
| 768 | 768 | AM_RANGE( 0x50, 0x50 ) AM_WRITE( mjderngr_palbank_w ) |
| 769 | 769 | 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 ) | |
| 772 | 772 | AM_RANGE( 0x93, 0x93 ) AM_WRITE( input_port_select_w ) |
| 773 | 773 | AM_RANGE( 0xd8, 0xd8 ) AM_WRITE( janptr96_coin_counter_w ) |
| 774 | 774 | AM_RANGE( 0xd9, 0xd9 ) AM_READ_PORT("SYSTEM") |
| r6428 | r6429 | |
| 798 | 798 | { |
| 799 | 799 | case 0x8000: return input_port_read(space->machine, "DSW4"); // dsw 4 |
| 800 | 800 | 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 | |
| 802 | 802 | case 0x9011: return input_port_read(space->machine, "SYSTEM"); |
| 803 | 803 | } |
| 804 | 804 | |
| r6428 | r6429 | |
| 819 | 819 | switch(offset) |
| 820 | 820 | { |
| 821 | 821 | 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; | |
| 824 | 824 | case 0x9010: |
| 825 | 825 | mjifb_coin_counter_w(space,0,data); |
| 826 | 826 | return; |
| r6428 | r6429 | |
| 905 | 905 | { |
| 906 | 906 | case 0x8000: return input_port_read(space->machine, "DSW2"); // dsw 2 |
| 907 | 907 | 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 | |
| 909 | 909 | case 0x9011: return input_port_read(space->machine, "SYSTEM"); |
| 910 | 910 | } |
| 911 | 911 | |
| r6428 | r6429 | |
| 925 | 925 | switch(offset) |
| 926 | 926 | { |
| 927 | 927 | 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; | |
| 930 | 930 | case 0x9010: mjifb_coin_counter_w(space,0,data); return; |
| 931 | 931 | case 0x9011: input_port_select_w(space,0,data); return; |
| 932 | 932 | case 0x9013: |
| r6428 | r6429 | |
| 972 | 972 | static ADDRESS_MAP_START( mjtensin_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 973 | 973 | AM_RANGE( 0x0000, 0x5fff ) AM_ROM |
| 974 | 974 | 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 ) | |
| 977 | 977 | AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE( janptr96_coin_counter_w ) |
| 978 | 978 | AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 979 | 979 | AM_RANGE( 0x6fe0, 0x6fef ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) |
| r6428 | r6429 | |
| 1040 | 1040 | static ADDRESS_MAP_START( cafetime_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1041 | 1041 | AM_RANGE( 0x0000, 0x5fff ) AM_ROM |
| 1042 | 1042 | 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 ) | |
| 1045 | 1045 | AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE( janptr96_coin_counter_w ) |
| 1046 | 1046 | AM_RANGE( 0x7fd1, 0x7fd1 ) AM_READ_PORT("SYSTEM") AM_WRITENOP |
| 1047 | 1047 | AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE( input_port_select_w ) |
| r6428 | r6429 | |
| 1175 | 1175 | AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) |
| 1176 | 1176 | AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE(&videoram) |
| 1177 | 1177 | |
| 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 ) | |
| 1180 | 1180 | AM_RANGE( 0x10010, 0x10010 ) AM_WRITE( mjvegasa_coin_counter_w ) |
| 1181 | 1181 | AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE( input_port_select_w ) |
| 1182 | 1182 | AM_RANGE( 0x10013, 0x10013 ) AM_WRITE( input_port_select_w ) |
| r6428 | r6429 | |
| 1205 | 1205 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) |
| 1206 | 1206 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) |
| 1207 | 1207 | 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_ | |
| 1208 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_O) | |
| 1209 | 1209 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Credit Clear") PORT_CODE(KEYCODE_8) |
| 1210 | 1210 | |
| 1211 | 1211 | PORT_START("KEY1") /* P1 IN1 */ |
| r6428 | r6429 | |
| 1247 | 1247 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| 1248 | 1248 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) |
| 1249 | 1249 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) |
| 1250 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) | |
| 1250 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) | |
| 1251 | 1251 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 1252 | 1252 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 1253 | 1253 | |
| r6428 | r6429 | |
| 1257 | 1257 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| 1258 | 1258 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) |
| 1259 | 1259 | 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) | |
| 1260 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) | |
| 1261 | 1261 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1262 | 1262 | |
| 1263 | 1263 | PORT_START("KEY7") /* P2 IN2 */ |
| r6428 | r6429 | |
| 1285 | 1285 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1286 | 1286 | |
| 1287 | 1287 | 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) */ | |
| 1291 | 1291 | PORT_SERVICE( 0x08, IP_ACTIVE_HIGH ) |
| 1292 | 1292 | PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1293 | 1293 | INPUT_PORTS_END |
| r6428 | r6429 | |
| 1297 | 1297 | PORT_INCLUDE( mjctrl1 ) |
| 1298 | 1298 | |
| 1299 | 1299 | PORT_MODIFY("KEY0") |
| 1300 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_ | |
| 1300 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_O) | |
| 1301 | 1301 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1302 | 1302 | INPUT_PORTS_END |
| 1303 | 1303 | |
| r6428 | r6429 | |
| 1306 | 1306 | |
| 1307 | 1307 | PORT_MODIFY("KEY5") |
| 1308 | 1308 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // "COIN2" |
| 1309 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN | |
| 1309 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // "COIN1", but not working | |
| 1310 | 1310 | |
| 1311 | 1311 | PORT_START("DSW1") /* DSW (inport $10) */ |
| 1312 | 1312 | PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) |
| r6428 | r6429 | |
| 2266 | 2266 | PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" ) |
| 2267 | 2267 | PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" ) |
| 2268 | 2268 | PORT_DIPNAME( 0xc0, 0xc0, "Maximum Bet" ) |
| 2269 | PORT_DIPSETTING( 0xc0, "1" ) | |
| 2270 | PORT_DIPSETTING( 0x80, "5" ) | |
| 2271 | PORT_DIPSETTING( 0x40, "10" ) | |
| 2269 | 2272 | PORT_DIPSETTING( 0x00, "20" ) |
| 2270 | PORT_DIPSETTING( 0x40, "10" ) | |
| 2271 | PORT_DIPSETTING( 0x80, "5" ) | |
| 2272 | PORT_DIPSETTING( 0xc0, "1" ) | |
| 2273 | 2273 | |
| 2274 | 2274 | PORT_START("DSWTOP") /* IN15 */ |
| 2275 | 2275 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) |
| r6428 | r6429 | |
| 2678 | 2678 | |
| 2679 | 2679 | PORT_MODIFY("KEY5") |
| 2680 | 2680 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // "COIN2" |
| 2681 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN | |
| 2681 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // "COIN1", but not working | |
| 2682 | 2682 | |
| 2683 | 2683 | |
| 2684 | 2684 | PORT_START("DSW1") /* DSW (inport $10) */ |
| r6428 | r6429 | |
| 2971 | 2971 | PORT_DIPSETTING( 0x01, "53%" ) |
| 2972 | 2972 | PORT_DIPSETTING( 0x00, "50%" ) |
| 2973 | 2973 | 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" ) | |
| 2978 | 2978 | PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" ) |
| 2979 | 2979 | PORT_DIPSETTING( 0xc0, "1" ) |
| 2980 | 2980 | PORT_DIPSETTING( 0x80, "5" ) |
| r6428 | r6429 | |
| 2994 | 2994 | PORT_DIPSETTING( 0x00, "5" ) |
| 2995 | 2995 | PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" ) |
| 2996 | 2996 | 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" ) | |
| 3004 | 3004 | PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) |
| 3005 | 3005 | PORT_DIPSETTING( 0x00, "1" ) |
| 3006 | 3006 | PORT_DIPSETTING( 0x80, "2" ) |
| r6428 | r6429 | |
| 3035 | 3035 | PORT_DIPNAME( 0x01, 0x01, "Unknown 4-0" ) |
| 3036 | 3036 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 3037 | 3037 | 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 ) ) | |
| 3041 | 3041 | PORT_DIPNAME( 0x04, 0x00, "Girls" ) |
| 3042 | 3042 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 3043 | 3043 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r6428 | r6429 | |
| 3071 | 3071 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 3072 | 3072 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3073 | 3073 | 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" ) | |
| 3076 | 3076 | 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" ) | |
| 3079 | 3079 | PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" ) |
| 3080 | 3080 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 3081 | 3081 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r6428 | r6429 | |
| 3118 | 3118 | /* sound hardware */ |
| 3119 | 3119 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3120 | 3120 | |
| 3121 | MDRV_SOUND_ADD("ay", AY8910, 18432000/12) | |
| 3121 | MDRV_SOUND_ADD("aysnd", AY8910, 18432000/12) | |
| 3122 | 3122 | MDRV_SOUND_CONFIG(ay8910_config) |
| 3123 | 3123 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) |
| 3124 | 3124 | MACHINE_DRIVER_END |
| r6428 | r6429 | |
|---|---|---|
| 113 | 113 | |
| 114 | 114 | static ADDRESS_MAP_START( crospang_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 115 | 115 | 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) | |
| 117 | 117 | AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) |
| 118 | 118 | AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r) |
| 119 | 119 | ADDRESS_MAP_END |
| r6428 | r6429 | |
| 328 | 328 | /* sound hardware */ |
| 329 | 329 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 330 | 330 | |
| 331 | MDRV_SOUND_ADD("ym", YM3812, 14318180/4) | |
| 331 | MDRV_SOUND_ADD("ymsnd", YM3812, 14318180/4) | |
| 332 | 332 | MDRV_SOUND_CONFIG(ym3812_config) |
| 333 | 333 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 334 | 334 | |
| r6428 | r6429 | |
| 365 | 365 | /* sound hardware */ |
| 366 | 366 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 367 | 367 | |
| 368 | MDRV_SOUND_ADD("ym", YM3812, 14318180/4) | |
| 368 | MDRV_SOUND_ADD("ymsnd", YM3812, 14318180/4) | |
| 369 | 369 | MDRV_SOUND_CONFIG(ym3812_config) |
| 370 | 370 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 371 | 371 |
| r6428 | r6429 | |
|---|---|---|
| 273 | 273 | /* sound hardware */ |
| 274 | 274 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 275 | 275 | |
| 276 | MDRV_SOUND_ADD("ym", YM2151, 14318180/4) /* 3.579545 MHz */ | |
| 276 | MDRV_SOUND_ADD("ymsnd", YM2151, 14318180/4) /* 3.579545 MHz */ | |
| 277 | 277 | MDRV_SOUND_CONFIG(t5182_ym2151_interface) |
| 278 | 278 | MDRV_SOUND_ROUTE(0, "mono", 1.0) |
| 279 | 279 | MDRV_SOUND_ROUTE(1, "mono", 1.0) |
| r6428 | r6429 | |
|---|---|---|
| 55 | 55 | AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r, k007232_w) /* 007232 registers (chip 2) */ |
| 56 | 56 | AM_RANGE(0xb80c, 0xb80c) AM_DEVWRITE("konami2", k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */ |
| 57 | 57 | /* 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 */ | |
| 59 | 59 | AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r) /* soundlatch_r */ |
| 60 | 60 | ADDRESS_MAP_END |
| 61 | 61 | |
| r6428 | r6429 | |
| 215 | 215 | /* sound hardware */ |
| 216 | 216 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 217 | 217 | |
| 218 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 218 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 219 | 219 | MDRV_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 220 | 220 | MDRV_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 221 | 221 |
| r6428 | r6429 | |
|---|---|---|
| 72 | 72 | |
| 73 | 73 | static ADDRESS_MAP_START( shisen_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 74 | 74 | 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) | |
| 76 | 76 | AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r) |
| 77 | 77 | AM_RANGE(0x80, 0x81) AM_WRITE(shisen_sample_addr_w) |
| 78 | 78 | AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", m72_sample_w) |
| r6428 | r6429 | |
| 248 | 248 | /* sound hardware */ |
| 249 | 249 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 250 | 250 | |
| 251 | MDRV_SOUND_ADD("ym", YM2151, 3579545) | |
| 251 | MDRV_SOUND_ADD("ymsnd", YM2151, 3579545) | |
| 252 | 252 | MDRV_SOUND_CONFIG(ym2151_config) |
| 253 | 253 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 254 | 254 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.5) |
| r6428 | r6429 | |
|---|---|---|
| 403 | 403 | |
| 404 | 404 | static ADDRESS_MAP_START( tharrier_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 405 | 405 | 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) | |
| 407 | 407 | ADDRESS_MAP_END |
| 408 | 408 | |
| 409 | 409 | //Read input port 1 030c8/ BAD |
| r6428 | r6429 | |
| 1084 | 1084 | static ADDRESS_MAP_START( raphero_sound_mem_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 1085 | 1085 | AM_RANGE( 0x0000, 0x7fff ) AM_ROM |
| 1086 | 1086 | 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 ) | |
| 1088 | 1088 | AM_RANGE( 0xc800, 0xc800 ) AM_DEVREADWRITE( "oki1", okim6295_r, okim6295_w ) |
| 1089 | 1089 | AM_RANGE( 0xc808, 0xc808 ) AM_DEVREADWRITE( "oki2", okim6295_r, okim6295_w ) |
| 1090 | 1090 | AM_RANGE( 0xc810, 0xc817 ) AM_WRITE( NMK112_okibank_w ) |
| r6428 | r6429 | |
| 1105 | 1105 | |
| 1106 | 1106 | static ADDRESS_MAP_START( macross2_sound_io_map, ADDRESS_SPACE_IO, 8 ) |
| 1107 | 1107 | 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) | |
| 1109 | 1109 | AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) |
| 1110 | 1110 | AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w) |
| 1111 | 1111 | AM_RANGE(0x90, 0x97) AM_WRITE(NMK112_okibank_w) |
| r6428 | r6429 | |
| 3563 | 3563 | /* sound hardware */ |
| 3564 | 3564 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3565 | 3565 | |
| 3566 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 3566 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 3567 | 3567 | MDRV_SOUND_CONFIG(ym2203_config) |
| 3568 | 3568 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3569 | 3569 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3609 | 3609 | /* sound hardware */ |
| 3610 | 3610 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3611 | 3611 | |
| 3612 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 3612 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 3613 | 3613 | MDRV_SOUND_CONFIG(ym2203_config) |
| 3614 | 3614 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3615 | 3615 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3654 | 3654 | /* sound hardware */ |
| 3655 | 3655 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3656 | 3656 | |
| 3657 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 3657 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 3658 | 3658 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 3659 | 3659 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3660 | 3660 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3733 | 3733 | /* sound hardware */ |
| 3734 | 3734 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3735 | 3735 | |
| 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) */ | |
| 3737 | 3737 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 3738 | 3738 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3739 | 3739 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3777 | 3777 | /* sound hardware */ |
| 3778 | 3778 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3779 | 3779 | |
| 3780 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 3780 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 3781 | 3781 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 3782 | 3782 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3783 | 3783 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3857 | 3857 | /* sound hardware */ |
| 3858 | 3858 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3859 | 3859 | |
| 3860 | MDRV_SOUND_ADD("ym", YM2203, 1500000) /* (verified on pcb) */ | |
| 3860 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) /* (verified on pcb) */ | |
| 3861 | 3861 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 3862 | 3862 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3863 | 3863 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 3936 | 3936 | /* sound hardware */ |
| 3937 | 3937 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 3938 | 3938 | |
| 3939 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 3939 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ | |
| 3940 | 3940 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 3941 | 3941 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 3942 | 3942 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4016 | 4016 | /* sound hardware */ |
| 4017 | 4017 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4018 | 4018 | |
| 4019 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4019 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4020 | 4020 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 4021 | 4021 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 4022 | 4022 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4061 | 4061 | /* sound hardware */ |
| 4062 | 4062 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4063 | 4063 | |
| 4064 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4064 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4065 | 4065 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 4066 | 4066 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 4067 | 4067 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4105 | 4105 | /* sound hardware */ |
| 4106 | 4106 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4107 | 4107 | |
| 4108 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4108 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4109 | 4109 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 4110 | 4110 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 4111 | 4111 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4149 | 4149 | /* sound hardware */ |
| 4150 | 4150 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4151 | 4151 | |
| 4152 | MDRV_SOUND_ADD("ym", YM2203, XTAL_12MHz/8 ) /* verified on pcb */ | |
| 4152 | MDRV_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8 ) /* verified on pcb */ | |
| 4153 | 4153 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 4154 | 4154 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 4155 | 4155 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4193 | 4193 | /* sound hardware */ |
| 4194 | 4194 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4195 | 4195 | |
| 4196 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4196 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4197 | 4197 | MDRV_SOUND_CONFIG(ym2203_nmk004_interface) |
| 4198 | 4198 | MDRV_SOUND_ROUTE(0, "mono", 0.50) |
| 4199 | 4199 | MDRV_SOUND_ROUTE(1, "mono", 0.50) |
| r6428 | r6429 | |
| 4241 | 4241 | /* sound hardware */ |
| 4242 | 4242 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4243 | 4243 | |
| 4244 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4244 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4245 | 4245 | MDRV_SOUND_CONFIG(ym2203_config) |
| 4246 | 4246 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 4247 | 4247 | |
| r6428 | r6429 | |
| 4286 | 4286 | /* sound hardware */ |
| 4287 | 4287 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4288 | 4288 | |
| 4289 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4289 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4290 | 4290 | MDRV_SOUND_CONFIG(ym2203_config) |
| 4291 | 4291 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 4292 | 4292 | |
| r6428 | r6429 | |
| 4330 | 4330 | /* sound hardware */ |
| 4331 | 4331 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 4332 | 4332 | |
| 4333 | MDRV_SOUND_ADD("ym", YM2203, 1500000) | |
| 4333 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) | |
| 4334 | 4334 | MDRV_SOUND_CONFIG(ym2203_config) |
| 4335 | 4335 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) |
| 4336 | 4336 | |
| r6428 | r6429 | |
| 4727 | 4727 | AM_RANGE(0x0000, 0xefff) AM_ROM |
| 4728 | 4728 | AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM |
| 4729 | 4729 | 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 | |
| 4731 | 4731 | AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w) // M6295 |
| 4732 | 4732 | ADDRESS_MAP_END |
| 4733 | 4733 | |
| r6428 | r6429 | |
| 4879 | 4879 | /* sound hardware */ |
| 4880 | 4880 | MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4881 | 4881 | |
| 4882 | MDRV_SOUND_ADD("ym", YM2151, XTAL_4MHz) /* verified on pcb */ | |
| 4882 | MDRV_SOUND_ADD("ymsnd", YM2151, XTAL_4MHz) /* verified on pcb */ | |
| 4883 | 4883 | MDRV_SOUND_CONFIG(afega_ym2151_intf) |
| 4884 | 4884 | MDRV_SOUND_ROUTE(0, "lspeaker", 0.30) |
| 4885 | 4885 | MDRV_SOUND_ROUTE(1, "rspeaker", 0.30) |
| r6428 | r6429 | |
|---|---|---|
| 128 | 128 | |
| 129 | 129 | #define LOG(x) do { if (DEBUG) printf x; } while (0) |
| 130 | 130 | |
| 131 | static WRITE8_DEVICE_HANDLER(ic8j1_output_changed) | |
| 131 | static WRITE8_DEVICE_HANDLER( ic8j1_output_changed ) | |
| 132 | 132 | { |
| 133 | 133 | LOG(("ic8j1: %d %d\n", data, video_screen_get_vpos(device->machine->primary_screen))); |
| 134 | 134 | cputag_set_input_line(device->machine, "maincpu", 0, !data ? CLEAR_LINE : ASSERT_LINE); |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | static WRITE8_DEVICE_HANDLER(ic8j2_output_changed) | |
| 137 | static WRITE8_DEVICE_HANDLER( ic8j2_output_changed ) | |
| 138 | 138 | { |
| 139 | m10_state *state = (m10_state *)device->machine->driver_data; | |
| 140 | ||
| 139 | 141 | /* written from /Q to A with slight delight */ |
| 140 | 142 | LOG(("ic8j2: %d\n", data)); |
| 141 | 143 | ttl74123_a_w(device, 0, data); |
| 142 | ttl74123_a_w( | |
| 144 | ttl74123_a_w(s | |
| 143 | 145 | } |
| 144 | 146 | |
| 145 | 147 | static const ttl74123_config ic8j1_intf = |
| 146 | 148 | { |
| 147 | 149 | /* completely illegible */ |
| 148 | 150 | 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 */ | |
| 151 | 153 | 1, /* A pin - driven by the CRTC */ |
| 152 | 154 | 1, /* B pin - pulled high */ |
| 153 | 155 | 1, /* Clear pin - pulled high */ |
| r6428 | r6429 | |
| 158 | 160 | { |
| 159 | 161 | TTL74123_NOT_GROUNDED_DIODE, /* the hook up type */ |
| 160 | 162 | /* 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 */ | |
| 163 | 165 | 1, /* A pin - driven by the CRTC */ |
| 164 | 166 | 1, /* B pin - pulled high */ |
| 165 | 167 | 1, /* Clear pin - pulled high */ |
| r6428 | r6429 | |
| 189 | 191 | } |
| 190 | 192 | } |
| 191 | 193 | |
| 192 | static MACHINE_ | |
| 194 | static MACHINE_ | |
| 193 | 195 | { |
| 194 | 196 | m10_state *state = (m10_state *)machine->driver_data; |
| 195 | 197 | |
| 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 | ||
| 196 | 202 | state_save_register_global(machine, state->bottomline); |
| 197 | 203 | state_save_register_global(machine, state->flip); |
| 204 | state_save_register_global(machine, state->last); | |
| 198 | 205 | } |
| 199 | 206 | |
| 207 | static 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 | ||
| 200 | 216 | /************************************* |
| 201 | 217 | * |
| 202 | 218 | * I/O handling |
| r6428 | r6429 | |
| 224 | 240 | |
| 225 | 241 | static WRITE8_HANDLER( m10_ctrl_w ) |
| 226 | 242 | { |
| 227 | const device_config *samples = devtag_get_device(space->machine, "samples"); | |
| 228 | 243 | m10_state *state = (m10_state *)space->machine->driver_data; |
| 229 | 244 | |
| 230 | 245 | #if DEBUG |
| r6428 | r6429 | |
| 249 | 264 | break; |
| 250 | 265 | case 0x01: |
| 251 | 266 | /* MISSILE sound */ |
| 252 | sample_start(samples, 0, 0, 0); | |
| 267 | sample_start(state->samples, 0, 0, 0); | |
| 253 | 268 | break; |
| 254 | 269 | case 0x02: |
| 255 | 270 | /* EXPLOSION sound */ |
| 256 | sample_start(samples, 1, 1, 0); | |
| 271 | sample_start(state->samples, 1, 1, 0); | |
| 257 | 272 | break; |
| 258 | 273 | case 0x03: |
| 259 | 274 | /* INVADER HIT sound */ |
| 260 | sample_start(samples, 2, 2, 0); | |
| 275 | sample_start(state->samples, 2, 2, 0); | |
| 261 | 276 | break; |
| 262 | 277 | case 0x04: |
| 263 | 278 | /* BONUS BASE sound */ |
| 264 | sample_start(samples, 3, 8, 0); | |
| 279 | sample_start(state->samples, 3, 8, 0); | |
| 265 | 280 | break; |
| 266 | 281 | case 0x05: |
| 267 | 282 | /* FLEET MOVE sound */ |
| 268 | sample_start(samples, 3, 3, 0); | |
| 283 | sample_start(state->samples, 3, 3, 0); | |
| 269 | 284 | break; |
| 270 | 285 | case 0x06: |
| 271 | 286 | /* SAUCER HIT SOUND */ |
| 272 | sample_start(samples, 2, 7, 0); | |
| 287 | sample_start(state->samples, 2, 7, 0); | |
| 273 | 288 | break; |
| 274 | 289 | default: |
| 275 | 290 | popmessage("Unknown sound M10: %02x\n", data & 0x07); |
| r6428 | r6429 | |
| 277 | 292 | } |
| 278 | 293 | /* UFO SOUND */ |
| 279 | 294 | if (data & 0x08) |
| 280 | sample_stop(samples, 4); | |
| 295 | sample_stop(state->samples, 4); | |
| 281 | 296 | else |
| 282 | sample_start(samples, 4, 9, 1); | |
| 297 | sample_start(state->samples, 4, 9, 1); | |
| 283 | 298 | |
| 284 | 299 | } |
| 285 | 300 | |
| r6428 | r6429 | |
| 305 | 320 | m10_state *state = (m10_state *)space->machine->driver_data; |
| 306 | 321 | |
| 307 | 322 | #if DEBUG |
| 308 | if (data & 0x4 | |
| 323 | if (data & 0x4c) | |
| 309 | 324 | popmessage("M11 ctrl: %02x",data); |
| 310 | 325 | #endif |
| 311 | 326 | |
| r6428 | r6429 | |
| 338 | 353 | m10_state *state = (m10_state *)space->machine->driver_data; |
| 339 | 354 | |
| 340 | 355 | #if DEBUG |
| 341 | if (data & 0x | |
| 356 | if (data & 0xf0) | |
| 342 | 357 | popmessage("M15 ctrl: %02x",data); |
| 343 | 358 | #endif |
| 344 | 359 | if (input_port_read(space->machine, "CAB") & 0x01) |
| r6428 | r6429 | |
| 364 | 379 | static WRITE8_HANDLER( m10_a500_w ) |
| 365 | 380 | { |
| 366 | 381 | #if DEBUG |
| 367 | if (data & 0x | |
| 382 | if (data & 0xfc) | |
| 368 | 383 | popmessage("a500: %02x",data); |
| 369 | 384 | #endif |
| 370 | 385 | } |
| 371 | 386 | |
| 372 | 387 | static WRITE8_HANDLER( m11_a100_w ) |
| 373 | 388 | { |
| 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; | |
| 378 | 392 | |
| 379 | 393 | // should a falling bit stop a sample? |
| 380 | 394 | // This port is written to about 20x per vblank |
| 381 | 395 | #if DEBUG |
| 382 | if ((last & 0x | |
| 396 | if ((state->last & 0xe8) != (data & 0xe8)) | |
| 383 | 397 | popmessage("A100: %02x\n", data); |
| 384 | 398 | #endif |
| 385 | last = data; | |
| 399 | state->last = data; | |
| 400 | ||
| 386 | 401 | // audio control! |
| 387 | 402 | /* MISSILE sound */ |
| 388 | 403 | if (raising_bits & 0x01) |
| 389 | sample_start(samples, 0, 0, 0); | |
| 404 | sample_start(state->samples, 0, 0, 0); | |
| 390 | 405 | |
| 391 | 406 | /* EXPLOSION sound */ |
| 392 | 407 | if (raising_bits & 0x02) |
| 393 | sample_start(samples, 1, 1, 0); | |
| 408 | sample_start(state->samples, 1, 1, 0); | |
| 394 | 409 | |
| 395 | 410 | /* Rapidly falling parachute */ |
| 396 | 411 | if (raising_bits & 0x04) |
| 397 | sample_start(samples, 3, 8, 0); | |
| 412 | sample_start(state->samples, 3, 8, 0); | |
| 398 | 413 | |
| 399 | 414 | /* Background sound ? */ |
| 400 | 415 | if (data & 0x10) |
| 401 | sample_start(samples, 4, 9, 1); | |
| 416 | sample_start(state->samples, 4, 9, 1); | |
| 402 | 417 | else |
| 403 | sample_stop(samples, 4); | |
| 418 | sample_stop(state->samples, 4); | |
| 404 | 419 | |
| 405 | 420 | } |
| 406 | 421 | |
| 407 | 422 | static WRITE8_HANDLER( m15_a100_w ) |
| 408 | 423 | { |
| 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; | |
| 413 | 427 | |
| 414 | 428 | // should a falling bit stop a sample? |
| 415 | 429 | // Bit 4 is used |
| r6428 | r6429 | |
| 425 | 439 | // 0x40: dot |
| 426 | 440 | |
| 427 | 441 | #if DEBUG |
| 428 | if ((last & 0x82) != (data & 0x82)) | |
| 442 | if ((state->last & 0x82) != (data & 0x82)) | |
| 429 | 443 | popmessage("A100: %02x\n", data); |
| 430 | 444 | #endif |
| 431 | 445 | /* DOT sound */ |
| 432 | 446 | if (falling_bits & 0x40) |
| 433 | sample_start(samples, 0, 0, 0); | |
| 447 | sample_start(state->samples, 0, 0, 0); | |
| 434 | 448 | #if 0 |
| 435 | 449 | if (raising_bits & 0x40) |
| 436 | sample_stop(samples, 0); | |
| 450 | sample_stop(state->samples, 0); | |
| 437 | 451 | #endif |
| 438 | 452 | |
| 439 | 453 | /* EXPLOSION sound */ |
| 440 | 454 | if (falling_bits & 0x08) |
| 441 | sample_start(samples, 1, 1, 0); | |
| 455 | sample_start(state->samples, 1, 1, 0); | |
| 442 | 456 | #if 0 |
| 443 | 457 | if (raising_bits & 0x08) |
| 444 | sample_stop(samples, 1); | |
| 458 | sample_stop(state->samples, 1); | |
| 445 | 459 | #endif |
| 446 | 460 | |
| 447 | 461 | /* player changes lane */ |
| 448 | 462 | if (falling_bits & 0x10) |
| 449 | sample_start(samples, 3, 3, 0); | |
| 463 | sample_start(state->samples, 3, 3, 0); | |
| 450 | 464 | #if 0 |
| 451 | 465 | if (raising_bits & 0x10) |
| 452 | sample_stop(samples, 3); | |
| 466 | sample_stop(state->samples, 3); | |
| 453 | 467 | #endif |
| 454 | 468 | |
| 455 | 469 | /* computer car changes lane */ |
| 456 | 470 | if (falling_bits & 0x20) |
| 457 | sample_start(samples, 4, 4, 0); | |
| 471 | sample_start(state->samples, 4, 4, 0); | |
| 458 | 472 | #if 0 |
| 459 | 473 | if (raising_bits & 0x20) |
| 460 | sample_stop(samples, 4); | |
| 474 | sample_stop(state->samples, 4); | |
| 461 | 475 | #endif |
| 462 | 476 | |
| 463 | last = data; | |
| 477 | state->last = data; | |
| 464 | 478 | } |
| 465 | 479 | |
| 466 | 480 | static READ8_HANDLER( m10_a700_r ) |
| 467 | 481 | { |
| 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))); | |
| 469 | 484 | 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); | |
| 472 | 487 | return 0x00; |
| 473 | 488 | } |
| 474 | 489 | |
| 475 | 490 | static READ8_HANDLER( m11_a700_r ) |
| 476 | 491 | { |
| 492 | m10_state *state = (m10_state *)space->machine->driver_data; | |
| 477 | 493 | //LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen))); |
| 478 | 494 | //cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE); |
| 479 | 495 | 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); | |
| 482 | 498 | return 0x00; |
| 483 | 499 | } |
| 484 | 500 | |
| r6428 | r6429 | |
| 497 | 513 | |
| 498 | 514 | static TIMER_CALLBACK( interrupt_callback ) |
| 499 | 515 | { |
| 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); | |
| 512 | 528 | |
| 513 | 529 | } |
| 514 | 530 | |
| r6428 | r6429 | |
| 516 | 532 | static INTERRUPT_GEN( m11_interrupt ) |
| 517 | 533 | { |
| 518 | 534 | 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); | |
| 520 | 536 | } |
| 521 | 537 | |
| 522 | 538 | static INTERRUPT_GEN( m10_interrupt ) |
| r6428 | r6429 | |
| 528 | 544 | static INTERRUPT_GEN( m15_interrupt ) |
| 529 | 545 | { |
| 530 | 546 | 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); | |
| 532 | 548 | } |
| 533 | 549 | |
| 534 | 550 | /************************************* |
| r6428 | r6429 | |
| 540 | 556 | static ADDRESS_MAP_START( m10_main, ADDRESS_SPACE_PROGRAM, 8 ) |
| 541 | 557 | AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */ |
| 542 | 558 | 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 */ | |
| 545 | 561 | AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(m10_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */ |
| 546 | 562 | AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW") |
| 547 | 563 | AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS") |
| r6428 | r6429 | |
| 554 | 570 | static ADDRESS_MAP_START( m11_main, ADDRESS_SPACE_PROGRAM, 8 ) |
| 555 | 571 | AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */ |
| 556 | 572 | 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 */ | |
| 559 | 575 | AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_MEMBER(m10_state, chargen) /* background ????? */ |
| 560 | 576 | AM_RANGE(0xa100, 0xa100) AM_WRITE(m11_a100_w) /* sound writes ???? */ |
| 561 | 577 | AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW") |
| r6428 | r6429 | |
| 568 | 584 | static ADDRESS_MAP_START( m15_main, ADDRESS_SPACE_PROGRAM, 8 ) |
| 569 | 585 | AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */ |
| 570 | 586 | 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 */ | |
| 573 | 589 | AM_RANGE(0x5000, 0x57ff) AM_RAM_WRITE(m15_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */ |
| 574 | 590 | AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2") |
| 575 | 591 | AM_RANGE(0xa100, 0xa100) AM_WRITE(m15_a100_w) /* sound writes ???? */ |
| r6428 | r6429 | |
| 821 | 837 | MDRV_CPU_ADD("maincpu", M6502,IREMM10_CPU_CLOCK) |
| 822 | 838 | MDRV_CPU_PROGRAM_MAP(m10_main) |
| 823 | 839 | |
| 824 | MDRV_MACHINE_RESET(irem) | |
| 840 | MDRV_MACHINE_START(m10) | |
| 841 | MDRV_MACHINE_RESET(m10) | |
| 825 | 842 | |
| 826 | 843 | //MDRV_CPU_VBLANK_INT("screen", m10_interrupt) |
| 827 | 844 | |
| r6428 | r6429 | |
| 873 | 890 | MDRV_CPU_ADD("maincpu", M6502,IREMM15_CPU_CLOCK) |
| 874 | 891 | MDRV_CPU_PROGRAM_MAP(m15_main) |
| 875 | 892 | |
| 876 | MDRV_MACHINE_RESET(irem) | |
| 893 | MDRV_MACHINE_START(m10) | |
| 894 | MDRV_MACHINE_RESET(m10) | |
| 877 | 895 | |
| 878 | 896 | MDRV_CPU_VBLANK_INT("screen", m15_interrupt) |
| 879 | 897 | |
| r6428 | r6429 | |
| 1039 | 1057 | ROM_LOAD( "gb9", 0x3000, 0x0400, CRC(c27b9ba3) SHA1(a2f4f0c4b61eb03bba13ae5d25dc01009a4f86ee) ) // ok ? |
| 1040 | 1058 | ROM_END |
| 1041 | 1059 | |
| 1042 | GAME( 1979, andromed, 0, m11, skychut, andromed, ROT270, "Irem", "Andromeda (Japan?)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING ) | |
| 1043 | GAME( 1979, ipminvad, 0, m10, ipminvad, 0, ROT270, "Irem", "I P M Invader", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS ) | |
| 1044 | GAME( 1979, ipminvad1, ipminvad, m10, ipminvad, ipminva1, ROT270, "Irem", "I P M Invader (Incomplete Dump)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) | |
| 1045 | GAME( 1980, skychut, 0, m11, skychut, 0, ROT270, "Irem", "Sky Chuter", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1046 | GAME( 1979, spacbeam, 0, m15, spacbeam, 0, ROT270, "Irem", "Space Beam", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1047 | GAME( 1979, headoni, 0, headoni, headoni, 0, ROT270, "Irem", "Head On (Irem, M-15 Hardware)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS ) | |
| 1048 | GAME( 1980, greenber, 0, m15, spacbeam, 0, ROT270, "Irem", "Green Beret (Irem)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING ) | |
| 1060 | GAME( 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 ) | |
| 1061 | GAME( 1979, ipminvad, 0, m10, ipminvad, 0, ROT270, "Irem", "I P M Invader", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) | |
| 1062 | GAME( 1979, ipminvad1, ipminvad, m10, ipminvad, ipminva1, ROT270, "Irem", "I P M Invader (Incomplete Dump)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) | |
| 1063 | GAME( 1980, skychut, 0, m11, skychut, 0, ROT270, "Irem", "Sky Chuter", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) | |
| 1064 | GAME( 1979, spacbeam, 0, m15, spacbeam, 0, ROT270, "Irem", "Space Beam", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) | |
| 1065 | GAME( 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 ) | |
| 1066 | GAME( 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 ) |
| r6428 | r6429 | |
|---|---|---|
| 29 | 29 | M68K_CPU_TYPE_68EC030, |
| 30 | 30 | M68K_CPU_TYPE_68030, |
| 31 | 31 | M68K_CPU_TYPE_68EC040, |
| 32 | M68K_CPU_TYPE_68LC040, | |
| 32 | 33 | M68K_CPU_TYPE_68040, |
| 33 | 34 | M68K_CPU_TYPE_SCC68070 |
| 34 | 35 | }; |
| r6428 | r6429 | |
| 93 | 94 | #define CPU_M68EC030 CPU_GET_INFO_NAME( m68ec030 ) |
| 94 | 95 | #define CPU_M68030 CPU_GET_INFO_NAME( m68030 ) |
| 95 | 96 | #define CPU_M68EC040 CPU_GET_INFO_NAME( m68ec040 ) |
| 97 | #define CPU_M68LC040 CPU_GET_INFO_NAME( m68lc040 ) | |
| 96 | 98 | #define CPU_M68040 CPU_GET_INFO_NAME( m68040 ) |
| 97 | 99 | |
| 98 | 100 | #define CPU_SCC68070 CPU_GET_INFO_NAME( scc68070 ) |
| r6428 | r6429 | |
|---|---|---|
| 95 | 95 | { |
| 96 | 96 | switch (reg) |
| 97 | 97 | { |
| 98 | case 0: // (xxx).W | |
| 99 | { | |
| 100 | UINT32 ea = (UINT32)OPER_I_16(m68k); | |
| 101 | return m68ki_read_8(m68k, ea); | |
| 102 | } | |
| 98 | 103 | case 1: // (xxx).L |
| 99 | 104 | { |
| 100 | 105 | UINT32 d1 = OPER_I_16(m68k); |
| r6428 | r6429 | |
| 146 | 151 | { |
| 147 | 152 | switch (reg) |
| 148 | 153 | { |
| 154 | case 0: // (xxx).W | |
| 155 | { | |
| 156 | UINT32 ea = (UINT32)OPER_I_16(m68k); | |
| 157 | return m68ki_read_16(m68k, ea); | |
| 158 | } | |
| 149 | 159 | case 1: // (xxx).L |
| 150 | 160 | { |
| 151 | 161 | UINT32 d1 = OPER_I_16(m68k); |
| r6428 | r6429 | |
| 203 | 213 | { |
| 204 | 214 | switch (reg) |
| 205 | 215 | { |
| 216 | case 0: // (xxx).W | |
| 217 | { | |
| 218 | UINT32 ea = (UINT32)OPER_I_16(m68k); | |
| 219 | return m68ki_read_32(m68k, ea); | |
| 220 | } | |
| 206 | 221 | case 1: // (xxx).L |
| 207 | 222 | { |
| 208 | 223 | UINT32 d1 = OPER_I_16(m68k); |
| r6428 | r6429 | |
| 228 | 243 | return 0; |
| 229 | 244 | } |
| 230 | 245 | |
| 246 | static 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 | ||
| 231 | 303 | static void WRITE_EA_8(m68ki_cpu_core *m68k, int ea, UINT8 data) |
| 232 | 304 | { |
| 233 | 305 | int mode = (ea >> 3) & 0x7; |
| r6428 | r6429 | |
| 376 | 448 | REG_D[reg] = data; |
| 377 | 449 | break; |
| 378 | 450 | } |
| 451 | case 1: // An | |
| 452 | { | |
| 453 | REG_A[reg] = data; | |
| 454 | break; | |
| 455 | } | |
| 379 | 456 | case 2: // (An) |
| 380 | 457 | { |
| 381 | 458 | UINT32 ea = REG_A[reg]; |
| r6428 | r6429 | |
| 432 | 509 | } |
| 433 | 510 | } |
| 434 | 511 | |
| 435 | static 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 | ||
| 492 | 512 | static void WRITE_EA_64(m68ki_cpu_core *m68k, int ea, UINT64 data) |
| 493 | 513 | { |
| 494 | 514 | int mode = (ea >> 3) & 0x7; |
| r6428 | r6429 | |
|---|---|---|
| 81 | 81 | #define CPU_TYPE_EC030 (0x00000020) |
| 82 | 82 | #define CPU_TYPE_030 (0x00000040) |
| 83 | 83 | #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) | |
| 86 | 87 | |
| 87 | 88 | /* Different ways to stop the CPU */ |
| 88 | 89 | #define STOP_LEVEL_STOP 1 |
| r6428 | r6429 | |
|---|---|---|
| 3 | 3 | /* ======================================================================== */ |
| 4 | 4 | /* |
| 5 | 5 | * MUSASHI |
| 6 | * Version 4. | |
| 6 | * Version 4.55 | |
| 7 | 7 | * |
| 8 | 8 | * A portable Motorola M680x0 processor emulation engine. |
| 9 | 9 | * Copyright Karl Stenerud. All rights reserved. |
| r6428 | r6429 | |
| 55 | 55 | */ |
| 56 | 56 | |
| 57 | 57 | |
| 58 | static const char g_version[] = "4. | |
| 58 | static const char g_version[] = "4.55"; | |
| 59 | 59 | |
| 60 | 60 | /* ======================================================================== */ |
| 61 | 61 | /* =============================== INCLUDES =============================== */ |
| r6428 | r6429 | |
| 767 | 767 | } |
| 768 | 768 | /* Found a directive with no matching replace string */ |
| 769 | 769 | if(!found) |
| 770 | error_exit("Unknown " ID_BASE " directive"); | |
| 770 | error_exit("Unknown " ID_BASE " directive [%s]", output); | |
| 771 | 771 | } |
| 772 | 772 | fprintf(filep, "%s\n", output); |
| 773 | 773 | } |
| r6428 | r6429 | |
|---|---|---|
| 12 | 12 | */ |
| 13 | 13 | INLINE UINT32 pmmu_translate_addr(m68ki_cpu_core *m68k, UINT32 addr_in) |
| 14 | 14 | { |
| 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; | |
| 16 | 16 | UINT32 root_aptr, root_limit, tofs, is, abits, bbits, cbits; |
| 17 | 17 | UINT32 resolved, tptr, shift; |
| 18 | 18 | |
| r6428 | r6429 | |
| 108 | 108 | // if table A wasn't early-out, continue to process table B |
| 109 | 109 | if (!resolved) |
| 110 | 110 | { |
| 111 | // get table C offset and pointer | |
| 112 | tofs = (addr_in<<(is+abits+bbits))>>(32-cbits); | |
| 113 | tptr = tbl_entry & 0xfffffff0; | |
| 114 | ||
| 111 | 115 | switch (tbmode) |
| 112 | 116 | { |
| 113 | 117 | 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 | ||
| 114 | 121 | 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 | ||
| 115 | 129 | 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); | |
| 117 | 136 | break; |
| 118 | 137 | |
| 119 | case 1: // | |
| 138 | case 1: // | |
| 120 | 139 | tbl_entry &= 0xffffff00; |
| 121 | 140 | |
| 122 | 141 | shift = is+abits+bbits; |
| r6428 | r6429 | |
| 126 | 145 | } |
| 127 | 146 | } |
| 128 | 147 | |
| 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; | |
| 130 | 157 | |
| 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 | ||
| 131 | 171 | return addr_out; |
| 132 | 172 | } |
| 133 | 173 | |
| 134 | 174 | /* |
| 175 | m68881_mmu_ops: COP 0 MMU opcode handling | |
| 135 | 176 | |
| 136 | maincpu at 40804366: called unimplemented instruction f000 (cpgen) | |
| 137 | PMMU: tcr 80f05570 limit 7fff0003 aptr 043ffcc0 is 0 | |
| 138 | PMMU: reading table A entries at 043ffce0 | |
| 139 | PMMU: addr 4080438a entry 00000000 entry2 7ffffc18 mode 0 aofs 20 | |
| 140 | 680x0 PMMU: Unhandled Table A mode 0 | |
| 177 | */ | |
| 141 | 178 | |
| 142 | enable, PS = f | |
| 179 | void m68881_mmu_ops(m68ki_cpu_core *m68k) | |
| 180 | { | |
| 181 | UINT16 modes; | |
| 182 | UINT32 ea = m68k->ir & 0x3f; | |
| 183 | UINT64 temp64; | |
| 143 | 184 | |
| 144 | tblA @ 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); | |
| 145 | 202 | |
| 146 | 043ffcc0 0001fc0a 043ffcb0 => 00000019 04000019 | |
| 147 | 043ffcc8 7ffffc18 00000000 | |
| 148 | 043ffcd0 7ffffc18 00000000 | |
| 149 | 043ffcd8 7ffffc18 00000000 | |
| 150 | 043ffce0 7ffffc18 00000000 | |
| 151 | 043ffce8 7ffffc18 00000000 | |
| 152 | 043ffcf0 7ffffc18 00000000 | |
| 153 | 043ffcf8 7ffffc18 00000000 | |
| 154 | 043ffd00 7ffffc19 40000000 | |
| 155 | 043ffd08 7ffffc19 48000000 | |
| 156 | 043ffd10 7ffffc59 50000000 | |
| 157 | 043ffd18 7ffffc59 58000000 | |
| 158 | 043ffd20 7ffffc59 60000000 | |
| 159 | 043ffd28 7ffffc59 68000000 | |
| 160 | 043ffd30 7ffffc59 70000000 | |
| 161 | 043ffd38 7ffffc59 78000000 | |
| 162 | 043ffd40 7ffffc59 80000000 | |
| 163 | 043ffd48 7ffffc59 88000000 | |
| 164 | 043ffd50 7ffffc59 90000000 | |
| 165 | 043ffd58 7ffffc59 98000000 | |
| 166 | 043ffd60 7ffffc59 a0000000 | |
| 167 | 043ffd68 7ffffc59 a8000000 | |
| 168 | 043ffd70 7ffffc59 b0000000 | |
| 169 | 043ffd78 7ffffc59 b8000000 | |
| 170 | 043ffd80 7ffffc59 c0000000 | |
| 171 | 043ffd88 7ffffc59 c8000000 | |
| 172 | 043ffd90 7ffffc59 d0000000 | |
| 173 | 043ffd98 7ffffc59 d8000000 | |
| 174 | 043ffda0 7ffffc59 e0000000 | |
| 175 | 043ffda8 7ffffc59 e8000000 | |
| 176 | 043ffdb0 7ffffc59 f0000000 | |
| 177 | 043ffdb8 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; | |
| 178 | 246 | |
| 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; | |
| 180 | 250 | |
| 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 |
| r6428 | r6429 | |
|---|---|---|
| 146 | 146 | /* make signed integers 100% portably */ |
| 147 | 147 | static int make_int_8(int value); |
| 148 | 148 | static int make_int_16(int value); |
| 149 | static int make_int_32(int value); | |
| 149 | 150 | |
| 150 | 151 | /* make a string of a hex value */ |
| 151 | 152 | static char* make_signed_hex_str_8(UINT32 val); |
| r6428 | r6429 | |
| 230 | 231 | "tc", "drp", "srp", "crp", "cal", "val", "sccr", "acr" |
| 231 | 232 | }; |
| 232 | 233 | |
| 234 | static 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 | ||
| 233 | 240 | /* ======================================================================== */ |
| 234 | 241 | /* =========================== UTILITY FUNCTIONS ========================== */ |
| 235 | 242 | /* ======================================================================== */ |
| r6428 | r6429 | |
| 304 | 311 | return (value & 0x8000) ? value | ~0xffff : value & 0xffff; |
| 305 | 312 | } |
| 306 | 313 | |
| 314 | static int make_int_32(int value) | |
| 315 | { | |
| 316 | return (value & 0x80000000) ? value | ~0xffffffff : value & 0xffffffff; | |
| 317 | } | |
| 307 | 318 | |
| 308 | 319 | /* Get string representation of hex values */ |
| 309 | 320 | static char* make_signed_hex_str_8(UINT32 val) |
| r6428 | r6429 | |
| 2563 | 2574 | sprintf(g_dasm_str, "pea %s", get_ea_mode_str_32(g_cpu_ir)); |
| 2564 | 2575 | } |
| 2565 | 2576 | |
| 2577 | // this is a 68040-specific form of PFLUSH | |
| 2566 | 2578 | static void d68040_pflush(void) |
| 2567 | 2579 | { |
| 2568 | 2580 | LIMIT_CPU_TYPES(M68040_PLUS); |
| r6428 | r6429 | |
| 3019 | 3031 | } |
| 3020 | 3032 | |
| 3021 | 3033 | |
| 3022 | static 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 | |
| 3043 | static void d68851_p000(void) | |
| 3023 | 3044 | { |
| 3024 | 3045 | char* str; |
| 3025 | 3046 | UINT16 modes = read_imm_16(); |
| r6428 | r6429 | |
| 3040 | 3061 | return; |
| 3041 | 3062 | } |
| 3042 | 3063 | |
| 3043 | if ((modes & 0xe200) == 0x2000) // PFLUSH | |
| 3064 | if ((modes & 0xe200) == 0x2000) // PFLUSH | |
| 3044 | 3065 | { |
| 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); | |
| 3053 | 3067 | return; |
| 3054 | 3068 | } |
| 3055 | 3069 | |
| 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 | ||
| 3056 | 3093 | switch ((modes>>13) & 0x7) |
| 3057 | 3094 | { |
| 3058 | 3095 | case 0: // MC68030/040 form with FD bit |
| r6428 | r6429 | |
| 3098 | 3135 | } |
| 3099 | 3136 | } |
| 3100 | 3137 | |
| 3138 | static void d68851_pbcc16(void) | |
| 3139 | { | |
| 3140 | UINT32 temp_pc = g_cpu_pc; | |
| 3101 | 3141 | |
| 3142 | sprintf(g_dasm_str, "pb%s %x", g_mmucond[g_cpu_ir&0xf], temp_pc + make_int_16(read_imm_16())); | |
| 3143 | } | |
| 3144 | ||
| 3145 | static 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 | ||
| 3152 | static 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 | |
| 3161 | static void d68851_p001(void) | |
| 3162 | { | |
| 3163 | sprintf(g_dasm_str, "MMU 001 group"); | |
| 3164 | } | |
| 3165 | ||
| 3102 | 3166 | /* ======================================================================== */ |
| 3103 | 3167 | /* ======================= INSTRUCTION TABLE BUILDER ====================== */ |
| 3104 | 3168 | /* ======================================================================== */ |
| r6428 | r6429 | |
| 3421 | 3485 | {d68000_unlk , 0xfff8, 0x4e58, 0x000}, |
| 3422 | 3486 | {d68020_unpk_rr , 0xf1f8, 0x8180, 0x000}, |
| 3423 | 3487 | {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}, | |
| 3425 | 3493 | {0, 0, 0, 0} |
| 3426 | 3494 | }; |
| 3427 | 3495 | |
| r6428 | r6429 | |
| 3551 | 3619 | g_cpu_type = TYPE_68010; |
| 3552 | 3620 | break; |
| 3553 | 3621 | case M68K_CPU_TYPE_68EC020: |
| 3554 | g_cpu_type = TYPE_68020; | |
| 3555 | break; | |
| 3556 | 3622 | case M68K_CPU_TYPE_68020: |
| 3557 | 3623 | g_cpu_type = TYPE_68020; |
| 3558 | 3624 | break; |
| 3625 | case M68K_CPU_TYPE_68EC030: | |
| 3559 | 3626 | case M68K_CPU_TYPE_68030: |
| 3560 | 3627 | g_cpu_type = TYPE_68030; |
| 3561 | 3628 | break; |
| 3562 | 3629 | case M68K_CPU_TYPE_68040: |
| 3630 | case M68K_CPU_TYPE_68EC040: | |
| 3631 | case M68K_CPU_TYPE_68LC040: | |
| 3563 | 3632 | g_cpu_type = TYPE_68040; |
| 3564 | 3633 | break; |
| 3565 | 3634 | default: |
| r6428 | r6429 | |
| 3752 | 3821 | case M68K_CPU_TYPE_68EC020: |
| 3753 | 3822 | case M68K_CPU_TYPE_68020: |
| 3754 | 3823 | case M68K_CPU_TYPE_68030: |
| 3824 | case M68K_CPU_TYPE_68EC030: | |
| 3755 | 3825 | if(g_instruction_table[instruction] == d68040_cinv) |
| 3756 | 3826 | return 0; |
| 3757 | 3827 | if(g_instruction_table[instruction] == d68040_cpush) |
| r6428 | r6429 | |
| 3766 | 3836 | return 0; |
| 3767 | 3837 | if(g_instruction_table[instruction] == d68040_move16_al_ai) |
| 3768 | 3838 | return 0; |
| 3769 | if(g_instruction_table[instruction] == d68040_pflush) | |
| 3770 | return 0; | |
| 3771 | 3839 | case M68K_CPU_TYPE_68040: |
| 3840 | case M68K_CPU_TYPE_68EC040: | |
| 3841 | case M68K_CPU_TYPE_68LC040: | |
| 3772 | 3842 | if(g_instruction_table[instruction] == d68020_cpbcc_16) |
| 3773 | 3843 | return 0; |
| 3774 | 3844 | if(g_instruction_table[instruction] == d68020_cpbcc_32) |
| r6428 | r6429 | |
| 3789 | 3859 | return 0; |
| 3790 | 3860 | if(g_instruction_table[instruction] == d68020_cptrapcc_32) |
| 3791 | 3861 | return 0; |
| 3862 | if(g_instruction_table[instruction] == d68040_pflush) | |
| 3863 | return 0; | |
| 3792 | 3864 | } |
| 3793 | 3865 | if(cpu_type != M68K_CPU_TYPE_68020 && cpu_type != M68K_CPU_TYPE_68EC020 && |
| 3794 | 3866 | (g_instruction_table[instruction] == d68020_callm || |
| r6428 | r6429 | |
|---|---|---|
| 262 | 262 | #include "mame.h" |
| 263 | 263 | extern void m68040_fpu_op0(m68ki_cpu_core *m68k); |
| 264 | 264 | extern void m68040_fpu_op1(m68ki_cpu_core *m68k); |
| 265 | extern void m68881_mmu_ops(m68ki_cpu_core *m68k); | |
| 265 | 266 | |
| 266 | 267 | /* ======================================================================== */ |
| 267 | 268 | /* ========================= INSTRUCTION HANDLERS ========================= */ |
| r6428 | r6429 | |
| 748 | 749 | pack 16 mm . 1000...101001... .......... . . U U U . . 13 13 13 |
| 749 | 750 | pea 32 . . 0100100001...... A..DXWLdx. U U U U U 6 6 5 5 5 |
| 750 | 751 | pflush 32 . . 1111010100011000 .......... . . . . S . . . . 4 TODO: correct timing |
| 751 | pm | |
| 752 | pmmu | |
| 752 | 753 | reset 0 . . 0100111001110000 .......... S S S S S 0 0 0 0 0 |
| 753 | 754 | ror 8 s . 1110...000011... .......... U U U U U 6 6 8 8 8 |
| 754 | 755 | ror 16 s . 1110...001011... .......... U U U U U 6 6 8 8 8 |
| r6428 | r6429 | |
| 7994 | 7995 | m68ki_push_32(m68k, ea); |
| 7995 | 7996 | } |
| 7996 | 7997 | |
| 7997 | ||
| 7998 | 7998 | M68KMAKE_OP(pflush, 32, ., .) |
| 7999 | 7999 | { |
| 8000 | 8000 | if ((CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type)) && (m68k->has_pmmu)) |
| 8001 | 8001 | { |
| 8002 | logerror("680 | |
| 8002 | logerror("68040: unhandled PFLUSH\n"); | |
| 8003 | 8003 | return; |
| 8004 | 8004 | } |
| 8005 | 8005 | m68ki_exception_1111(m68k); |
| 8006 | 8006 | } |
| 8007 | 8007 | |
| 8008 | M68KMAKE_OP(pm | |
| 8008 | M68KMAKE_OP(pmmu | |
| 8009 | 8009 | { |
| 8010 | UINT16 modes; | |
| 8011 | UINT32 ea; | |
| 8012 | ||
| 8013 | 8010 | if ((CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type)) && (m68k->has_pmmu)) |
| 8014 | 8011 | { |
| 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); | |
| 8117 | 8013 | } |
| 8118 | 8014 | else |
| 8119 | 8015 | { |
| r6428 | r6429 | |
|---|---|---|
| 5 | 5 | #if 0 |
| 6 | 6 | static const char copyright_notice[] = |
| 7 | 7 | "MUSASHI\n" |
| 8 | "Version 4.5 (2009-10- | |
| 8 | "Version 4.55 (2009-10-31)\n" | |
| 9 | 9 | "A portable Motorola M680x0 processor emulation engine.\n" |
| 10 | 10 | "Copyright Karl Stenerud. All rights reserved.\n" |
| 11 | 11 | "\n" |
| r6428 | r6429 | |
| 42 | 42 | |
| 43 | 43 | extern void m68040_fpu_op0(m68ki_cpu_core *m68k); |
| 44 | 44 | extern void m68040_fpu_op1(m68ki_cpu_core *m68k); |
| 45 | extern void m68881_mmu_ops(m68ki_cpu_core *m68k); | |
| 45 | 46 | |
| 46 | 47 | /* ======================================================================== */ |
| 47 | 48 | /* ================================= DATA ================================= */ |
| r6428 | r6429 | |
| 1720 | 1721 | } |
| 1721 | 1722 | |
| 1722 | 1723 | /**************************************************************************** |
| 1723 | * M68 | |
| 1724 | * M68 | |
| 1724 | 1725 | ****************************************************************************/ |
| 1725 | 1726 | |
| 1726 | 1727 | static CPU_INIT( m68ec040 ) |
| r6428 | r6429 | |
| 1763 | 1764 | } |
| 1764 | 1765 | |
| 1765 | 1766 | /**************************************************************************** |
| 1767 | * M68LC040 section | |
| 1768 | ****************************************************************************/ | |
| 1769 | ||
| 1770 | static 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 | ||
| 1795 | CPU_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 | /**************************************************************************** | |
| 1766 | 1810 | * SCC-68070 section |
| 1767 | 1811 | ****************************************************************************/ |
| 1768 | 1812 |
| r6428 | r6429 | |
|---|---|---|
| 976 | 976 | |
| 977 | 977 | # rule to ensure we build the header before building the core CPU file |
| 978 | 978 | $(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 | |
| 980 | 980 | |
| 981 | 981 | |
| 982 | 982 | |
| r6428 | r6429 | |
| 992 | 992 | |
| 993 | 993 | $(CPUOBJ)/dsp56k/dsp56k.o: $(CPUSRC)/dsp56k/dsp56k.c \ |
| 994 | 994 | $(CPUSRC)/dsp56k/dsp56ops.c \ |
| 995 | $(CPUSRC)/dsp56k/dsp56mem.c \ | |
| 996 | $(CPUSRC)/dsp56k/dsp56pcu.c \ | |
| 995 | 997 | $(CPUSRC)/dsp56k/dsp56k.h |
| 996 | 998 | |
| 997 | 999 |
| r6428 | r6429 | |
|---|---|---|
| 74 | 74 | ***************************************************************************/ |
| 75 | 75 | |
| 76 | 76 | static void reset_log(x86log_context *log); |
| 77 | extern int i386_dasm_one(char *buffer, UINT64 eip, const UINT8 *oprom, int mode); | |
| 77 | extern int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode); | |
| 78 | 78 | |
| 79 | 79 | |
| 80 | 80 | |
| r6428 | r6429 | |
| 237 | 237 | else |
| 238 | 238 | { |
| 239 | 239 | #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; | |
| 241 | 241 | #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; | |
| 243 | 243 | #endif |
| 244 | 244 | } |
| 245 | 245 |
| r6428 | r6429 | |
|---|---|---|
| 2865 | 2865 | /* HACK */ |
| 2866 | 2866 | if (lValue >= 0xfff0) |
| 2867 | 2867 | { |
| 2868 | logerror("Dsp56k : DO_2 operation changed %04x to 0000.\n", lValue); | |
| 2868 | 2869 | lValue = 0x0000; |
| 2869 | logerror("Dsp56k : DO_2 operation changed %04x to 0000.\n", lValue); | |
| 2870 | 2870 | } |
| 2871 | 2871 | |
| 2872 | 2872 | /* TODO: Fix for special cased SP S */ |
| r6428 | r6429 | |
|---|---|---|
| 90 | 90 | /*************************************************************************** |
| 91 | 91 | INITIALIZATION AND RESET |
| 92 | 92 | ***************************************************************************/ |
| 93 | static void pcu_init(dsp56k_core* cpustate) | |
| 93 | static void pcu_init(dsp56k_core* cpustate, const device_config *device) | |
| 94 | 94 | { |
| 95 | / | |
| 95 | /* Init the irq table */ | |
| 96 | 96 | 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); | |
| 97 | 108 | } |
| 98 | 109 | |
| 99 | 110 | static void pcu_reset(dsp56k_core* cpustate) |
| 100 | 111 | { |
| 101 | 112 | int i; |
| 102 | 113 | |
| 103 | / | |
| 114 | /* When reset is deasserted, set MA, MB, and MC from MODA, MODB, and MODC lines. */ | |
| 104 | 115 | MA_bit_set(cpustate, cpustate->modA_state); |
| 105 | 116 | MB_bit_set(cpustate, cpustate->modB_state); |
| 106 | 117 | MC_bit_set(cpustate, cpustate->modC_state); |
| 107 | 118 | |
| 108 | / | |
| 119 | /* Reset based on the operating mode. */ | |
| 109 | 120 | switch(dsp56k_operating_mode(cpustate)) |
| 110 | 121 | { |
| 111 | 122 | case 0x00: |
| 112 | 123 | logerror("Dsp56k in Special Bootstrap Mode 1\n"); |
| 113 | 124 | |
| 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 */ | |
| 116 | 127 | cpustate->bootstrap_mode = BOOTSTRAP_OFF; |
| 117 | 128 | |
| 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. */ | |
| 120 | 131 | for (i = 0; i < 0x800; i++) |
| 121 | 132 | { |
| 122 | 133 | UINT32 mem_offset = (0xc000<<1) + (i<<1); /* TODO: TEST */ |
| 123 | 134 | |
| 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 */ | |
| 130 | 141 | UINT8 mem_value_low = memory_read_byte_16le(cpustate->program, mem_offset); /* TODO: IS THIS READING RIGHT? */ |
| 131 | 142 | UINT8 mem_value_high = memory_read_byte_16be(cpustate->program, mem_offset); |
| 132 | 143 | dsp56k_program_ram[i] = (mem_value_high << 8) || mem_value_low; |
| 133 | 144 | } |
| 134 | 145 | |
| 135 | / | |
| 146 | /* HACK - Set the PC to 0x0000 as per the boot ROM. */ | |
| 136 | 147 | PC = 0x0000; |
| 137 | 148 | |
| 138 | / | |
| 149 | /* HACK - All done! Set the Operating Mode to 2 as per the boot ROM. */ | |
| 139 | 150 | MB_bit_set(cpustate, 1); |
| 140 | 151 | MA_bit_set(cpustate, 0); |
| 141 | 152 | cpustate->PCU.reset_vector = 0xe000; |
| r6428 | r6429 | |
| 144 | 155 | case 0x01: |
| 145 | 156 | logerror("Dsp56k in Special Bootstrap Mode 2\n"); |
| 146 | 157 | |
| 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. */ | |
| 152 | 163 | if (memory_read_word_16le(cpustate->program, 0xc000<<1) & 0x8000) |
| 153 | 164 | { |
| 154 | 165 | cpustate->bootstrap_mode = BOOTSTRAP_SSIX; |
| r6428 | r6429 | |
| 160 | 171 | logerror("DSP56k : Currently in (hacked) bootstrap mode - reading from Host Interface.\n"); |
| 161 | 172 | } |
| 162 | 173 | |
| 163 | / | |
| 174 | /* HACK - Set the PC to 0x0000 as per the boot ROM. */ | |
| 164 | 175 | PC = 0x0000; |
| 165 | 176 | |
| 166 | / | |
| 177 | /* HACK - Not done yet, but set the Operating Mode to 2 in preparation. */ | |
| 167 | 178 | MB_bit_set(cpustate, 1); |
| 168 | 179 | MA_bit_set(cpustate, 0); |
| 169 | 180 | cpustate->PCU.reset_vector = 0xe000; |
| r6428 | r6429 | |
| 177 | 188 | |
| 178 | 189 | case 0x03: |
| 179 | 190 | logerror("Dsp56k in Development Expanded Mode\n"); |
| 180 | / | |
| 191 | /* TODO: Disable internal ROM, etc. Likely a tricky thing for MAME? */ | |
| 181 | 192 | PC = 0x0000; |
| 182 | 193 | cpustate->PCU.reset_vector = 0x0000; |
| 183 | 194 | break; |
| 184 | 195 | } |
| 185 | 196 | |
| 186 | // Set registers properly | |
| 187 | // 1-17 Clear Interrupt Priority Register (IPR) | |
| 197 | /* Set registers properly */ | |
| 198 | /* 1-17 Clear Interrupt Priority Register (IPR) */ | |
| 188 | 199 | IPR = 0x0000; |
| 189 | 200 | |
| 190 | / | |
| 201 | /* FM.5-4 */ | |
| 191 | 202 | I_bits_set(cpustate, 0x03); |
| 192 | 203 | S_bits_set(cpustate, 0); |
| 193 | 204 | L_bit_set(cpustate, 0); |
| 194 | 205 | S_bit_set(cpustate, 0); |
| 195 | 206 | FV_bit_set(cpustate, 0); |
| 196 | 207 | |
| 197 | / | |
| 208 | /* FM.7-25 */ | |
| 198 | 209 | E_bit_set(cpustate, 0); |
| 199 | 210 | U_bit_set(cpustate, 0); |
| 200 | 211 | N_bit_set(cpustate, 0); |
| 201 | 212 | V_bit_set(cpustate, 0); |
| 202 | 213 | Z_bit_set(cpustate, 0); |
| 203 | 214 | |
| 204 | / | |
| 215 | /* FM.5-4+ */ | |
| 205 | 216 | C_bit_set(cpustate, 0); |
| 206 | 217 | LF_bit_set(cpustate, 0); |
| 207 | 218 | SP = 0x0000; |
| 208 | 219 | |
| 209 | / | |
| 220 | /* FM.5-14 (OMR) */ | |
| 210 | 221 | SA_bit_set(cpustate, 0); |
| 211 | 222 | R_bit_set(cpustate, 0); |
| 212 | 223 | SD_bit_set(cpustate, 0); |
| 213 | 224 | CD_bit_set(cpustate, 0); |
| 214 | 225 | |
| 215 | / | |
| 226 | /* Clear out the pending interrupt list */ | |
| 216 | 227 | dsp56k_clear_pending_interrupts(cpustate); |
| 217 | 228 | } |
| 218 | 229 | |
| r6428 | r6429 | |
| 227 | 238 | |
| 228 | 239 | static dsp56k_irq_data dsp56k_interrupt_sources[32]; |
| 229 | 240 | |
| 230 | / | |
| 241 | /* TODO: Figure out how to switch on level versus edge-triggered. */ | |
| 231 | 242 | static void pcu_service_interrupts(dsp56k_core* cpustate) |
| 232 | 243 | { |
| 233 | 244 | int i; |
| 234 | 245 | |
| 235 | / | |
| 246 | /* Count list of pending interrupts */ | |
| 236 | 247 | int num_servicable = dsp56k_count_pending_interrupts(cpustate); |
| 237 | 248 | |
| 238 | 249 | if (num_servicable == 0) |
| 239 | 250 | return; |
| 240 | 251 | |
| 241 | / | |
| 252 | /* Sort list according to priority */ | |
| 242 | 253 | dsp56k_sort_pending_interrupts(cpustate, num_servicable); |
| 243 | 254 | |
| 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 :) */ | |
| 246 | 257 | for (i = 0; i < num_servicable; i++) |
| 247 | 258 | { |
| 248 | 259 | const int interrupt_index = cpustate->PCU.pending_interrupts[i]; |
| 249 | 260 | |
| 250 | / | |
| 261 | /* Get the priority of the interrupt - a return value of -1 means disabled! */ | |
| 251 | 262 | INT8 priority = dsp56k_get_irq_priority(cpustate, interrupt_index); |
| 252 | 263 | |
| 253 | / | |
| 264 | /* 1-12 Make sure you're not masked out against the Interrupt Mask Bits (disabled is handled for free here) */ | |
| 254 | 265 | if (priority >= I_bits(cpustate)) |
| 255 | 266 | { |
| 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. */ | |
| 258 | 269 | cpustate->ppc = PC; |
| 259 | 270 | |
| 260 | / | |
| 271 | /* Are you anything but the Host Command interrupt? */ | |
| 261 | 272 | if (interrupt_index != 22) |
| 262 | 273 | { |
| 263 | / | |
| 274 | /* Execute a normal interrupt */ | |
| 264 | 275 | PC = dsp56k_interrupt_sources[interrupt_index].irq_vector; |
| 265 | 276 | } |
| 266 | 277 | else |
| 267 | 278 | { |
| 268 | / | |
| 279 | /* The host command input has a floating vector. */ | |
| 269 | 280 | const UINT16 irq_vector = HV_bits(cpustate) << 1; |
| 270 | 281 | |
| 271 | 282 | PC = irq_vector; |
| 272 | 283 | |
| 273 | / | |
| 284 | /* TODO: 5-9 5-11 Gotta' Clear HC (HCP gets it too) when taking this exception! */ | |
| 274 | 285 | HC_bit_set(cpustate, 0); |
| 275 | 286 | } |
| 276 | 287 | } |
| r6428 | r6429 | |
| 306 | 317 | /* Construct a table containing pertient IRQ information */ |
| 307 | 318 | static void dsp56k_irq_table_init(void) |
| 308 | 319 | { |
| 309 | // 1-14 + 1-18 | |
| 310 | // TODO: Cull host command stuff appropriately | |
| 320 | /* 1-14 + 1-18 */ | |
| 321 | /* TODO: Cull host command stuff appropriately */ | |
| 311 | 322 | /* array index . vector . token */ |
| 312 | 323 | dsp56k_set_irq_source(0, 0x0000, "Hardware RESET"); |
| 313 | 324 | dsp56k_set_irq_source(1, 0x0002, "Illegal Instruction"); |
| r6428 | r6429 | |
| 370 | 381 | { |
| 371 | 382 | int i, j; |
| 372 | 383 | |
| 373 | / | |
| 384 | /* We're going to be sorting the priorities */ | |
| 374 | 385 | int priority_list[32]; |
| 375 | 386 | for (i = 0; i < num; i++) |
| 376 | 387 | { |
| 377 | 388 | priority_list[i] = dsp56k_get_irq_priority(cpustate, cpustate->PCU.pending_interrupts[i]); |
| 378 | 389 | } |
| 379 | 390 | |
| 380 | / | |
| 391 | /* Bubble sort should be good enough for us */ | |
| 381 | 392 | for (i = 0; i < num; i++) |
| 382 | 393 | { |
| 383 | 394 | for(j = 0; j < num-1; j++) |
| r6428 | r6429 | |
| 386 | 397 | { |
| 387 | 398 | int holder; |
| 388 | 399 | |
| 389 | / | |
| 400 | /* Swap priorities */ | |
| 390 | 401 | holder = priority_list[j+1]; |
| 391 | 402 | priority_list[j+1] = priority_list[j]; |
| 392 | 403 | priority_list[j] = holder; |
| 393 | 404 | |
| 394 | / | |
| 405 | /* Swap irq indices. */ | |
| 395 | 406 | holder = cpustate->PCU.pending_interrupts[j+1]; |
| 396 | 407 | cpustate->PCU.pending_interrupts[j+1] = cpustate->PCU.pending_interrupts[j]; |
| 397 | 408 | cpustate->PCU.pending_interrupts[j] = holder; |
| r6428 | r6429 | |
| 399 | 410 | } |
| 400 | 411 | } |
| 401 | 412 | |
| 402 | / | |
| 413 | /* TODO: 1-17 Now sort each of the priority levels within their categories. */ | |
| 403 | 414 | } |
| 404 | 415 | |
| 405 | 416 | /* Given an index into the irq table, return the interrupt's current priority */ |
| 406 | 417 | static INT8 dsp56k_get_irq_priority(dsp56k_core* cpustate, int index) |
| 407 | 418 | { |
| 408 | / | |
| 419 | /* 1-12 */ | |
| 409 | 420 | switch (index) |
| 410 | 421 | { |
| 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 */ | |
| 417 | 428 | |
| 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 */ | |
| 446 | 457 | |
| 447 | 458 | default: break; |
| 448 | 459 | } |
| r6428 | r6429 | |
|---|---|---|
| 51 | 51 | /*************************************************************************** |
| 52 | 52 | COMPONENT FUNCTIONALITY |
| 53 | 53 | ***************************************************************************/ |
| 54 | / | |
| 54 | /* 1-9 ALU */ | |
| 55 | 55 | // #include "dsp56alu.c" |
| 56 | 56 | |
| 57 | / | |
| 57 | /* 1-10 Address Generation Unit (AGU) */ | |
| 58 | 58 | // #include "dsp56agu.c" |
| 59 | 59 | |
| 60 | / | |
| 60 | /* 1-11 Program Control Unit (PCU) */ | |
| 61 | 61 | #include "dsp56pcu.c" |
| 62 | 62 | |
| 63 | / | |
| 63 | /* 5-1 Host Interface (HI) */ | |
| 64 | 64 | //#include "dsp56hi.c" |
| 65 | 65 | |
| 66 | / | |
| 66 | /* 4-8 Memory handlers for on-chip peripheral memory. */ | |
| 67 | 67 | #include "dsp56mem.c" |
| 68 | 68 | |
| 69 | 69 | |
| r6428 | r6429 | |
| 154 | 154 | break; |
| 155 | 155 | } |
| 156 | 156 | |
| 157 | / | |
| 157 | /* If the reset line isn't asserted, service interrupts */ | |
| 158 | 158 | // TODO: Is it right to immediately service interrupts? |
| 159 | 159 | //if (cpustate->reset_state != TRUE) |
| 160 | 160 | // pcu_service_interrupts(); |
| r6428 | r6429 | |
| 164 | 164 | /*************************************************************************** |
| 165 | 165 | INITIALIZATION AND SHUTDOWN |
| 166 | 166 | ***************************************************************************/ |
| 167 | static 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 | ||
| 185 | static 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 | ||
| 167 | 194 | static CPU_INIT( dsp56k ) |
| 168 | 195 | { |
| 169 | 196 | dsp56k_core* cpustate = get_safe_token(device); |
| 170 | 197 | |
| 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); | |
| 175 | 202 | |
| 176 | / | |
| 203 | /* HACK - You're not in bootstrap mode upon bootup */ | |
| 177 | 204 | cpustate->bootstrap_mode = BOOTSTRAP_OFF; |
| 178 | 205 | |
| 179 | / | |
| 206 | /* Clear the irq states */ | |
| 180 | 207 | cpustate->modA_state = FALSE; |
| 181 | 208 | cpustate->modB_state = FALSE; |
| 182 | 209 | cpustate->modC_state = FALSE; |
| 183 | 210 | cpustate->reset_state = FALSE; |
| 184 | 211 | |
| 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); | |
| 188 | 224 | |
| 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 | ||
| 189 | 234 | //cpustate->config = device->static_config; |
| 190 | 235 | //cpustate->irq_callback = irqcallback; |
| 191 | 236 | cpustate->device = device; |
| r6428 | r6429 | |
| 197 | 242 | memory_set_direct_update_handler(cpustate->program, dsp56k_direct_handler); |
| 198 | 243 | } |
| 199 | 244 | |
| 245 | ||
| 246 | /*************************************************************************** | |
| 247 | RESET BEHAVIOR | |
| 248 | ***************************************************************************/ | |
| 200 | 249 | static void agu_reset(dsp56k_core* cpustate) |
| 201 | 250 | { |
| 202 | / | |
| 251 | /* FM.4-3 */ | |
| 203 | 252 | R0 = 0x0000; |
| 204 | 253 | R1 = 0x0000; |
| 205 | 254 | R2 = 0x0000; |
| r6428 | r6429 | |
| 263 | 312 | /*************************************************************************** |
| 264 | 313 | CORE EXECUTION LOOP |
| 265 | 314 | ***************************************************************************/ |
| 266 | ||
| 267 | 315 | static CPU_EXECUTE( dsp56k ) |
| 268 | 316 | { |
| 269 | 317 | dsp56k_core* cpustate = get_safe_token(device); |
| r6428 | r6429 | |
| 272 | 320 | if (cpustate->reset_state) |
| 273 | 321 | return cycles; |
| 274 | 322 | |
| 275 | / | |
| 323 | /* HACK - if you're in bootstrap mode, simply pretend you ate up all your cycles waiting for data. */ | |
| 276 | 324 | if (cpustate->bootstrap_mode != BOOTSTRAP_OFF) |
| 277 | 325 | return cycles; |
| 278 | 326 | |
| r6428 | r6429 | |
| 304 | 352 | * Internal Memory Maps |
| 305 | 353 | ****************************************************************************/ |
| 306 | 354 | static 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? */ | |
| 309 | 357 | ADDRESS_MAP_END |
| 310 | 358 | |
| 311 | 359 | static 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 */ | |
| 314 | 362 | ADDRESS_MAP_END |
| 315 | 363 | |
| 316 | 364 | |
| 317 | 365 | /************************************************************************** |
| 318 | 366 | * Generic set_info/get_info |
| 319 | 367 | **************************************************************************/ |
| 320 | ||
| 321 | 368 | static CPU_SET_INFO( dsp56k ) |
| 322 | 369 | { |
| 323 | 370 | dsp56k_core* cpustate = get_safe_token(device); |
| r6428 | r6429 | |
| 344 | 391 | case CPUINFO_INT_REGISTER + DSP56K_X: X = info->i & 0xffffffff; break; |
| 345 | 392 | case CPUINFO_INT_REGISTER + DSP56K_Y: Y = info->i & 0xffffffff; break; |
| 346 | 393 | |
| 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? */ | |
| 349 | 396 | |
| 350 | 397 | case CPUINFO_INT_REGISTER + DSP56K_R0: R0 = info->i & 0xffff; break; |
| 351 | 398 | case CPUINFO_INT_REGISTER + DSP56K_R1: R1 = info->i & 0xffff; break; |
| r6428 | r6429 | |
| 392 | 439 | |
| 393 | 440 | switch (state) |
| 394 | 441 | { |
| 395 | / | |
| 442 | /* --- the following bits of info are returned as 64-bit signed integers --- */ | |
| 396 | 443 | case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(dsp56k_core); break; |
| 397 | 444 | case CPUINFO_INT_INPUT_LINES: info->i = 4; break; |
| 398 | 445 | case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0x0000; break; |
| r6428 | r6429 | |
| 404 | 451 | case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; // ? |
| 405 | 452 | case CPUINFO_INT_MAX_CYCLES: info->i = 8; break; // ? |
| 406 | 453 | |
| 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 */ | |
| 409 | 456 | case CPUINFO_INT_ADDRBUS_SHIFT_PROGRAM: info->i = -1; break; |
| 410 | 457 | case CPUINFO_INT_DATABUS_WIDTH_DATA: info->i = 16; break; |
| 411 | 458 | case CPUINFO_INT_ADDRBUS_WIDTH_DATA: info->i = 16; break; |
| r6428 | r6429 | |
| 455 | 502 | /* case CPUINFO_INT_REGISTER + DSP56K_TEMP: info->i = TEMP; break; */ |
| 456 | 503 | /* case CPUINFO_INT_REGISTER + DSP56K_STATUS: info->i = STATUS; break; */ |
| 457 | 504 | |
| 458 | / | |
| 505 | /* The CPU stack */ | |
| 459 | 506 | case CPUINFO_INT_REGISTER + DSP56K_ST0: info->i = ST0; break; |
| 460 | 507 | case CPUINFO_INT_REGISTER + DSP56K_ST1: info->i = ST1; break; |
| 461 | 508 | case CPUINFO_INT_REGISTER + DSP56K_ST2: info->i = ST2; break; |
| r6428 | r6429 | |
| 473 | 520 | case CPUINFO_INT_REGISTER + DSP56K_ST14: info->i = ST14; break; |
| 474 | 521 | case CPUINFO_INT_REGISTER + DSP56K_ST15: info->i = ST15; break; |
| 475 | 522 | |
| 476 | / | |
| 523 | /* --- the following bits of info are returned as pointers to data or functions --- */ | |
| 477 | 524 | case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(dsp56k); break; |
| 478 | 525 | case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(dsp56k); break; |
| 479 | 526 | case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(dsp56k); break; |
| r6428 | r6429 | |
| 492 | 539 | case CPUINFO_PTR_INTERNAL_MEMORY_MAP_PROGRAM: |
| 493 | 540 | info->internal_map16 = ADDRESS_MAP_NAME(dsp56156_program_map); break; |
| 494 | 541 | |
| 495 | / | |
| 542 | /* --- the following bits of info are returned as NULL-terminated strings --- */ | |
| 496 | 543 | case DEVINFO_STR_NAME: strcpy(info->s, "DSP56156"); break; |
| 497 | 544 | case DEVINFO_STR_FAMILY: strcpy(info->s, "Motorola DSP56156"); break; |
| 498 | 545 | case DEVINFO_STR_VERSION: strcpy(info->s, "0.1"); break; |
| r6428 | r6429 | |
| 550 | 597 | /* case CPUINFO_STR_REGISTER + DSP56K_TEMP: sprintf(info->s, "TMP: %04x", TEMP); break; */ |
| 551 | 598 | /* case CPUINFO_STR_REGISTER + DSP56K_STATUS: sprintf(info->s, "STS: %02x", STATUS); break; */ |
| 552 | 599 | |
| 553 | / | |
| 600 | /* The CPU stack */ | |
| 554 | 601 | case CPUINFO_STR_REGISTER + DSP56K_ST0: sprintf(info->s, "ST0 : %08x", ST0); break; |
| 555 | 602 | case CPUINFO_STR_REGISTER + DSP56K_ST1: sprintf(info->s, "ST1 : %08x", ST1); break; |
| 556 | 603 | case CPUINFO_STR_REGISTER + DSP56K_ST2: sprintf(info->s, "ST2 : %08x", ST2); break; |
| r6428 | r6429 | |
|---|---|---|
| 2115 | 2115 | sprintf(s, "???"); |
| 2116 | 2116 | } |
| 2117 | 2117 | |
| 2118 | ||
| 2118 | ||
| 2119 | 2119 | { |
| 2120 | 2120 | UINT8 op; |
| 2121 | 2121 |
| r6428 | r6429 | |
|---|---|---|
| 1144 | 1144 | UINT8 x; |
| 1145 | 1145 | UINT16 frameptr; |
| 1146 | 1146 | PUSH16(cpustate,REG16(BP)); |
| 1147 | ||
| 1147 | ||
| 1148 | 1148 | if(!STACK_32BIT) |
| 1149 | 1149 | frameptr = REG16(SP); |
| 1150 | 1150 | else |
| 1151 | 1151 | frameptr = REG32(ESP); |
| 1152 | ||
| 1152 | ||
| 1153 | 1153 | if(level > 0) |
| 1154 | 1154 | { |
| 1155 | 1155 | for(x=1;x<level-1;x++) |
| r6428 | r6429 | |
|---|---|---|
| 1009 | 1009 | frameptr = REG16(SP); |
| 1010 | 1010 | else |
| 1011 | 1011 | frameptr = REG32(ESP); |
| 1012 | ||
| 1012 | ||
| 1013 | 1013 | if(level > 0) |
| 1014 | 1014 | { |
| 1015 | 1015 | for(x=1;x<level-1;x++) |
| r6428 | r6429 | |
|---|---|---|
| 1257 | 1257 | UML_MOV(block, MEM(&ppc->param0), IREG(0)); // mov [param0],i0 |
| 1258 | 1258 | UML_MOV(block, MEM(&ppc->param1), IMM(TRANSLATE_FETCH)); // mov [param1],TRANSLATE_FETCH |
| 1259 | 1259 | UML_CALLC(block, ppccom_tlb_fill, ppc); // callc tlbfill,ppc |
| 1260 | UML_SHR(block, IREG(1), IREG(0), IMM(12)); // shr i1,i0,1 | |
| 1260 | UML_SHR(block, IREG(1), IREG(0), IMM(12)); // shr i1,i0,12 | |
| 1261 | 1261 | UML_LOAD(block, IREG(1), (void *)vtlb_table(ppc->vtlb), IREG(1), DWORD); // load i1,[vtlb],i1,dword |
| 1262 | 1262 | UML_TEST(block, IREG(1), IMM(VTLB_FETCH_ALLOWED)); // test i1,VTLB_FETCH_ALLOWED |
| 1263 | 1263 | UML_JMPc(block, IF_Z, isi = label++); // jmp isi,z |
| r6428 | r6429 | |
|---|---|---|
| 522 | 522 | /* if we're simulating the 603 MMU, fill in the data and stop here */ |
| 523 | 523 | if (ppc->cap & PPCCAP_603_MMU) |
| 524 | 524 | { |
| 525 | UINT32 entry = vtlb_table(ppc->vtlb)[*address >> 12]; | |
| 525 | 526 | ppc->mmu603_cmp = 0x80000000 | ((segreg & 0xffffff) << 7) | (0 << 6) | ((*address >> 22) & 0x3f); |
| 526 | 527 | ppc->mmu603_hash[0] = hashbase | ((hash << 6) & hashmask); |
| 527 | 528 | 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 | } | |
| 528 | 534 | return DSISR_NOT_FOUND | ((transtype == TRANSLATE_WRITE) ? DSISR_STORE : 0); |
| 529 | 535 | } |
| 530 | 536 |
| r6428 | r6429 | |
|---|---|---|
| 255 | 255 | } |
| 256 | 256 | if (op == -1) |
| 257 | 257 | { |
| 258 | sprintf(buffer, "dw | |
| 258 | sprintf(buffer, "dw | |
| 259 | 259 | return cnt | DASMFLAG_SUPPORTED; |
| 260 | 260 | } |
| 261 | 261 | buffertmp = buffer; |
| r6428 | r6429 | |
| 313 | 313 | cp++; |
| 314 | 314 | switch (*cp++) |
| 315 | 315 | { |
| 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 | |
| 318 | 318 | case 'D': sprintf(num,"%02Xh",d); break; |
| 319 | 319 | case 'K': sprintf(num,"%d",k); break; |
| 320 | 320 | case 'N': sprintf(num,"%s",nextar[n]); break; |
| r6428 | r6429 | |
|---|---|---|
| 159 | 159 | if ( cpustate->IFLAGS & ( 1 << irqline ) ) { |
| 160 | 160 | cpustate->halted = 0; |
| 161 | 161 | switch( irqline ) { |
| 162 | case | |
| 162 | case ILL_INT: | |
| 163 | 163 | sm8500_do_interrupt( cpustate, 0x101C ); |
| 164 | 164 | break; |
| 165 | case | |
| 165 | case WDT_INT: | |
| 166 | 166 | sm8500_do_interrupt( cpustate, 0x101E ); |
| 167 | 167 | break; |
| 168 | 168 | case NMI_INT: |
| r6428 | r6429 | |
|---|---|---|
| 121 | 121 | #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) |
| 122 | 122 | #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) |
| 123 | 123 | #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) | |
| 125 | 124 | #define UML_ADDC(block, dst, src1, src2) do { drcuml_block_append_3(block, DRCUML_OP_ADDC, 4, IF_ALWAYS, dst, src1, src2); } while (0) |
| 126 | 125 | #define UML_SUB(block, dst, src1, src2) do { drcuml_block_append_3(block, DRCUML_OP_SUB, 4, IF_ALWAYS, dst, src1, src2); } while (0) |
| 127 | 126 | #define UML_SUBB(block, dst, src1, src2) do { drcuml_block_append_3(block, DRCUML_OP_SUBB, 4, IF_ALWAYS, dst, src1, src2); } while (0) |
| r6428 | r6429 | |
|---|---|---|
| 204 | 204 | UINT64 count_zero_time; |
| 205 | 205 | UINT32 compare_armed; |
| 206 | 206 | emu_timer * compare_int_timer; |
| 207 | ||
| 207 | ||
| 208 | 208 | /* derived info based on flavor */ |
| 209 | 209 | UINT32 pfnmask; |
| 210 | 210 | UINT8 tlbentries; |
| r6428 | r6429 | |
|---|---|---|
| 1125 | 1125 | drcuml_state *drcuml = mips3->impstate->drcuml; |
| 1126 | 1126 | UINT32 offset = 0x180; |
| 1127 | 1127 | drcuml_codelabel next = 1; |
| 1128 | drcuml_codelabel skip = 2; | |
| 1128 | 1129 | drcuml_block *block; |
| 1129 | 1130 | jmp_buf errorbuf; |
| 1130 | 1131 | |
| r6428 | r6429 | |
| 1147 | 1148 | UML_HANDLE(block, *exception_handle); // handle name |
| 1148 | 1149 | |
| 1149 | 1150 | /* 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) | |
| 1151 | 1152 | { |
| 1152 | 1153 | /* set BadVAddr to the fault address */ |
| 1153 | 1154 | UML_GETEXP(block, IREG(0)); // getexp i0 |
| r6428 | r6429 | |
| 1203 | 1204 | /* choose our target PC */ |
| 1204 | 1205 | UML_ADD(block, IREG(0), IREG(3), IMM(0xbfc00200)); // add i0,i3,0xbfc00200 |
| 1205 | 1206 | 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>: | |
| 1207 | 1210 | |
| 1208 | 1211 | /* adjust cycles */ |
| 1209 | 1212 | UML_SUB(block, MEM(&mips3->icount), MEM(&mips3->icount), IREG(1)); // sub icount,icount,cycles,S |
| r6428 | r6429 | |
|---|---|---|
| 86 | 86 | mips->icache_size = config->icache; |
| 87 | 87 | mips->dcache_size = config->dcache; |
| 88 | 88 | mips->system_clock = config->system_clock; |
| 89 | ||
| 89 | ||
| 90 | 90 | /* configure flavor-specific parameters */ |
| 91 | 91 | mips->pfnmask = 0x00ffffff; |
| 92 | 92 | mips->tlbentries = MIPS3_MAX_TLB_ENTRIES; |
| 93 | ||
| 93 | ||
| 94 | 94 | /* VR4300 and VR5432 have 4 fewer PFN bits, and only 32 TLB entries */ |
| 95 | 95 | if (flavor == MIPS3_TYPE_VR4300) |
| 96 | 96 | { |
| r6428 | r6429 | |
|---|---|---|
| 3512 | 3512 | sprintf(info->s, "%c%c%c%c", |
| 3513 | 3513 | cpustate->flags & 0x80 ? 'S':'.', |
| 3514 | 3514 | cpustate->flags & 0x40 ? 'Z':'.', |
| 3515 | cpustate->flags & 0x | |
| 3515 | cpustate->flags & 0x10 ? 'V':'.', | |
| 3516 | 3516 | cpustate->flags & 0x10 ? 'C':'.'); |
| 3517 | 3517 | break; |
| 3518 | 3518 | case CPUINFO_STR_REGISTER+CP1610_R0: sprintf(info->s, "R0:%04X", cpustate->r[0]); break; |
| r6428 | r6429 | |
|---|---|---|
| 4 | 4 | |
| 5 | 5 | CPU_DISASSEMBLE( cp1610 ) |
| 6 | 6 | { |
| 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]; | |
| 9 | 8 | UINT16 subop; |
| 10 | 9 | UINT16 ea, ea1, ea2; |
| 11 | 10 | unsigned size = 1; |
| r6428 | r6429 | |
| 19 | 18 | sprintf(buffer, "HLT"); |
| 20 | 19 | break; |
| 21 | 20 | case 0x001: /* 0 000 000 001 */ |
| 22 | subop = oprom | |
| 21 | subop = oprom | |
| 23 | 22 | switch (subop & 0x3f8) |
| 24 | 23 | { |
| 25 | 24 | case 0x280: /* 1 010 000 xxx */ |
| r6428 | r6429 | |
| 33 | 32 | size += 1; |
| 34 | 33 | break; |
| 35 | 34 | case 0x2b8: /* 1 010 111 xxx */ |
| 36 | ea1 = oprom16[2]; | |
| 37 | ea2 = oprom16[3]; | |
| 35 | ea1 = oprom[2]; | |
| 36 | ea2 = oprom[3]; | |
| 38 | 37 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 39 | 38 | sprintf(buffer,"MVII #%04X, R%01d",ea,subop&7); |
| 40 | 39 | size += 3; |
| r6428 | r6429 | |
| 50 | 49 | size += 1; |
| 51 | 50 | break; |
| 52 | 51 | case 0x2f8: /* 1 011 111 xxx */ |
| 53 | ea1 = oprom16[2]; | |
| 54 | ea2 = oprom16[3]; | |
| 52 | ea1 = oprom[2]; | |
| 53 | ea2 = oprom[3]; | |
| 55 | 54 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 56 | 55 | sprintf(buffer,"ADDI #%04X, R%01d",ea,subop&7); |
| 57 | 56 | size += 3; |
| r6428 | r6429 | |
| 67 | 66 | size += 1; |
| 68 | 67 | break; |
| 69 | 68 | case 0x338: /* 1 100 111 xxx */ |
| 70 | ea1 = oprom16[2]; | |
| 71 | ea2 = oprom16[3]; | |
| 69 | ea1 = oprom[2]; | |
| 70 | ea2 = oprom[3]; | |
| 72 | 71 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 73 | 72 | sprintf(buffer,"SUBI #%04X, R%01d",ea,subop&7); |
| 74 | 73 | size += 3; |
| r6428 | r6429 | |
| 84 | 83 | size += 1; |
| 85 | 84 | break; |
| 86 | 85 | case 0x378: /* 1 101 111 xxx */ |
| 87 | ea1 = oprom16[2]; | |
| 88 | ea2 = oprom16[3]; | |
| 86 | ea1 = oprom[2]; | |
| 87 | ea2 = oprom[3]; | |
| 89 | 88 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 90 | 89 | sprintf(buffer,"CMPI #%04X, R%01d",ea,subop&7); |
| 91 | 90 | size += 3; |
| r6428 | r6429 | |
| 101 | 100 | size += 1; |
| 102 | 101 | break; |
| 103 | 102 | case 0x3b8: /* 1 110 111 xxx */ |
| 104 | ea1 = oprom16[2]; | |
| 105 | ea2 = oprom16[3]; | |
| 103 | ea1 = oprom[2]; | |
| 104 | ea2 = oprom[3]; | |
| 106 | 105 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 107 | 106 | sprintf(buffer,"ANDI #%04X, R%01d",ea,subop&7); |
| 108 | 107 | size += 3; |
| r6428 | r6429 | |
| 118 | 117 | size += 1; |
| 119 | 118 | break; |
| 120 | 119 | case 0x3f8: /* 1 111 111 xxx */ |
| 121 | ea1 = oprom16[2]; | |
| 122 | ea2 = oprom16[3]; | |
| 120 | ea1 = oprom[2]; | |
| 121 | ea2 = oprom[3]; | |
| 123 | 122 | ea = ((ea2&0xff)<<8) | (ea1&0xff); |
| 124 | 123 | sprintf(buffer,"XORI #%04X, R%01d",ea,subop&7); |
| 125 | 124 | size += 3; |
| r6428 | r6429 | |
| 137 | 136 | break; |
| 138 | 137 | case 0x004: /* 0 000 000 100 */ |
| 139 | 138 | size += 2; |
| 140 | ea1 = oprom16[1]; | |
| 141 | ea2 = oprom16[2]; | |
| 139 | ea1 = oprom[1]; | |
| 140 | ea2 = oprom[2]; | |
| 142 | 141 | ea = ((ea1<<8)&0xfc00) + (ea2&0x3ff); |
| 143 | 142 | if ((ea1&0x300) == 0x300) |
| 144 | 143 | { |
| r6428 | r6429 | |
| 762 | 761 | break; |
| 763 | 762 | case 0x200: /* 1 000 000 000 */ |
| 764 | 763 | size += 1; |
| 765 | ea = oprom | |
| 764 | ea = oprom | |
| 766 | 765 | sprintf(buffer, "B %04X",pc+2+ea); |
| 767 | 766 | break; |
| 768 | 767 | case 0x201: /* 1 000 000 001 */ |
| 769 | 768 | size += 1; |
| 770 | ea = oprom | |
| 769 | ea = oprom | |
| 771 | 770 | sprintf(buffer, "BC %04X",pc+2+ea); |
| 772 | 771 | break; |
| 773 | 772 | case 0x202: /* 1 000 000 010 */ |
| 774 | 773 | size += 1; |
| 775 | ea = oprom | |
| 774 | ea = oprom | |
| 776 | 775 | sprintf(buffer, "BOV %04X",pc+2+ea); |
| 777 | 776 | break; |
| 778 | 777 | case 0x203: /* 1 000 000 011 */ |
| 779 | 778 | size += 1; |
| 780 | ea = oprom | |
| 779 | ea = oprom | |
| 781 | 780 | sprintf(buffer, "BPL %04X",pc+2+ea); |
| 782 | 781 | break; |
| 783 | 782 | case 0x204: /* 1 000 000 100 */ |
| 784 | 783 | size += 1; |
| 785 | ea = oprom | |
| 784 | ea = oprom | |
| 786 | 785 | sprintf(buffer, "BZE %04X",pc+2+ea); |
| 787 | 786 | break; |
| 788 | 787 | case 0x205: /* 1 000 000 101 */ |
| 789 | 788 | size += 1; |
| 790 | ea = oprom | |
| 789 | ea = oprom | |
| 791 | 790 | sprintf(buffer, "BLT %04X",pc+2+ea); |
| 792 | 791 | break; |
| 793 | 792 | case 0x206: /* 1 000 000 110 */ |
| 794 | 793 | size += 1; |
| 795 | ea = oprom | |
| 794 | ea = oprom | |
| 796 | 795 | sprintf(buffer, "BLE %04X",pc+2+ea); |
| 797 | 796 | break; |
| 798 | 797 | case 0x207: /* 1 000 000 111 */ |
| 799 | 798 | size += 1; |
| 800 | ea = oprom | |
| 799 | ea = oprom | |
| 801 | 800 | sprintf(buffer, "BUSC %04X",pc+2+ea); |
| 802 | 801 | break; |
| 803 | 802 | case 0x208: /* 1 000 001 000 */ |
| 804 | 803 | size += 1; |
| 805 | ea = oprom | |
| 804 | ea = oprom | |
| 806 | 805 | sprintf(buffer, "NOPP %04X",pc+2+ea); |
| 807 | 806 | break; |
| 808 | 807 | case 0x209: /* 1 000 001 001 */ |
| 809 | 808 | size += 1; |
| 810 | ea = oprom | |
| 809 | ea = oprom | |
| 811 | 810 | sprintf(buffer, "BNC %04X",pc+2+ea); |
| 812 | 811 | break; |
| 813 | 812 | case 0x20a: /* 1 000 001 010 */ |
| 814 | 813 | size += 1; |
| 815 | ea = oprom | |
| 814 | ea = oprom | |
| 816 | 815 | sprintf(buffer, "BNOV %04X",pc+2+ea); |
| 817 | 816 | break; |
| 818 | 817 | case 0x20b: /* 1 000 001 011 */ |
| 819 | 818 | size += 1; |
| 820 | ea = oprom | |
| 819 | ea = oprom | |
| 821 | 820 | sprintf(buffer, "BMI %04X",pc+2+ea); |
| 822 | 821 | break; |
| 823 | 822 | case 0x20c: /* 1 000 001 100 */ |
| 824 | 823 | size += 1; |
| 825 | ea = oprom | |
| 824 | ea = oprom | |
| 826 | 825 | sprintf(buffer, "BNZE %04X",pc+2+ea); |
| 827 | 826 | break; |
| 828 | 827 | case 0x20d: /* 1 000 001 101 */ |
| 829 | 828 | size += 1; |
| 830 | ea = oprom | |
| 829 | ea = oprom | |
| 831 | 830 | sprintf(buffer, "BGE %04X",pc+2+ea); |
| 832 | 831 | break; |
| 833 | 832 | case 0x20e: /* 1 000 001 110 */ |
| 834 | 833 | size += 1; |
| 835 | ea = oprom | |
| 834 | ea = oprom | |
| 836 | 835 | sprintf(buffer, "BGT %04X",pc+2+ea); |
| 837 | 836 | break; |
| 838 | 837 | case 0x20f: /* 1 000 001 111 */ |
| 839 | 838 | size += 1; |
| 840 | ea = oprom | |
| 839 | ea = oprom | |
| 841 | 840 | sprintf(buffer, "BESC %04X",pc+2+ea); |
| 842 | 841 | break; |
| 843 | 842 | case 0x210: /* 1 000 010 000 */ |
| r6428 | r6429 | |
| 857 | 856 | case 0x21e: /* 1 000 011 110 */ |
| 858 | 857 | case 0x21f: /* 1 000 011 111 */ |
| 859 | 858 | size += 1; |
| 860 | ea = oprom | |
| 859 | ea = oprom | |
| 861 | 860 | sprintf(buffer, "BEXT %04X,%01X",pc+2+ea,op&0x0f); |
| 862 | 861 | break; |
| 863 | 862 | case 0x220: /* 1 000 100 000 */ |
| 864 | 863 | size += 1; |
| 865 | ea = oprom | |
| 864 | ea = oprom | |
| 866 | 865 | sprintf(buffer, "B %04X",pc+1-ea); |
| 867 | 866 | break; |
| 868 | 867 | case 0x221: /* 1 000 100 001 */ |
| 869 | 868 | size += 1; |
| 870 | ea = oprom | |
| 869 | ea = oprom | |
| 871 | 870 | sprintf(buffer, "BC %04X",pc+1-ea); |
| 872 | 871 | break; |
| 873 | 872 | case 0x222: /* 1 000 100 010 */ |
| 874 | 873 | size += 1; |
| 875 | ea = oprom | |
| 874 | ea = oprom | |
| 876 | 875 | sprintf(buffer, "BOV %04X",pc+1-ea); |
| 877 | 876 | break; |
| 878 | 877 | case 0x223: /* 1 000 100 011 */ |
| 879 | 878 | size += 1; |
| 880 | ea = oprom | |
| 879 | ea = oprom | |
| 881 | 880 | sprintf(buffer, "BPL %04X",pc+1-ea); |
| 882 | 881 | break; |
| 883 | 882 | case 0x224: /* 1 000 100 100 */ |
| 884 | 883 | size += 1; |
| 885 | ea = oprom | |
| 884 | ea = oprom | |
| 886 | 885 | sprintf(buffer, "BZE %04X",pc+1-ea); |
| 887 | 886 | break; |
| 888 | 887 | case 0x225: /* 1 000 100 101 */ |
| 889 | 888 | size += 1; |
| 890 | ea = oprom | |
| 889 | ea = oprom | |
| 891 | 890 | sprintf(buffer, "BLT %04X",pc+1-ea); |
| 892 | 891 | break; |
| 893 | 892 | case 0x226: /* 1 000 100 110 */ |
| 894 | 893 | size += 1; |
| 895 | ea = oprom | |
| 894 | ea = oprom | |
| 896 | 895 | sprintf(buffer, "BLE %04X",pc+1-ea); |
| 897 | 896 | break; |
| 898 | 897 | case 0x227: /* 1 000 100 111 */ |
| 899 | 898 | size += 1; |
| 900 | ea = oprom | |
| 899 | ea = oprom | |
| 901 | 900 | sprintf(buffer, "BUSC %04X",pc+1-ea); |
| 902 | 901 | break; |
| 903 | 902 | case 0x228: /* 1 000 101 000 */ |
| 904 | 903 | size += 1; |
| 905 | ea = oprom | |
| 904 | ea = oprom | |
| 906 | 905 | sprintf(buffer, "NOPP %04X",pc+1-ea); |
| 907 | 906 | break; |
| 908 | 907 | case 0x229: /* 1 000 101 001 */ |
| 909 | 908 | size += 1; |
| 910 | ea = oprom | |
| 909 | ea = oprom | |
| 911 | 910 | sprintf(buffer, "BNC %04X",pc+1-ea); |
| 912 | 911 | break; |
| 913 | 912 | case 0x22a: /* 1 000 101 010 */ |
| 914 | 913 | size += 1; |
| 915 | ea = oprom | |
| 914 | ea = oprom | |
| 916 | 915 | sprintf(buffer, "BNOV %04X",pc+1-ea); |
| 917 | 916 | break; |
| 918 | 917 | case 0x22b: /* 1 000 101 011 */ |
| 919 | 918 | size += 1; |
| 920 | ea = oprom | |
| 919 | ea = oprom | |
| 921 | 920 | sprintf(buffer, "BMI %04X",pc+1-ea); |
| 922 | 921 | break; |
| 923 | 922 | case 0x22c: /* 1 000 101 100 */ |
| 924 | 923 | size += 1; |
| 925 | ea = oprom | |
| 924 | ea = oprom | |
| 926 | 925 | sprintf(buffer, "BNZE %04X",pc+1-ea); |
| 927 | 926 | break; |
| 928 | 927 | case 0x22d: /* 1 000 101 101 */ |
| 929 | 928 | size += 1; |
| 930 | ea = oprom | |
| 929 | ea = oprom | |
| 931 | 930 | sprintf(buffer, "BGE %04X",pc+1-ea); |
| 932 | 931 | break; |
| 933 | 932 | case 0x22e: /* 1 000 101 110 */ |
| 934 | 933 | size += 1; |
| 935 | ea = oprom | |
| 934 | ea = oprom | |
| 936 | 935 | sprintf(buffer, "BGT %04X",pc+1-ea); |
| 937 | 936 | break; |
| 938 | 937 | case 0x22f: /* 1 000 101 111 */ |
| 939 | 938 | size += 1; |
| 940 | ea = oprom | |
| 939 | ea = oprom | |
| 941 | 940 | sprintf(buffer, "BESC %04X",pc+1-ea); |
| 942 | 941 | break; |
| 943 | 942 | case 0x230: /* 1 000 110 000 */ |
| r6428 | r6429 | |
| 957 | 956 | case 0x23e: /* 1 000 111 110 */ |
| 958 | 957 | case 0x23f: /* 1 000 111 111 */ |
| 959 | 958 | size += 1; |
| 960 | ea = oprom | |
| 959 | ea = oprom | |
| 961 | 960 | sprintf(buffer, "BEXT %04X,%01X",pc+1-ea,op&0x0f); |
| 962 | 961 | break; |
| 963 | 962 | case 0x240: /* 1 001 000 000 */ |
| r6428 | r6429 | |
| 969 | 968 | case 0x246: /* 1 001 000 110 */ |
| 970 | 969 | case 0x247: /* 1 001 000 111 */ |
| 971 | 970 | size += 1; |
| 972 | ea = oprom | |
| 971 | ea = oprom | |
| 973 | 972 | sprintf(buffer, "MVO R%01d,(%04X)",op&0x7,ea); |
| 974 | 973 | break; |
| 975 | 974 | case 0x248: /* 1 001 001 000 */ |
| r6428 | r6429 | |
| 1044 | 1043 | case 0x286: /* 1 010 000 110 */ |
| 1045 | 1044 | case 0x287: /* 1 010 000 111 */ |
| 1046 | 1045 | size += 1; |
| 1047 | ea = oprom | |
| 1046 | ea = oprom | |
| 1048 | 1047 | sprintf(buffer, "MVI (%04X),R%01d",ea,op&0x7); |
| 1049 | 1048 | break; |
| 1050 | 1049 | case 0x288: /* 1 010 001 000 */ |
| r6428 | r6429 | |
| 1108 | 1107 | case 0x2be: /* 1 010 111 110 */ |
| 1109 | 1108 | case 0x2bf: /* 1 010 111 111 */ |
| 1110 | 1109 | size += 1; |
| 1111 | ea = oprom | |
| 1110 | ea = oprom | |
| 1112 | 1111 | sprintf(buffer, "MVII #%04X,R%01d",ea,op&0x7); |
| 1113 | 1112 | break; |
| 1114 | 1113 | case 0x2c0: /* 1 011 010 000 */ |
| r6428 | r6429 | |
| 1120 | 1119 | case 0x2c6: /* 1 011 010 110 */ |
| 1121 | 1120 | case 0x2c7: /* 1 011 010 111 */ |
| 1122 | 1121 | size += 1; |
| 1123 | ea = oprom | |
| 1122 | ea = oprom | |
| 1124 | 1123 | sprintf(buffer, "ADD (%04X),R%01d",ea,op&0x7); |
| 1125 | 1124 | break; |
| 1126 | 1125 | case 0x2c8: /* 1 011 001 000 */ |
| r6428 | r6429 | |
| 1182 | 1181 | case 0x2fe: /* 1 011 111 110 */ |
| 1183 | 1182 | case 0x2ff: /* 1 011 111 111 */ |
| 1184 | 1183 | size += 1; |
| 1185 | ea = oprom | |
| 1184 | ea = oprom | |
| 1186 | 1185 | sprintf(buffer, "ADDI #%04X,R%01d",ea,op&0x7); |
| 1187 | 1186 | break; |
| 1188 | 1187 | case 0x300: /* 1 100 000 000 */ |
| r6428 | r6429 | |
| 1194 | 1193 | case 0x306: /* 1 100 000 110 */ |
| 1195 | 1194 | case 0x307: /* 1 100 000 111 */ |
| 1196 | 1195 | size += 1; |
| 1197 | ea = oprom | |
| 1196 | ea = oprom | |
| 1198 | 1197 | sprintf(buffer, "SUB (%04X),R%01d",ea,op&0x7); |
| 1199 | 1198 | break; |
| 1200 | 1199 | case 0x308: /* 1 100 001 000 */ |
| r6428 | r6429 | |
| 1256 | 1255 | case 0x33e: /* 1 100 111 110 */ |
| 1257 | 1256 | case 0x33f: /* 1 100 111 111 */ |
| 1258 | 1257 | size += 1; |
| 1259 | ea = oprom | |
| 1258 | ea = oprom | |
| 1260 | 1259 | sprintf(buffer, "SUBI #%04X,R%01d",ea,op&0x7); |
| 1261 | 1260 | break; |
| 1262 | 1261 | case 0x340: /* 1 101 000 000 */ |
| r6428 | r6429 | |
| 1268 | 1267 | case 0x346: /* 1 101 000 110 */ |
| 1269 | 1268 | case 0x347: /* 1 101 000 111 */ |
| 1270 | 1269 | size += 1; |
| 1271 | ea = oprom | |
| 1270 | ea = oprom | |
| 1272 | 1271 | sprintf(buffer, "CMP (%04X),R%01d",ea,op&0x7); |
| 1273 | 1272 | break; |
| 1274 | 1273 | case 0x348: /* 1 101 001 000 */ |
| r6428 | r6429 | |
| 1330 | 1329 | case 0x37e: /* 1 101 111 110 */ |
| 1331 | 1330 | case 0x37f: /* 1 101 111 111 */ |
| 1332 | 1331 | size += 1; |
| 1333 | ea = oprom | |
| 1332 | ea = oprom | |
| 1334 | 1333 | sprintf(buffer, "CMPI #%04X,R%01d",ea,op&0x7); |
| 1335 | 1334 | break; |
| 1336 | 1335 | case 0x380: /* 1 110 000 000 */ |
| r6428 | r6429 | |
| 1342 | 1341 | case 0x386: /* 1 110 000 110 */ |
| 1343 | 1342 | case 0x387: /* 1 110 000 111 */ |
| 1344 | 1343 | size += 1; |
| 1345 | ea = oprom | |
| 1344 | ea = oprom | |
| 1346 | 1345 | sprintf(buffer, "AND (%04X),R%01d",ea,op&0x7); |
| 1347 | 1346 | break; |
| 1348 | 1347 | case 0x388: /* 1 110 001 000 */ |
| r6428 | r6429 | |
| 1404 | 1403 | case 0x3be: /* 1 110 111 110 */ |
| 1405 | 1404 | case 0x3bf: /* 1 110 111 111 */ |
| 1406 | 1405 | size += 1; |
| 1407 | ea = oprom | |
| 1406 | ea = oprom | |
| 1408 | 1407 | sprintf(buffer, "ANDI #%04X,R%01d",ea,op&0x7); |
| 1409 | 1408 | break; |
| 1410 | 1409 | case 0x3c0: /* 1 111 000 000 */ |
| r6428 | r6429 | |
| 1416 | 1415 | case 0x3c6: /* 1 111 000 110 */ |
| 1417 | 1416 | case 0x3c7: /* 1 111 000 111 */ |
| 1418 | 1417 | size += 1; |
| 1419 | ea = oprom | |
| 1418 | ea = oprom | |
| 1420 | 1419 | sprintf(buffer, "XOR (%04X),R%01d",ea,op&0x7); |
| 1421 | 1420 | break; |
| 1422 | 1421 | case 0x3c8: /* 1 111 001 000 */ |
| r6428 | r6429 | |
| 1478 | 1477 | case 0x3fe: /* 1 111 111 110 */ |
| 1479 | 1478 | case 0x3ff: /* 1 111 111 111 */ |
| 1480 | 1479 | size += 1; |
| 1481 | ea = oprom | |
| 1480 | ea = oprom | |
| 1482 | 1481 | sprintf(buffer, "XORI #%04X,R%01d",ea,op&0x7); |
| 1483 | 1482 | break; |
| 1484 | 1483 | default: |
| r6428 | r6429 | |
|---|---|---|
| 197 | 197 | UINT8 * data; /* pointer to the data for this block */ |
| 198 | 198 | }; |
| 199 | 199 | |
| 200 | /* a bank is a | |
| 200 | /* a bank reference is an e | |
| 201 | 201 | typedef struct _bank_reference bank_reference; |
| 202 | 202 | struct _bank_reference |
| 203 | 203 | { |
| 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 */ | |
| 206 | 206 | }; |
| 207 | 207 | |
| 208 | /* a bank is a global pointer to memory that can be shared across devices and changed dynamically */ | |
| 208 | 209 | typedef struct _bank_data bank_info; |
| 209 | 210 | struct _bank_data |
| 210 | 211 | { |
| r6428 | r6429 | |
|---|---|---|
| 7 | 7 | |
| 8 | 8 | **************************************************************************** |
| 9 | 9 | _____ _____ |
| 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 | |
| 18 | 18 | _RD 9 | | 32 D3 |
| 19 | ||
| 19 | ||
| 20 | 20 | +5V 11 | | 30 GND |
| 21 | 21 | _MREQ 12 | | 29 D5 |
| 22 | 22 | _BAO 13 | | 28 D6 |
| r6428 | r6429 | |
|---|---|---|
| 16 | 16 | HLDA 7 | | 34 A2 |
| 17 | 17 | ADSTB 8 | | 33 A1 |
| 18 | 18 | AEN 9 | | 32 A0 |
| 19 | ||
| 19 | ||
| 20 | 20 | _CS 11 | | 30 D0 |
| 21 | 21 | CLK 12 | | 29 D1 |
| 22 | 22 | RESET 13 | | 28 D2 |
| r6428 | r6429 | |
|---|---|---|
| 12 | 12 | #define SERIAL_BUFFER_LENGTH 40 |
| 13 | 13 | #define MEMORY_SIZE 1024 |
| 14 | 14 | |
| 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 */ | |
| 16 | UINT8 *eeprom_empty_default_data = NULL; | |
| 17 | ||
| 15 | 18 | typedef struct _eeprom_state eeprom_state; |
| 16 | 19 | struct _eeprom_state |
| 17 | 20 | { |
| r6428 | r6429 | |
| 276 | 279 | return res; |
| 277 | 280 | } |
| 278 | 281 | |
| 279 | ||
| 282 | ||
| 280 | 283 | { |
| 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); | |
| 283 | 286 | |
| 287 | /* we test if the device is indeed an eeprom when calling this device handler */ | |
| 288 | return eepromdev_read_bit(eeprom); | |
| 289 | } | |
| 290 | ||
| 284 | 291 | void eepromdev_set_cs_line(const device_config *device, int state) |
| 285 | 292 | { |
| 286 | 293 | eeprom_state *c = get_safe_token(device); |
| r6428 | r6429 | |
|---|---|---|
| 53 | 53 | MDRV_DEVICE_CONFIG_DATAPTR(eeprom_config, default_data, &_data) \ |
| 54 | 54 | MDRV_DEVICE_CONFIG_DATA32(eeprom_config, default_data_size, _size) |
| 55 | 55 | |
| 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 */ | |
| 57 | extern UINT8 *eeprom_empty_default_data; | |
| 56 | 58 | |
| 59 | #define MDRV_EEPROM_NODEFAULT_ADD(_tag, _interface) \ | |
| 60 | MDRV_EEPROM_ADD(_tag, _interface, 0, eeprom_empty_default_data) | |
| 61 | ||
| 57 | 62 | void eepromdev_write_bit( const device_config *device, int bit ); |
| 58 | 63 | int eepromdev_read_bit( const device_config *device ); |
| 59 | ||
| 64 | ||
| 60 | 65 | void eepromdev_set_cs_line( const device_config *device, int state ); |
| 61 | 66 | void eepromdev_set_clock_line( const device_config *device, int state ); |
| 62 | 67 |
| r6428 | r6429 | |
|---|---|---|
| 214 | 214 | static void set_dack(i8237_t *i8237, int channel) |
| 215 | 215 | { |
| 216 | 216 | int i; |
| 217 | ||
| 217 | ||
| 218 | 218 | for (i = 0; i < 4; i++) |
| 219 | 219 | { |
| 220 | 220 | int state = (i == channel) ^ !BIT(i8237->command, 7); |
| r6428 | r6429 | |
| 603 | 603 | WRITE_LINE_DEVICE_HANDLER( i8237_dreq2_w ) { dma8237_drq_write(device, 2, state); } |
| 604 | 604 | WRITE_LINE_DEVICE_HANDLER( i8237_dreq3_w ) { dma8237_drq_write(device, 3, state); } |
| 605 | 605 | |
| 606 | WRITE_LINE_DEVICE_HANDLER( i8237_eop_w ) | |
| 607 | { | |
| 608 | } | |
| 606 | 609 | |
| 610 | ||
| 607 | 611 | /******************* Unfortunate hacks *******************/ |
| 608 | 612 | |
| 609 | 613 | void i8237_run_transfer(const device_config *device, int channel) |
| r6428 | r6429 | |
|---|---|---|
| 11 | 11 | _I/OW 2 | | 39 A6 |
| 12 | 12 | _MEMR 3 | | 38 A5 |
| 13 | 13 | _MEMW 4 | | 37 A4 |
| 14 | ||
| 14 | 5 | | 36 _EOP | |
| 15 | 15 | READY 6 | | 35 A3 |
| 16 | 16 | HLDA 7 | | 34 A2 |
| 17 | 17 | ADSTB 8 | | 33 A1 |
| 18 | 18 | AEN 9 | | 32 A0 |
| 19 | ||
| 19 | ||
| 20 | 20 | _CS 11 | | 30 DB0 |
| 21 | 21 | CLK 12 | | 29 DB1 |
| 22 | 22 | RESET 13 | | 28 DB2 |
| r6428 | r6429 | |
| 88 | 88 | WRITE_LINE_DEVICE_HANDLER( i8237_dreq2_w ); |
| 89 | 89 | WRITE_LINE_DEVICE_HANDLER( i8237_dreq3_w ); |
| 90 | 90 | |
| 91 | /* end of process */ | |
| 92 | WRITE_LINE_DEVICE_HANDLER( i8237_eop_w ); | |
| 93 | ||
| 91 | 94 | DEVICE_GET_INFO( i8237 ); |
| 92 | 95 | |
| 93 | 96 | /* unfortunate hack for the interim for PC HDC */ |
| r6428 | r6429 | |
|---|---|---|
| 35 | 35 | different noise LFSR patttern: taps on bits A and E, output on E |
| 36 | 36 | It uses a 15-bit ring buffer for periodic noise/arbitrary duty cycle. |
| 37 | 37 | (all this chip's info needs to be verified) |
| 38 | ||
| 38 | ||
| 39 | 39 | 28/03/2005 : Sebastien Chevalier |
| 40 | 40 | Update th SN76496Write func, according to SN76489 doc found on SMSPower. |
| 41 | 41 | - On write with 0x80 set to 0, when LastRegister is other then TONE, |
| r6428 | r6429 | |
| 48 | 48 | 28/04/2009 : Lord Nightmare |
| 49 | 49 | Add READY line readback; cleaned up struct a bit. Cleaned up comments. |
| 50 | 50 | Add more TODOs. Fixed some unsaved savestate related stuff. |
| 51 | ||
| 51 | ||
| 52 | 52 | 04/11/2009 : Lord Nightmare |
| 53 | 53 | Changed the way that the invert works (it now selects between XOR and XNOR |
| 54 | 54 | for the taps), and added R->OldNoise to simulate the extra 0 that is always |
| 55 | 55 | output before the noise LFSR contents are after an LFSR reset. |
| 56 | 56 | This fixes SN76489/A to match chips. Added SN94624. |
| 57 | ||
| 57 | ||
| 58 | 58 | 14/11/2009 : Lord Nightmare |
| 59 | 59 | Removed STEP mess, vastly simplifying the code. Made output bipolar rather |
| 60 | 60 | than always above the 0 line, but disabled that code due to pending issues. |
| 61 | ||
| 61 | ||
| 62 | 62 | 16/11/2009 : Lord Nightmare |
| 63 | 63 | Fix screeching in regulus: When summing together four equal channels, the |
| 64 | 64 | size of the max amplitude per channel should be 1/4 of the max range, not |
| 65 | 65 | 1/3. Added NCR7496. |
| 66 | ||
| 66 | ||
| 67 | 67 | 18/11/2009 : Lord Nightmare |
| 68 | 68 | Modify Init functions to support negating the audio output. The gamegear |
| 69 | 69 | psg does this. Change gamegear and sega psgs to use XOR rather than XNOR |
| r6428 | r6429 | |
| 269 | 269 | R->Count[3] = R->Period[3]; |
| 270 | 270 | } |
| 271 | 271 | /* //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])); | |
| 276 | 276 | */ |
| 277 | 277 | if (R->Stereo) |
| 278 | 278 | { |
| r6428 | r6429 | |
| 280 | 280 | + (((R->StereoMask&0x20)&&R->Output[1])?R->Volume[1]:0) |
| 281 | 281 | + (((R->StereoMask&0x40)&&R->Output[2])?R->Volume[2]:0) |
| 282 | 282 | + (((R->StereoMask&0x80)&&R->Output[3])?R->Volume[3]:0); |
| 283 | ||
| 283 | ||
| 284 | 284 | out2 = (((R->StereoMask&0x1)&&R->Output[0])?R->Volume[0]:0) |
| 285 | 285 | + (((R->StereoMask&0x2)&&R->Output[1])?R->Volume[1]:0) |
| 286 | 286 | + (((R->StereoMask&0x4)&&R->Output[2])?R->Volume[2]:0) |
| r6428 | r6429 | |
|---|---|---|
| 160 | 160 | |
| 161 | 161 | /* Notes about the LFO Frequency Table below; |
| 162 | 162 | |
| 163 | There a | |
| 163 | There a | |
| 164 | 164 | |
| 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. | |
| 167 | 167 | |
| 168 | Corrections are computed values based on formulas by Olivier Galibert & Nicola Salmoria listed below: | |
| 169 | ||
| 168 | 170 | LFO period seems easy to compute: |
| 169 | 171 | |
| 170 | int lfo_period(int entry) | |
| 171 | { | |
| 172 | int ma, ex; | |
| 172 | Olivier Galibert's version Nicola Salmoria's version | |
| 173 | ||
| 174 | int lfo_period(int entry) or int calc_lfo_period(int entry) | |
| 175 | { { | |
| 176 | int ma, ex; entry = 256 - entry; | |
| 173 | 177 | 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 | } | |
| 187 | lfo_freq = 44100 / lfo_period } | |
| 181 | 188 | |
| 182 | lfo_freq = 44100 / lfo_period | |
| 183 | ||
| 184 | 189 | */ |
| 185 | 190 | |
| 186 | 191 | static const double LFO_frequency_table[256] = |
| r6428 | r6429 | |
|---|---|---|
| 293 | 293 | assert(device->token != NULL); |
| 294 | 294 | assert(device->type == SOUND); |
| 295 | 295 | assert(sound_get_type(device) == SOUND_TMS5220 || |
| 296 | sound_get_type(device) == SOUND_TMS5220C || | |
| 296 | 297 | sound_get_type(device) == SOUND_TMC0285 || |
| 297 | 298 | sound_get_type(device) == SOUND_TMS5200); |
| 298 | 299 | return (tms5220_state *)device->token; |
| r6428 | r6429 | |
|---|---|---|
| 205 | 205 | mame_printf_error("%s: %s has %s with 0-length tag\n", driver->source_file, driver->name, object); |
| 206 | 206 | error = TRUE; |
| 207 | 207 | } |
| 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 | } | |
| 208 | 213 | if (strlen(begin) > MAX_TAG_LENGTH) |
| 209 | 214 | { |
| 210 | 215 | mame_printf_error("%s: %s has %s with tag '%s' > %d characters\n", driver->source_file, driver->name, object, tag, MAX_TAG_LENGTH); |
| r6428 | r6429 | |
|---|---|---|
| 24 | 24 | CONSTANTS |
| 25 | 25 | ***************************************************************************/ |
| 26 | 26 | |
| 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 | |
| 28 | 29 | #define MAX_TAG_LENGTH 15 |
| 29 | 30 | |
| 30 | 31 |
| r6428 | r6429 | |
|---|---|---|
| 83 | 83 | XTAL_10_730MHz = 10730000, /* Ruleta RE-900 VDP Clock */ |
| 84 | 84 | XTAL_10_733MHz = 10733000, /* The Fairyland Story */ |
| 85 | 85 | XTAL_10_738635MHz = 10738635, /* TMS9918 family */ |
| 86 | XTAL_10_816MHz = 10816000, /* Universal 1979-1980 (Cosmic Alien, etc) */ | |
| 86 | 87 | XTAL_11MHz = 11000000, /* Mario I8039 sound */ |
| 87 | 88 | XTAL_11_0592MHz = 11059200, /* Lethal Justice, Ruleta RE-900 */ |
| 88 | 89 | XTAL_11_2MHz = 11200000, /* New York, New York */ |
| r6428 | r6429 | |
|---|---|---|
| 295 | 295 | $(MESSOBJ)/grundy.a \ |
| 296 | 296 | $(MESSOBJ)/hartung.a \ |
| 297 | 297 | $(MESSOBJ)/heathkit.a \ |
| 298 | $(MESSOBJ)/hec2hrp.a \ | |
| 298 | 299 | $(MESSOBJ)/hegener.a \ |
| 299 | 300 | $(MESSOBJ)/homebrew.a \ |
| 300 | 301 | $(MESSOBJ)/homelab.a \ |
| 301 | 302 | $(MESSOBJ)/hp.a \ |
| 302 | $(MESSOBJ)/hec2hrp.a \ | |
| 303 | $(MESSOBJ)/interact.a \ | |
| 304 | 303 | $(MESSOBJ)/intel.a \ |
| 305 | 304 | $(MESSOBJ)/intelgnt.a \ |
| 305 | $(MESSOBJ)/interact.a \ | |
| 306 | 306 | $(MESSOBJ)/interton.a \ |
| 307 | 307 | $(MESSOBJ)/intv.a \ |
| 308 | 308 | $(MESSOBJ)/jupiter.a \ |
| r6428 | r6429 | |
|---|---|---|
| 53 | 53 | |
| 54 | 54 | Source Changes: |
| 55 | 55 | ---------------- |
| 56 | - The core is based on MAME 0.135u1. This incorporates all features of the | |
| 57 | update to this core. [MAME team] | |
| 58 | ||
| 56 | 59 | - Cleanups (static qualifiers, headers, renames and more multisession |
| 57 | 60 | friendly init code). [Atari Ace] |
| 58 | 61 |
| Previous | 15994 Revisions | Next |